aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorVladimir Makarov <vmakarov@redhat.com>2012-11-26 18:08:44 +0000
committerVladimir Makarov <vmakarov@gcc.gnu.org>2012-11-26 18:08:44 +0000
commitf421c426a24f8e82c792bb4cdfbcd2f968cb83c2 (patch)
tree6391367e60c221713f63b1042f3b20727623b072 /gcc
parent119103ca7bcd576fdf7b53b21dcb598b8915ad5a (diff)
downloadgcc-f421c426a24f8e82c792bb4cdfbcd2f968cb83c2.zip
gcc-f421c426a24f8e82c792bb4cdfbcd2f968cb83c2.tar.gz
gcc-f421c426a24f8e82c792bb4cdfbcd2f968cb83c2.tar.bz2
re PR target/55277 (ICE in assign_by_spills, at lra-assigns.c:1217)
2012-11-26 Vladimir Makarov <vmakarov@redhat.com> PR target/55277 * gcc.target/i386/pr55227.c: New test. 2012-11-26 Vladimir Makarov <vmakarov@redhat.com> PR target/55277 * lra-constraints.c (in_class_p): Check reg class contents too. From-SVN: r193824
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/lra-constraints.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/i386/pr55277.c18
4 files changed, 31 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5124079..1c0aa9a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2012-11-26 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR target/55277
+ * lra-constraints.c (in_class_p): Check reg class contents too.
+
2012-11-26 James Greenhalgh <james.greenhalgh@arm.com>
* config/aarch64/aarch64-builtins.c (aarch64_builtin_decls): New.
diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c
index e381c70..d90ac02 100644
--- a/gcc/lra-constraints.c
+++ b/gcc/lra-constraints.c
@@ -293,7 +293,9 @@ in_class_p (rtx reg, enum reg_class cl, enum reg_class *new_class)
if (nregs == 1)
return true;
for (j = 0; j < nregs; j++)
- if (TEST_HARD_REG_BIT (lra_no_alloc_regs, hard_regno + j))
+ if (TEST_HARD_REG_BIT (lra_no_alloc_regs, hard_regno + j)
+ || ! TEST_HARD_REG_BIT (reg_class_contents[common_class],
+ hard_regno + j))
break;
if (j >= nregs)
return true;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ed2bea8..9ce1761 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2012-11-26 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR target/55277
+ * gcc.target/i386/pr55227.c: New test.
+
2012-11-26 Steven Bosscher <steven@gcc.gnu.org>
* testsuite/gcc.dg/20050811-1.c: Change -dv option to -graph option
diff --git a/gcc/testsuite/gcc.target/i386/pr55277.c b/gcc/testsuite/gcc.target/i386/pr55277.c
new file mode 100644
index 0000000..0bdcdc4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr55277.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target ilp32 } */
+/* { dg-options "-O1" } */
+
+int a, c;
+
+void f(long long p)
+{
+ long long b;
+
+ if(b)
+ b = p ? : 0;
+
+ for (; p; p++)
+ p *= a & (c = p *= !a < 2);
+
+ a = b += !(b & 3740917449u);
+}