------- 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