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 (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 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, 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 1971 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(), skipPGOUse(), llvm::SplitIndirectBrCriticalEdges(), verifyFuncBFI(), llvm::ViewBlockFreqFuncName, llvm::ViewGraph(), and llvm::WriteGraph().
Referenced by llvm::PGOInstrumentationUse::run().
|
static |
Definition at line 1270 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 686 of file PGOInstrumentation.cpp.
References assert(), llvm::CallingConv::C, llvm::canRenameComdatFunc(), DoComdatRenaming, F, and llvm::make_range().
|
static |
Definition at line 1742 of file PGOInstrumentation.cpp.
References llvm::CallingConv::C, DoComdatRenaming, and F.
Referenced by annotateAllFunctions(), and InstrumentAllFunctions().
|
static |
Definition at line 376 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 1850 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 338 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 2195 of file PGOInstrumentation.cpp.
References OS, and Node::printAsOperand().
Referenced by llvm::DOTGraphTraits< PGOUseFunc * >::getNodeLabel().
|
static |
Definition at line 1795 of file PGOInstrumentation.cpp.
References collectComdatMembers(), createIRLevelProfileFlagVar(), F, instrumentOneFunc(), and skipPGOGen().
Referenced by llvm::PGOInstrumentationGen::run().
|
static |
Definition at line 863 of file PGOInstrumentation.cpp.
References assert(), llvm::classifyEHPersonality(), llvm::colorEHFunclets(), llvm::IRBuilderBase::CreateCall(), llvm::IRBuilderBase::CreatePtrToInt(), llvm::IRBuilderBase::CreateZExtOrTrunc(), llvm::dbgs(), DisableValueProfiling, llvm::BasicBlock::end(), F, llvm::ConstantInt::get(), llvm::Intrinsic::getDeclaration(), llvm::BasicBlock::getFirstInsertionPt(), llvm::IRBuilderBase::GetInsertPoint(), llvm::IRBuilderBase::getInt32(), llvm::IRBuilderBase::getInt64(), llvm::IRBuilderBase::getInt64Ty(), llvm::Type::getInt64Ty(), I, llvm::isFuncletEHPersonality(), LLVM_DEBUG, Name, PGOBlockCoverage, PGOFunctionEntryCoverage, PGOInstrMemOP, PGOInstrumentEntry, PGOTemporalInstrumentation, populateEHOperandBundle(), llvm::SplitIndirectBrCriticalEdges(), and ValueProfKindDescr.
Referenced by InstrumentAllFunctions().
|
static |
Definition at line 1623 of file PGOInstrumentation.cpp.
References llvm::predecessors().
|
static |
Definition at line 833 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 1166 of file PGOInstrumentation.cpp.
References E.
Definition at line 1783 of file PGOInstrumentation.cpp.
References F, PGOFunctionSizeThreshold, and skipPGOUse().
Referenced by InstrumentAllFunctions().
Definition at line 1759 of file PGOInstrumentation.cpp.
References llvm::dbgs(), E, F, llvm::Instruction::getNumSuccessors(), I, llvm::isCriticalEdge(), LLVM_DEBUG, and PGOFunctionCriticalEdgeThreshold.
Referenced by annotateAllFunctions(), and skipPGOGen().
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 1041 of file PGOInstrumentation.cpp.
References E, and llvm::Total.
|
static |
Definition at line 1897 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 skipPGOUse().
|
static |
Referenced by createIRLevelProfileFlagVar(), and instrumentOneFunc().
|
static |
Referenced by skipPGOGen().
|
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 369 of file PGOInstrumentation.cpp.
Referenced by instrumentOneFunc().