[Bug rtl-optimization/48496] [4.7/4.8 Regression] 'asm' operand requires impossible reload
uweigand at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sun Apr 8 17:33:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48496
--- Comment #18 from Ulrich Weigand <uweigand at gcc dot gnu.org> 2012-04-08 17:32:23 UTC ---
According to Vlad's comment #4, the validity check fails because a reload insn
contains a spilled pseudo that will later be replaced by a MEM.
However, recog.c contains in various places checks that will *accept* -during
reload- a pseudo in places where a memory constraint is required; exactly
because such pseudos will actually get replaced by a MEM:
case TARGET_MEM_CONSTRAINT:
[snip]
/* During reload, accept a pseudo */
else if (reload_in_progress && REG_P (op)
&& REGNO (op) >= FIRST_PSEUDO_REGISTER)
win = 1;
Note that those checks were originally added in the same patch that added this
asm validity check ...
So really that validity check shouldn't have failed just because of the
presence of a spilled pseudo. The question is, why doesn't this work for the
ia64 test case as expected?
More information about the Gcc-bugs
mailing list