[Bug rtl-optimization/25432] Reload ICE in gen_add2_insn
amodra at bigpond dot net dot au
gcc-bugzilla@gcc.gnu.org
Fri Dec 16 00:54:00 GMT 2005
------- Comment #2 from amodra at bigpond dot net dot au 2005-12-16 00:54 -------
.lreg dump has
in basic block 2
(insn 561 559 563 2 (set (reg/f:DI 352)
(plus:DI (reg/f:DI 113 sfp)
(const_int 160 [0xa0]))) 79 {*adddi3_internal1} (nil)
(expr_list:REG_EQUIV (plus:DI (reg/f:DI 113 sfp)
(const_int 160 [0xa0]))
(nil)))
in bb 19
(insn 562 560 544 19 (set (reg/f:DI 349)
(reg/f:DI 352)) 341 {*movdi_internal64} (nil)
(nil))
at the ICE, 562 looks like
(gdb) p debug_rtx (insn)
(insn 562 560 544 17 (set (reg/f:DI 59 27 [349])
(plus:DI (reg/f:DI 1 1)
(mem/u/c/i:DI (plus:DI (reg:DI 2 2)
(const:DI (minus:DI (symbol_ref/u:DI ("*.LC1") [flags 0x2])
(symbol_ref:DI ("*.LCTOC1"))))) [0 S8 A64]))) 341
{*movdi_internal64} (nil)
(nil))
so looks like a problem with soft -> hard frame reg elimination. Why is the
offset (only 160) being dumped to memory?
(gdb) p reg_eliminate[1]
$10 = {from = 113, to = 1, initial_offset = 0, can_eliminate = 1,
can_eliminate_previous = 1, offset = 0, previous_offset = 0,
ref_outside_mem = 0, from_rtx = 0x80001e7020, to_rtx = 0x80001e7000}
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25432
More information about the Gcc-bugs
mailing list