Skip to content

Commit 6606cc6

Browse files
committed
explicit pure_fun
1 parent 5e69c64 commit 6606cc6

File tree

5 files changed

+15
-10
lines changed

5 files changed

+15
-10
lines changed

compiler/lib/deadcode.ml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -391,14 +391,13 @@ let remove_empty_blocks st (p : Code.program) : Code.program =
391391
in
392392
{ p with blocks }
393393

394-
let f ({ blocks; _ } as p : Code.program) =
394+
let f pure_funs ({ blocks; _ } as p : Code.program) =
395395
let previous_p = p in
396396
Code.invariant p;
397397
let t = Timer.make () in
398398
let nv = Var.count () in
399399
let defs = Array.make nv [] in
400400
let live = Array.make nv 0 in
401-
let pure_funs = Pure_fun.f p in
402401
Addr.Map.iter
403402
(fun _ block ->
404403
List.iter block.body ~f:(fun i ->

compiler/lib/deadcode.mli

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
type variable_uses =
2222
int array (* For each variable, indicates how many times it is used. *)
2323

24-
val f : Code.program -> Code.program * variable_uses
24+
val f : Pure_fun.t -> Code.program -> Code.program * variable_uses
2525

2626
val remove_unused_blocks : Code.program -> Code.program
2727

compiler/lib/driver.ml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ let tailcall p =
4141

4242
let deadcode' p =
4343
if debug () then Format.eprintf "Dead-code...@.";
44-
Deadcode.f p
44+
let pure_fun = Pure_fun.f p in
45+
Deadcode.f pure_fun p
4546

4647
let deadcode p =
4748
let p, _ = deadcode' p in
@@ -100,12 +101,13 @@ let effects_and_exact_calls ~deadcode_sentinal (profile : Profile.t) p =
100101
| _, O1 -> true
101102
in
102103
let info = Global_flow.f ~fast p in
104+
let pure_fun = Pure_fun.f p in
103105
let p, live_vars =
104106
if Config.Flag.globaldeadcode () && Config.Flag.deadcode ()
105107
then
106-
let p = Global_deadcode.f p ~deadcode_sentinal info in
107-
Deadcode.f p
108-
else Deadcode.f p
108+
let p = Global_deadcode.f pure_fun p ~deadcode_sentinal info in
109+
Deadcode.f pure_fun p
110+
else Deadcode.f pure_fun p
109111
in
110112
match Config.effects () with
111113
| `Cps | `Double_translation ->

compiler/lib/global_deadcode.ml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -558,7 +558,7 @@ let add_sentinal p sentinal =
558558
Code.prepend p [ instr ]
559559

560560
(** Run the liveness analysis and replace dead variables with the given sentinal. *)
561-
let f p ~deadcode_sentinal global_info =
561+
let f pure_funs p ~deadcode_sentinal global_info =
562562
Code.invariant p;
563563
let t = Timer.make () in
564564
(* Add sentinal variable *)
@@ -570,7 +570,6 @@ let f p ~deadcode_sentinal global_info =
570570
(* Compute definitions *)
571571
let defs = definitions p in
572572
(* Compute initial liveness *)
573-
let pure_funs = Pure_fun.f p in
574573
let live_table, scoped_live_vars = liveness p pure_funs global_info in
575574
(* Compute usages *)
576575
let uses = usages p global_info scoped_live_vars in

compiler/lib/global_deadcode.mli

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,9 @@ variables that are then removed by [deadcode.ml]. In particular it
3434
allows for the elimination of unused functions defined in functors,
3535
which the original deadcode elimination cannot. *)
3636

37-
val f : Code.program -> deadcode_sentinal:Code.Var.t -> Global_flow.info -> Code.program
37+
val f :
38+
Pure_fun.t
39+
-> Code.program
40+
-> deadcode_sentinal:Code.Var.t
41+
-> Global_flow.info
42+
-> Code.program

0 commit comments

Comments
 (0)