summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorPhilip Pfaffe <philip.pfaffe@gmail.com>2017-07-10 12:48:51 +0000
committerPhilip Pfaffe <philip.pfaffe@gmail.com>2017-07-10 12:48:51 +0000
commit45074ea32a55b257c3361053e7a92f3d7a3f9778 (patch)
treeb894ba9504caff3372e5b3edcf60d1ff51987a63 /tools
parent58d2b3aa334aa1272eaf3282a4dcf8906f944120 (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.cpp46
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,