https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118996
--- Comment #10 from H.J. Lu <hjl.tools at gmail dot com> --- Testing this: diff --git a/gcc/ira.cc b/gcc/ira.cc index 885239d1b43..e93a596e2a9 100644 --- a/gcc/ira.cc +++ b/gcc/ira.cc @@ -2158,6 +2158,10 @@ decrease_live_ranges_number (void) || (targetm.small_register_classes_for_mode_p (GET_MODE (src)) && (sregno < FIRST_PSEUDO_REGISTER || dregno < FIRST_PSEUDO_REGISTER)) + || (sregno < FIRST_PSEUDO_REGISTER + && targetm.class_likely_spilled_p (REGNO_REG_CLASS (sregno))) + || (dregno < FIRST_PSEUDO_REGISTER + && targetm.class_likely_spilled_p (REGNO_REG_CLASS (dregno))) /* We don't see all updates to SP if they are in an auto-inc memory reference, so we must disallow this optimization on them. */