------- Comment #8 from danglin at gcc dot gnu dot org 2010-06-15 03:35 ------- Things appear to go wrong in the loop2_invariant pass. Prior to this pass, the 'f' flag is not set in the rtx for ivtmp.314. The first occurence is here:
(insn 1154 1153 1155 103 ../../gcc/gcc/gimple-pretty-print.c:1212 (set (reg/f:DI 274 [ ivtmp.314 ]) (plus:DI (reg/f:DI 274 [ ivtmp.314 ]) (const_int 8 [0x8]))) 160 {*pa.md:4941} (nil)) Setting the 'f' flag allows insn 1208 to be substituted in in insn 1209: (insn 1208 1207 1209 110 ../../gcc/gcc/gimple.h:1643 (set (reg/f:DI 1179) (plus:DI (reg:DI 1178) (reg/f:DI 274 [ ivtmp.314 ]))) 160 {*pa.md:4941} (expr_list:REG_DEAD (reg:DI 1178) (nil))) (insn 1209 1208 1210 110 ../../gcc/gcc/gimple.h:1643 (set (reg/f:DI 337 [ D.3525 9 ]) (mem/f:DI (reg/f:DI 1179) [6 S8 A64])) 120 {*pa.md:4101} (expr_list:REG_ DEAD (reg/f:DI 1179) (nil))) So, eventually, we end up with: (insn 1209 8953 8954 ../../gcc/gcc/gimple.h:1643 (set (reg/f:DI 25 %r25 [orig:33 7 D.35259 ] [337]) (mem/f:DI (plus:DI (reg:DI 28 %r28 [1178]) (reg/f:DI 11 %r11 [orig:274 ivtmp.314 ] [274])) [6 S8 A64])) 120 {*pa.md:4101} (expr_list:REG_DEAD (reg:DI 28 %r28 [1178]) (nil))) In expand, we had the following define for ivtmp.314: dump_gimple_stmt (struct pretty_printer * buffer, union gimple_statement_d * gs, int spc, int flags) { long unsigned int ivtmp.314; -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43740