summary refs log tree commit diff
path: root/source/mod_student/constant_folding.ml
blob: 3bebcfa868b1bc093fda183bb33ee733e7551ffb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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