https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55212
--- Comment #482 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:2b2e5f661dcbea7136229494148c8e0897496613 commit r17-2101-g2b2e5f661dcbea7136229494148c8e0897496613 Author: Kaz Kojima <[email protected]> Date: Tue Jun 23 11:26:21 2026 +0900 SH: Adjust fp-reg related move insns to work with LRA On SH fp move insns usually don't support displacement addressing modes. Instead it needs to use additional match_scratch constraints which LRA has trouble dealing with. Split movsf_ie_ra into several new patterns to remove match_scratch as a mitigation. For movdf constant loads add a new sub-pattern. Use a new pattern movsf_ie_rffr to handle movsf multiword subregs and disable movsf_ie_ra for reg from/to subreg of SImode. gcc/ChangeLog: PR target/55212 * config/sh/predicates.md (pc_relative_load_operand): New predicate. * config/sh/sh-protos.h (sh_movsf_ie_ra_split_p): Remove. (sh_movsf_ie_y_split_p): New proto. (sh_movsf_ie_subreg_multiword_p): New proto. * config/sh/sh.cc: (sh_movsf_ie_ra_split_p): Remove. (sh_movsf_ie_y_split_p): New function. (sh_movsf_ie_subreg_multiword_p): New function. (broken_move): Take movsf_ie_ra into account for fldi cases. * config/sh/sh.md (movdf_i4_F_z): New insn. (movdf): Use it when expanding. (movsf_ie_ra): Use define_insn instead of define_insn_and_split. Adjust alternatives. (movsf_ie_rffr): New insn_and_split. (movsf_ie_F_z, movsf_ie_Q_z, movsf_ie_y): New insns. (movsf): Use new patterns when expanding.
