aboutsummaryrefslogtreecommitdiff
path: root/gcc/lra-constraints.c
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/lra-constraints.c
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/lra-constraints.c')
-rw-r--r--gcc/lra-constraints.c4
1 files changed, 3 insertions, 1 deletions
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;