mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-28 06:00:28 +00:00
[Profile] Use explicit flag to enable IR PGO
Patch by Jake VanAdrighem Differential Revision: http://reviews.llvm.org/D22607 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@276516 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
9486968c02
commit
52e0b0d91b
@ -138,6 +138,8 @@ public:
|
||||
bool PrepareForThinLTO;
|
||||
bool PerformThinLTO;
|
||||
|
||||
/// Enable profile instrumentation pass.
|
||||
bool EnablePGOInstrGen;
|
||||
/// Profile data file name that the instrumentation will be written to.
|
||||
std::string PGOInstrGen;
|
||||
/// Path of the profile data file.
|
||||
|
@ -111,10 +111,13 @@ static cl::opt<bool> EnableLoopLoadElim(
|
||||
"enable-loop-load-elim", cl::init(true), cl::Hidden,
|
||||
cl::desc("Enable the LoopLoadElimination Pass"));
|
||||
|
||||
static cl::opt<std::string> RunPGOInstrGen(
|
||||
"profile-generate", cl::init(""), cl::Hidden,
|
||||
cl::desc("Enable generation phase of PGO instrumentation and specify the "
|
||||
"path of profile data file"));
|
||||
static cl::opt<bool> RunPGOInstrGen(
|
||||
"profile-generate", cl::init(false), cl::Hidden,
|
||||
cl::desc("Enable PGO instrumentation."));
|
||||
|
||||
static cl::opt<std::string>
|
||||
PGOOutputFile("profile-generate-file", cl::init(""), cl::Hidden,
|
||||
cl::desc("Specify the path of profile data file."));
|
||||
|
||||
static cl::opt<std::string> RunPGOInstrUse(
|
||||
"profile-use", cl::init(""), cl::Hidden, cl::value_desc("filename"),
|
||||
@ -156,7 +159,8 @@ PassManagerBuilder::PassManagerBuilder() {
|
||||
VerifyOutput = false;
|
||||
MergeFunctions = false;
|
||||
PrepareForLTO = false;
|
||||
PGOInstrGen = RunPGOInstrGen;
|
||||
EnablePGOInstrGen = RunPGOInstrGen;
|
||||
PGOInstrGen = PGOOutputFile;
|
||||
PGOInstrUse = RunPGOInstrUse;
|
||||
PrepareForThinLTO = false;
|
||||
PerformThinLTO = false;
|
||||
@ -243,7 +247,7 @@ void PassManagerBuilder::populateFunctionPassManager(
|
||||
|
||||
// Do PGO instrumentation generation or use pass as the option specified.
|
||||
void PassManagerBuilder::addPGOInstrPasses(legacy::PassManagerBase &MPM) {
|
||||
if (PGOInstrGen.empty() && PGOInstrUse.empty())
|
||||
if (!EnablePGOInstrGen && PGOInstrUse.empty())
|
||||
return;
|
||||
// Perform the preinline and cleanup passes for O1 and above.
|
||||
// And avoid doing them if optimizing for size.
|
||||
@ -256,11 +260,12 @@ void PassManagerBuilder::addPGOInstrPasses(legacy::PassManagerBase &MPM) {
|
||||
MPM.add(createInstructionCombiningPass()); // Combine silly seq's
|
||||
addExtensionsToPM(EP_Peephole, MPM);
|
||||
}
|
||||
if (!PGOInstrGen.empty()) {
|
||||
if (EnablePGOInstrGen) {
|
||||
MPM.add(createPGOInstrumentationGenLegacyPass());
|
||||
// Add the profile lowering pass.
|
||||
InstrProfOptions Options;
|
||||
Options.InstrProfileOutput = PGOInstrGen;
|
||||
if (!PGOInstrGen.empty())
|
||||
Options.InstrProfileOutput = PGOInstrGen;
|
||||
MPM.add(createInstrProfilingLegacyPass(Options));
|
||||
}
|
||||
if (!PGOInstrUse.empty())
|
||||
|
@ -1,4 +1,5 @@
|
||||
; RUN: opt < %s -O2 -profile-generate=default.profraw -S | FileCheck %s --check-prefix=GEN
|
||||
; RUN: opt < %s -O2 -profile-generate -S | FileCheck %s --check-prefix=GEN
|
||||
; RUN: opt < %s -O2 -profile-generate -profile-generate-file=default.profraw -S | FileCheck %s --check-prefix=GEN
|
||||
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user