aboutsummaryrefslogtreecommitdiffstats
path: root/tools/compiler_expand.ml
diff options
context:
space:
mode:
Diffstat (limited to 'tools/compiler_expand.ml')
-rw-r--r--tools/compiler_expand.ml21
1 files changed, 21 insertions, 0 deletions
diff --git a/tools/compiler_expand.ml b/tools/compiler_expand.ml
index e45f0617..dfadca3b 100644
--- a/tools/compiler_expand.ml
+++ b/tools/compiler_expand.ml
@@ -55,8 +55,29 @@ 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 "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)));
+
+ (* Run CSE3 again, in case code is moved up again *)
+ TOTAL, Always, NoRequire, (Some "Renumbering pre CSE"), "Renumber", Noprint;
+ PARTIAL, (Option "optim_CSE3"), Require, (Some "CSE3"), "CSE3", Noprint;
+ TOTAL, (Option "optim_CSE3"), Require, (Some "Kill useless moves after CSE3"), "KillUselessMoves", Noprint;
+ TOTAL, (Option "optim_forward_moves"), Require, (Some "Forwarding moves"), "ForwardMoves", Noprint;
+ PARTIAL, (Option "optim_redundancy"), Require, (Some "Redundancy elimination"), "Deadcode", Noprint;
+
PARTIAL, Always, Require, (Some "Register allocation"), "Allocation", (Print "LTL 1");
PARTIAL, Always, Require, (Some "LTL Branch tunneling"), "LTLTunneling", (Print "LTL 2");
PARTIAL, Always, Require, (Some "CFG linearization"), "Linearize", Noprint;