LLVM 18.0.0git
|
#include "llvm/Transforms/Instrumentation/PGOInstrumentation.h"
#include "ValueProfileCollector.h"
#include "llvm/ADT/APInt.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/Twine.h"
#include "llvm/ADT/iterator.h"
#include "llvm/ADT/iterator_range.h"
#include "llvm/Analysis/BlockFrequencyInfo.h"
#include "llvm/Analysis/BranchProbabilityInfo.h"
#include "llvm/Analysis/CFG.h"
#include "llvm/Analysis/LoopInfo.h"
#include "llvm/Analysis/OptimizationRemarkEmitter.h"
#include "llvm/Analysis/ProfileSummaryInfo.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/IR/Attributes.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/CFG.h"
#include "llvm/IR/Comdat.h"
#include "llvm/IR/Constant.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DiagnosticInfo.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/EHPersonalities.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/GlobalAlias.h"
#include "llvm/IR/GlobalValue.h"
#include "llvm/IR/GlobalVariable.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/InstVisitor.h"
#include "llvm/IR/InstrTypes.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/MDBuilder.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/PassManager.h"
#include "llvm/IR/ProfDataUtils.h"
#include "llvm/IR/ProfileSummary.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/Value.h"
#include "llvm/ProfileData/InstrProf.h"
#include "llvm/ProfileData/InstrProfReader.h"
#include "llvm/Support/BranchProbability.h"
#include "llvm/Support/CRC.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/DOTGraphTraits.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/GraphWriter.h"
#include "llvm/Support/VirtualFileSystem.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/TargetParser/Triple.h"
#include "llvm/Transforms/Instrumentation.h"
#include "llvm/Transforms/Instrumentation/BlockCoverageInference.h"
#include "llvm/Transforms/Instrumentation/CFGMST.h"
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
#include "llvm/Transforms/Utils/MisExpect.h"
#include "llvm/Transforms/Utils/ModuleUtils.h"
#include <algorithm>
#include <cassert>
#include <cstdint>
#include <memory>
#include <numeric>
#include <optional>
#include <string>
#include <unordered_map>
#include <utility>
#include <vector>
#include "llvm/ProfileData/InstrProfData.inc"
Go to the source code of this file.
Classes | |
struct | llvm::GraphTraits< PGOUseFunc * > |
struct | llvm::DOTGraphTraits< PGOUseFunc * > |
Namespaces | |
namespace | llvm |
This is an optimization pass for GlobalISel generic memory operations. | |
Macros | |
#define | DEBUG_TYPE "pgo-instrumentation" |
#define | VALUE_PROF_KIND(Enumerator, Value, Descr) Descr, |
Typedefs | |
using | ProfileCount = Function::ProfileCount |
using | VPCandidateInfo = ValueProfileCollector::CandidateInfo |
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, bool IsCS) |
static bool | canRenameComdat (Function &F, std::unordered_multimap< Comdat *, GlobalValue * > &ComdatMembers) |
static void | populateEHOperandBundle (VPCandidateInfo &Cand, DenseMap< BasicBlock *, ColorVector > &BlockColors, SmallVectorImpl< OperandBundleDef > &OpBundles) |
static void | instrumentOneFunc (Function &F, Module *M, TargetLibraryInfo &TLI, BranchProbabilityInfo *BPI, BlockFrequencyInfo *BFI, std::unordered_multimap< Comdat *, GlobalValue * > &ComdatMembers, bool IsCS) |
static uint64_t | sumEdgeCount (const ArrayRef< PGOUseEdge * > Edges) |
static void | setupBBInfoEdges (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 void | collectComdatMembers (Module &M, std::unordered_multimap< Comdat *, GlobalValue * > &ComdatMembers) |
static bool | skipPGO (const Function &F) |
static bool | InstrumentAllFunctions (Module &M, function_ref< TargetLibraryInfo &(Function &)> LookupTLI, function_ref< BranchProbabilityInfo *(Function &)> LookupBPI, function_ref< BlockFrequencyInfo *(Function &)> LookupBFI, bool IsCS) |
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, 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 preicise 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 > | 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-remakrs-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-remakrs-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< bool > | PGOOldCFGHashing ("pgo-instr-old-cfg-hashing", cl::init(false), cl::Hidden, cl::desc("Use the old CFG function hashing")) |
static const char * | ValueProfKindDescr [] |
#define DEBUG_TYPE "pgo-instrumentation" |
Definition at line 131 of file PGOInstrumentation.cpp.
#define VALUE_PROF_KIND | ( | Enumerator, | |
Value, | |||
Descr | |||
) | Descr, |
using ProfileCount = Function::ProfileCount |
Definition at line 128 of file PGOInstrumentation.cpp.
Definition at line 129 of file PGOInstrumentation.cpp.
|
static |
Definition at line 1972 of file PGOInstrumentation.cpp.
References ColdCountThreshold, collectComdatMembers(), llvm::IndexedInstrProfReader::create(), llvm::StringRef::data(), llvm::dbgs(), llvm::DS_Warning, E, F, fixFuncEntryCount(), llvm::ProfileSummaryInfo::getOrCompColdCountThreshold(), llvm::ProfileSummaryInfo::getOrCompHotCountThreshold(), llvm::handleAllErrors(), LLVM_DEBUG, llvm::ErrorInfoBase::message(), llvm::InstrProfRecord::NotPseudo, llvm::Function::PCT_Real, PGOFixEntryCount, PGOInstrumentEntry, 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(), skipPGO(), llvm::SplitIndirectBrCriticalEdges(), verifyFuncBFI(), llvm::ViewBlockFreqFuncName, llvm::ViewGraph(), and llvm::WriteGraph().
Referenced by llvm::PGOInstrumentationUse::run().
|
static |
Definition at line 1273 of file PGOInstrumentation.cpp.
References llvm::MDBuilder::createString(), F, llvm::MDTuple::get(), N, llvm::MDNode::operands(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().
|
static |
Definition at line 687 of file PGOInstrumentation.cpp.
References assert(), llvm::CallingConv::C, llvm::canRenameComdatFunc(), DoComdatRenaming, F, and llvm::make_range().
|
static |
Definition at line 1748 of file PGOInstrumentation.cpp.
References llvm::CallingConv::C, DoComdatRenaming, and F.
Referenced by annotateAllFunctions(), and InstrumentAllFunctions().
|
static |
Definition at line 377 of file PGOInstrumentation.cpp.
References llvm::DebugInfoCorrelate, llvm::GlobalValue::ExternalLinkage, llvm::Type::getInt64Ty(), llvm::Constant::getIntegerValue(), llvm::GlobalValue::HiddenVisibility, PGOBlockCoverage, PGOFunctionEntryCoverage, PGOInstrumentEntry, PGOTemporalInstrumentation, and llvm::GlobalValue::WeakAnyLinkage.
Referenced by InstrumentAllFunctions(), and llvm::PGOInstrumentationGenCreateVar::run().
|
static |
Definition at line 1851 of file PGOInstrumentation.cpp.
References assert(), llvm::APFloatBase::cmpEqual, llvm::APFloatBase::cmpGreaterThan, llvm::dbgs(), F, llvm::BlockFrequencyInfo::getBlockProfileCount(), llvm::APFloat::getZero(), llvm::APFloatBase::IEEEdouble(), LLVM_DEBUG, llvm::Function::PCT_Real, and llvm::APFloatBase::rmNearestTiesToEven.
Referenced by annotateAllFunctions().
|
static |
Definition at line 339 of file PGOInstrumentation.cpp.
References Cond, llvm::raw_ostream::flush(), 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().
|
static |
Definition at line 2196 of file PGOInstrumentation.cpp.
References OS, and Node::printAsOperand().
Referenced by llvm::DOTGraphTraits< PGOUseFunc * >::getNodeLabel().
|
static |
Definition at line 1796 of file PGOInstrumentation.cpp.
References collectComdatMembers(), createIRLevelProfileFlagVar(), F, instrumentOneFunc(), and skipPGO().
Referenced by llvm::PGOInstrumentationGen::run().
|
static |
Definition at line 864 of file PGOInstrumentation.cpp.
References assert(), Builder, llvm::classifyEHPersonality(), llvm::colorEHFunclets(), llvm::dbgs(), DisableValueProfiling, llvm::BasicBlock::end(), F, llvm::ConstantInt::get(), llvm::ConstantExpr::getBitCast(), llvm::Intrinsic::getDeclaration(), llvm::BasicBlock::getFirstInsertionPt(), llvm::Type::getInt64Ty(), llvm::Type::getInt8PtrTy(), I, llvm::isFuncletEHPersonality(), LLVM_DEBUG, Name, PGOBlockCoverage, PGOFunctionEntryCoverage, PGOInstrMemOP, PGOInstrumentEntry, PGOTemporalInstrumentation, populateEHOperandBundle(), llvm::SplitIndirectBrCriticalEdges(), and ValueProfKindDescr.
Referenced by InstrumentAllFunctions().
|
static |
Definition at line 1627 of file PGOInstrumentation.cpp.
References llvm::predecessors().
|
static |
Definition at line 834 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().
Referenced by instrumentOneFunc().
|
static |
Set up InEdges/OutEdges for all BBs in the MST.
Definition at line 1170 of file PGOInstrumentation.cpp.
References E.
Definition at line 1765 of file PGOInstrumentation.cpp.
References llvm::dbgs(), E, F, llvm::Instruction::getNumSuccessors(), I, llvm::isCriticalEdge(), LLVM_DEBUG, PGOFunctionCriticalEdgeThreshold, and PGOFunctionSizeThreshold.
Referenced by annotateAllFunctions(), and InstrumentAllFunctions().
STATISTIC | ( | NumCoveredBlocks | , |
"Number of basic blocks that were executed" | |||
) |
STATISTIC | ( | NumOfCSPGOBB | , |
"Number of basic-blocks in CSPGO." | |||
) |
STATISTIC | ( | NumOfCSPGOEdge | , |
"Number of edges in CSPGO." | |||
) |
STATISTIC | ( | NumOfCSPGOFunc | , |
"Number of functions having valid profile counts in CSPGO." | |||
) |
STATISTIC | ( | NumOfCSPGOInstrument | , |
"Number of edges instrumented in CSPGO." | |||
) |
STATISTIC | ( | NumOfCSPGOMemIntrinsics | , |
"Number of mem intrinsics instrumented in CSPGO." | |||
) |
STATISTIC | ( | NumOfCSPGOMismatch | , |
"Number of functions having mismatch profile in CSPGO." | |||
) |
STATISTIC | ( | NumOfCSPGOMissing | , |
"Number of functions without profile in CSPGO." | |||
) |
STATISTIC | ( | NumOfCSPGOSelectInsts | , |
"Number of select instruction instrumented in CSPGO." | |||
) |
STATISTIC | ( | NumOfCSPGOSplit | , |
"Number of critical edge splits in CSPGO." | |||
) |
STATISTIC | ( | NumOfPGOBB | , |
"Number of basic-blocks." | |||
) |
STATISTIC | ( | NumOfPGOEdge | , |
"Number of edges." | |||
) |
STATISTIC | ( | NumOfPGOFunc | , |
"Number of functions having valid profile counts." | |||
) |
STATISTIC | ( | NumOfPGOICall | , |
"Number of indirect call value instrumentations." | |||
) |
STATISTIC | ( | NumOfPGOInstrument | , |
"Number of edges instrumented." | |||
) |
STATISTIC | ( | NumOfPGOMemIntrinsics | , |
"Number of mem intrinsics instrumented." | |||
) |
STATISTIC | ( | NumOfPGOMismatch | , |
"Number of functions having mismatch profile." | |||
) |
STATISTIC | ( | NumOfPGOMissing | , |
"Number of functions without profile." | |||
) |
STATISTIC | ( | NumOfPGOSelectInsts | , |
"Number of select instruction instrumented." | |||
) |
STATISTIC | ( | NumOfPGOSplit | , |
"Number of critical edge splits." | |||
) |
Definition at line 1044 of file PGOInstrumentation.cpp.
References E, and llvm::Total.
|
static |
Definition at line 1898 of file PGOInstrumentation.cpp.
References ColdCountThreshold, DEBUG_TYPE, llvm::OptimizationRemarkEmitter::emit(), F, llvm::BlockFrequencyInfo::getBlockProfileCount(), PGOVerifyBFICutoff, PGOVerifyBFIRatio, PGOVerifyHotBFI, and llvm::Remark.
Referenced by annotateAllFunctions().
|
static |
Referenced by instrumentOneFunc().
|
static |
Referenced by canRenameComdat(), and collectComdatMembers().
|
static |
Referenced by llvm::setProfMetadata().
|
static |
|
static |
|
static |
Referenced by createIRLevelProfileFlagVar(), and instrumentOneFunc().
|
static |
Referenced by annotateAllFunctions().
|
static |
Referenced by skipPGO().
|
static |
Referenced by createIRLevelProfileFlagVar(), and instrumentOneFunc().
|
static |
Referenced by skipPGO().
|
static |
Referenced by instrumentOneFunc().
|
static |
Referenced by llvm::DOTGraphTraits< PGOUseFunc * >::getNodeLabel().
|
static |
Referenced by annotateAllFunctions(), createIRLevelProfileFlagVar(), and instrumentOneFunc().
|
static |
|
static |
Referenced by createIRLevelProfileFlagVar(), and instrumentOneFunc().
|
static |
Referenced by llvm::PGOInstrumentationUse::PGOInstrumentationUse().
|
static |
Referenced by llvm::PGOInstrumentationUse::PGOInstrumentationUse().
|
static |
|
static |
Referenced by annotateAllFunctions().
|
static |
Referenced by verifyFuncBFI().
|
static |
Referenced by verifyFuncBFI().
|
static |
Referenced by annotateAllFunctions(), and verifyFuncBFI().
|
static |
|
static |
Referenced by annotateAllFunctions().
Definition at line 370 of file PGOInstrumentation.cpp.
Referenced by instrumentOneFunc().