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?

Reply via email to