summaryrefslogtreecommitdiff
path: root/src/specialize.ml
diff options
context:
space:
mode:
authorJon French2019-04-15 16:18:18 +0100
committerJon French2019-04-15 16:18:18 +0100
commita9f0b829507e9882efdb59cce4d83ea7e87f5f71 (patch)
tree11cde6c1918bc15f4dda9a8e40afd4a1fe912a0a /src/specialize.ml
parent0f6fd188ca232cb539592801fcbb873d59611d81 (diff)
parent57443173923e87f33713c99dbab9eba7e3db0660 (diff)
Merge branch 'sail2' into rmem_interpreter
Diffstat (limited to 'src/specialize.ml')
-rw-r--r--src/specialize.ml20
1 files changed, 7 insertions, 13 deletions
diff --git a/src/specialize.ml b/src/specialize.ml
index 6b5b108a..607084c8 100644
--- a/src/specialize.ml
+++ b/src/specialize.ml
@@ -53,7 +53,7 @@ open Ast_util
open Rewriter
let opt_ddump_spec_ast = ref None
-
+
let is_typ_ord_arg = function
| A_aux (A_typ _, _) -> true
| A_aux (A_order _, _) -> true
@@ -483,7 +483,7 @@ let specialize_id_overloads instantiations id (Defs defs) =
valspecs are then re-specialized. This process is iterated until
the whole spec is specialized. *)
-let initial_calls = IdSet.of_list
+let initial_calls = ref (IdSet.of_list
[ mk_id "main";
mk_id "__SetConfig";
mk_id "__ListConfig";
@@ -491,10 +491,12 @@ let initial_calls = IdSet.of_list
mk_id "decode";
mk_id "initialize_registers";
mk_id "append_64" (* used to construct bitvector literals in C backend *)
- ]
+ ])
+
+let add_initial_calls ids = initial_calls := IdSet.union ids !initial_calls
-let remove_unused_valspecs ?(initial_calls=initial_calls) env ast =
- let calls = ref initial_calls in
+let remove_unused_valspecs env ast =
+ let calls = ref !initial_calls in
let vs_ids = val_spec_ids ast in
let inspect_exp = function
@@ -527,14 +529,6 @@ let remove_unused_valspecs ?(initial_calls=initial_calls) env ast =
List.fold_left (fun ast id -> Defs (remove_unused ast id)) ast (IdSet.elements unused)
-let slice_defs env (Defs defs) keep_ids =
- let keep = function
- | DEF_fundef fd -> IdSet.mem (id_of_fundef fd) keep_ids
- | _ -> true
- in
- let defs = List.filter keep defs in
- remove_unused_valspecs env (Defs defs) ~initial_calls:keep_ids
-
let specialize_id spec id ast =
let instantiations = instantiations_of spec id ast in
let ast = specialize_id_valspec spec instantiations id ast in