aboutsummaryrefslogtreecommitdiffstats
path: root/aarch64/Asmgen.v
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2020-03-27 20:37:03 +0100
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2020-03-27 20:37:03 +0100
commite0843c84d1aa69ed0176cf44109b3bbdd4019504 (patch)
tree07eb28a3eae67107888412c50aa67e3c82cbb7db /aarch64/Asmgen.v
parent96482f7df095e6244c414a14b07771dbaef67aec (diff)
downloadcompcert-kvx-e0843c84d1aa69ed0176cf44109b3bbdd4019504.tar.gz
compcert-kvx-e0843c84d1aa69ed0176cf44109b3bbdd4019504.zip
disable leaf function removal of return address restoration due to memcpy overwriting the return address register
Diffstat (limited to 'aarch64/Asmgen.v')
-rw-r--r--aarch64/Asmgen.v7
1 files changed, 5 insertions, 2 deletions
diff --git a/aarch64/Asmgen.v b/aarch64/Asmgen.v
index f4446696..024c9a17 100644
--- a/aarch64/Asmgen.v
+++ b/aarch64/Asmgen.v
@@ -1061,9 +1061,12 @@ Definition storeptr (src: ireg) (base: iregsp) (ofs: ptrofs) (k: code) :=
(** Function epilogue *)
Definition make_epilogue (f: Mach.function) (k: code) :=
- if is_leaf_function f
+ (* FIXME
+ Cannot be used because memcpy destroys X30;
+ issue being discussed with X. Leroy *)
+ (* if is_leaf_function f
then Pfreeframe f.(fn_stacksize) f.(fn_link_ofs) :: k
- else loadptr XSP f.(fn_retaddr_ofs) RA
+ else*) loadptr XSP f.(fn_retaddr_ofs) RA
(Pfreeframe f.(fn_stacksize) f.(fn_link_ofs) :: k).
(** Translation of a Mach instruction. *)