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.