2011-03-31 Vladimir Makarov <vmakarov@redhat.com>
authorvmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 31 Mar 2011 19:54:02 +0000 (19:54 +0000)
committervmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 31 Mar 2011 19:54:02 +0000 (19:54 +0000)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@171795 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/ira-color.c

index a0ba31a..3fe316c 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 6c09dc3..8fa3393 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;