global.c (prune_preferences): Move some invariants out of the inner loop.
authorJ"orn Rennecke <amylaar@cygnus.co.uk>
Thu, 12 Aug 1999 22:53:28 +0000 (22:53 +0000)
committerJoern Rennecke <amylaar@gcc.gnu.org>
Thu, 12 Aug 1999 22:53:28 +0000 (23:53 +0100)
* global.c (prune_preferences): Move some invariants out of the
inner loop.

From-SVN: r28691

gcc/ChangeLog
gcc/global.c

index 6e4f3a7cc8abbe4aade327feb7b5053a300256ea..bdf2b891d5cf59ad090ca4d1d67579c165c34702 100644 (file)
@@ -1,3 +1,8 @@
+Thu Aug 12 23:51:04 1999  J"orn Rennecke <amylaar@cygnus.co.uk>
+
+       * global.c (prune_preferences): Move some invariants out of the
+       inner loop.
+
 Thu Aug 12 15:30:29 1999  Jesse Perry  (jap@unx.dec.com)
 
        * configure.in (alpha*-dec-osf*): Add osf5.
index 0c5b050db98e978df83763ef36a0558322fa5039..1ac0f24c3f293996565430a2c138551aedf84059 100644 (file)
@@ -864,7 +864,7 @@ prune_preferences ()
 
   for (i = max_allocno - 1; i >= 0; i--)
     {
-      HARD_REG_SET temp;
+      HARD_REG_SET temp, temp2;
 
       allocno = allocno_order[i];
       COPY_HARD_REG_SET (temp, hard_reg_conflicts[allocno]);
@@ -882,25 +882,27 @@ prune_preferences ()
       AND_COMPL_HARD_REG_SET (hard_reg_copy_preferences[allocno], temp);
       AND_COMPL_HARD_REG_SET (hard_reg_full_preferences[allocno], temp);
 
-      CLEAR_HARD_REG_SET (regs_someone_prefers[allocno]);
-
       /* Merge in the preferences of lower-priority registers (they have
         already been pruned).  If we also prefer some of those registers,
         don't exclude them unless we are of a smaller size (in which case
         we want to give the lower-priority allocno the first chance for
         these registers).  */
+      CLEAR_HARD_REG_SET (temp);
+      CLEAR_HARD_REG_SET (temp2);
       for (j = i + 1; j < max_allocno; j++)
        if (CONFLICTP (allocno, allocno_order[j])
            || CONFLICTP (allocno_order[j], allocno))
          {
-           COPY_HARD_REG_SET (temp,
-                              hard_reg_full_preferences[allocno_order[j]]);
            if (allocno_size[allocno_order[j]] <= allocno_size[allocno])
-             AND_COMPL_HARD_REG_SET (temp,
-                                     hard_reg_full_preferences[allocno]);
-                              
-           IOR_HARD_REG_SET (regs_someone_prefers[allocno], temp);
+             IOR_HARD_REG_SET (temp,
+                               hard_reg_full_preferences[allocno_order[j]]);
+           else
+             IOR_HARD_REG_SET (temp2,
+                               hard_reg_full_preferences[allocno_order[j]]);
          }
+      AND_COMPL_HARD_REG_SET (temp, hard_reg_full_preferences[allocno]);
+      IOR_HARD_REG_SET (temp, temp2);
+      COPY_HARD_REG_SET (regs_someone_prefers[allocno], temp);
     }
 }
 \f