Skip to content

Commit 79ea412

Browse files
committed
Merge pull request #1627 from rudkx/combine-phases
Run more function passes in a single run of the pass manager.
2 parents cb9e2ca + 75cdaa3 commit 79ea412

File tree

1 file changed

+5
-7
lines changed

1 file changed

+5
-7
lines changed

lib/SILOptimizer/PassManager/Passes.cpp

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -239,8 +239,6 @@ void AddSSAPasses(SILPassManager &PM, OptimizationLevelKind OpLevel) {
239239
PM.addEarlyCodeMotion();
240240
PM.addARCSequenceOpts();
241241

242-
PM.addSILLinker();
243-
244242
PM.addSimplifyCFG();
245243
// Only hoist releases very late.
246244
if (OpLevel == OptimizationLevelKind::LowLevel)
@@ -264,7 +262,7 @@ void swift::runSILOptimizationPasses(SILModule &Module) {
264262
return;
265263
}
266264

267-
SILPassManager PM(&Module, "PreSpecialize");
265+
SILPassManager PM(&Module, "EarlyModulePasses");
268266

269267
// Get rid of apparently dead functions as soon as possible so that
270268
// we do not spend time optimizing them.
@@ -275,15 +273,15 @@ void swift::runSILOptimizationPasses(SILModule &Module) {
275273
PM.resetAndRemoveTransformations();
276274

277275
// Run an iteration of the high-level SSA passes.
278-
PM.setStageName("HighLevel");
276+
PM.setStageName("HighLevel+EarlyLoopOpt");
279277
AddSSAPasses(PM, OptimizationLevelKind::HighLevel);
278+
AddHighLevelLoopOptPasses(PM);
280279
PM.runOneIteration();
281280
PM.resetAndRemoveTransformations();
282281

283-
PM.setStageName("EarlyLoopOpt");
284-
AddHighLevelLoopOptPasses(PM);
285-
282+
PM.setStageName("MidModulePasses+StackPromote");
286283
PM.addDeadFunctionElimination();
284+
PM.addSILLinker();
287285
PM.addDeadObjectElimination();
288286
PM.addGlobalPropertyOpt();
289287

0 commit comments

Comments
 (0)