diff options
author | Philip Pfaffe <philip.pfaffe@gmail.com> | 2017-07-10 12:48:51 +0000 |
---|---|---|
committer | Philip Pfaffe <philip.pfaffe@gmail.com> | 2017-07-10 12:48:51 +0000 |
commit | 45074ea32a55b257c3361053e7a92f3d7a3f9778 (patch) | |
tree | b894ba9504caff3372e5b3edcf60d1ff51987a63 /tools | |
parent | 58d2b3aa334aa1272eaf3282a4dcf8906f944120 (diff) |
[PM] Fix r307532: Get rid of a dangling reference.
Escaping lambda by-reference capture of local variable caused a dangling
reference.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307534 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools')
-rw-r--r-- | tools/opt/NewPMDriver.cpp | 46 |
1 files changed, 24 insertions, 22 deletions
diff --git a/tools/opt/NewPMDriver.cpp b/tools/opt/NewPMDriver.cpp index 9672ce7d1772..0501e80e1a06 100644 --- a/tools/opt/NewPMDriver.cpp +++ b/tools/opt/NewPMDriver.cpp @@ -88,41 +88,43 @@ static cl::opt<std::string> VectorizerStartEPPipeline( static void registerEPCallbacks(PassBuilder &PB, bool VerifyEachPass, bool DebugLogging) { if (!PeepholeEPPipeline.empty()) - PB.registerPeepholeEPCallback( - [&](FunctionPassManager &PM, PassBuilder::OptimizationLevel Level) { - return PB.parsePassPipeline(PM, PeepholeEPPipeline, VerifyEachPass, - DebugPM); - }); + PB.registerPeepholeEPCallback([&PB, VerifyEachPass, DebugLogging]( + FunctionPassManager &PM, PassBuilder::OptimizationLevel Level) { + return PB.parsePassPipeline(PM, PeepholeEPPipeline, VerifyEachPass, + DebugPM); + }); if (!LateLoopOptimizationsEPPipeline.empty()) PB.registerLateLoopOptimizationsEPCallback( - [&](LoopPassManager &PM, PassBuilder::OptimizationLevel Level) { + [&PB, VerifyEachPass, DebugLogging]( + LoopPassManager &PM, PassBuilder::OptimizationLevel Level) { return PB.parsePassPipeline(PM, LateLoopOptimizationsEPPipeline, VerifyEachPass, DebugPM); }); if (!LoopOptimizerEndEPPipeline.empty()) - PB.registerLoopOptimizerEndEPCallback( - [&](LoopPassManager &PM, PassBuilder::OptimizationLevel Level) { - return PB.parsePassPipeline(PM, LoopOptimizerEndEPPipeline, - VerifyEachPass, DebugPM); - }); + PB.registerLoopOptimizerEndEPCallback([&PB, VerifyEachPass, DebugLogging]( + LoopPassManager &PM, PassBuilder::OptimizationLevel Level) { + return PB.parsePassPipeline(PM, LoopOptimizerEndEPPipeline, + VerifyEachPass, DebugPM); + }); if (!ScalarOptimizerLateEPPipeline.empty()) PB.registerScalarOptimizerLateEPCallback( - [&](FunctionPassManager &PM, PassBuilder::OptimizationLevel Level) { + [&PB, VerifyEachPass, DebugLogging]( + FunctionPassManager &PM, PassBuilder::OptimizationLevel Level) { return PB.parsePassPipeline(PM, ScalarOptimizerLateEPPipeline, VerifyEachPass, DebugPM); }); if (!CGSCCOptimizerLateEPPipeline.empty()) - PB.registerCGSCCOptimizerLateEPCallback( - [&](CGSCCPassManager &PM, PassBuilder::OptimizationLevel Level) { - return PB.parsePassPipeline(PM, CGSCCOptimizerLateEPPipeline, - VerifyEachPass, DebugPM); - }); + PB.registerCGSCCOptimizerLateEPCallback([&PB, VerifyEachPass, DebugLogging]( + CGSCCPassManager &PM, PassBuilder::OptimizationLevel Level) { + return PB.parsePassPipeline(PM, CGSCCOptimizerLateEPPipeline, + VerifyEachPass, DebugPM); + }); if (!VectorizerStartEPPipeline.empty()) - PB.registerVectorizerStartEPCallback( - [&](FunctionPassManager &PM, PassBuilder::OptimizationLevel Level) { - return PB.parsePassPipeline(PM, VectorizerStartEPPipeline, - VerifyEachPass, DebugPM); - }); + PB.registerVectorizerStartEPCallback([&PB, VerifyEachPass, DebugLogging]( + FunctionPassManager &PM, PassBuilder::OptimizationLevel Level) { + return PB.parsePassPipeline(PM, VectorizerStartEPPipeline, VerifyEachPass, + DebugPM); + }); } bool llvm::runPassPipeline(StringRef Arg0, Module &M, TargetMachine *TM, |