re PR rtl-optimization/48381 (internal compiler error: in check_allocation, at ira...
authorVladimir Makarov <vmakarov@redhat.com>
Thu, 31 Mar 2011 19:54:02 +0000 (19:54 +0000)
committerVladimir Makarov <vmakarov@gcc.gnu.org>
Thu, 31 Mar 2011 19:54:02 +0000 (19:54 +0000)
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

gcc/ChangeLog
gcc/ira-color.c

index a0ba31aa4b2b70f1ab5daabcc0636a32ee906de9..3fe316c943d50e183503747f352bcbec48821c52 100644 (file)
@@ -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.
index 6c09dc3b1d41728526c7cd5b68601e0a7cba7753..8fa3393b367004d7a77797413734c6cdf4108861 100644 (file)
@@ -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;