diff options
author | Vladimir Makarov <vmakarov@redhat.com> | 2011-03-31 19:54:02 +0000 |
---|---|---|
committer | Vladimir Makarov <vmakarov@gcc.gnu.org> | 2011-03-31 19:54:02 +0000 |
commit | b8faca75e7b2a0c0a0b4185be32432e578c2b945 (patch) | |
tree | 550dec3e8f05e109af8b4127064843017ea989f4 /gcc | |
parent | 7d11cebe9a4c0ca58d956644027ab7d9b93b8157 (diff) | |
download | gcc-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/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/ira-color.c | 4 |
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; |