diff options
author | Paweł Dybiec <pdybiec@stud.cs.uni.wroc.pl> | 2019-01-27 14:13:33 +0100 |
---|---|---|
committer | Paweł Dybiec <pdybiec@stud.cs.uni.wroc.pl> | 2019-01-27 14:13:33 +0100 |
commit | 218a54543d24f82f2b85e80f55b8300e1b6aee31 (patch) | |
tree | 3f25478497ff8733fc2489281bc8cf70e86f256b /source/mod_student/constant_folding.ml | |
parent | Almost working live variable analysis (diff) |
Constant folding optimization - sources
Diffstat (limited to 'source/mod_student/constant_folding.ml')
-rw-r--r-- | source/mod_student/constant_folding.ml | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/source/mod_student/constant_folding.ml b/source/mod_student/constant_folding.ml new file mode 100644 index 0000000..3bebcfa --- /dev/null +++ b/source/mod_student/constant_folding.ml @@ -0,0 +1,31 @@ +open Xi_lib +open Ir + +module Make(T:Iface.COMPILER_TOOLBOX) = struct + + module Implementation(M:sig + val cfg : ControlFlowGraph.t + val proc : procedure + end) = struct + + open M + + let cfa = T.ConstantFoldingAnalysis.analyse proc + + let rewrite () = + Logger.extra_debug begin fun () -> + Logger.dump_constant_folding "before-optimization" cfg cfa; + end; + failwith "not yet implemeneted" + + end + + + let fold_constants proc = + let module Instance = Implementation(struct + let proc = proc + let cfg = cfg_of_procedure proc + end) in + Instance.rewrite () + +end \ No newline at end of file |