regclass.c (record_reg_classes, case 'p'): Set classes appropriately.

* regclass.c (record_reg_classes, case 'p'): Set classes appropriately.
        An alternative always fails if it needs a pseudo and no suitable
        register class can be found.
Bootstrapped on solaris.

From-SVN: r25402
This commit is contained in:
Jeffrey A Law 1999-02-24 13:17:04 +00:00 committed by Jeff Law
parent c99f8c2a3e
commit 46f40127a2
2 changed files with 18 additions and 1 deletions

View File

@ -1,3 +1,9 @@
Wed Feb 24 14:03:54 1999 Jeffrey A Law (law@cygnus.com)
* regclass.c (record_reg_classes, case 'p'): Set classes appropriately.
An alternative always fails if it needs a pseudo and no suitable
register class can be found.
Wed Feb 24 19:47:56 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
* loop.h (loop_insn_first_p): Declare.

View File

@ -1268,6 +1268,12 @@ record_reg_classes (n_alts, n_ops, ops, modes, constraints, insn)
case 'p':
allows_addr = 1;
win = address_operand (op, GET_MODE (op));
/* We know this operand is an address, so we want it to be
allocated to a register that can be the base of an
address, ie BASE_REG_CLASS. */
classes[i]
= reg_class_subunion[(int) classes[i]]
[(int) BASE_REG_CLASS];
break;
case 'm': case 'o': case 'V':
@ -1399,7 +1405,12 @@ record_reg_classes (n_alts, n_ops, ops, modes, constraints, insn)
{
if (classes[i] == NO_REGS)
{
if (! allows_addr)
/* We must always fail if the operand is a REG, but
we did not find a suitable class.
Otherwise we may perform an uninitialized read
from this_op_costs after the `continue' statement
below. */
alt_fail = 1;
}
else