Skip to content

Commit be98428

Browse files
authored
[NFC][Pipelines] Extract buildCoroConditionalWrapper (#126860)
Helper for #126168. `Phase` will be used in followup patches.
1 parent de968c8 commit be98428

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

Diff for: llvm/lib/Passes/PassBuilderPipelines.cpp

+14-8
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,19 @@ static bool isLTOPreLink(ThinOrFullLTOPhase Phase) {
410410
Phase == ThinOrFullLTOPhase::FullLTOPreLink;
411411
}
412412

413+
// Helper to wrap conditionally Coro passes.
414+
static CoroConditionalWrapper buildCoroWrapper(ThinOrFullLTOPhase Phase) {
415+
// TODO: Skip passes according to Phase.
416+
ModulePassManager CoroPM;
417+
CoroPM.addPass(CoroEarlyPass());
418+
CGSCCPassManager CGPM;
419+
CGPM.addPass(CoroSplitPass());
420+
CoroPM.addPass(createModuleToPostOrderCGSCCPassAdaptor(std::move(CGPM)));
421+
CoroPM.addPass(CoroCleanupPass());
422+
CoroPM.addPass(GlobalDCEPass());
423+
return CoroConditionalWrapper(std::move(CoroPM));
424+
}
425+
413426
// TODO: Investigate the cost/benefit of tail call elimination on debugging.
414427
FunctionPassManager
415428
PassBuilder::buildO1FunctionSimplificationPipeline(OptimizationLevel Level,
@@ -2250,14 +2263,7 @@ PassBuilder::buildO0DefaultPipeline(OptimizationLevel Level,
22502263
MPM.addPass(createModuleToFunctionPassAdaptor(std::move(FPM)));
22512264
}
22522265

2253-
ModulePassManager CoroPM;
2254-
CoroPM.addPass(CoroEarlyPass());
2255-
CGSCCPassManager CGPM;
2256-
CGPM.addPass(CoroSplitPass());
2257-
CoroPM.addPass(createModuleToPostOrderCGSCCPassAdaptor(std::move(CGPM)));
2258-
CoroPM.addPass(CoroCleanupPass());
2259-
CoroPM.addPass(GlobalDCEPass());
2260-
MPM.addPass(CoroConditionalWrapper(std::move(CoroPM)));
2266+
MPM.addPass(buildCoroWrapper(Phase));
22612267

22622268
invokeOptimizerLastEPCallbacks(MPM, Level, Phase);
22632269

0 commit comments

Comments
 (0)