From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15857 invoked by alias); 24 Mar 2009 14:18:27 -0000 Received: (qmail 14483 invoked by uid 48); 24 Mar 2009 14:18:10 -0000 Date: Tue, 24 Mar 2009 14:18:00 -0000 Message-ID: <20090324141810.14482.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug rtl-optimization/39543] [4.4 Regression] Reload failure on mplayer from SVN In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "jakub at gcc dot gnu dot org" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2009-03/txt/msg01703.txt.bz2 ------- Comment #3 from jakub at gcc dot gnu dot org 2009-03-24 14:18 ------- Ok, so the reason why fwprop doesn't propagate this is: forward_propagate_and_simplify doing: rtx use_set = single_set (use_insn); ... if (!use_set) return false; ASM_OPERANDS with multiple output regs obviously isn't single_set, so nothing is propagated. Paolo, any reason to restrict this, or at least could forward_propagate_and_simplify specially propagate also to memory addresses in asms? The reason why combiner doesn't do anything is that when the pseudos initialized to constants are used multiple times (not dead on the asm insn), try_combine sets added_sets_2 and as the insn is a PARALLEL, appends the added set to that, making it invalid (asm_noperands (body) returns -1). So, to fix this bug, either we can teach fwprop to do this kind of propagation (my preference), or e.g. temporarily set cse_not_expected in expand_asm_operands. I can easily test the latter as a fallback variant if the former is deemed too unsafe for 4.4. -- jakub at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |bonzini at gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39543