https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113148
--- Comment #2 from Xi Ruoyao <xry111 at gcc dot gnu.org> --- A bug in loongarch_secondary_reload is causing an infinite loop: diff --git a/gcc/config/loongarch/loongarch.cc b/gcc/config/loongarch/loongarch.cc index 5ffd06ce9be..c0a0af3dda5 100644 --- a/gcc/config/loongarch/loongarch.cc +++ b/gcc/config/loongarch/loongarch.cc @@ -6951,7 +6951,8 @@ loongarch_secondary_reload (bool in_p ATTRIBUTE_UNUSED, rtx x, return NO_REGS; } - if (reg_class_subset_p (rclass, FP_REGS) && MEM_P (x)) + if (reg_class_subset_p (rclass, FP_REGS) + && (regno == -1 || MEM_P (x))) return GR_REGS; return NO_REGS;