summaryrefslogtreecommitdiff
path: root/src/rewriter.ml
diff options
context:
space:
mode:
authorAlasdair Armstrong2019-01-10 17:10:19 +0000
committerAlasdair Armstrong2019-01-10 17:10:19 +0000
commit05e6058795e71cf1543e282752cbf95e471894cc (patch)
tree4fb77659a0234ccfe12ce955e5048970fb73f6cb /src/rewriter.ml
parenteb837a0ae70ef5dc8a2a3a28d59a736c57a952b3 (diff)
Fixes so 8.5 with vector instructions compiles to C
Diffstat (limited to 'src/rewriter.ml')
-rw-r--r--src/rewriter.ml15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/rewriter.ml b/src/rewriter.ml
index ae19e447..39b437f4 100644
--- a/src/rewriter.ml
+++ b/src/rewriter.ml
@@ -336,7 +336,7 @@ let rewrite_lexp rewriters (LEXP_aux(lexp,(l,annot))) =
| LEXP_memory (id,exps) -> rewrap (LEXP_memory(id,List.map (rewriters.rewrite_exp rewriters) exps))
| LEXP_vector (lexp,exp) ->
rewrap (LEXP_vector (rewriters.rewrite_lexp rewriters lexp,rewriters.rewrite_exp rewriters exp))
- | LEXP_vector_range (lexp,exp1,exp2) ->
+ | LEXP_vector_range (lexp,exp1,exp2) ->
rewrap (LEXP_vector_range (rewriters.rewrite_lexp rewriters lexp,
rewriters.rewrite_exp rewriters exp1,
rewriters.rewrite_exp rewriters exp2))
@@ -363,13 +363,18 @@ let rewrite_def rewriters d = match d with
| DEF_internal_mutrec fdefs -> DEF_internal_mutrec (List.map (rewriters.rewrite_fun rewriters) fdefs)
| DEF_val letbind -> DEF_val (rewriters.rewrite_let rewriters letbind)
| DEF_pragma (pragma, arg, l) -> DEF_pragma (pragma, arg, l)
- | DEF_scattered _ -> raise (Reporting.err_unreachable Parse_ast.Unknown __POS__ "DEF_scattered survived to rewritter")
+ | DEF_scattered _ -> raise (Reporting.err_unreachable Parse_ast.Unknown __POS__ "DEF_scattered survived to rewriter")
let rewrite_defs_base rewriters (Defs defs) =
- let rec rewrite ds = match ds with
+ let total = List.length defs in
+ let rec rewrite n = function
| [] -> []
- | d::ds -> (rewriters.rewrite_def rewriters d)::(rewrite ds) in
- Defs (rewrite defs)
+ | d :: ds ->
+ if !Profile.opt_profile then Util.progress n total else ();
+ let d = rewriters.rewrite_def rewriters d in
+ d :: rewrite (n + 1) ds
+ in
+ Defs (rewrite 1 defs)
let rewriters_base =
{rewrite_exp = rewrite_exp;