> Is the standard condition for define_memory_constraint here
>                         /* Likewise if the address will be reloaded because
>                            reg_equiv_address is nonzero.  For reg_equiv_mem
>                            we have to check.  */
>                         else if (REG_P (operand)
>                                  && REGNO (operand) >=
> FIRST_PSEUDO_REGISTER && reg_renumber[REGNO (operand)] < 0 &&
> ((reg_equiv_mem (REGNO (operand)) != 0 && EXTRA_CONSTRAINT_STR
> (reg_equiv_mem (REGNO (operand)), c, p))
>
>                                      || (reg_equiv_address (REGNO
>                                      || (operand)) != 0)))
>
>                           win = 1;
> If so, shouldn't you check those conditions as well, or at least something
> similar?  Not sure if reg_equiv_address needs to be allowed there, and
> guess reg_equiv_mem should satisfy the Q constraint, i.e. !MEM_VOLATILE_P
> memory_operand.  Accepting any pseudo there sounds too risky to me...

You're right, and modifying a constraint to silence a bogus error is probably 
too dangerous in any case.  And there may be other affected architectures.
So patch withdrawn.  The best fix is very likely in reload1.c in the end.

-- 
Eric Botcazou

Reply via email to