https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66626

--- Comment #11 from H.J. Lu <hjl.tools at gmail dot com> ---
LRA tries to reload SI 90:

(insn 14 13 15 3 (set (reg/f:SI 6 bp)
        (mem:SI (reg/f:SI 90 [ CHAIN.1 ]) [0  S4 A8])) ../y.i:9 86
{*movsi_internal}
     (nil))
(insn 15 14 16 3 (clobber (mem:BLK (scratch) [0  A8])) ../y.i:9 -1
     (nil))
(insn 16 15 17 3 (clobber (mem:BLK (reg/f:SI 7 sp) [0  A8])) ../y.i:9 -1
     (nil))
(insn 17 16 18 3 (set (reg/f:SI 7 sp)
        (mem:SI (plus:SI (reg/f:SI 90 [ CHAIN.1 ])
                (const_int 4 [0x4])) [0  S4 A8])) ../y.i:9 86 {*movsi_internal}
     (expr_list:REG_DEAD (reg/f:SI 90 [ CHAIN.1 ])
        (nil)))

It generates:

(insn 32 13 14 3 (set (reg:SI 1 dx [94])
        (mem/c:SI (plus:SI (reg/f:SI 6 bp)
                (const_int 4 [0x4])) [0  S4 A8])) ../y.i:9 86 {*movsi_internal}
     (nil))
(insn 14 32 15 3 (set (reg/f:SI 6 bp)
        (mem:SI (reg:SI 1 dx [94]) [0  S4 A8])) ../y.i:9 86 {*movsi_internal}
     (nil))
(insn 15 14 16 3 (clobber (mem:BLK (scratch) [0  A8])) ../y.i:9 -1
     (nil))
(insn 16 15 33 3 (clobber (mem:BLK (reg/f:SI 7 sp) [0  A8])) ../y.i:9 -1
     (nil))
(insn 33 16 17 3 (set (reg:SI 2 cx [95])
        (mem/c:SI (plus:SI (reg/f:SI 6 bp) 
                (const_int 4 [0x4])) [0  S4 A8])) ../y.i:9 86 {*movsi_internal}
     (nil))
(insn 17 33 18 3 (set (reg/f:SI 7 sp) 
        (mem:SI (plus:SI (reg:SI 2 cx [95])
                (const_int 4 [0x4])) [0  S4 A8])) ../y.i:9 86 {*movsi_internal}
     (nil))

It shouldn't add insn 33 and should just use EDX in insn 17.

Reply via email to