aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--driver/Compiler.vexpand21
-rw-r--r--tools/compiler_expand.ml16
2 files changed, 37 insertions, 0 deletions
diff --git a/driver/Compiler.vexpand b/driver/Compiler.vexpand
index 952bed22..74f3a97b 100644
--- a/driver/Compiler.vexpand
+++ b/driver/Compiler.vexpand
@@ -302,6 +302,27 @@ EXPAND_RTL_FORWARD_SIMULATIONS
pose proof RTLpathLivegenproof.all_fundef_liveness_ok as X.
refine (modusponens _ _ (X _ _ _) _); eauto. intro.
eapply compose_forward_simulations.
+ eapply MyRTLpathSchedulerproof.transf_program_correct; eassumption.
+ eapply compose_forward_simulations.
+ eapply RTLpathproof.transf_program_correct; eassumption.
+ eapply compose_forward_simulations.
+ eapply Liftifproof.transf_program_correct; eassumption.
+ eapply compose_forward_simulations.
+ eapply Renumberproof.transf_program_correct; eassumption.
+ eapply compose_forward_simulations.
+ eapply match_if_simulation. eassumption. eapply CSE3proof.transf_program_correct; eassumption.
+ eapply compose_forward_simulations.
+ eapply match_if_simulation. eassumption. eapply Deadcodeproof.transf_program_correct; eassumption.
+
+ eapply compose_forward_simulations.
+ eapply RTLTunnelingproof.transf_program_correct; eassumption.
+
+ eapply compose_forward_simulations.
+ eapply RTLpathLivegenproof.transf_program_correct; eassumption.
+ pose proof RTLpathLivegenproof.all_fundef_liveness_ok as X'.
+ refine (modusponens _ _ (X' _ _ _) _); eauto. intro.
+
+ eapply compose_forward_simulations.
eapply RTLpathSchedulerproof.transf_program_correct; eassumption.
eapply compose_forward_simulations.
eapply RTLpathproof.transf_program_correct; eassumption.
diff --git a/tools/compiler_expand.ml b/tools/compiler_expand.ml
index e45f0617..9fbc2924 100644
--- a/tools/compiler_expand.ml
+++ b/tools/compiler_expand.ml
@@ -55,6 +55,22 @@ PARTIAL, Always, Require, (Some "Unused globals"), "Unusedglob";
let post_rtl_passes =
[|
PARTIAL, Always, Require, (Some "RTLpath generation"), "RTLpathLivegen", Noprint;
+ PARTIAL, Always, Require, (Some "Limited register renaming and/or preparing code motion past side exits."), "MyRTLpathScheduler", Noprint;
+ TOTAL, Always, Require, (Some "Projection to RTL"), "RTLpath", (Print (Printf.sprintf "RTL %d" ((Array.length rtl_passes) + 1)));
+ (* Is renumbering necessary and/or helpful here? *)
+ (* TOTAL, Always, NoRequire, (Some "Renumbering pre tail duplication"), "Renumber"; *)
+ PARTIAL, Always, NoRequire, (Some "TODO lift if"), "Liftif", Noprint;
+
+ TOTAL, Always, NoRequire, (Some "Renumbering pre CSE"), "Renumber", Noprint;
+ (* Due to hackery this pass of CSE3 only removes redundant conditions *)
+ PARTIAL, (Option "optim_CSE3"), Require, (Some "CSE3"), "CSE3", Noprint;
+ (* This is meant to clean up dead code afer "if-lifting" + removing of redundant condition *)
+ PARTIAL, (Option "optim_redundancy"), Require, (Some "Redundancy elimination"), "Deadcode", Noprint;
+
+ PARTIAL, Always, Require, (Some "RTL Branch Tunneling"), "RTLTunneling", Noprint;
+
+
+ PARTIAL, Always, Require, (Some "RTLpath generation"), "RTLpathLivegen", Noprint;
PARTIAL, Always, Require, (Some "Prepass scheduling"), "RTLpathScheduler", Noprint;
TOTAL, Always, Require, (Some "Projection to RTL"), "RTLpath", (Print (Printf.sprintf "RTL %d" ((Array.length rtl_passes) + 1)));
PARTIAL, Always, Require, (Some "Register allocation"), "Allocation", (Print "LTL 1");