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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|deferred                    |
   Target Milestone|12.5                        |15.0
      Known to work|                            |15.0

--- Comment #15 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Fixed by late_combine1 in GCC 15.

It was able to forwprop the move involving the subreg:
```

trying to combine definition of r113 in:
   21: r113:SI=r102:DI#4
into:
   12: [r108:SI]=r113:SI
      REG_DEAD r113:SI
      REG_DEAD r108:SI
successfully matched this instruction to *movsi_internal:
(set (mem:SI (reg/v/f:SI 108 [ upper ]) [1 *upper_9(D)+0 S4 A32])
    (subreg:SI (reg/v:DI 102 [ ab ]) 4))
original cost = 12 + 4 (weighted: 16.000000), replacement cost = 12 (weighted:
12.000000); keeping replacement
rescanning insn with uid = 12.
updating insn 12 in-place
verify found no changes in insn with uid = 12.
deleting insn 21
deleting insn with uid = 21.
starting the processing of deferred insns
ending the processing of deferred insns
```

Tested `-O2 -fdisable-rtl-late_combine1` to show that made the difference.

Reply via email to