re PR other/54814 (ICE: unable to find a register to spill in class 'R0_REG')
authorBernd Schmidt <bernds@codesourcery.com>
Mon, 28 Jan 2013 20:03:26 +0000 (20:03 +0000)
committerGeorg-Johann Lay <gjl@gcc.gnu.org>
Mon, 28 Jan 2013 20:03:26 +0000 (20:03 +0000)
PR other/54814
* reload.c (find_valid_class_1): Use in_hard_reg_set_p instead of
TEST_HARD_REG_BIT.

From-SVN: r195515

gcc/ChangeLog
gcc/reload.c

index cab97ef..917986b 100644 (file)
@@ -1,3 +1,9 @@
+2013-01-28  Bernd Schmidt  <bernds@codesourcery.com>
+
+       PR other/54814
+       * reload.c (find_valid_class_1): Use in_hard_reg_set_p instead of
+       TEST_HARD_REG_BIT.
+
 2013-01-28  Jakub Jelinek  <jakub@redhat.com>
 
        PR rtl-optimization/56117
index fb1021c..889a6cc 100644 (file)
@@ -707,7 +707,7 @@ find_valid_class (enum machine_mode outer ATTRIBUTE_UNUSED,
 }
 
 /* We are trying to reload a subreg of something that is not a register.
-   Find the largest class which has at least one register valid in
+   Find the largest class which contains only registers valid in
    mode MODE.  OUTER is the mode of the subreg, DEST_CLASS the class in
    which we would eventually like to obtain the object.  */
 
@@ -727,10 +727,12 @@ find_valid_class_1 (enum machine_mode outer ATTRIBUTE_UNUSED,
     {
       int bad = 0;
       for (regno = 0; regno < FIRST_PSEUDO_REGISTER && !bad; regno++)
-       if (TEST_HARD_REG_BIT (reg_class_contents[rclass], regno)
-           && !HARD_REGNO_MODE_OK (regno, mode))
-         bad = 1;
-
+       {
+         if (in_hard_reg_set_p (reg_class_contents[rclass], mode, regno)
+             && !HARD_REGNO_MODE_OK (regno, mode))
+           bad = 1;
+       }
+      
       if (bad)
        continue;