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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
           See Also|                            |https://gcc.gnu.org/bugzill
                   |                            |a/show_bug.cgi?id=92180
      Known to fail|                            |10.3.0
             Status|NEW                         |RESOLVED
      Known to work|                            |11.1.0

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Trying 6 -> 7:
    6: r86:DI=[r87:DI]
      REG_DEAD r87:DI
    7: r85:SI=r86:DI#0
      REG_DEAD r86:DI
Successfully matched this instruction:
(set (reg:SI 85 [ *p_3(D) ])
    (mem:SI (reg:DI 87) [1 *p_3(D)+0 S4 A64]))
allowing combination of insns 6 and 7
original costs 4 + 4 = 8
replacement cost 4
deferring deletion of insn with uid = 6.
modifying insn i3     7: r85:SI=[r87:DI]
      REG_DEAD r87:DI
deferring rescan insn with uid = 7.
starting the processing of deferred insns
rescanning insn with uid = 7.
ending the processing of deferred insns

This is because cse no longer props the subreg into the last move:
(insn 7 6 8 2 (set (reg:SI 85)
        (subreg:SI (reg:DI 86) 0)) "/app/example.cpp":7:13 67 {*movsi_internal}
     (nil))
(insn 8 7 12 2 (set (reg:SI 83 [ <retval> ])
        (reg:SI 85)) "/app/example.cpp":7:13 67 {*movsi_internal}
     (nil))
(insn 12 8 13 2 (set (reg/i:SI 0 ax)
        (reg:SI 83 [ <retval> ])) "/app/example.cpp":8:1 67 {*movsi_internal}
     (nil))

And this was due to the patch which fixes PR 92180 and it was an expected out
come too.

Reply via email to