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