LLVM: lib/Transforms/Instrumentation/PGOInstrumentation.cpp File Reference (original) (raw)

Go to the source code of this file.

Namespaces
namespace llvm
This is an optimization pass for GlobalISel generic memory operations.
Functions
STATISTIC (NumOfPGOInstrument, "Number of edges instrumented.")
STATISTIC (NumOfPGOSelectInsts, "Number of select instruction instrumented.")
STATISTIC (NumOfPGOMemIntrinsics, "Number of mem intrinsics instrumented.")
STATISTIC (NumOfPGOEdge, "Number of edges.")
STATISTIC (NumOfPGOBB, "Number of basic-blocks.")
STATISTIC (NumOfPGOSplit, "Number of critical edge splits.")
STATISTIC (NumOfPGOFunc, "Number of functions having valid profile counts.")
STATISTIC (NumOfPGOMismatch, "Number of functions having mismatch profile.")
STATISTIC (NumOfPGOMissing, "Number of functions without profile.")
STATISTIC (NumOfPGOICall, "Number of indirect call value instrumentations.")
STATISTIC (NumOfCSPGOInstrument, "Number of edges instrumented in CSPGO.")
STATISTIC (NumOfCSPGOSelectInsts, "Number of select instruction instrumented in CSPGO.")
STATISTIC (NumOfCSPGOMemIntrinsics, "Number of mem intrinsics instrumented in CSPGO.")
STATISTIC (NumOfCSPGOEdge, "Number of edges in CSPGO.")
STATISTIC (NumOfCSPGOBB, "Number of basic-blocks in CSPGO.")
STATISTIC (NumOfCSPGOSplit, "Number of critical edge splits in CSPGO.")
STATISTIC (NumOfCSPGOFunc, "Number of functions having valid profile counts in CSPGO.")
STATISTIC (NumOfCSPGOMismatch, "Number of functions having mismatch profile in CSPGO.")
STATISTIC (NumOfCSPGOMissing, "Number of functions without profile in CSPGO.")
STATISTIC (NumCoveredBlocks, "Number of basic blocks that were executed")
cl::opt< bool > llvm::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."))
cl::opt< bool > llvm::NoPGOWarnMismatch ("no-pgo-warn-mismatch", cl::init(false), cl::Hidden, cl::desc("Use this option to turn off/on " "warnings about profile cfg mismatch."))
cl::opt< bool > llvm::NoPGOWarnMismatchComdatWeak ("no-pgo-warn-mismatch-comdat-weak", cl::init(true), cl::Hidden, cl::desc("The option is used to turn on/off " "warnings about hash mismatch for comdat " "or weak functions."))
static std::string getBranchCondString (Instruction *TI)
static GlobalVariable * createIRLevelProfileFlagVar (Module &M, PGOInstrumentationType InstrumentationType)
static bool canRenameComdat (Function &F, std::unordered_multimap< Comdat *, GlobalValue * > &ComdatMembers)
static void populateEHOperandBundle (VPCandidateInfo &Cand, DenseMap< BasicBlock *, ColorVector > &BlockColors, SmallVectorImpl< OperandBundleDef > &OpBundles)
static uint64_t sumEdgeCount (const ArrayRef< PGOUseEdge * > Edges)
static void setupBBInfoEdges (const FuncPGOInstrumentation< PGOUseEdge, PGOUseBBInfo > &FuncInfo)
Set up InEdges/OutEdges for all BBs in the MST.
static void annotateFunctionWithHashMismatch (Function &F, LLVMContext &ctx)
static bool isIndirectBrTarget (BasicBlock *BB)
static uint32_t getMaxNumAnnotations (InstrProfValueKind ValueProfKind)
static void collectComdatMembers (Module &M, std::unordered_multimap< Comdat *, GlobalValue * > &ComdatMembers)
static bool skipPGOUse (const Function &F)
static bool skipPGOGen (const Function &F)
static bool InstrumentAllFunctions (Module &M, function_ref< TargetLibraryInfo &(Function &)> LookupTLI, function_ref< BranchProbabilityInfo *(Function &)> LookupBPI, function_ref< BlockFrequencyInfo *(Function &)> LookupBFI, function_ref< LoopInfo *(Function &)> LookupLI, PGOInstrumentationType InstrumentationType)
static void fixFuncEntryCount (PGOUseFunc &Func, LoopInfo &LI, BranchProbabilityInfo &NBPI)
static void verifyFuncBFI (PGOUseFunc &Func, LoopInfo &LI, BranchProbabilityInfo &NBPI, uint64_t HotCountThreshold, uint64_t ColdCountThreshold)
static bool annotateAllFunctions (Module &M, StringRef ProfileFileName, StringRef ProfileRemappingFileName, vfs::FileSystem &FS, function_ref< TargetLibraryInfo &(Function &)> LookupTLI, function_ref< BranchProbabilityInfo *(Function &)> LookupBPI, function_ref< BlockFrequencyInfo *(Function &)> LookupBFI, function_ref< LoopInfo *(Function &)> LookupLI, ProfileSummaryInfo *PSI, bool IsCS)
static std::string getSimpleNodeName (const BasicBlock *Node)
void llvm::setIrrLoopHeaderMetadata (Module *M, Instruction *TI, uint64_t Count)
Variables
static cl::opt< std::string > PGOTestProfileFile ("pgo-test-profile-file", cl::init(""), cl::Hidden, cl::value_desc("filename"), cl::desc("Specify the path of profile data file. This is " "mainly for test purpose."))
static cl::opt< std::string > PGOTestProfileRemappingFile ("pgo-test-profile-remapping-file", cl::init(""), cl::Hidden, cl::value_desc("filename"), cl::desc("Specify the path of profile remapping file. This is mainly for " "test purpose."))
static cl::opt< bool > DisableValueProfiling ("disable-vp", cl::init(false), cl::Hidden, cl::desc("Disable Value Profiling"))
static cl::opt< unsigned > MaxNumAnnotations ("icp-max-annotations", cl::init(3), cl::Hidden, cl::desc("Max number of annotations for a single indirect " "call callsite"))
static cl::opt< unsigned > MaxNumMemOPAnnotations ("memop-max-annotations", cl::init(4), cl::Hidden, cl::desc("Max number of precise value annotations for a single memop" "intrinsic"))
static cl::opt< bool > DoComdatRenaming ("do-comdat-renaming", cl::init(false), cl::Hidden, cl::desc("Append function hash to the name of COMDAT function to avoid " "function hash mismatch due to the preinliner"))
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. "))
static cl::opt< PGOViewCountsType > PGOViewRawCounts ("pgo-view-raw-counts", cl::Hidden, cl::desc("A boolean option to show CFG dag or text " "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."), cl::values(clEnumValN(PGOVCT_None, "none", "do not show."), clEnumValN(PGOVCT_Graph, "graph", "show a graph."), clEnumValN(PGOVCT_Text, "text", "show in text.")))
static cl::opt< bool > PGOInstrMemOP ("pgo-instr-memop", cl::init(true), cl::Hidden, cl::desc("Use this option to turn on/off " "memory intrinsic size profiling."))
static cl::opt< bool > EmitBranchProbability ("pgo-emit-branch-prob", cl::init(false), cl::Hidden, cl::desc("When this option is on, the annotated " "branch probability will be emitted as " "optimization remarks: -{Rpass|" "pass-remarks}=pgo-instrumentation"))
static cl::opt< bool > PGOInstrumentEntry ("pgo-instrument-entry", cl::init(false), cl::Hidden, cl::desc("Force to instrument function entry basicblock."))
static cl::opt< bool > PGOInstrumentLoopEntries ("pgo-instrument-loop-entries", cl::init(false), cl::Hidden, cl::desc("Force to instrument loop entries."))
static cl::opt< bool > PGOFunctionEntryCoverage ("pgo-function-entry-coverage", cl::Hidden, cl::desc("Use this option to enable function entry coverage instrumentation."))
static cl::opt< bool > PGOBlockCoverage ("pgo-block-coverage", cl::desc("Use this option to enable basic block coverage instrumentation"))
static cl::opt< bool > PGOViewBlockCoverageGraph ("pgo-view-block-coverage-graph", cl::desc("Create a dot file of CFGs with block " "coverage inference information"))
static cl::opt< bool > PGOTemporalInstrumentation ("pgo-temporal-instrumentation", cl::desc("Use this option to enable temporal instrumentation"))
static cl::opt< bool > PGOFixEntryCount ("pgo-fix-entry-count", cl::init(true), cl::Hidden, cl::desc("Fix function entry count in profile use."))
static cl::opt< bool > PGOVerifyHotBFI ("pgo-verify-hot-bfi", cl::init(false), cl::Hidden, cl::desc("Print out the non-match BFI count if a hot raw profile count " "becomes non-hot, or a cold raw profile count becomes hot. " "The print is enabled under -Rpass-analysis=pgo, or " "internal option -pass-remarks-analysis=pgo."))
static cl::opt< bool > PGOVerifyBFI ("pgo-verify-bfi", cl::init(false), cl::Hidden, cl::desc("Print out mismatched BFI counts after setting profile metadata " "The print is enabled under -Rpass-analysis=pgo, or " "internal option -pass-remarks-analysis=pgo."))
static cl::opt< unsigned > PGOVerifyBFIRatio ("pgo-verify-bfi-ratio", cl::init(2), cl::Hidden, cl::desc("Set the threshold for pgo-verify-bfi: only print out " "mismatched BFI if the difference percentage is greater than " "this value (in percentage)."))
static cl::opt< unsigned > PGOVerifyBFICutoff ("pgo-verify-bfi-cutoff", cl::init(5), cl::Hidden, cl::desc("Set the threshold for pgo-verify-bfi: skip the counts whose " "profile count value is below."))
static cl::opt< std::string > PGOTraceFuncHash ("pgo-trace-func-hash", cl::init("-"), cl::Hidden, cl::value_desc("function name"), cl::desc("Trace the hash of the function with this name."))
static cl::opt< unsigned > PGOFunctionSizeThreshold ("pgo-function-size-threshold", cl::Hidden, cl::desc("Do not instrument functions smaller than this threshold."))
static cl::opt< unsigned > PGOFunctionCriticalEdgeThreshold ("pgo-critical-edge-threshold", cl::init(20000), cl::Hidden, cl::desc("Do not instrument functions with the number of critical edges " " greater than this threshold."))
static cl::opt< uint64_t > PGOColdInstrumentEntryThreshold ("pgo-cold-instrument-entry-threshold", cl::init(0), cl::Hidden, cl::desc("For cold function instrumentation, skip instrumenting functions " "whose entry count is above the given value."))
static cl::opt< bool > PGOTreatUnknownAsCold ("pgo-treat-unknown-as-cold", cl::init(false), cl::Hidden, cl::desc("For cold function instrumentation, treat count unknown(e.g. " "unprofiled) functions as cold."))
cl::opt< bool > PGOInstrumentColdFunctionOnly ("pgo-instrument-cold-function-only", cl::init(false), cl::Hidden, cl::desc("Enable cold function only instrumentation."))
cl::opt< unsigned > MaxNumVTableAnnotations
static const char * ValueProfKindDescr []

