@@ -1601,9 +1601,9 @@ PassBuilder::buildModuleOptimizationPipeline(OptimizationLevel Level,
1601
1601
1602
1602
ModulePassManager
1603
1603
PassBuilder::buildPerModuleDefaultPipeline (OptimizationLevel Level,
1604
- bool LTOPreLink ) {
1604
+ ThinOrFullLTOPhase Phase ) {
1605
1605
if (Level == OptimizationLevel::O0)
1606
- return buildO0DefaultPipeline (Level, LTOPreLink );
1606
+ return buildO0DefaultPipeline (Level, Phase );
1607
1607
1608
1608
ModulePassManager MPM;
1609
1609
@@ -1619,14 +1619,11 @@ PassBuilder::buildPerModuleDefaultPipeline(OptimizationLevel Level,
1619
1619
// Apply module pipeline start EP callback.
1620
1620
invokePipelineStartEPCallbacks (MPM, Level);
1621
1621
1622
- const ThinOrFullLTOPhase LTOPhase = LTOPreLink
1623
- ? ThinOrFullLTOPhase::FullLTOPreLink
1624
- : ThinOrFullLTOPhase::None;
1625
1622
// Add the core simplification pipeline.
1626
- MPM.addPass (buildModuleSimplificationPipeline (Level, LTOPhase ));
1623
+ MPM.addPass (buildModuleSimplificationPipeline (Level, Phase ));
1627
1624
1628
1625
// Now add the optimization pipeline.
1629
- MPM.addPass (buildModuleOptimizationPipeline (Level, LTOPhase ));
1626
+ MPM.addPass (buildModuleOptimizationPipeline (Level, Phase ));
1630
1627
1631
1628
if (PGOOpt && PGOOpt->PseudoProbeForProfiling &&
1632
1629
PGOOpt->Action == PGOOptions::SampleUse)
@@ -1635,6 +1632,8 @@ PassBuilder::buildPerModuleDefaultPipeline(OptimizationLevel Level,
1635
1632
// Emit annotation remarks.
1636
1633
addAnnotationRemarksPass (MPM);
1637
1634
1635
+ bool LTOPreLink = Phase == ThinOrFullLTOPhase::FullLTOPreLink ||
1636
+ Phase == ThinOrFullLTOPhase::ThinLTOPreLink;
1638
1637
if (LTOPreLink)
1639
1638
addRequiredLTOPreLinkPasses (MPM);
1640
1639
return MPM;
@@ -1673,7 +1672,7 @@ PassBuilder::buildFatLTODefaultPipeline(OptimizationLevel Level, bool ThinLTO,
1673
1672
ModulePassManager
1674
1673
PassBuilder::buildThinLTOPreLinkDefaultPipeline (OptimizationLevel Level) {
1675
1674
if (Level == OptimizationLevel::O0)
1676
- return buildO0DefaultPipeline (Level, /* LTOPreLink */ true );
1675
+ return buildO0DefaultPipeline (Level, ThinOrFullLTOPhase::ThinLTOPreLink );
1677
1676
1678
1677
ModulePassManager MPM;
1679
1678
@@ -1794,7 +1793,7 @@ ModulePassManager
1794
1793
PassBuilder::buildLTOPreLinkDefaultPipeline (OptimizationLevel Level) {
1795
1794
// FIXME: We should use a customized pre-link pipeline!
1796
1795
return buildPerModuleDefaultPipeline (Level,
1797
- /* LTOPreLink */ true );
1796
+ ThinOrFullLTOPhase::FullLTOPreLink );
1798
1797
}
1799
1798
1800
1799
ModulePassManager
@@ -2124,8 +2123,9 @@ PassBuilder::buildLTODefaultPipeline(OptimizationLevel Level,
2124
2123
return MPM;
2125
2124
}
2126
2125
2127
- ModulePassManager PassBuilder::buildO0DefaultPipeline (OptimizationLevel Level,
2128
- bool LTOPreLink) {
2126
+ ModulePassManager
2127
+ PassBuilder::buildO0DefaultPipeline (OptimizationLevel Level,
2128
+ ThinOrFullLTOPhase Phase) {
2129
2129
assert (Level == OptimizationLevel::O0 &&
2130
2130
" buildO0DefaultPipeline should only be used with O0" );
2131
2131
@@ -2220,6 +2220,8 @@ ModulePassManager PassBuilder::buildO0DefaultPipeline(OptimizationLevel Level,
2220
2220
2221
2221
invokeOptimizerLastEPCallbacks (MPM, Level);
2222
2222
2223
+ bool LTOPreLink = Phase == ThinOrFullLTOPhase::FullLTOPreLink ||
2224
+ Phase == ThinOrFullLTOPhase::ThinLTOPreLink;
2223
2225
if (LTOPreLink)
2224
2226
addRequiredLTOPreLinkPasses (MPM);
2225
2227
0 commit comments