summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@inria.fr>1996-01-11 14:15:23 +0000
committerXavier Leroy <xavier.leroy@inria.fr>1996-01-11 14:15:23 +0000
commitf66c567233bff5f417fa3383bf308bfa289b4e9c (patch)
treec6ee56424d17931eee2c6601fff0e54fa97dadd0
parent3e564da17aed5adfe63239b7a5dfed1bc163a3e2 (diff)
liveness: mettre dans les noeuds Iexit un live_across raisonnable.
split: pour les noeuds Iexit, utiliser i.live et non i.next.live. git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@610 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rw-r--r--asmcomp/liveness.ml2
-rw-r--r--asmcomp/split.ml2
2 files changed, 2 insertions, 2 deletions
diff --git a/asmcomp/liveness.ml b/asmcomp/liveness.ml
index 1e9bd6712..ad1f31c74 100644
--- a/asmcomp/liveness.ml
+++ b/asmcomp/liveness.ml
@@ -71,7 +71,7 @@ let rec live i finally =
i.live <- before_body;
before_body
| Iexit ->
- (* i.live remains empty since no regs are live across *)
+ i.live <- !live_at_exit; (* These regs are live across *)
!live_at_exit
| Itrywith(body, handler) ->
let at_join = live i.next finally in
diff --git a/asmcomp/split.ml b/asmcomp/split.ml
index 3a5e902a5..f22ddc93e 100644
--- a/asmcomp/split.ml
+++ b/asmcomp/split.ml
@@ -170,7 +170,7 @@ let rec rename i sub =
(instr_cons (Icatch(new_body, new_handler)) [||] [||] new_next,
sub_next)
| Iexit ->
- exit_subst := merge_substs !exit_subst sub i.next;
+ exit_subst := merge_substs !exit_subst sub i;
(i, None)
| Itrywith(body, handler) ->
let (new_body, sub_body) = rename body sub in