[Bug rtl-optimization/39543] [4.4 Regression] Reload failure on mplayer from SVN
jakub at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Tue Mar 24 14:18:00 GMT 2009
------- 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
More information about the Gcc-bugs
mailing list