https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55212
--- Comment #483 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Oleg Endo <[email protected]>: https://gcc.gnu.org/g:6a1f0d171ba12f3dbddf2f8b7358f8d042195249 commit r17-2102-g6a1f0d171ba12f3dbddf2f8b7358f8d042195249 Author: Kaz Kojima <[email protected]> Date: Sun Oct 6 12:34:55 2024 +0900 SH: Reduce R0 live ranges around R0-constrained move insns for LRA Some move and extend patterns can result in longer R0 live ranges and LRA has trouble dealing with those. This tries to reduce the likelihood of failures by using insn variants that use an explicit R0-clobber and splitting the move into two insns. This tricks LRA into thinking it's using non-R0 for the operand. gcc/ChangeLog: PR target/55212 * config/sh/sh.md (extend<mode>si2_short_mem_disp_z): New insn_and_split. (extend<mode>si2): Use it for LRA. (mov<mode>_store_mem_index, *mov<mode>_store_mem_index): New patterns. (mov<mode>): Use it for LRA. (movsf_ie_store_mem_index, movsf_ie_load_mem_index, *movsf_ie_store_mem_inde, *movsf_ie_load_mem_index): New patterns. (movsf): Use it for LRA.
