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.