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.

Reply via email to