re PR bootstrap/71435 (sparc bootstrap failure since r235625)
authorEric Botcazou <ebotcazou@adacore.com>
Sat, 18 Jun 2016 11:10:10 +0000 (11:10 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Sat, 18 Jun 2016 11:10:10 +0000 (11:10 +0000)
PR bootstrap/71435
* reload1.c (reload): Pass 0 to finish_spills when called because
update_eliminables_and_spill returns true and remove did_spill.
(finish_spills): Adjust comment and document GLOBAL parameter.

From-SVN: r237571

gcc/ChangeLog
gcc/reload1.c

index d493884eb5d01df07df9576ab06abc4f2a7e4b4c..dc901dacda0bc04fdf3d8210e4814c3aea0efc7f 100644 (file)
@@ -1,3 +1,10 @@
+2016-06-18  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR bootstrap/71435
+       * reload1.c (reload): Pass 0 to finish_spills when called because
+       update_eliminables_and_spill returns true and remove did_spill.
+       (finish_spills): Adjust comment and document GLOBAL parameter.
+
 2016-06-17  DJ Delorie  <dj@redhat.com>
 
        PR target/71338
index d6fcece1b7338614032f47e5b4ae50e892d0c9ca..5622e895e4be2818c48c9d9144d2edc8a98ffe84 100644 (file)
@@ -897,7 +897,6 @@ reload (rtx_insn *first, int global)
   for (;;)
     {
       int something_changed;
-      int did_spill;
       HOST_WIDE_INT starting_frame_size;
 
       starting_frame_size = get_frame_size ();
@@ -982,7 +981,7 @@ reload (rtx_insn *first, int global)
       if (something_was_spilled || starting_frame_size != get_frame_size ())
        {
          if (update_eliminables_and_spill ())
-           finish_spills (global);
+           finish_spills (0);
          continue;
        }
 
@@ -1001,8 +1000,6 @@ reload (rtx_insn *first, int global)
           is used.  */
        CLEAR_REG_SET (&spilled_pseudos);
 
-      did_spill = 0;
-
       something_changed = 0;
 
       /* If we allocated any new memory locations, make another pass
@@ -1019,7 +1016,7 @@ reload (rtx_insn *first, int global)
 
       if (update_eliminables_and_spill ())
        {
-         did_spill = 1;
+         finish_spills (0);
          something_changed = 1;
        }
       else
@@ -1027,11 +1024,10 @@ reload (rtx_insn *first, int global)
          select_reload_regs ();
          if (failure)
            goto failed;
+         if (insns_need_reload)
+           something_changed |= finish_spills (global);
        }
 
-      if (insns_need_reload != 0 || did_spill)
-       something_changed |= finish_spills (global);
-
       if (! something_changed)
        break;
 
@@ -4281,10 +4277,13 @@ spill_hard_reg (unsigned int regno, int cant_eliminate)
       SET_REGNO_REG_SET (&spilled_pseudos, i);
 }
 
-/* After find_reload_regs has been run for all insn that need reloads,
-   and/or spill_hard_regs was called, this function is used to actually
-   spill pseudo registers and try to reallocate them.  It also sets up the
-   spill_regs array for use by choose_reload_regs.  */
+/* After spill_hard_reg was called and/or find_reload_regs was run for all
+   insns that need reloads, this function is used to actually spill pseudo
+   registers and try to reallocate them.  It also sets up the spill_regs
+   array for use by choose_reload_regs.
+
+   GLOBAL nonzero means we should attempt to reallocate any pseudo registers
+   that we displace from hard registers.  */
 
 static int
 finish_spills (int global)