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:
parent
c99f8c2a3e
commit
46f40127a2
2 changed files with 18 additions and 1 deletions
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue