diff options
author | Pierre Chambart <pierre.chambart@ocamlpro.com> | 2016-10-25 16:09:53 +0100 |
---|---|---|
committer | Pierre Chambart <chambart@users.noreply.github.com> | 2016-10-28 13:03:59 +0200 |
commit | c3d056de682de562e98c6d91cee706f6b7131fba (patch) | |
tree | 1697f50c061bdaca186cd373412a87cf756ac535 /asmcomp/deadcode.ml | |
parent | 4c03ef70fd1563d283d038dda180c3b855c37517 (diff) | |
download | ocaml-c3d056de682de562e98c6d91cee706f6b7131fba.tar.gz |
Change Cmm Ccatch construct to allow recursive cases
Diffstat (limited to 'asmcomp/deadcode.ml')
-rw-r--r-- | asmcomp/deadcode.ml | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/asmcomp/deadcode.ml b/asmcomp/deadcode.ml index 42981ded05..d9a5da8bdf 100644 --- a/asmcomp/deadcode.ml +++ b/asmcomp/deadcode.ml @@ -58,12 +58,17 @@ let rec deadcode i = let (body', _) = deadcode body in let (s, _) = deadcode i.next in ({i with desc = Iloop body'; next = s}, i.live) - | Icatch(nfail, body, handler) -> + | Icatch(handlers, body) -> let (body', _) = deadcode body in - let (handler', _) = deadcode handler in + let handlers' = + List.map (fun (nfail, handler) -> + let (handler', _) = deadcode handler in + nfail, handler') + handlers + in let (s, _) = deadcode i.next in - ({i with desc = Icatch(nfail, body', handler'); next = s}, i.live) - | Iexit _ -> + ({i with desc = Icatch(handlers', body'); next = s}, i.live) + | Iexit _nfail -> (i, i.live) | Itrywith(body, handler) -> let (body', _) = deadcode body in |