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 <[email protected]>
* 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