diff --git a/llvm/include/llvm/Passes/PassBuilder.h b/llvm/include/llvm/Passes/PassBuilder.h --- a/llvm/include/llvm/Passes/PassBuilder.h +++ b/llvm/include/llvm/Passes/PassBuilder.h @@ -587,7 +587,7 @@ /// pipeline. This does not apply to 'backend' compiles (LTO and ThinLTO /// link-time pipelines). void registerPipelineStartEPCallback( - const std::function &C) { + const std::function &C) { PipelineStartEPCallbacks.push_back(C); } @@ -722,7 +722,7 @@ SmallVector, 2> OptimizerLastEPCallbacks; // Module callbacks - SmallVector, 2> + SmallVector, 2> PipelineStartEPCallbacks; SmallVector, 2> ModuleAnalysisRegistrationCallbacks; diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp --- a/llvm/lib/Passes/PassBuilder.cpp +++ b/llvm/lib/Passes/PassBuilder.cpp @@ -1319,7 +1319,7 @@ // Apply module pipeline start EP callback. for (auto &C : PipelineStartEPCallbacks) - C(MPM); + C(MPM, Level); if (PGOOpt && PGOOpt->SamplePGOSupport) MPM.addPass(createModuleToFunctionPassAdaptor(AddDiscriminatorsPass())); @@ -1348,7 +1348,7 @@ // Apply module pipeline start EP callback. for (auto &C : PipelineStartEPCallbacks) - C(MPM); + C(MPM, Level); // If we are planning to perform ThinLTO later, we don't bloat the code with // unrolling/vectorization/... now. Just simplify the module as much as we diff --git a/llvm/lib/Target/BPF/BPFTargetMachine.cpp b/llvm/lib/Target/BPF/BPFTargetMachine.cpp --- a/llvm/lib/Target/BPF/BPFTargetMachine.cpp +++ b/llvm/lib/Target/BPF/BPFTargetMachine.cpp @@ -125,12 +125,13 @@ void BPFTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB, bool DebugPassManager) { - PB.registerPipelineStartEPCallback([=](ModulePassManager &MPM) { - FunctionPassManager FPM(DebugPassManager); - FPM.addPass(BPFAbstractMemberAccessPass(this)); - FPM.addPass(BPFPreserveDITypePass()); - MPM.addPass(createModuleToFunctionPassAdaptor(std::move(FPM))); - }); + PB.registerPipelineStartEPCallback( + [=](ModulePassManager &MPM, PassBuilder::OptimizationLevel) { + FunctionPassManager FPM(DebugPassManager); + FPM.addPass(BPFAbstractMemberAccessPass(this)); + FPM.addPass(BPFPreserveDITypePass()); + MPM.addPass(createModuleToFunctionPassAdaptor(std::move(FPM))); + }); PB.registerPeepholeEPCallback([=](FunctionPassManager &FPM, PassBuilder::OptimizationLevel Level) { FPM.addPass(SimplifyCFGPass(SimplifyCFGOptions().hoistCommonInsts(true))); diff --git a/llvm/tools/opt/NewPMDriver.cpp b/llvm/tools/opt/NewPMDriver.cpp --- a/llvm/tools/opt/NewPMDriver.cpp +++ b/llvm/tools/opt/NewPMDriver.cpp @@ -190,10 +190,11 @@ Err(PB.parsePassPipeline(PM, VectorizerStartEPPipeline)); }); if (tryParsePipelineText(PB, PipelineStartEPPipeline)) - PB.registerPipelineStartEPCallback([&PB](ModulePassManager &PM) { - ExitOnError Err("Unable to parse PipelineStartEP pipeline: "); - Err(PB.parsePassPipeline(PM, PipelineStartEPPipeline)); - }); + PB.registerPipelineStartEPCallback( + [&PB](ModulePassManager &PM, PassBuilder::OptimizationLevel) { + ExitOnError Err("Unable to parse PipelineStartEP pipeline: "); + Err(PB.parsePassPipeline(PM, PipelineStartEPPipeline)); + }); if (tryParsePipelineText(PB, OptimizerLastEPPipeline)) PB.registerOptimizerLastEPCallback( [&PB](ModulePassManager &PM, PassBuilder::OptimizationLevel) {