------- Comment #13 from danglin at gcc dot gnu dot org 2010-07-28 20:21
-------
RTL seems to go wrong in ira. We have after sched1:
(insn 1311 1308 1312 134 (set (reg/f:SI 926 [ const_int_rtx+256 ])
(mem/s/f:SI (plus:SI (reg/f:SI 1207) (const_int 256 [0x100])) [3
const_int_rtx+256 S4 A32])) ../../gcc/gcc/loop-iv.c:2609 37 {*pa.md:2102}
(expr_list:REG_EQUAL (mem/s/f:SI (const:SI (plus:SI (symbol_ref:SI
("const_int_rtx") [flags 0x240] <var_decl 0x40836b40 const_int_rtx>)
(const_int 256 [0x100]))) [3 const_int_rtx+256 S4 A32])
(nil)))
(insn 1312 1311 1315 134 (set (mem:SI (plus:SI (reg/f:SI 30 %r30)
(const_int -52 [0xffffffcc])) [0 S4 A32])
(reg/f:SI 926 [ const_int_rtx+256 ])) ../../gcc/gcc/loop-iv.c:2609 37
{*pa.md:2102}
(expr_list:REG_DEAD (reg/f:SI 926 [ const_int_rtx+256 ])
(nil)))
We have after ira:
(insn 1311 1308 2909 134 (set (reg/f:SI 19 %r19 [orig:926 const_int_rtx+256 ]
[926]) (mem/s/f:SI (plus:SI (reg/f:SI 12 %r12 [1207])
(const_int 256 [0x100])) [3 const_int_rtx+256 S4 A32]))
../../gcc/gcc/loop-iv.c:2609 37 {*pa.md:2102}
(expr_list:REG_EQUIV (mem/s/f:SI (plus:SI (reg/f:SI 12 %r12 [1207])
(const_int 256 [0x100])) [3 const_int_rtx+256 S4 A32])
(expr_list:REG_EQUAL (mem/s/f:SI (const:SI (plus:SI (symbol_ref:SI
("const_int_rtx") [flags 0x240] <var_decl 0x40836b40 const_int_rtx>)
(const_int 256 [0x100]))) [3 const_int_rtx+256 S4 A32])
(nil))))
(insn 2909 1311 1312 134 (set (reg:SI 19 %r19)
(mem/c:SI (plus:SI (reg/f:SI 30 %r30)
(const_int -204 [0xffffff34])) [84 S4 A32]))
../../gcc/gcc/loop-iv.c:2609 37 {*pa.md:2102}
(nil))
(insn 1312 2909 1315 134 (set (mem:SI (plus:SI (reg/f:SI 30 %r30)
(const_int -52 [0xffffffcc])) [0 S4 A32])
(reg/f:SI 19 %r19 [orig:926 const_int_rtx+256 ] [926]))
../../gcc/gcc/loop-iv.c:2609 37 {*pa.md:2102}
(nil))
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45063