Skip to content

Commit e455d1d

Browse files
committed
---
yaml --- r: 60795 b: refs/heads/auto c: 998e2ce h: refs/heads/master i: 60793: e1bde2c 60791: 6789568 v: v3
1 parent efb3524 commit e455d1d

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
@@ -14,6 +14,6 @@ refs/heads/try3: 9387340aab40a73e8424c48fd42f0c521a4875c0
1414
refs/tags/release-0.3.1: 495bae036dfe5ec6ceafd3312b4dca48741e845b
1515
refs/tags/release-0.4: e828ea2080499553b97dfe33b3f4d472b4562ad7
1616
refs/tags/release-0.5: 7e3bcfbf21278251ee936ad53e92e9b719702d73
17-
refs/heads/auto: 4988c89e86d7120d5c9b0d5ccabba4e8763e1fe7
17+
refs/heads/auto: 998e2ce4ff7ae7ab1227a30ed3e20e503da53b27
1818
refs/heads/servo: af82457af293e2a842ba6b7759b70288da276167
1919
refs/tags/release-0.6: b4ebcfa1812664df5e142f0134a5faea3918544c

branches/auto/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)