This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug rtl-optimization/25432] Reload ICE in gen_add2_insn



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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]