DEBUG_TYPE

#define DEBUG_TYPE "pgo-instrumentation"

VALUE_PROF_KIND

| #define VALUE_PROF_KIND | ( | | Enumerator, | | ------------------------- | ------ | | ----------- | | | Value, | | | | | | Descr | | | | | ) | Descr, | | |

ProfileCount

VPCandidateInfo

annotateAllFunctions()

Definition at line 2133 of file PGOInstrumentation.cpp.

References ColdCountThreshold, collectComdatMembers(), llvm::IndexedInstrProfReader::create(), llvm::createPGONameMetadata(), llvm::StringRef::data(), llvm::dbgs(), llvm::DS_Warning, llvm::EnableVTableProfileUse, F, fixFuncEntryCount(), G, llvm:🆑:Option::getNumOccurrences(), llvm::ProfileSummaryInfo::getOrCompColdCountThreshold(), llvm::ProfileSummaryInfo::getOrCompHotCountThreshold(), llvm::getPGOName(), llvm::handleAllErrors(), LLVM_DEBUG, llvm::ErrorInfoBase::message(), llvm::InstrProfRecord::NotPseudo, llvm::Function::PCT_Real, PGOFixEntryCount, PGOInstrumentEntry, PGOInstrumentLoopEntries, llvm::PGOVCT_Graph, llvm::PGOVCT_None, llvm::PGOVCT_Text, PGOVerifyBFI, PGOVerifyHotBFI, llvm::PGOViewCounts, PGOViewRawCounts, llvm::InstrProfRecord::PseudoHot, llvm::ProfileSummary::PSK_CSInstr, llvm::ProfileSummary::PSK_Instr, llvm::ProfileSummaryInfo::refresh(), skipPGOUse(), llvm::SplitIndirectBrCriticalEdges(), verifyFuncBFI(), llvm::ViewBlockFreqFuncName, llvm::ViewGraph(), and llvm::WriteGraph().

