https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55212
--- Comment #263 from Kazumoto Kojima <kkojima at gcc dot gnu.org> --- Created attachment 59132 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=59132&action=edit a patch rewriting movsh_ie_ra This patch splits movsf_ie_ra into several new patterns to remove match_scratch. Also define a new sub-pattern of movdf for constant loads. * gcc/config/sh/predicates.md (pc_relative_load_operand): New predicate. * gcc/config/sh/sh-protos.h (sh_movsf_ie_ra_split_p): Remove. (sh_movsf_ie_y_split_p): New proto. * gcc/config/sh/sh.cc: (sh_movsf_ie_ra_split_p): Remove. (sh_movsf_ie_y_split_p): New function. * gcc/config/sh/sh.md (movdf_i4_F_z): New insn pattern. (movdf): Use it. (movsf_ie_ra): Use define_insn instead of define_insn_and_split. (movsf_ie_F_z): Rename from movsf_ie_const_ra. (movsf_ie_Q_z, movsf_ie_y): New insn pattern. (movsf): Use new patterns. (movdf_i4_F_z+7): New splitter. With it, now "make check-gcc" has no new ICEs with unix/-m4/-mlra when comparing unix/-m4.