diff options
author | Vladimir Makarov <vmakarov@redhat.com> | 2012-11-26 18:08:44 +0000 |
---|---|---|
committer | Vladimir Makarov <vmakarov@gcc.gnu.org> | 2012-11-26 18:08:44 +0000 |
commit | f421c426a24f8e82c792bb4cdfbcd2f968cb83c2 (patch) | |
tree | 6391367e60c221713f63b1042f3b20727623b072 /gcc | |
parent | 119103ca7bcd576fdf7b53b21dcb598b8915ad5a (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/lra-constraints.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr55277.c | 18 |
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); +} |