Hi, We also need to be careful in AArch64's movmem implementation, we can't expand to our overlapping mode of operation.
Bootstrapped with no issues. OK? Thanks, James --- 2014-08-21 James Greenhalgh <james.greenha...@arm.com> * config/aarch64/aarch64.c (aarch64_expand_movmem): Fail if we have volatile operands.
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 0f3c74b..56434bc 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -9741,6 +9741,10 @@ aarch64_expand_movmem (rtx *operands) if (!CONST_INT_P (operands[2])) return false; + /* We can't do anything smart if either of the operands are volatile. */ + if (MEM_VOLATILE_P (src) || MEM_VOLATILE_P (dst)) + return false; + n = UINTVAL (operands[2]); /* Try to keep the number of instructions low. For cases below 16 bytes we