aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2010-12-17 14:51:25 -0800
committerRichard Henderson <rth@gcc.gnu.org>2010-12-17 14:51:25 -0800
commitf90333ebe7dd773947e781f6f4a893b882f25570 (patch)
treef7a05b02bc4098bbf2b5fcbc3ebc2ba1138a72ee
parentfed2b1017993c0db4fb6788bd83870d289e84827 (diff)
downloadgcc-f90333ebe7dd773947e781f6f4a893b882f25570.zip
gcc-f90333ebe7dd773947e781f6f4a893b882f25570.tar.gz
gcc-f90333ebe7dd773947e781f6f4a893b882f25570.tar.bz2
Continue searching in find_oldest_value_reg on class match failure.
From-SVN: r168001
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/regcprop.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 944f806..37890e6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2010-12-17 Richard Henderson <rth@redhat.com>
+
+ * regcprop.c (find_oldest_value_reg): Continue search instead of
+ failing if an element in the copy chain is of the wrong regclass.
+
2010-12-17 Paolo Bonzini <bonzini@gnu.org>
PR c/20385
diff --git a/gcc/regcprop.c b/gcc/regcprop.c
index 88f9226..0f0dfb3 100644
--- a/gcc/regcprop.c
+++ b/gcc/regcprop.c
@@ -457,7 +457,7 @@ find_oldest_value_reg (enum reg_class cl, rtx reg, struct value_data *vd)
rtx new_rtx;
if (!in_hard_reg_set_p (reg_class_contents[cl], mode, i))
- return NULL_RTX;
+ continue;
new_rtx = maybe_mode_change (oldmode, vd->e[regno].mode, mode, i, regno);
if (new_rtx)