summaryrefslogtreecommitdiff
path: root/src/sail.ml
diff options
context:
space:
mode:
authorAlasdair Armstrong2019-02-19 17:02:19 +0000
committerAlasdair Armstrong2019-02-19 17:02:19 +0000
commitfc7d360e9442ab2e945e0d2da97faaf0eefec66f (patch)
treea823d0c949dde68bdf117c836c3c2e28f9cf9088 /src/sail.ml
parent3c967f9075d890b8ba0e3fa1fb990a41a36ddd80 (diff)
Refactor specialization
specialize functions now take a 'specialization' parameter that specifies how they will specialize the AST. typ_ord_specialization gives the previous behaviour, whereas int_specialization allows specializing on Int-kinded arguments. Note that this can loop forever unless the appropriate case splits are inserted beforehand, presumably by monomorphisation. rename is_nat_kopt -> is_int_kopt for consistency
Diffstat (limited to 'src/sail.ml')
-rw-r--r--src/sail.ml2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/sail.ml b/src/sail.ml
index 64ccd341..eaf96eb4 100644
--- a/src/sail.ml
+++ b/src/sail.ml
@@ -406,7 +406,7 @@ let main() =
(if !(opt_print_c)
then
let ast_c = rewrite_ast_c type_envs ast in
- let ast_c, type_envs = Specialize.specialize ast_c type_envs in
+ let ast_c, type_envs = Specialize.(specialize typ_ord_specialization ast_c type_envs) in
(* let ast_c = Spec_analysis.top_sort_defs ast_c in *)
Util.opt_warnings := true;
C_backend.compile_ast (C_backend.initial_ctx type_envs) (!opt_includes_c) ast_c