Bugfix in order_regs_for_reload
authorBernd Schmidt <bernds@cygnus.co.uk>
Thu, 16 Sep 1999 09:55:48 +0000 (09:55 +0000)
committerBernd Schmidt <crux@gcc.gnu.org>
Thu, 16 Sep 1999 09:55:48 +0000 (09:55 +0000)
From-SVN: r29455

gcc/ChangeLog
gcc/reload1.c

index 40e358e463c767e8f4075ab26ff8a5a7212ab4eb..cb20deb9a93f901abafa3a6db7e3beb64ed4e1de 100644 (file)
@@ -1,3 +1,8 @@
+Thu Sep 16 10:53:36 1999  Bernd Schmidt  <bernds@cygnus.co.uk>
+
+       * reload1.c (order_regs_for_reload): Move hard_reg_n_uses
+       computation out of loop over hard regs.
+
 Wed Sep 15 21:37:06 1999  Mark Mitchell  <mark@codesourcery.com>
 
        * function.c (identify_blocks): Don't shadow a variable in an 
index 22533ec66b55c5ad37c8708d27e64a2df24c8d58..57b43d92cf06e1675341dcf7fe6ec75a4a502f77 100644 (file)
@@ -4109,44 +4109,35 @@ order_regs_for_reload (chain)
 
   COPY_HARD_REG_SET (bad_spill_regs, bad_spill_regs_global);
 
-  for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
-    {
-      hard_reg_n_uses[i].regno = i;
-      hard_reg_n_uses[i].uses = 0;
-    }
-
   /* Count number of uses of each hard reg by pseudo regs allocated to it
      and then order them by decreasing use.  */
 
   for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
     {
-      int j;
+      hard_reg_n_uses[i].regno = i;
+      hard_reg_n_uses[i].uses = 0;
 
       /* Test the various reasons why we can't use a register for
         spilling in this insn.  */
       if (fixed_regs[i]
          || REGNO_REG_SET_P (chain->live_before, i)
          || REGNO_REG_SET_P (chain->live_after, i))
-       {
-         SET_HARD_REG_BIT (bad_spill_regs, i);
-         continue;
-       }
+       SET_HARD_REG_BIT (bad_spill_regs, i);
+    }
 
-      /* Now find out which pseudos are allocated to it, and update
-        hard_reg_n_uses.  */
-      CLEAR_REG_SET (pseudos_counted);
+  /* Now compute hard_reg_n_uses.  */
+  CLEAR_REG_SET (pseudos_counted);
 
-      EXECUTE_IF_SET_IN_REG_SET
-       (chain->live_before, FIRST_PSEUDO_REGISTER, j,
-        {
-          count_pseudo (hard_reg_n_uses, j);
-        });
-      EXECUTE_IF_SET_IN_REG_SET
-       (chain->live_after, FIRST_PSEUDO_REGISTER, j,
-        {
-          count_pseudo (hard_reg_n_uses, j);
-        });
-    }
+  EXECUTE_IF_SET_IN_REG_SET
+    (chain->live_before, FIRST_PSEUDO_REGISTER, i,
+     {
+       count_pseudo (hard_reg_n_uses, i);
+     });
+  EXECUTE_IF_SET_IN_REG_SET
+    (chain->live_after, FIRST_PSEUDO_REGISTER, i,
+     {
+       count_pseudo (hard_reg_n_uses, i);
+     });
 
   FREE_REG_SET (pseudos_counted);