mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 10:42:39 +01:00
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 llvm-svn: 309787
This commit is contained in:
parent
1142dd4c6d
commit
520d826c62
@ -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;
|
||||
|
||||
|
@ -141,12 +141,13 @@ static void runNewPMPasses(Config &Conf, Module &Mod, TargetMachine *TM,
|
||||
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, Module &Mod, TargetMachine *TM,
|
||||
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, Module &Mod, TargetMachine *TM,
|
||||
}
|
||||
|
||||
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.
|
||||
|
@ -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 \
|
||||
|
@ -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");
|
||||
|
Loading…
Reference in New Issue
Block a user