@@ -410,6 +410,19 @@ static bool isLTOPreLink(ThinOrFullLTOPhase Phase) {
410
410
Phase == ThinOrFullLTOPhase::FullLTOPreLink;
411
411
}
412
412
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
+
413
426
// TODO: Investigate the cost/benefit of tail call elimination on debugging.
414
427
FunctionPassManager
415
428
PassBuilder::buildO1FunctionSimplificationPipeline (OptimizationLevel Level,
@@ -2250,14 +2263,7 @@ PassBuilder::buildO0DefaultPipeline(OptimizationLevel Level,
2250
2263
MPM.addPass (createModuleToFunctionPassAdaptor (std::move (FPM)));
2251
2264
}
2252
2265
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));
2261
2267
2262
2268
invokeOptimizerLastEPCallbacks (MPM, Level, Phase);
2263
2269
0 commit comments