+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.
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':
{
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