summaryrefslogtreecommitdiff
path: root/asmcomp/deadcode.ml
diff options
context:
space:
mode:
authorPierre Chambart <pierre.chambart@ocamlpro.com>2016-10-25 16:09:53 +0100
committerPierre Chambart <chambart@users.noreply.github.com>2016-10-28 13:03:59 +0200
commitc3d056de682de562e98c6d91cee706f6b7131fba (patch)
tree1697f50c061bdaca186cd373412a87cf756ac535 /asmcomp/deadcode.ml
parent4c03ef70fd1563d283d038dda180c3b855c37517 (diff)
downloadocaml-c3d056de682de562e98c6d91cee706f6b7131fba.tar.gz
Change Cmm Ccatch construct to allow recursive cases
Diffstat (limited to 'asmcomp/deadcode.ml')
-rw-r--r--asmcomp/deadcode.ml13
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