aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorVladimir Makarov <vmakarov@redhat.com>2011-03-31 19:54:02 +0000
committerVladimir Makarov <vmakarov@gcc.gnu.org>2011-03-31 19:54:02 +0000
commitb8faca75e7b2a0c0a0b4185be32432e578c2b945 (patch)
tree550dec3e8f05e109af8b4127064843017ea989f4 /gcc
parent7d11cebe9a4c0ca58d956644027ab7d9b93b8157 (diff)
downloadgcc-b8faca75e7b2a0c0a0b4185be32432e578c2b945.zip
gcc-b8faca75e7b2a0c0a0b4185be32432e578c2b945.tar.gz
gcc-b8faca75e7b2a0c0a0b4185be32432e578c2b945.tar.bz2
re PR rtl-optimization/48381 (internal compiler error: in check_allocation, at ira.c:2094)
2011-03-31 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/48381 * ira-color.c (assign_hard_reg): Use hard reg set intersection instead of ira_class_hard_reg_index for calculating conflicting hard registers. From-SVN: r171795
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/ira-color.c4
2 files changed, 10 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a0ba31a..3fe316c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2011-03-31 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimization/48381
+ * ira-color.c (assign_hard_reg): Use hard reg set intersection
+ instead of ira_class_hard_reg_index for calculating conflicting
+ hard registers.
+
2011-03-31 Steven Bosscher <steven@gcc.gnu.org>
* cprop.c: Clean up hash table building.
diff --git a/gcc/ira-color.c b/gcc/ira-color.c
index 6c09dc3..8fa3393 100644
--- a/gcc/ira-color.c
+++ b/gcc/ira-color.c
@@ -1620,7 +1620,9 @@ assign_hard_reg (ira_allocno_t a, bool retry_p)
{
hard_regno = ALLOCNO_HARD_REGNO (conflict_a);
if (hard_regno >= 0
- && ira_class_hard_reg_index[aclass][hard_regno] >= 0)
+ && (ira_hard_reg_set_intersection_p
+ (hard_regno, ALLOCNO_MODE (conflict_a),
+ reg_class_contents[aclass])))
{
int n_objects = ALLOCNO_NUM_OBJECTS (conflict_a);
int conflict_nregs;