aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2002-06-13 18:20:02 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2002-06-13 16:20:02 +0000
commitb80cb6e29cb176bffc39f3c218a0b4a13e2ff969 (patch)
tree6b1e90f202d3221847ccb2583da856156ff7d7db /gcc
parent6cde4876448a38c9f47f6a92a72efab9848d7482 (diff)
downloadgcc-b80cb6e29cb176bffc39f3c218a0b4a13e2ff969.zip
gcc-b80cb6e29cb176bffc39f3c218a0b4a13e2ff969.tar.gz
gcc-b80cb6e29cb176bffc39f3c218a0b4a13e2ff969.tar.bz2
* reload.c (find_valid_class): Fix thinko in my previous patch.
From-SVN: r54589
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/reload.c11
2 files changed, 12 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1136809..8262378 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+Thu Jun 13 18:18:17 CEST 2002 Jan Hubicka <jh@suse.cz>
+
+ * reload.c (find_valid_class): Fix thinko in my previous patch.
+
2002-06-13 Ulrich Weigand <uweigand@de.ibm.com>
* config/s390/s390.h (TARGET_CPU_CPP_BUILTINS): New macro.
diff --git a/gcc/reload.c b/gcc/reload.c
index 6560fb3..6a18245 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -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];