diff options
Diffstat (limited to 'tools/compiler_expand.ml')
-rw-r--r-- | tools/compiler_expand.ml | 21 |
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; |