http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54227
--- Comment #3 from Uros Bizjak <ubizjak at gmail dot com> 2012-08-11 13:02:18 UTC --- Strange, there is no difference between r190228.i.150t.optimized and r190229.i.150t.optimized, but: --- r190228.i.152r.vregs 2012-08-11 14:53:20.000000000 +0200 +++ r190229.i.152r.vregs 2012-08-11 14:53:26.000000000 +0200 @@ -1,88 +1,72 @@ ;; Function test (test, funcdef_no=0, decl_uid=1378, cgraph_uid=0) -(note 1 0 8 NOTE_INSN_DELETED) +(note 1 0 4 NOTE_INSN_DELETED) ;; basic block 2, loop depth 0, count 0, freq 10000, maybe hot ;; prev block 0, next block 4, flags: (NEW, REACHABLE, RTL, MODIFIED) ;; pred: ENTRY [100.0%] (FALLTHRU) -(note 8 1 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) -(insn 2 8 3 2 (set (mem/c:DI (plus:DI (reg/f:DI 31 AP) - (const_int 56 [0x38])) [0 S8 A8]) - (reg:DI 17 $17)) 20041113-1.c:4 236 {*movdi} - (nil)) -(insn 3 2 4 2 (set (mem/c:DI (plus:DI (reg/f:DI 31 AP) - (const_int 64 [0x40])) [0 S8 A8]) - (reg:DI 18 $18)) 20041113-1.c:4 236 {*movdi} - (nil)) -(insn 4 3 5 2 (set (mem/c:DI (plus:DI (reg/f:DI 31 AP) - (const_int 72 [0x48])) [0 S8 A8]) - (reg:DI 19 $19)) 20041113-1.c:4 236 {*movdi} - (nil)) -(insn 5 4 6 2 (set (mem/c:DI (plus:DI (reg/f:DI 31 AP) - (const_int 80 [0x50])) [0 S8 A8]) - (reg:DI 20 $20)) 20041113-1.c:4 236 {*movdi} - (nil)) -(insn 6 5 7 2 (set (reg/v:DI 99 [ x ]) +(note 4 1 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) +(insn 2 4 3 2 (set (reg/v:DI 99 [ x ]) (reg:DI 16 $16 [ x ])) 20041113-1.c:4 236 {*movdi} (nil)) A whole pack of moves to memory is missing.