[Bug target/15286] ICE cause by reload
uweigand at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Mon Oct 25 17:17:00 GMT 2004
------- Additional Comments From uweigand at gcc dot gnu dot org 2004-10-25 17:17 -------
Well, as I understand it, SUBREG (MEM) is *supposed* to be generated
for the case of SUBREG (pseudo) where the pseudo gets a stack slot.
The scan_paradoxical_subregs mechanism was supposed to have allocated
a large enough stack slot, and cleanup_subreg_operands is then supposed
to convert the SUBREG (MEM) to a MEM with its address offset accordingly.
However, cleanup_subreg_operands first recognizes the insn, and this is
where it presumably fails; due to this weird piece of code in general_operand:
#ifdef INSN_SCHEDULING
/* On machines that have insn scheduling, we want all memory
reference to be explicit, so outlaw paradoxical SUBREGs. */
if (MEM_P (sub)
&& GET_MODE_SIZE (mode) > GET_MODE_SIZE (GET_MODE (sub)))
return 0;
#endif
(What the ... has INSN_SCHEDULING to do with what insns we want
to recognize?!)
Does it work if you add an && !reload_completed to that if?
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15286
More information about the Gcc-bugs
mailing list