about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2013-06-01 06:13:40 -0700
committerbors <bors@rust-lang.org>2013-06-01 06:13:40 -0700
commitb8391ccea0b2e2718a4d4ef999e9f03583c7ddea (patch)
tree59e073293de4f75a5c0c44a92008a8008e40f32f
parent2bf053c0a349a5968820780314c942ef4555b47e (diff)
parent6e075b6bb6c15e8fa358e08670687e3c94f4565b (diff)
downloadrust-b8391ccea0b2e2718a4d4ef999e9f03583c7ddea.tar.gz
rust-b8391ccea0b2e2718a4d4ef999e9f03583c7ddea.zip
auto merge of #6881 : Aatch/rust/new-passes-2, r=thestinger
This is a better pipeline, both faster-running and produces faster code.

For some reason the `mergefunc` pass screws over resolve. I have no idea why though.
-rw-r--r--src/librustc/back/passes.rs15
1 files changed, 5 insertions, 10 deletions
diff --git a/src/librustc/back/passes.rs b/src/librustc/back/passes.rs
index 076d1dcf37b..315bb5d6317 100644
--- a/src/librustc/back/passes.rs
+++ b/src/librustc/back/passes.rs
@@ -70,9 +70,12 @@ pub fn create_standard_passes(level:OptLevel) -> ~[~str] {
 
     passes.push(~"targetlibinfo");
 
-    passes.push(~"tbaa");
+    passes.push(~"scev-aa");
     passes.push(~"basicaa");
 
+    passes.push(~"instcombine");
+    passes.push(~"simplifycfg");
+    passes.push(~"scalarrepl-ssa");
     passes.push(~"early-cse");
 
     passes.push(~"globalopt");
@@ -83,10 +86,6 @@ pub fn create_standard_passes(level:OptLevel) -> ~[~str] {
 
     passes.push(~"prune-eh");
 
-    if level == Aggressive {
-        passes.push(~"mergefunc");
-    }
-
     passes.push(~"inline");
 
     passes.push(~"functionattrs");
@@ -95,6 +94,7 @@ pub fn create_standard_passes(level:OptLevel) -> ~[~str] {
         passes.push(~"argpromotion");
     }
 
+    passes.push(~"scalarrepl-ssa");
     passes.push(~"early-cse");
     passes.push(~"simplify-libcalls");
     passes.push(~"jump-threading");
@@ -134,11 +134,6 @@ pub fn create_standard_passes(level:OptLevel) -> ~[~str] {
     passes.push(~"correlated-propagation");
     passes.push(~"dse");
 
-    passes.push(~"instcombine");
-    passes.push(~"early-cse");
-
-    passes.push(~"loop-unroll");
-
     passes.push(~"adce");
     passes.push(~"simplifycfg");
     passes.push(~"instsimplify");