summary refs log tree commit diff
path: root/source/mod_student/constant_folding.ml
diff options
context:
space:
mode:
authorPaweł Dybiec <pdybiec@stud.cs.uni.wroc.pl>2019-01-27 14:13:33 +0100
committerPaweł Dybiec <pdybiec@stud.cs.uni.wroc.pl>2019-01-27 14:13:33 +0100
commit218a54543d24f82f2b85e80f55b8300e1b6aee31 (patch)
tree3f25478497ff8733fc2489281bc8cf70e86f256b /source/mod_student/constant_folding.ml
parentAlmost 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.ml31
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