------- Comment #10 from steven at gcc dot gnu dot org 2006-11-25 23:17 ------- >From the cse1 dump: Register 72 used 1 times across 0 insns; set 1 time; dies in 0 places; pointer.
So there is only a single DEF for reg 72. The set for this DEF is: (insn 112 2 7 2 foo.c:13 (set (reg/f:DI 72) (plus:DI (reg/f:DI 29 %r29) (const_int -64 [0xffffffffffffffc0]))) -1 (nil) (nil)) fwprop replaces occurences of (reg 72) with (plus (reg 29) (const_int -64)). This is the diff between the cse1 and fwprop dump: --- attachment.cse1 2006-11-26 00:13:55.000000000 +0100 +++ attachment.fwprop1 2006-11-26 00:14:06.000000000 +0100 (....) @@ -112,7 +172,8 @@ (const_int -64 [0xffffffffffffffc0]))) -1 (nil) (nil)) -(insn 7 112 8 2 foo.c:13 (set (mem/f/c/i:DI (reg/f:DI 72) [8 cond+0 S8 A64]) +(insn 7 112 8 2 foo.c:13 (set (mem/f/c/i:DI (plus:DI (reg/f:DI 29 %r29) + (const_int -64 [0xffffffffffffffc0])) [8 cond+0 S8 A64]) (reg:DI 26 %r26 [ cond ])) 124 {*pa.md:4480} (nil) (nil)) @@ -397,7 +458,8 @@ (insn 71 70 74 5 foo.c:25 (set (mem:QI (reg/f:DI 68 [ D.1944 ]) [0 S1 A8]) (reg:QI 88)) 104 {*pa.md:3322} (nil) - (nil)) + (expr_list:REG_EQUAL (const_int 10 [0xa]) + (nil))) (insn 74 71 75 5 foo.c:25 (set (reg/f:DI 91) (plus:DI (reg/f:DI 68 [ D.1944 ]) @@ -462,7 +524,8 @@ (note 89 88 91 7 [bb 7] NOTE_INSN_BASIC_BLOCK) (insn 91 89 92 7 foo.c:26 (set (reg/f:DI 26 %r26 [ cond ]) - (mem/f/c/i:DI (reg/f:DI 72) [8 cond+0 S8 A64])) 124 {*pa.md:4480} (nil) + (mem/f/c/i:DI (plus:DI (reg/f:DI 29 %r29) + (const_int -64 [0xffffffffffffffc0])) [8 cond+0 S8 A64])) 124 {*pa.md:4480} (nil) (nil)) (insn 92 91 93 7 foo.c:26 (set (reg/f:DI 29 %r29) @@ -503,7 +566,8 @@ (nil))) (insn 98 97 99 7 foo.c:27 (set (reg/f:DI 25 %r25 [ cond ]) - (mem/f/c/i:DI (reg/f:DI 72) [8 cond+0 S8 A64])) 124 {*pa.md:4480} (nil) + (mem/f/c/i:DI (plus:DI (reg/f:DI 29 %r29) + (const_int -64 [0xffffffffffffffc0])) [8 cond+0 S8 A64])) 124 {*pa.md:4480} (nil) (nil)) (insn 99 98 100 7 foo.c:27 (set (reg/f:DI 29 %r29) Someone care to explain why this is a wrong transformation by fwprop? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29840