summaryrefslogtreecommitdiff
path: root/asmcomp/amd64
diff options
context:
space:
mode:
authorFrançois Bobot <francois.bobot@cea.fr>2016-07-28 13:46:23 +0200
committerFrançois Bobot <francois.bobot@cea.fr>2016-07-28 13:46:23 +0200
commit7be0a81e9c605e73b04a31b400a6ab85e322a544 (patch)
tree3f46854952d18460c16b9fb1f45aa233508600fa /asmcomp/amd64
parentc3b4e9aa93255ddcc13c68e6c4ca7600ce85642d (diff)
downloadocaml-7be0a81e9c605e73b04a31b400a6ab85e322a544.tar.gz
Fix backtrace for regular raise on arm64, arm
for constant exception, a reraise was done instead of a raise
Diffstat (limited to 'asmcomp/amd64')
-rw-r--r--asmcomp/amd64/emit.mlp11
1 files changed, 3 insertions, 8 deletions
diff --git a/asmcomp/amd64/emit.mlp b/asmcomp/amd64/emit.mlp
index 4f010f1e29..f53f26afa1 100644
--- a/asmcomp/amd64/emit.mlp
+++ b/asmcomp/amd64/emit.mlp
@@ -770,15 +770,11 @@ let emit_instr fallthrough i =
cfi_adjust_cfa_offset (-8);
stack_offset := !stack_offset - 16
| Lraise k ->
- begin match !Clflags.debug, k with
- | true, Lambda.Raise_regular ->
+ begin match k with
+ | Lambda.Raise_regular | Lambda.Raise_reraise ->
emit_call "caml_raise_exn";
record_frame Reg.Set.empty true i.dbg
- | true, Lambda.Raise_reraise ->
- emit_call "caml_reraise_exn";
- record_frame Reg.Set.empty true i.dbg
- | false, _
- | true, Lambda.Raise_notrace ->
+ | Lambda.Raise_notrace ->
I.mov r14 rsp;
I.pop r14;
I.ret ()
@@ -904,7 +900,6 @@ let begin_assembly() =
D.extrn "caml_alloc3" NEAR;
D.extrn "caml_ml_array_bound_error" NEAR;
D.extrn "caml_raise_exn" NEAR;
- D.extrn "caml_reraise_exn" NEAR;
end;