Allow early-writeback for the cases
stp d, d, [sp,#-imm]!
stp s, s, [sp,#-imm]!
as well as for the existing case
stp q, q, [sp,#-imm]!
git-svn-id: svn://svn.valgrind.org/vex/trunk@2854 8f6e269a-dfd6-0310-a8e1-e2731360e62c
diff --git a/priv/guest_arm64_toIR.c b/priv/guest_arm64_toIR.c
index a8e077c..55ca7e2 100644
--- a/priv/guest_arm64_toIR.c
+++ b/priv/guest_arm64_toIR.c
@@ -3702,8 +3702,10 @@
}
/* Normally rN would be updated after the transfer. However, in
- the special case typifed by
+ the special cases typifed by
stp q0, q1, [sp,#-512]!
+ stp d0, d1, [sp,#-512]!
+ stp s0, s1, [sp,#-512]!
it is necessary to update SP before the transfer, (1)
because Memcheck will otherwise complain about a write
below the stack pointer, and (2) because the segfault
@@ -3713,7 +3715,7 @@
address to the next page.
*/
Bool earlyWBack
- = wBack && simm7 < 0 && szB == 16
+ = wBack && simm7 < 0
&& INSN(24,23) == BITS2(1,1) && nn == 31 && !isLD;
if (wBack && earlyWBack)