http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47449
--- Comment #5 from H.J. Lu <hjl.tools at gmail dot com> 2011-01-24 23:27:48 UTC --- Before fwprop1: --- ;; Pred edge ENTRY [100.0%] (fallthru) (note 4 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) (insn 2 4 3 2 (set (reg/v/f:DI 61 [ trans ]) (zero_extend:DI (reg:SI 5 di [ trans ]))) x.c:4 115 {*zero_extendsidi2_r ex64} (nil)) (note 3 2 6 2 NOTE_INSN_FUNCTION_BEG) (insn 6 3 7 2 (parallel [ (set (reg:SI 62 [ ret ]) (asm_operands:SI ("negl %0 ") ("=D") 0 [] [] [] x.c:9)) (clobber (reg:QI 18 fpsr)) (clobber (reg:QI 17 flags)) ]) x.c:6 -1 (nil)) (insn 7 6 8 2 (set (reg/v:SI 59 [ ret ]) (reg:SI 62 [ ret ])) x.c:6 64 {*movsi_internal} (nil)) (insn 8 7 9 2 (set (reg:SI 5 di) (subreg/s/u:SI (reg/v/f:DI 61 [ trans ]) 0)) x.c:7 64 {*movsi_internal} (nil)) (call_insn 9 8 10 2 (call (mem:QI (symbol_ref:DI ("bar") [flags 0x41] <function _decl 0x7fa8a422ef00 bar>) [0 S1 A8]) (const_int 0 [0])) x.c:7 623 {*call_0} (nil) (expr_list:REG_DEP_TRUE (use (reg:SI 5 di)) (nil))) (insn 10 9 14 2 (set (reg:SI 60 [ <retval> ]) (reg:SI 62 [ ret ])) x.c:7 64 {*movsi_internal} (nil)) (insn 14 10 17 2 (set (reg/i:SI 0 ax) (reg:SI 62 [ ret ])) x.c:9 64 {*movsi_internal} (nil)) (insn 17 14 0 2 (use (reg/i:SI 0 ax)) x.c:9 -1 (nil)) ;; End of basic block 2 -> ( 1) ;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 20 [frame] ;; Succ edge EXIT [100.0%] (fallthru) --- After fwprop1: --- ;; Pred edge ENTRY [100.0%] (fallthru) (note 4 0 3 2 [bb 2] NOTE_INSN_BASIC_BLOCK) (note 3 4 6 2 NOTE_INSN_FUNCTION_BEG) (insn 6 3 9 2 (parallel [ (set (reg:SI 62 [ ret ]) (asm_operands:SI ("negl %0 ") ("=D") 0 [] [] [] x.c:9)) (clobber (reg:QI 18 fpsr)) (clobber (reg:QI 17 flags)) ]) x.c:6 -1 (expr_list:REG_UNUSED (reg:QI 18 fpsr) (expr_list:REG_UNUSED (reg:QI 17 flags) (nil)))) (call_insn 9 6 14 2 (call (mem:QI (symbol_ref:DI ("bar") [flags 0x41] <function _decl 0x7fa8a422ef00 bar>) [0 S1 A8]) (const_int 0 [0])) x.c:7 623 {*call_0} (expr_list:REG_DEAD (reg:SI 5 di) (nil)) (expr_list:REG_DEP_TRUE (use (reg:SI 5 di)) (nil))) (insn 14 9 17 2 (set (reg/i:SI 0 ax) (reg:SI 62 [ ret ])) x.c:9 64 {*movsi_internal} (expr_list:REG_DEAD (reg:SI 62 [ ret ]) (nil))) (insn 17 14 0 2 (use (reg/i:SI 0 ax)) x.c:9 -1 (nil)) ;; End of basic block 2 -> ( 1) ;; lr out 0 [ax] 6 [bp] 7 [sp] 16 [argp] 20 [frame] ;; md out ;; Succ edge EXIT [100.0%] (fallthru) --- For some reason, fwprop1 doesn't remove (insn 2 4 3 2 (set (reg/v/f:DI 61 [ trans ]) (reg:DI 5 di [ trans ])) x.c:4 62 {*movdi_internal_rex64} (nil)) for 64bit.