]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
* reload.c (find_valid_class): Fix thinko in my previous patch.
authorJan Hubicka <jh@suse.cz>
Thu, 13 Jun 2002 16:08:12 +0000 (18:08 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Thu, 13 Jun 2002 16:08:12 +0000 (16:08 +0000)
From-SVN: r54587

gcc/ChangeLog
gcc/reload.c

index 49757db0df6da1c5c9a6a03d6a2d0535d2cca20c..934a86463afa681319375a0caae5912c787e6dc9 100644 (file)
@@ -1,3 +1,7 @@
+Thu Jun 13 18:02:11 CEST 2002  Jan Hubicka  <jh@suse.cz>
+
+       * reload.c (find_valid_class):  Fix thinko in my previous patch.
+
 2002-06-13  Hans-Peter Nilsson  <hp@axis.com>
 
        PR target/6997
index 8c6aece279cbdd565f76d03102fd8d74491331dd..5c00cce4f2f558128e452b4bb37836b55cc849c9 100644 (file)
@@ -677,6 +677,7 @@ find_valid_class (m1, n, dest_regno)
   enum reg_class best_class = NO_REGS;
   enum reg_class dest_class = REGNO_REG_CLASS (dest_regno);
   unsigned int best_size = 0;
+  int cost;
 
   for (class = 1; class < N_REG_CLASSES; class++)
     {
@@ -687,9 +688,13 @@ find_valid_class (m1, n, dest_regno)
            && ! HARD_REGNO_MODE_OK (regno + n, m1))
          bad = 1;
 
-      if (! bad && reg_class_size[class] > best_size
-         && (best_cost < 0
-             || best_cost >= REGISTER_MOVE_COST (m1, class, dest_class)))
+      if (bad)
+       continue;
+      cost = REGISTER_MOVE_COST (m1, class, dest_class);
+
+      if ((reg_class_size[class] > best_size
+          && (best_cost < 0 || best_cost >= cost))
+         || best_cost > cost)
        {
          best_class = class;
          best_size = reg_class_size[class];