@@ -419,16 +419,14 @@ static bool isLTOPostLink(ThinOrFullLTOPhase Phase) {
419
419
420
420
// Helper to wrap conditionally Coro passes.
421
421
static CoroConditionalWrapper buildCoroWrapper (ThinOrFullLTOPhase Phase) {
422
+ // TODO: Skip passes according to Phase.
422
423
ModulePassManager CoroPM;
423
- if (!isLTOPostLink (Phase))
424
- CoroPM.addPass (CoroEarlyPass ());
425
- if (!isLTOPreLink (Phase)) {
426
- CGSCCPassManager CGPM;
427
- CGPM.addPass (CoroSplitPass ());
428
- CoroPM.addPass (createModuleToPostOrderCGSCCPassAdaptor (std::move (CGPM)));
429
- CoroPM.addPass (CoroCleanupPass ());
430
- CoroPM.addPass (GlobalDCEPass ());
431
- }
424
+ CoroPM.addPass (CoroEarlyPass ());
425
+ CGSCCPassManager CGPM;
426
+ CGPM.addPass (CoroSplitPass ());
427
+ CoroPM.addPass (createModuleToPostOrderCGSCCPassAdaptor (std::move (CGPM)));
428
+ CoroPM.addPass (CoroCleanupPass ());
429
+ CoroPM.addPass (GlobalDCEPass ());
432
430
return CoroConditionalWrapper (std::move (CoroPM));
433
431
}
434
432
@@ -1012,7 +1010,7 @@ PassBuilder::buildInlinerPipeline(OptimizationLevel Level,
1012
1010
MainCGPipeline.addPass (createCGSCCToFunctionPassAdaptor (
1013
1011
RequireAnalysisPass<ShouldNotRunFunctionPassesAnalysis, Function>()));
1014
1012
1015
- if (! isLTOPreLink ( Phase) ) {
1013
+ if (Phase != ThinOrFullLTOPhase::ThinLTOPreLink ) {
1016
1014
MainCGPipeline.addPass (CoroSplitPass (Level != OptimizationLevel::O0));
1017
1015
MainCGPipeline.addPass (CoroAnnotationElidePass ());
1018
1016
}
@@ -1062,7 +1060,7 @@ PassBuilder::buildModuleInlinerPipeline(OptimizationLevel Level,
1062
1060
buildFunctionSimplificationPipeline (Level, Phase),
1063
1061
PTO.EagerlyInvalidateAnalyses ));
1064
1062
1065
- if (! isLTOPreLink ( Phase) ) {
1063
+ if (Phase != ThinOrFullLTOPhase::ThinLTOPreLink ) {
1066
1064
MPM.addPass (createModuleToPostOrderCGSCCPassAdaptor (
1067
1065
CoroSplitPass (Level != OptimizationLevel::O0)));
1068
1066
MPM.addPass (
@@ -1122,8 +1120,7 @@ PassBuilder::buildModuleSimplificationPipeline(OptimizationLevel Level,
1122
1120
// Do basic inference of function attributes from known properties of system
1123
1121
// libraries and other oracles.
1124
1122
MPM.addPass (InferFunctionAttrsPass ());
1125
- if (!isLTOPostLink (Phase))
1126
- MPM.addPass (CoroEarlyPass ());
1123
+ MPM.addPass (CoroEarlyPass ());
1127
1124
1128
1125
FunctionPassManager EarlyFPM;
1129
1126
EarlyFPM.addPass (EntryExitInstrumenterPass (/* PostInlining=*/ false ));
@@ -1293,7 +1290,7 @@ PassBuilder::buildModuleSimplificationPipeline(OptimizationLevel Level,
1293
1290
// and argument promotion.
1294
1291
MPM.addPass (DeadArgumentEliminationPass ());
1295
1292
1296
- if (! isLTOPreLink ( Phase) )
1293
+ if (Phase != ThinOrFullLTOPhase::ThinLTOPreLink )
1297
1294
MPM.addPass (CoroCleanupPass ());
1298
1295
1299
1296
// Optimize globals now that functions are fully simplified.
@@ -1958,6 +1955,9 @@ PassBuilder::buildLTODefaultPipeline(OptimizationLevel Level,
1958
1955
return MPM;
1959
1956
}
1960
1957
1958
+ // TODO: Skip to match buildCoroWrapper.
1959
+ MPM.addPass (CoroEarlyPass ());
1960
+
1961
1961
// Optimize globals to try and fold them into constants.
1962
1962
MPM.addPass (GlobalOptPass ());
1963
1963
0 commit comments