diff options
author | François Bobot <francois.bobot@cea.fr> | 2016-07-28 13:46:23 +0200 |
---|---|---|
committer | François Bobot <francois.bobot@cea.fr> | 2016-07-28 13:46:23 +0200 |
commit | 7be0a81e9c605e73b04a31b400a6ab85e322a544 (patch) | |
tree | 3f46854952d18460c16b9fb1f45aa233508600fa /asmcomp/amd64 | |
parent | c3b4e9aa93255ddcc13c68e6c4ca7600ce85642d (diff) | |
download | ocaml-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.mlp | 11 |
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; |