https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71435
--- Comment #7 from Eric Botcazou <ebotcazou at gcc dot gnu.org> --- > Maybe we need an arg for that function to say whether to look at individual > insn chains? That, or just fiddle with the existing one, its only purpose in the function is to guard the problematic global register allocation. Maybe: /* If we allocated another stack slot, redo elimination bookkeeping. */ if (something_was_spilled || starting_frame_size != get_frame_size ()) { if (update_eliminables_and_spill ()) finish_spills (0); continue; } [...] if (update_eliminables_and_spill ()) { finish_spills (0); something_changed = 1; } else { select_reload_regs (); if (failure) goto failed; if (insns_need_reload) something_changed |= finish_spills (global); } and did_spill can go.