The following patch solves the PR48381. The reason for the problem is described on

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48381

Ok to commit?  It was successfully bootstrapped on x86-64.

2011-03-31  Vladimir Makarov <vmaka...@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.

Index: ira-color.c
===================================================================
--- ira-color.c (revision 171769)
+++ ira-color.c (working copy)
@@ -1620,7 +1620,9 @@ assign_hard_reg (ira_allocno_t a, bool r
            {
              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;

Reply via email to