Referenced by llvm::PGOInstrumentationUse::run().

annotateFunctionWithHashMismatch()

canRenameComdat()

collectComdatMembers()

static void collectComdatMembers ( Module & M, std::unordered_multimap< Comdat *, GlobalValue * > & ComdatMembers ) static

createIRLevelProfileFlagVar()

Definition at line 441 of file PGOInstrumentation.cpp.

References llvm::InstrProfCorrelator::DEBUG_INFO, llvm::DebugInfoCorrelate, llvm::GlobalValue::ExternalLinkage, llvm::Type::getInt64Ty(), llvm::Constant::getIntegerValue(), llvm::GlobalValue::HiddenVisibility, PGOBlockCoverage, PGOFunctionEntryCoverage, PGOInstrumentEntry, PGOInstrumentLoopEntries, PGOTemporalInstrumentation, llvm::ProfileCorrelate, and llvm::GlobalValue::WeakAnyLinkage.

Referenced by InstrumentAllFunctions(), and llvm::PGOInstrumentationGenCreateVar::run().

fixFuncEntryCount()

Definition at line 2013 of file PGOInstrumentation.cpp.

References assert(), llvm::APFloatBase::cmpEqual, llvm::APFloatBase::cmpGreaterThan, llvm::dbgs(), F, FuncEntryCount, llvm::BlockFrequencyInfo::getBlockProfileCount(), llvm::APFloat::getZero(), llvm::APFloatBase::IEEEdouble(), LLVM_DEBUG, llvm::Function::PCT_Real, and llvm::APFloatBase::rmNearestTiesToEven.

