summary refs log tree commit diff
path: root/source/xi
diff options
context:
space:
mode:
Diffstat (limited to 'source/xi')
-rw-r--r--source/xi/plugin_manager.ml11
-rw-r--r--source/xi/xi.ml2
2 files changed, 12 insertions, 1 deletions
diff --git a/source/xi/plugin_manager.ml b/source/xi/plugin_manager.ml
index 3c6cdf0..7b1c8db 100644
--- a/source/xi/plugin_manager.ml
+++ b/source/xi/plugin_manager.ml
@@ -95,6 +95,13 @@ module Getters = struct
     | Some x -> Some (name, Plugin.version, x)
     | None -> None
 
+  let make_register_coalescing (name, plugin) =
+    let module Plugin = (val plugin : Plugin.PLUGIN) in
+    match Plugin.make_register_coalescing with
+    | Some x -> Some (name, Plugin.version, x)
+    | None -> None
+
+
   let make_dead_code_elimination (name, plugin) =
     let module Plugin = (val plugin : Plugin.PLUGIN) in
     match Plugin.make_dead_code_elimination with
@@ -169,6 +176,8 @@ module Resolver = struct
 
   let make_register_allocator = find_module "MakeRegisterAllocator" Getters.make_register_allocator
 
+  let make_register_coalescing = find_module "MakeRegisterCoalescing" Getters.make_register_coalescing
+
   let make_dead_code_elimination = find_module "MakeDeadCodeElimination" Getters.make_dead_code_elimination
 
   let make_codegen = find_module "MakeCodegen" Getters.make_codegen
@@ -191,6 +200,7 @@ let resolve_compiler_toolbox regdescr =
   let module MakeInterferenceGraphAnalysis = (val Resolver.make_interference_graph_analysis !register) in
   let module MakeSpilling = (val Resolver.make_spilling !register) in
   let module MakeReachabilityAnalysis = (val Resolver.make_reachability_analysis !register) in
+  let module MakeRegisterCoalescing = (val Resolver.make_register_coalescing !register) in
   let module M = struct
     module LiveVariablesAnalysis = MakeLiveVariablesAnalysis()
     module DominatorsAnalysis = MakeDominatorsAnalysis()
@@ -202,6 +212,7 @@ let resolve_compiler_toolbox regdescr =
     module InterferenceGraphAnalysis = MakeInterferenceGraphAnalysis()
     module Spilling = MakeSpilling()
     module ReachabilityAnalysis = MakeReachabilityAnalysis()
+    module RegisterCoalescing = MakeRegisterCoalescing()
   end in
   (module M : Iface.COMPILER_TOOLBOX)
 
diff --git a/source/xi/xi.ml b/source/xi/xi.ml
index c54a499..aca4997 100644
--- a/source/xi/xi.ml
+++ b/source/xi/xi.ml
@@ -72,7 +72,7 @@ module CommandLine = struct
 
   let cmd =
     let doc = "Compile Xi Program" in
-    let version = "pracownia3.1-0-g147dd61" in
+    let version = "pracownia4.1-0-ge52fd94" in
     Term.(const compile $ xi_log $ extra_debug $ mod_uwr $ plugin $ reg_descr $ stop_after $ output $ source_file),
     Term.info "xi" ~doc ~version