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. */