reload.c (find_equiv_reg): Test all hard registers for membership in the requested class.

* reload.c (find_equiv_reg): Test all hard registers for membership
	in the requested class.

From-SVN: r37207
This commit is contained in:
J"orn Rennecke 2000-11-02 19:22:04 +00:00 committed by Joern Rennecke
parent 9473c5226b
commit 0192d70465
2 changed files with 28 additions and 10 deletions

View 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,

View 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;
}
}
}