http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47725
H.J. Lu <hjl.tools at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |ebotcazou at gcc dot | |gnu.org --- Comment #1 from H.J. Lu <hjl.tools at gmail dot com> 2011-02-14 01:07:41 UTC --- Combine changes (insn 2 4 3 2 (set (reg/v/f:DI 59 [ pc_target ]) (zero_extend:DI (reg:SI 5 di [ pc_target ]))) u.i:9 115 {*zero_extendsidi2_rex64} (expr_list:REG_DEAD (reg:SI 5 di [ pc_target ]) (nil))) ... (insn 11 10 14 2 (parallel [ (set (reg:DI 64) (const_int 0 [0])) (set (reg/f:DI 62) (plus:DI (ashift:DI (reg:DI 64) (const_int 3 [0x3])) (reg/f:DI 60))) (set (mem/s/c:BLK (reg/f:DI 60) [0 context+0 S72 A64]) (const_int 0 [0])) (use (reg:DI 63)) (use (reg:DI 64)) ]) u.i:11 874 {*rep_stosdi_rex64} (expr_list:REG_DEAD (reg:DI 63) (expr_list:REG_UNUSED (reg:DI 64) (expr_list:REG_UNUSED (reg/f:DI 62) (nil))))) (insn 14 11 16 2 (set (mem/s/f/c:SI (plus:DI (reg/f:DI 20 frame) (const_int -8 [0xfffffffffffffff8])) [3 context.ra+0 S4 A64]) (subreg/s/u:SI (reg/v/f:DI 59 [ pc_target ]) 0)) u.i:12 64 {*movsi_internal} (expr_list:REG_DEAD (reg/v/f:DI 59 [ pc_target ]) (nil))) to (insn 11 10 14 2 (parallel [ (set (reg:DI 64) (const_int 0 [0])) (set (reg/f:DI 62) (plus:DI (ashift:DI (reg:DI 64) (const_int 3 [0x3])) (reg/f:DI 60))) (set (mem/s/c:BLK (reg/f:DI 60) [0 context+0 S72 A64]) (const_int 0 [0])) (use (reg:DI 63)) (use (reg:DI 64)) ]) u.i:11 874 {*rep_stosdi_rex64} (expr_list:REG_DEAD (reg:DI 63) (expr_list:REG_UNUSED (reg:DI 64) (expr_list:REG_UNUSED (reg/f:DI 62) (nil))))) (insn 14 11 16 2 (set (mem/s/f/c:SI (plus:DI (reg/f:DI 20 frame) (const_int -8 [0xfffffffffffffff8])) [3 context.ra+0 S4 A64]) (reg:SI 5 di [ pc_target ])) u.i:12 64 {*movsi_internal} (expr_list:REG_DEAD (reg:SI 5 di [ pc_target ]) (nil))) Since *rep_stosdi_rex64 needs the RDI register, it kills reload. Eric, should combine move hard register?