Referenced by annotateAllFunctions().

getBranchCondString()

static std::string getBranchCondString ( Instruction * TI) static

Definition at line 403 of file PGOInstrumentation.cpp.

References Cond, llvm::BranchInst::getCondition(), llvm::User::getOperand(), llvm::CmpInst::getPredicate(), llvm::Value::getType(), llvm::BranchInst::isConditional(), llvm::ConstantInt::isMinusOne(), llvm::ConstantInt::isOne(), llvm::ConstantInt::isZero(), OS, llvm::Type::print(), and RHS.

Referenced by llvm::setProfMetadata().

getMaxNumAnnotations()

getSimpleNodeName()

InstrumentAllFunctions()

isIndirectBrTarget()

populateEHOperandBundle()

Definition at line 892 of file PGOInstrumentation.cpp.

References llvm::ValueProfileCollector::CandidateInfo::AnnotatedInst, assert(), llvm::SmallVectorImpl< T >::emplace_back(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::empty(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::find(), llvm::TinyPtrVector< EltTy >::front(), llvm::Instruction::isEHPad(), llvm::LLVMContext::OB_funclet, and llvm::TinyPtrVector< EltTy >::size().

setupBBInfoEdges()

static void setupBBInfoEdges ( const FuncPGOInstrumentation< PGOUseEdge, PGOUseBBInfo > & FuncInfo) static

skipPGOGen()

skipPGOUse()

STATISTIC() [1/20]

STATISTIC ( NumCoveredBlocks ,
"Number of basic blocks that were executed"
)

STATISTIC() [2/20]

STATISTIC ( NumOfCSPGOBB ,
"Number of basic-blocks in CSPGO."
)

STATISTIC() [3/20]

STATISTIC ( NumOfCSPGOEdge ,
"Number of edges in CSPGO."
)

STATISTIC() [4/20]

STATISTIC ( NumOfCSPGOFunc ,
"Number of functions having valid profile counts in CSPGO."
)

STATISTIC() [5/20]

STATISTIC ( NumOfCSPGOInstrument ,
"Number of edges instrumented in CSPGO."
)

STATISTIC() [6/20]

STATISTIC ( NumOfCSPGOMemIntrinsics ,
"Number of mem intrinsics instrumented in CSPGO."
)

STATISTIC() [7/20]

STATISTIC ( NumOfCSPGOMismatch ,
"Number of functions having mismatch profile in CSPGO."
)

STATISTIC() [8/20]

STATISTIC ( NumOfCSPGOMissing ,
"Number of functions without profile in CSPGO."
)

STATISTIC() [9/20]

STATISTIC ( NumOfCSPGOSelectInsts ,
"Number of select instruction instrumented in CSPGO."
)

STATISTIC() [10/20]

STATISTIC ( NumOfCSPGOSplit ,
"Number of critical edge splits in CSPGO."
)

STATISTIC() [11/20]

STATISTIC ( NumOfPGOBB ,
"Number of basic-blocks."
)

STATISTIC() [12/20]

STATISTIC ( NumOfPGOEdge ,
"Number of edges."
)

STATISTIC() [13/20]

STATISTIC ( NumOfPGOFunc ,
"Number of functions having valid profile counts."
)

STATISTIC() [14/20]

STATISTIC ( NumOfPGOICall ,
"Number of indirect call value instrumentations."
)

STATISTIC() [15/20]

STATISTIC ( NumOfPGOInstrument ,
"Number of edges instrumented."
)

STATISTIC() [16/20]

STATISTIC ( NumOfPGOMemIntrinsics ,
"Number of mem intrinsics instrumented."
)

STATISTIC() [17/20]

STATISTIC ( NumOfPGOMismatch ,
"Number of functions having mismatch profile."
)

STATISTIC() [18/20]

STATISTIC ( NumOfPGOMissing ,
"Number of functions without profile."
)

STATISTIC() [19/20]

STATISTIC ( NumOfPGOSelectInsts ,
"Number of select instruction instrumented."
)

STATISTIC() [20/20]

STATISTIC ( NumOfPGOSplit ,
"Number of critical edge splits."
)

sumEdgeCount()

verifyFuncBFI()

DisableValueProfiling

cl::opt< bool > DisableValueProfiling("disable-vp", cl::init(false), cl::Hidden, cl::desc("Disable Value Profiling")) ( "disable-vp" , cl::init(false) , cl::Hidden , cl::desc("Disable Value Profiling") ) static

DoComdatRenaming

EmitBranchProbability

| cl::opt< bool > EmitBranchProbability("pgo-emit-branch-prob", cl::init(false), cl::Hidden, cl::desc("When this option is on, the annotated " "branch probability will be emitted as " "optimization remarks: -{Rpass|" "pass-remarks}=pgo-instrumentation")) ( "pgo-emit-branch-prob" , cl::init(false) , cl::Hidden , cl::desc("When this option is on, the annotated " "branch probability will be emitted as " "optimization remarks: -{Rpass|" "pass-remarks}=pgo-instrumentation") ) | static | | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ |

MaxNumAnnotations

cl::opt< unsigned > MaxNumAnnotations("icp-max-annotations", cl::init(3), cl::Hidden, cl::desc("Max number of annotations for a single indirect " "call callsite")) ( "icp-max-annotations" , cl::init(3) , cl::Hidden , cl::desc("Max number of annotations for a single indirect " "call callsite") ) static

MaxNumMemOPAnnotations

cl::opt< unsigned > MaxNumMemOPAnnotations("memop-max-annotations", cl::init(4), cl::Hidden, cl::desc("Max number of precise value annotations for a single memop" "intrinsic")) ( "memop-max-annotations" , cl::init(4) , cl::Hidden , cl::desc("Max number of precise value annotations for a single memop" "intrinsic") ) static

MaxNumVTableAnnotations

PGOBlockCoverage

cl::opt< bool > PGOBlockCoverage("pgo-block-coverage", cl::desc("Use this option to enable basic block coverage instrumentation")) ( "pgo-block-coverage" , cl::desc("Use this option to enable basic block coverage instrumentation") ) static

PGOColdInstrumentEntryThreshold

PGOFixEntryCount

PGOFunctionCriticalEdgeThreshold

cl::opt< unsigned > PGOFunctionCriticalEdgeThreshold("pgo-critical-edge-threshold", cl::init(20000), cl::Hidden, cl::desc("Do not instrument functions with the number of critical edges " " greater than this threshold.")) ( "pgo-critical-edge-threshold" , cl::init(20000) , cl::Hidden , cl::desc("Do not instrument functions with the number of critical edges " " greater than this threshold.") ) static

PGOFunctionEntryCoverage

cl::opt< bool > PGOFunctionEntryCoverage("pgo-function-entry-coverage", cl::Hidden, cl::desc( "Use this option to enable function entry coverage instrumentation.")) ( "pgo-function-entry-coverage" , cl::Hidden , cl::desc( "Use this option to enable function entry coverage instrumentation.") ) static

PGOFunctionSizeThreshold

PGOInstrMemOP

cl::opt< bool > PGOInstrMemOP("pgo-instr-memop", cl::init(true), cl::Hidden, cl::desc("Use this option to turn on/off " "memory intrinsic size profiling.")) ( "pgo-instr-memop" , cl::init(true) , cl::Hidden , cl::desc("Use this option to turn on/off " "memory intrinsic size profiling.") ) static

PGOInstrSelect

cl::opt< bool > PGOInstrSelect("pgo-instr-select", cl::init(true), cl::Hidden, cl::desc("Use this option to turn on/off SELECT " "instruction instrumentation. ")) ( "pgo-instr-select" , cl::init(true) , cl::Hidden , cl::desc("Use this option to turn on/off SELECT " "instruction instrumentation. ") ) static

PGOInstrumentColdFunctionOnly

PGOInstrumentEntry

PGOInstrumentLoopEntries

PGOTemporalInstrumentation

cl::opt< bool > PGOTemporalInstrumentation("pgo-temporal-instrumentation", cl::desc("Use this option to enable temporal instrumentation")) ( "pgo-temporal-instrumentation" , cl::desc("Use this option to enable temporal instrumentation") ) static

PGOTestProfileFile

PGOTestProfileRemappingFile

cl::opt< std::string > PGOTestProfileRemappingFile("pgo-test-profile-remapping-file", cl::init(""), cl::Hidden, cl::value_desc("filename"), cl::desc("Specify the path of profile remapping file. This is mainly for " "test purpose.")) ( "pgo-test-profile-remapping-file" , cl::init("") , cl::Hidden , cl::value_desc("filename") , cl::desc("Specify the path of profile remapping file. This is mainly for " "test purpose.") ) static

PGOTraceFuncHash

PGOTreatUnknownAsCold

PGOVerifyBFI

PGOVerifyBFICutoff

PGOVerifyBFIRatio

cl::opt< unsigned > PGOVerifyBFIRatio("pgo-verify-bfi-ratio", cl::init(2), cl::Hidden, cl::desc("Set the threshold for pgo-verify-bfi: only print out " "mismatched BFI if the difference percentage is greater than " "this value (in percentage).")) ( "pgo-verify-bfi-ratio" , cl::init(2) , cl::Hidden , cl::desc("Set the threshold for pgo-verify-bfi: only print out " "mismatched BFI if the difference percentage is greater than " "this value (in percentage).") ) static

PGOVerifyHotBFI

cl::opt< bool > PGOVerifyHotBFI("pgo-verify-hot-bfi", cl::init(false), cl::Hidden, cl::desc("Print out the non-match BFI count if a hot raw profile count " "becomes non-hot, or a cold raw profile count becomes hot. " "The print is enabled under -Rpass-analysis=pgo, or " "internal option -pass-remarks-analysis=pgo.")) ( "pgo-verify-hot-bfi" , cl::init(false) , cl::Hidden , cl::desc("Print out the non-match BFI count if a hot raw profile count " "becomes non-hot, or a cold raw profile count becomes hot. " "The print is enabled under -Rpass-analysis=pgo, or " "internal option -pass-remarks-analysis=pgo.") ) static

PGOViewBlockCoverageGraph

cl::opt< bool > PGOViewBlockCoverageGraph("pgo-view-block-coverage-graph", cl::desc("Create a dot file of CFGs with block " "coverage inference information")) ( "pgo-view-block-coverage-graph" , cl::desc("Create a dot file of CFGs with block " "coverage inference information") ) static

PGOViewRawCounts

cl::opt< PGOViewCountsType > PGOViewRawCounts("pgo-view-raw-counts", cl::Hidden, cl::desc("A boolean option to show CFG dag or text " "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."), cl::values(clEnumValN(PGOVCT_None, "none", "do not show."), clEnumValN(PGOVCT_Graph, "graph", "show a graph."), clEnumValN(PGOVCT_Text, "text", "show in text."))) ( "pgo-view-raw-counts" , cl::Hidden , cl::desc("A boolean option to show CFG dag or text " "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.") , cl::values(clEnumValN(PGOVCT_None, "none", "do not show."), clEnumValN(PGOVCT_Graph, "graph", "show a graph."), clEnumValN(PGOVCT_Text, "text", "show in text.")) ) static

ValueProfKindDescr