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