Volatile memory is not general operand
Paulo J. Matos
pocmatos@gmail.com
Fri Feb 11 12:57:00 GMT 2011
On 11/02/11 12:03, Eric Botcazou wrote:
>> if (! volatile_ok&& MEM_VOLATILE_P (op))
>> return 0;
>.
>
> It's more of the other way around: MEM_VOLATILE_P is a general operand unless
> explicitly requested via init_recog_no_volatile. Some passes, like combine,
> don't track the volatileness of operands precisely, so they disable their
> manipulation altogether to avoid generating wrong code.
>
But the piece of code I quoted above is in general_regs. A (mem/v ...)
will never be a general_operand, will it?
Without that, the insn
(set (mem/s/v:QImode ...) (const_int 0))
is never matched by
(set (match_operand:QImode "nonimmediate_operand" "")
(match_operand:QImode "general_operand" ""))
More information about the Gcc
mailing list