1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 02:52:53 +02:00

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

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

llvm-svn: 307534
This commit is contained in:
Philip Pfaffe 2017-07-10 12:48:51 +00:00
parent f127dd99e3
commit 4d43aef242

View File

@ -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,