[llvm] r309787 - Fix the bug that parseAAPipeline is not invoked in runNewPMPasses in release compiler.
Dehao Chen via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 1 20:03:19 PDT 2017
Author: dehao
Date: Tue Aug 1 20:03:19 2017
New Revision: 309787
URL: http://llvm.org/viewvc/llvm-project?rev=309787&view=rev
Log:
Fix the bug that parseAAPipeline is not invoked in runNewPMPasses in release compiler.
Summary: The logic is guarded by "assert".
Reviewers: davidxl, davide, chandlerc
Reviewed By: davide, chandlerc
Subscribers: sanjoy, llvm-commits, mehdi_amini
Differential Revision: https://reviews.llvm.org/D36195
Modified:
llvm/trunk/include/llvm/LTO/Config.h
llvm/trunk/lib/LTO/LTOBackend.cpp
llvm/trunk/test/tools/llvm-lto2/X86/pipeline.ll
llvm/trunk/tools/llvm-lto2/llvm-lto2.cpp
Modified: llvm/trunk/include/llvm/LTO/Config.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/LTO/Config.h?rev=309787&r1=309786&r2=309787&view=diff
==============================================================================
--- llvm/trunk/include/llvm/LTO/Config.h (original)
+++ llvm/trunk/include/llvm/LTO/Config.h Tue Aug 1 20:03:19 2017
@@ -79,6 +79,9 @@ struct Config {
/// Whether to emit optimization remarks with hotness informations.
bool RemarksWithHotness = false;
+ /// Whether to emit the pass manager debuggging informations.
+ bool DebugPassManager = false;
+
bool ShouldDiscardValueNames = true;
DiagnosticHandlerFunction DiagHandler;
Modified: llvm/trunk/lib/LTO/LTOBackend.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/LTO/LTOBackend.cpp?rev=309787&r1=309786&r2=309787&view=diff
==============================================================================
--- llvm/trunk/lib/LTO/LTOBackend.cpp (original)
+++ llvm/trunk/lib/LTO/LTOBackend.cpp Tue Aug 1 20:03:19 2017
@@ -141,12 +141,13 @@ static void runNewPMPasses(Config &Conf,
AAManager AA;
// Parse a custom AA pipeline if asked to.
- assert(PB.parseAAPipeline(AA, "default"));
+ if (!PB.parseAAPipeline(AA, "default"))
+ report_fatal_error("Error parsing default AA pipeline");
- LoopAnalysisManager LAM;
- FunctionAnalysisManager FAM;
- CGSCCAnalysisManager CGAM;
- ModuleAnalysisManager MAM;
+ LoopAnalysisManager LAM(Conf.DebugPassManager);
+ FunctionAnalysisManager FAM(Conf.DebugPassManager);
+ CGSCCAnalysisManager CGAM(Conf.DebugPassManager);
+ ModuleAnalysisManager MAM(Conf.DebugPassManager);
// Register the AA manager first so that our version is the one used.
FAM.registerPass([&] { return std::move(AA); });
@@ -158,7 +159,7 @@ static void runNewPMPasses(Config &Conf,
PB.registerLoopAnalyses(LAM);
PB.crossRegisterProxies(LAM, FAM, CGAM, MAM);
- ModulePassManager MPM;
+ ModulePassManager MPM(Conf.DebugPassManager);
// FIXME (davide): verify the input.
PassBuilder::OptimizationLevel OL;
@@ -181,9 +182,9 @@ static void runNewPMPasses(Config &Conf,
}
if (IsThinLTO)
- MPM = PB.buildThinLTODefaultPipeline(OL, false /* DebugLogging */);
+ MPM = PB.buildThinLTODefaultPipeline(OL, Conf.DebugPassManager);
else
- MPM = PB.buildLTODefaultPipeline(OL, false /* DebugLogging */);
+ MPM = PB.buildLTODefaultPipeline(OL, Conf.DebugPassManager);
MPM.run(Mod, MAM);
// FIXME (davide): verify the output.
Modified: llvm/trunk/test/tools/llvm-lto2/X86/pipeline.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-lto2/X86/pipeline.ll?rev=309787&r1=309786&r2=309787&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-lto2/X86/pipeline.ll (original)
+++ llvm/trunk/test/tools/llvm-lto2/X86/pipeline.ll Tue Aug 1 20:03:19 2017
@@ -1,5 +1,10 @@
; RUN: llvm-as < %s > %t1.bc
+; Try the default pipeline and check is BasicAA is invoked.
+; RUN: llvm-lto2 run %t1.bc -o %t.o -r %t1.bc,patatino,px -debug-pass-manager \
+; RUN: -use-new-pm 2>&1 | FileCheck %s --check-prefix=DEFAULT
+; DEFAULT: Running analysis: BasicAA on patatino
+
; Try a custom pipeline
; RUN: llvm-lto2 run %t1.bc -o %t.o -save-temps \
; RUN: -r %t1.bc,patatino,px -opt-pipeline loweratomic \
Modified: llvm/trunk/tools/llvm-lto2/llvm-lto2.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-lto2/llvm-lto2.cpp?rev=309787&r1=309786&r2=309787&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-lto2/llvm-lto2.cpp (original)
+++ llvm/trunk/tools/llvm-lto2/llvm-lto2.cpp Tue Aug 1 20:03:19 2017
@@ -109,6 +109,10 @@ static cl::opt<bool>
cl::desc("Run LTO passes using the new pass manager"),
cl::init(false), cl::Hidden);
+static cl::opt<bool>
+ DebugPassManager("debug-pass-manager", cl::init(false), cl::Hidden,
+ cl::desc("Print pass management debugging information"));
+
static void check(Error E, std::string Msg) {
if (!E)
return;
@@ -195,6 +199,8 @@ static int run(int argc, char **argv) {
Conf.RelocModel = *RM;
Conf.CodeModel = CMModel;
+ Conf.DebugPassManager = DebugPassManager;
+
if (SaveTemps)
check(Conf.addSaveTemps(OutputFilename + "."),
"Config::addSaveTemps failed");
More information about the llvm-commits
mailing list