Skip to content

Commit 31bca32

Browse files
committed
change analysis_input to be a list of variables (not a set)
1 parent cedbbfa commit 31bca32

6 files changed

+10
-18
lines changed

analysis.ml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -192,11 +192,10 @@ let as_var_set (formals : formal_parameter list) =
192192
VarSet.of_list (as_var_list formals)
193193

194194
let as_var_map formals =
195-
let formals = VarSet.elements formals in
196195
VariableMap.initial formals
197196

198197
let as_analysis_input (func:afunction) (version:version) =
199-
{ formals = as_var_set func.formals; instrs = version.instrs }
198+
{ formals = as_var_list func.formals; instrs = version.instrs }
200199

201200
(* returns a 'pc -> pc set' computing reaching definitions *)
202201
let reaching {formals; instrs} : pc -> PosSet.t =
@@ -302,7 +301,7 @@ let required_vars ({instrs} as inp : analysis_input) : pc -> variable list =
302301

303302
let aliased ({formals; instrs} : analysis_input) : pc -> VarSet.t =
304303
let ref_param params x = x :: params in
305-
let mut_formals = List.fold_left ref_param [] (VarSet.elements formals) in
304+
let mut_formals = List.fold_left ref_param [] formals in
306305
fun _ -> VarSet.of_list mut_formals
307306

308307
module Expression = struct

scope.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ let infer ({formals; instrs} : analysis_input) : inferred_scope array =
5757
let final_info = List.fold_left remove updated dropped in
5858
{ sources = PcSet.singleton pc; info = final_info; }
5959
in
60-
let initial = List.map (fun var -> (var, -1)) (VarSet.elements formals) in
60+
let initial = List.map (fun var -> (var, -1)) formals in
6161
let initial_state = { sources = PcSet.empty; info = DeclSet.of_list initial; } in
6262
let res = Analysis.forward_analysis initial_state instrs merge update in
6363
fun pc -> (res pc).info in

transform_constantfold.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ let const_fold : transform_instructions = fun {formals; instrs} ->
103103

104104
let initial_state =
105105
let add_formal x st = VarMap.add x Unknown st in
106-
VarSet.fold add_formal formals VarMap.empty
106+
VarSet.fold add_formal (VarSet.of_list formals) VarMap.empty
107107
in
108108
Analysis.forward_analysis initial_state instrs merge update
109109
in

transform_inline.ml

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,6 @@ open Instr
22
open Edit
33
open Types
44

5-
(* Unlike `analysis_input`, this preserves the order of `formals`. This
6-
facilitates matching the formals to the arguments passed at a callsite.*)
7-
type inlining_input = {
8-
formals : variable list;
9-
instrs : instructions;
10-
}
11-
12-
let as_inlining_input (func : afunction) : inlining_input =
13-
{ formals = Analysis.as_var_list func.formals; instrs = (active_version func).instrs }
14-
155
type inlining_candidate = {
166
pos : pc;
177
target : afunction;
@@ -22,6 +12,9 @@ type inlining_candidate = {
2212
}
2313
and inlining_site = inlining_candidate list
2414

15+
let as_inlining_input (func : afunction) =
16+
{ formals = Analysis.as_var_list func.formals; instrs = (active_version func).instrs }
17+
2518

2619
(* FUNCTION INLINING *)
2720
(* Given a program, inline the functions in it to the maximum possible extent.
@@ -66,7 +59,7 @@ let inline ({main; functions} as orig_prog : program) : program option =
6659
in
6760
loop 0 []
6861
in
69-
let scope = Scope.infer {formals = VarSet.of_list callee.formals;
62+
let scope = Scope.infer {formals = callee.formals;
7063
instrs = callee.instrs;}
7164
in
7265
let returns = extract_returns instrs in

transform_utils.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ let fix_scope : transform_instructions = fun {formals; instrs} ->
5757
let dropped = Instr.dropped_vars instr in
5858
VarSet.diff updated dropped
5959
in
60-
let initial_state = formals in
60+
let initial_state = VarSet.of_list formals in
6161
let scope = Analysis.forward_analysis initial_state instrs merge update in
6262
let succs = Analysis.successors instrs in
6363
let transform pc =

types.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
open Instr
22

33
type analysis_input = {
4-
formals : VarSet.t;
4+
formals : variable list;
55
instrs : instructions;
66
}
77

0 commit comments

Comments
 (0)