https://gcc.gnu.org/g:eee3b80ab6217ab792f01280bc6240c55468600a
commit eee3b80ab6217ab792f01280bc6240c55468600a Author: Kaz Kojima <kkoj...@rr.iij4u.or.jp> Date: Tue Sep 24 18:35:46 2024 +0900 SH: Fix the condition to use movsh_ie_y pattern. gcc/ChangeLog: * config/sh/sh.cc (sh_movsf_ie_y_split_p): Take the subreg of DImode into account. Diff: --- gcc/config/sh/sh.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/gcc/config/sh/sh.cc b/gcc/config/sh/sh.cc index b2ba7488c5de..d9e7e67cba65 100644 --- a/gcc/config/sh/sh.cc +++ b/gcc/config/sh/sh.cc @@ -11462,11 +11462,15 @@ sh_movsf_ie_y_split_p (rtx op0, rtx op1) { /* f, r */ if (REG_P (op0) - && (SUBREG_P (op1) && GET_MODE (SUBREG_REG (op1)) == SImode)) + && (SUBREG_P (op1) + && (GET_MODE (SUBREG_REG (op1)) == SImode + || GET_MODE (SUBREG_REG (op1)) == DImode))) return true; /* r, f */ if (REG_P (op1) - && (SUBREG_P (op0) && GET_MODE (SUBREG_REG (op0)) == SImode)) + && (SUBREG_P (op0) + && (GET_MODE (SUBREG_REG (op0)) == SImode + || GET_MODE (SUBREG_REG (op0)) == DImode))) return true; return false;