http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55597
Steven Bosscher <steven at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |steven at gcc dot gnu.org
Component|middle-end |target
--- Comment #3 from Steven Bosscher <steven at gcc dot gnu.org> 2012-12-04
23:24:41 UTC ---
Out of expand GCC produces:
(insn 6 5 7 2 (set (reg:DI 61)
(reg:DI 0 ax)) t.c:8 -1
(expr_list:REG_EQUAL (symbol_ref:SI ("__morestack_initial_sp") \
[flags 0x10] <var_decl 0x7ffff6263720 __morestack_initial_sp>)
(nil)))
(insn 7 6 8 2 (parallel [
(set (reg:DI 62)
(plus:DI (reg:DI 61)
(const_int 4 [0x4])))
(clobber (reg:CC 17 flags))
]) t.c:8 -1
(nil))
In alias.c, the compiler tries to simplify r62=r61+4 to
r62=symbol_ref:SI ("__morestack_initial_sp")+4 but plus_constant
doesn't accept symbol_ref:SI ("__morestack_initial_sp") because it
is is SImode but should be DImode.
Back-end bug, I'm guessing something Pmode related.