@@ -1601,9 +1601,9 @@ PassBuilder::buildModuleOptimizationPipeline(OptimizationLevel Level,
16011601
16021602ModulePassManager
16031603PassBuilder::buildPerModuleDefaultPipeline (OptimizationLevel Level,
1604- bool LTOPreLink ) {
1604+ ThinOrFullLTOPhase Phase ) {
16051605 if (Level == OptimizationLevel::O0)
1606- return buildO0DefaultPipeline (Level, LTOPreLink );
1606+ return buildO0DefaultPipeline (Level, Phase );
16071607
16081608 ModulePassManager MPM;
16091609
@@ -1619,14 +1619,11 @@ PassBuilder::buildPerModuleDefaultPipeline(OptimizationLevel Level,
16191619 // Apply module pipeline start EP callback.
16201620 invokePipelineStartEPCallbacks (MPM, Level);
16211621
1622- const ThinOrFullLTOPhase LTOPhase = LTOPreLink
1623- ? ThinOrFullLTOPhase::FullLTOPreLink
1624- : ThinOrFullLTOPhase::None;
16251622 // Add the core simplification pipeline.
1626- MPM.addPass (buildModuleSimplificationPipeline (Level, LTOPhase ));
1623+ MPM.addPass (buildModuleSimplificationPipeline (Level, Phase ));
16271624
16281625 // Now add the optimization pipeline.
1629- MPM.addPass (buildModuleOptimizationPipeline (Level, LTOPhase ));
1626+ MPM.addPass (buildModuleOptimizationPipeline (Level, Phase ));
16301627
16311628 if (PGOOpt && PGOOpt->PseudoProbeForProfiling &&
16321629 PGOOpt->Action == PGOOptions::SampleUse)
@@ -1635,6 +1632,8 @@ PassBuilder::buildPerModuleDefaultPipeline(OptimizationLevel Level,
16351632 // Emit annotation remarks.
16361633 addAnnotationRemarksPass (MPM);
16371634
1635+ bool LTOPreLink = Phase == ThinOrFullLTOPhase::FullLTOPreLink ||
1636+ Phase == ThinOrFullLTOPhase::ThinLTOPreLink;
16381637 if (LTOPreLink)
16391638 addRequiredLTOPreLinkPasses (MPM);
16401639 return MPM;
@@ -1673,7 +1672,7 @@ PassBuilder::buildFatLTODefaultPipeline(OptimizationLevel Level, bool ThinLTO,
16731672ModulePassManager
16741673PassBuilder::buildThinLTOPreLinkDefaultPipeline (OptimizationLevel Level) {
16751674 if (Level == OptimizationLevel::O0)
1676- return buildO0DefaultPipeline (Level, /* LTOPreLink */ true );
1675+ return buildO0DefaultPipeline (Level, ThinOrFullLTOPhase::ThinLTOPreLink );
16771676
16781677 ModulePassManager MPM;
16791678
@@ -1794,7 +1793,7 @@ ModulePassManager
17941793PassBuilder::buildLTOPreLinkDefaultPipeline (OptimizationLevel Level) {
17951794 // FIXME: We should use a customized pre-link pipeline!
17961795 return buildPerModuleDefaultPipeline (Level,
1797- /* LTOPreLink */ true );
1796+ ThinOrFullLTOPhase::FullLTOPreLink );
17981797}
17991798
18001799ModulePassManager
@@ -2124,8 +2123,9 @@ PassBuilder::buildLTODefaultPipeline(OptimizationLevel Level,
21242123 return MPM;
21252124}
21262125
2127- ModulePassManager PassBuilder::buildO0DefaultPipeline (OptimizationLevel Level,
2128- bool LTOPreLink) {
2126+ ModulePassManager
2127+ PassBuilder::buildO0DefaultPipeline (OptimizationLevel Level,
2128+ ThinOrFullLTOPhase Phase) {
21292129 assert (Level == OptimizationLevel::O0 &&
21302130 " buildO0DefaultPipeline should only be used with O0" );
21312131
@@ -2220,6 +2220,8 @@ ModulePassManager PassBuilder::buildO0DefaultPipeline(OptimizationLevel Level,
22202220
22212221 invokeOptimizerLastEPCallbacks (MPM, Level);
22222222
2223+ bool LTOPreLink = Phase == ThinOrFullLTOPhase::FullLTOPreLink ||
2224+ Phase == ThinOrFullLTOPhase::ThinLTOPreLink;
22232225 if (LTOPreLink)
22242226 addRequiredLTOPreLinkPasses (MPM);
22252227
0 commit comments