reload.c (find_equiv_reg): Test all hard registers for membership in the requested...
authorJ"orn Rennecke <amylaar@redhat.com>
Thu, 2 Nov 2000 19:22:04 +0000 (19:22 +0000)
committerJoern Rennecke <amylaar@gcc.gnu.org>
Thu, 2 Nov 2000 19:22:04 +0000 (19:22 +0000)
* reload.c (find_equiv_reg): Test all hard registers for membership
in the requested class.

From-SVN: r37207

gcc/ChangeLog
gcc/reload.c

index c6b37dfd07913e109ab15ec7bfffd1d0d37555ae..17674bedf4c648dbf5c61b13a962f32fffc4b642 100644 (file)
@@ -1,3 +1,8 @@
+Thu Nov  2 19:20:12 2000  J"orn Rennecke <amylaar@redhat.com>
+
+       * reload.c (find_equiv_reg): Test all hard registers for membership
+       in the requested class.
+
 2000-11-02  Joseph S. Myers  <jsm28@cam.ac.uk>
 
        * collect2.c (main, write_c_file_stat), gcc.c (translate_options,
index f3933b116f6b45d7566396a575a0eca4f9f6eabb..57ff486f84912f8354391cdcd5f427c8b76b4ba8 100644 (file)
@@ -6185,16 +6185,29 @@ find_equiv_reg (goal, insn, class, other, reload_reg_p, goalreg, mode)
                      && (valtry
                          = operand_subword (SET_DEST (pat), 1, 0, VOIDmode))
                      && (valueno = true_regnum (valtry)) >= 0)))
-           if (other >= 0
-               ? valueno == other
-               : ((unsigned) valueno < FIRST_PSEUDO_REGISTER
-                  && TEST_HARD_REG_BIT (reg_class_contents[(int) class],
-                                        valueno)))
-             {
-               value = valtry;
-               where = p;
-               break;
-             }
+           {
+             if (other >= 0)
+               {
+                 if (valueno != other)
+                   continue;
+               }
+             else if ((unsigned) valueno >= FIRST_PSEUDO_REGISTER)
+               continue;
+             else
+               {
+                 int i;
+
+                 for (i = HARD_REGNO_NREGS (valueno, mode) - 1; i >= 0; i--)
+                   if (! TEST_HARD_REG_BIT (reg_class_contents[(int) class],
+                                            valueno + i))
+                     break;
+                 if (i >= 0)
+                   continue;
+               }
+             value = valtry;
+             where = p;
+             break;
+           }
        }
     }