https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127851
--- Comment #8 from Uroš Bizjak <ubizjak at gmail dot com> --- (In reply to Uroš Bizjak from comment #5) > To solve the presented problem for x86, we should prevent combinations > where any of two memory operands is volatile. So, just add: > > !(MEM_P (operands[0]) && MEM_P (operands[1]) > && (MEM_VOLATILE_P (operands[0]) || MEM_VOLATILE_P (operands[1]))) We can also leave to RA to resolve VMEM/MEM combinations, which results in a simplified expression that rejects only VMEM/VMEM combo: !(MEM_P (operands[0]) && MEM_P (operands[1]) && MEM_VOLATILE_P (operands[0]) && MEM_VOLATILE_P (operands[1]))
