[llvm] r307534 - [PM] Fix r307532: Get rid of a dangling reference.

Philip Pfaffe via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 10 05:48:51 PDT 2017


Author: pfaffe
Date: Mon Jul 10 05:48:51 2017
New Revision: 307534

URL: http://llvm.org/viewvc/llvm-project?rev=307534&view=rev
Log:
[PM] Fix r307532: Get rid of a dangling reference.

Escaping lambda by-reference capture of local variable caused a dangling
reference.

Modified:
    llvm/trunk/tools/opt/NewPMDriver.cpp

Modified: llvm/trunk/tools/opt/NewPMDriver.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/opt/NewPMDriver.cpp?rev=307534&r1=307533&r2=307534&view=diff
==============================================================================
--- llvm/trunk/tools/opt/NewPMDriver.cpp (original)
+++ llvm/trunk/tools/opt/NewPMDriver.cpp Mon Jul 10 05:48:51 2017
@@ -88,41 +88,43 @@ static cl::opt<std::string> VectorizerSt
 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,




More information about the llvm-commits mailing list