File tree Expand file tree Collapse file tree 5 files changed +15
-10
lines changed Expand file tree Collapse file tree 5 files changed +15
-10
lines changed Original file line number Diff line number Diff 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 ->
Original file line number Diff line number Diff line change 2121type 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
2626val remove_unused_blocks : Code .program -> Code .program
2727
Original file line number Diff line number Diff line change @@ -41,7 +41,8 @@ let tailcall p =
4141
4242let 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
4647let 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 ->
Original file line number Diff line number Diff 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
Original file line number Diff line number Diff line change @@ -34,4 +34,9 @@ variables that are then removed by [deadcode.ml]. In particular it
3434allows for the elimination of unused functions defined in functors,
3535which 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
You can’t perform that action at this time.
0 commit comments