Skip to content

Commit b67de98

Browse files
committed
---
yaml --- r: 62802 b: refs/heads/snap-stage3 c: 998e2ce h: refs/heads/master v: v3
1 parent 8257ce9 commit b67de98

File tree

2 files changed

+20
-15
lines changed

2 files changed

+20
-15
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
refs/heads/master: 2d28d645422c1617be58c8ca7ad9a457264ca850
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4-
refs/heads/snap-stage3: 4988c89e86d7120d5c9b0d5ccabba4e8763e1fe7
4+
refs/heads/snap-stage3: 998e2ce4ff7ae7ab1227a30ed3e20e503da53b27
55
refs/heads/try: 7b78b52e602bb3ea8174f9b2006bff3315f03ef9
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b

branches/snap-stage3/src/librustc/back/passes.rs

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,13 @@ impl PassManager {
5555

5656
pub fn populatePassManager(pm: &mut PassManager, level:session::OptLevel) {
5757
unsafe {
58+
// We add a lot of normally-unused prototypes, so always strip them
59+
// straight away, later passes will get rid of any that are optimized
60+
// away
61+
pm.addPass(llvm::LLVMCreateStripDeadPrototypesPass());
5862
if level == session::No {
5963
pm.addPass(llvm::LLVMCreateAlwaysInlinerPass());
6064

61-
// We add a lot of unused prototypes, so strip them no matter
62-
// what
63-
pm.addPass(llvm::LLVMCreateStripDeadPrototypesPass());
6465
return;
6566
}
6667

@@ -81,6 +82,13 @@ pub fn populatePassManager(pm: &mut PassManager, level:session::OptLevel) {
8182

8283
pm.addPass(llvm::LLVMCreatePruneEHPass());
8384

85+
if level == session::Aggressive {
86+
// Do this before inlining, since inlining might
87+
// make minor changes to functions that mean they
88+
// can't be merged, despite being almost identical
89+
pm.addPass(llvm::LLVMCreateMergeFunctionsPass());
90+
}
91+
8492
match level {
8593
session::Less => pm.addPass(llvm::LLVMCreateFunctionInliningPass(200)),
8694
session::Default => pm.addPass(llvm::LLVMCreateFunctionInliningPass(225)),
@@ -94,8 +102,6 @@ pub fn populatePassManager(pm: &mut PassManager, level:session::OptLevel) {
94102
pm.addPass(llvm::LLVMCreateArgumentPromotionPass());
95103
}
96104

97-
pm.addPass(llvm::LLVMCreateSROAPass());
98-
99105
pm.addPass(llvm::LLVMCreateEarlyCSEPass());
100106
pm.addPass(llvm::LLVMCreateSimplifyLibCallsPass());
101107
pm.addPass(llvm::LLVMCreateJumpThreadingPass());
@@ -109,8 +115,6 @@ pub fn populatePassManager(pm: &mut PassManager, level:session::OptLevel) {
109115
pm.addPass(llvm::LLVMCreateLoopRotatePass());
110116
pm.addPass(llvm::LLVMCreateLICMPass());
111117

112-
pm.addPass(llvm::LLVMCreateLoopUnswitchPass());
113-
114118
pm.addPass(llvm::LLVMCreateInstructionCombiningPass());
115119
pm.addPass(llvm::LLVMCreateIndVarSimplifyPass());
116120
pm.addPass(llvm::LLVMCreateLoopIdiomPass());
@@ -134,16 +138,17 @@ pub fn populatePassManager(pm: &mut PassManager, level:session::OptLevel) {
134138

135139
pm.addPass(llvm::LLVMCreateBBVectorizePass());
136140
pm.addPass(llvm::LLVMCreateInstructionCombiningPass());
141+
pm.addPass(llvm::LLVMCreateEarlyCSEPass());
142+
143+
pm.addPass(llvm::LLVMCreateLoopUnrollPass());
144+
145+
pm.addPass(llvm::LLVMCreateAggressiveDCEPass());
146+
pm.addPass(llvm::LLVMCreateCFGSimplificationPass());
147+
pm.addPass(llvm::LLVMCreateInstructionSimplifierPass());
148+
137149
if level != session::Less {
138150
pm.addPass(llvm::LLVMCreateGlobalDCEPass());
139151
pm.addPass(llvm::LLVMCreateConstantMergePass());
140152
}
141-
142-
if level == session::Aggressive {
143-
pm.addPass(llvm::LLVMCreateMergeFunctionsPass());
144-
}
145-
146-
pm.addPass(llvm::LLVMCreateStripDeadPrototypesPass());
147-
148153
}
149154
}

0 commit comments

Comments
 (0)