Skip to content

Commit

Permalink
[PGO] internal option cleanups
Browse files Browse the repository at this point in the history
1. Added comments for options
2. Added missing option cl::desc field
3. Uniified function filter option for graph viewing.
   Now PGO count/raw-counts share the same
   filter option: -view-bfi-func-name=.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293938 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
david-xl committed Feb 2, 2017
1 parent 7931a61 commit 050d2a7
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 24 deletions.
13 changes: 12 additions & 1 deletion lib/Analysis/BlockFrequencyInfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,18 @@ cl::opt<unsigned>
"function multiplied by this percent."));

// Command line option to turn on CFG dot dump after profile annotation.
cl::opt<bool> PGOViewCounts("pgo-view-counts", cl::init(false), cl::Hidden);
cl::opt<bool>
PGOViewCounts("pgo-view-counts", cl::init(false), cl::Hidden,
cl::desc("A boolean option to show CFG dag with "
"block profile counts and branch probabilities "
"right after PGO profile annotation step. The "
"profile counts are computed using branch "
"probabilities from the runtime profile data and "
"block frequency propagation algorithm. To view "
"the raw counts from the profile, use option "
"-pgo-view-raw-counts instead. To limit graph "
"display to only one function, use filtering option "
"-view-bfi-func-name."));

namespace llvm {

Expand Down
4 changes: 4 additions & 0 deletions lib/CodeGen/MachineBlockFrequencyInfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,11 @@ cl::opt<GVDAGType> ViewBlockLayoutWithBFI(
"display a graph using the real "
"profile count if available.")));

// Command line option to specify the name of the function for CFG dump
// Defined in Analysis/BlockFrequencyInfo.cpp: -view-bfi-func-name=
extern cl::opt<std::string> ViewBlockFreqFuncName;
// Command line option to specify hot frequency threshold.
// Defined in Analysis/BlockFrequencyInfo.cpp: -view-hot-freq-perc=
extern cl::opt<unsigned> ViewHotFreqPercent;

static GVDAGType getGVDT() {
Expand Down
6 changes: 6 additions & 0 deletions lib/CodeGen/MachineBlockPlacement.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,13 @@ static cl::opt<unsigned> TailDupPlacementPenalty(
extern cl::opt<unsigned> StaticLikelyProb;
extern cl::opt<unsigned> ProfileLikelyProb;

// Internal option used to control BFI display only after MBP pass.
// Defined in CodeGen/MachineBlockFrequencyInfo.cpp:
// -view-block-layout-with-bfi=
extern cl::opt<GVDAGType> ViewBlockLayoutWithBFI;

// Command line option to specify the name of the function for CFG dump
// Defined in Analysis/BlockFrequencyInfo.cpp: -view-bfi-func-name=
extern cl::opt<std::string> ViewBlockFreqFuncName;

namespace {
Expand Down
60 changes: 37 additions & 23 deletions lib/Transforms/Instrumentation/PGOInstrumentation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -129,39 +129,53 @@ static cl::opt<bool> DoComdatRenaming(

// Command line option to enable/disable the warning about missing profile
// information.
static cl::opt<bool> PGOWarnMissing("pgo-warn-missing-function",
cl::init(false),
cl::Hidden);
static cl::opt<bool>
PGOWarnMissing("pgo-warn-missing-function", cl::init(false), cl::Hidden,
cl::desc("Use this option to turn on/off "
"warnings about missing profile data for "
"functions."));

// Command line option to enable/disable the warning about a hash mismatch in
// the profile data.
static cl::opt<bool> NoPGOWarnMismatch("no-pgo-warn-mismatch", cl::init(false),
cl::Hidden);
static cl::opt<bool>
NoPGOWarnMismatch("no-pgo-warn-mismatch", cl::init(false), cl::Hidden,
cl::desc("Use this option to turn off/on "
"warnings about profile cfg mismatch."));

// Command line option to enable/disable the warning about a hash mismatch in
// the profile data for Comdat functions, which often turns out to be false
// positive due to the pre-instrumentation inline.
static cl::opt<bool> NoPGOWarnMismatchComdat("no-pgo-warn-mismatch-comdat",
cl::init(true), cl::Hidden);
static cl::opt<bool>
NoPGOWarnMismatchComdat("no-pgo-warn-mismatch-comdat", cl::init(true),
cl::Hidden,
cl::desc("The option is used to turn on/off "
"warnings about hash mismatch for comdat "
"functions."));

// Command line option to enable/disable select instruction instrumentation.
static cl::opt<bool> PGOInstrSelect("pgo-instr-select", cl::init(true),
cl::Hidden);

// Command line option to specify the name of the function for CFG dump
static cl::opt<std::string>
PGOViewFunction("pgo-view-function", cl::Hidden,
cl::desc("The option to specify "
"the name of the function "
"whose CFG will be displayed."));
static cl::opt<bool>
PGOInstrSelect("pgo-instr-select", cl::init(true), cl::Hidden,
cl::desc("Use this option to turn on/off SELECT "
"instruction instrumentation. "));

// Command line option to turn on CFG dot dump of raw profile counts
static cl::opt<bool> PGOViewRawCounts("pgo-view-raw-counts", cl::init(false),
cl::Hidden);
static cl::opt<bool>
PGOViewRawCounts("pgo-view-raw-counts", cl::init(false), cl::Hidden,
cl::desc("A boolean option to show CFG dag "
"with raw profile counts from "
"profile data. See also option "
"-pgo-view-counts. To limit graph "
"display to only one function, use "
"filtering option -view-bfi-func-name."));

// Command line option to turn on CFG dot dump after profile annotation.
// Defined in Analysis/BlockFrequencyInfo.cpp: -pgo-view-counts
extern cl::opt<bool> PGOViewCounts;

// Command line option to specify the name of the function for CFG dump
// Defined in Analysis/BlockFrequencyInfo.cpp: -view-bfi-func-name=
extern cl::opt<std::string> ViewBlockFreqFuncName;

namespace {

/// The select instruction visitor plays three roles specified
Expand Down Expand Up @@ -1223,8 +1237,8 @@ static bool annotateAllFunctions(
ColdFunctions.push_back(&F);
else if (FreqAttr == PGOUseFunc::FFA_Hot)
HotFunctions.push_back(&F);
if (PGOViewCounts &&
(PGOViewFunction.empty() || F.getName().equals(PGOViewFunction))) {
if (PGOViewCounts && (ViewBlockFreqFuncName.empty() ||
F.getName().equals(ViewBlockFreqFuncName))) {
LoopInfo LI{DominatorTree(F)};
std::unique_ptr<BranchProbabilityInfo> NewBPI =
llvm::make_unique<BranchProbabilityInfo>(F, LI);
Expand All @@ -1233,9 +1247,9 @@ static bool annotateAllFunctions(

NewBFI->view();
}
if (PGOViewRawCounts &&
(PGOViewFunction.empty() || F.getName().equals(PGOViewFunction))) {
if (PGOViewFunction.empty())
if (PGOViewRawCounts && (ViewBlockFreqFuncName.empty() ||
F.getName().equals(ViewBlockFreqFuncName))) {
if (ViewBlockFreqFuncName.empty())
WriteGraph(&Func, Twine("PGORawCounts_") + Func.getFunc().getName());
else
ViewGraph(&Func, Twine("PGORawCounts_") + Func.getFunc().getName());
Expand Down

0 comments on commit 050d2a7

Please sign in to comment.