* recog.c (constrain_operands): Validate mem operands.

From-SVN: r75624
This commit is contained in:
Richard Henderson 2004-01-09 19:14:07 -08:00 committed by Richard Henderson
parent c31d56ed06
commit 47069ecbe6
2 changed files with 23 additions and 6 deletions

View File

@ -1,3 +1,7 @@
2004-01-09 Richard Henderson <rth@redhat.com>
* recog.c (constrain_operands): Validate mem operands.
2004-01-09 James E Wilson <wilson@specifixinc.com>
* gcc.c (init_spec): Remove -lunwind from shared case.

View File

@ -2445,12 +2445,25 @@ constrain_operands (int strict)
break;
case 'm':
if (GET_CODE (op) == MEM
/* Before reload, accept what reload can turn into mem. */
|| (strict < 0 && CONSTANT_P (op))
/* During reload, accept a pseudo */
|| (reload_in_progress && GET_CODE (op) == REG
&& REGNO (op) >= FIRST_PSEUDO_REGISTER))
/* Memory operands must be valid, to the extent
required by STRICT. */
if (GET_CODE (op) == MEM)
{
if (strict > 0
&& !strict_memory_address_p (GET_MODE (op),
XEXP (op, 0)))
break;
if (strict == 0
&& !memory_address_p (GET_MODE (op), XEXP (op, 0)))
break;
win = 1;
}
/* Before reload, accept what reload can turn into mem. */
else if (strict < 0 && CONSTANT_P (op))
win = 1;
/* During reload, accept a pseudo */
else if (reload_in_progress && GET_CODE (op) == REG
&& REGNO (op) >= FIRST_PSEUDO_REGISTER)
win = 1;
break;