aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2020-04-21 22:42:32 +0200
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2020-04-21 22:42:32 +0200
commit25547c7d1f6a0fb75ff1d8e7287d9305e0dbf293 (patch)
tree22e72881226f3a5661f335605e99d6243bf39f41 /tools
parent1bd4d678fb719a6a52ade232eb2b36a6e621677a (diff)
downloadcompcert-kvx-25547c7d1f6a0fb75ff1d8e7287d9305e0dbf293.tar.gz
compcert-kvx-25547c7d1f6a0fb75ff1d8e7287d9305e0dbf293.zip
generate mkpass
Diffstat (limited to 'tools')
-rw-r--r--tools/compiler_expand.ml14
1 files changed, 13 insertions, 1 deletions
diff --git a/tools/compiler_expand.ml b/tools/compiler_expand.ml
index 7ca3c755..1ef233e7 100644
--- a/tools/compiler_expand.ml
+++ b/tools/compiler_expand.ml
@@ -53,7 +53,17 @@ let print_rtl_transf oc =
Printf.fprintf oc "%s.transf_program)\n" pass_name;
Printf.fprintf oc " @@ print (print_RTL %d)\n" (succ i)
) rtl_passes;;
-
+
+let print_rtl_mkpass oc =
+ Array.iter (fun (partial, trigger, time_label, pass_name) ->
+ output_string oc " ::: mkpass (";
+ (match trigger with
+ | Always -> ()
+ | Option s ->
+ Printf.fprintf oc "match_if Compopts.%s " s);
+ Printf.fprintf oc "%sproof.match_prog)\n" pass_name)
+ rtl_passes;;
+
if (Array.length Sys.argv)<>3
then exit 1;;
@@ -69,6 +79,8 @@ let filename_in = Sys.argv.(1) and filename_out = Sys.argv.(2) in
print_rtl_require oc
| "EXPAND_RTL_REQUIRE_PROOF" ->
print_rtl_require_proof oc
+ | "EXPAND_RTL_MKPASS" ->
+ print_rtl_mkpass oc
| line -> (output_string oc line;
output_char oc '\n')
done