* reload.c (find_equiv_reg): Test all hard registers for membership
in the requested class.
From-SVN: r37207
+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,
&& (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;
+ }
}
}