LLVM: include/llvm/ProfileData/InstrProf.h File Reference (original) (raw)

Go to the source code of this file.

Classes
struct llvm::PatchItem
class llvm::ProfOStream
struct llvm::TemporalProfTraceTy
An ordered list of functions identified by their NameRef found in INSTR_PROF_DATA. More...
class llvm::InstrProfError
class llvm::InstrProfSymtab
A symbol table used for function [IR]PGO name look-up with keys (such as pointers, md5hash values) to the function. More...
struct llvm::CountSumOrPercent
struct llvm::OverlapStats
struct llvm::OverlapFuncFilters
struct llvm::InstrProfValueSiteRecord
struct llvm::InstrProfRecord
Profiling information for a single function. More...
struct llvm::NamedInstrProfRecord
struct llvm::ValueProfData
Per-function header/control data structure for value profiling data in indexed format. More...
struct llvm::ValueProfRecordClosure
struct llvm::IndexedInstrProf::Header
struct llvm::IndexedInstrProf::Summary
struct llvm::IndexedInstrProf::Summary::Entry
struct llvm::RawInstrProf::ProfileData< IntPtrT >
struct llvm::RawInstrProf::VTableProfileData< IntPtrT >
struct llvm::RawInstrProf::Header
Namespaces
namespace llvm
This is an optimization pass for GlobalISel generic memory operations.
namespace llvm::object
namespace llvm::IndexedInstrProf
namespace llvm::RawInstrProf
Macros
#define INSTR_PROF_SECT_ENTRY(Kind, SectNameCommon, SectNameCoff, Prefix)
#define INSTR_PROF_VISIBILITY
#define INSTR_PROF_DATA(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_VTABLE_DATA(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_VALUE_NODE(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_RAW_HEADER(Type, Name, Initializer)
#define VALUE_PROF_FUNC_PARAM(ArgType, ArgName, ArgLLVMType)
#define INSTR_PROF_COMMA
#define VALUE_PROF_KIND(Enumerator, Value, Descr)
#define COVMAP_FUNC_RECORD(Type, LLVMType, Name, Initializer)
#define COVMAP_HEADER(Type, LLVMType, Name, Initializer)
#define COVINIT_FUNC(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_DATA_DEFINED
#define VALUE_PROF_KIND(Enumerator, Value, Descr)
#define INSTR_PROF_DATA(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_VTABLE_DATA(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_VALUE_NODE(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_RAW_HEADER(Type, Name, Initializer)
#define VALUE_PROF_FUNC_PARAM(ArgType, ArgName, ArgLLVMType)
#define INSTR_PROF_COMMA
#define INSTR_PROF_DATA_DEFINED
#define COVMAP_FUNC_RECORD(Type, LLVMType, Name, Initializer)
#define COVMAP_HEADER(Type, LLVMType, Name, Initializer)
#define COVINIT_FUNC(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_VALUE_PROF_DATA
#define INSTR_PROF_DATA(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_VTABLE_DATA(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_VALUE_NODE(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_RAW_HEADER(Type, Name, Initializer)
#define VALUE_PROF_FUNC_PARAM(ArgType, ArgName, ArgLLVMType)
#define INSTR_PROF_COMMA
#define VALUE_PROF_KIND(Enumerator, Value, Descr)
#define COVMAP_FUNC_RECORD(Type, LLVMType, Name, Initializer)
#define COVMAP_HEADER(Type, LLVMType, Name, Initializer)
#define COVINIT_FUNC(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_DATA_DEFINED
#define INSTR_PROF_MAX_NUM_VAL_PER_SITE 255
#define INSTR_PROF_DATA(Type, LLVMType, Name, Init)
#define INSTR_PROF_DATA_DEFINED
#define INSTR_PROF_VTABLE_DATA(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_VALUE_NODE(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_RAW_HEADER(Type, Name, Initializer)
#define VALUE_PROF_FUNC_PARAM(ArgType, ArgName, ArgLLVMType)
#define INSTR_PROF_COMMA
#define VALUE_PROF_KIND(Enumerator, Value, Descr)
#define COVMAP_FUNC_RECORD(Type, LLVMType, Name, Initializer)
#define COVMAP_HEADER(Type, LLVMType, Name, Initializer)
#define COVINIT_FUNC(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_VTABLE_DATA(Type, LLVMType, Name, Init)
#define INSTR_PROF_DATA(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_VTABLE_DATA_DEFINED
#define INSTR_PROF_VALUE_NODE(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_RAW_HEADER(Type, Name, Initializer)
#define VALUE_PROF_FUNC_PARAM(ArgType, ArgName, ArgLLVMType)
#define INSTR_PROF_COMMA
#define VALUE_PROF_KIND(Enumerator, Value, Descr)
#define COVMAP_FUNC_RECORD(Type, LLVMType, Name, Initializer)
#define COVMAP_HEADER(Type, LLVMType, Name, Initializer)
#define COVINIT_FUNC(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_DATA_INC
#define INSTR_PROF_SIMPLE_QUOTE(x)
#define INSTR_PROF_QUOTE(x)
#define INSTR_PROF_SIMPLE_CONCAT(x, y)
#define INSTR_PROF_CONCAT(x, y)
#define INSTR_PROF_RAW_MAGIC_64
#define INSTR_PROF_RAW_MAGIC_32
#define INSTR_PROF_RAW_VERSION 10
#define INSTR_PROF_INDEX_VERSION 13
#define INSTR_PROF_COVMAP_VERSION 6
#define VARIANT_MASKS_ALL 0xffffffff00000000ULL
#define GET_VERSION(V)
#define VARIANT_MASK_INSTR_LOOP_ENTRIES (0x1ULL << 55)
#define VARIANT_MASK_IR_PROF (0x1ULL << 56)
#define VARIANT_MASK_CSIR_PROF (0x1ULL << 57)
#define VARIANT_MASK_INSTR_ENTRY (0x1ULL << 58)
#define VARIANT_MASK_DBG_CORRELATE (0x1ULL << 59)
#define VARIANT_MASK_BYTE_COVERAGE (0x1ULL << 60)
#define VARIANT_MASK_FUNCTION_ENTRY_ONLY (0x1ULL << 61)
#define VARIANT_MASK_MEMPROF (0x1ULL << 62)
#define VARIANT_MASK_TEMPORAL_PROF (0x1ULL << 63)
#define INSTR_PROF_RAW_VERSION_VAR __llvm_profile_raw_version
#define INSTR_PROF_PROFILE_RUNTIME_VAR __llvm_profile_runtime
#define INSTR_PROF_PROFILE_COUNTER_BIAS_VAR __llvm_profile_counter_bias
#define INSTR_PROF_PROFILE_BITMAP_BIAS_VAR __llvm_profile_bitmap_bias
#define INSTR_PROF_PROFILE_SET_TIMESTAMP __llvm_profile_set_timestamp
#define INSTR_PROF_PROFILE_SAMPLING_VAR __llvm_profile_sampling
#define INSTR_PROF_PROFILE_NAME_VAR __llvm_profile_filename
#define INSTR_PROF_DATA_COMMON __llvm_prf_data
#define INSTR_PROF_NAME_COMMON __llvm_prf_names
#define INSTR_PROF_VNAME_COMMON __llvm_prf_vns
#define INSTR_PROF_CNTS_COMMON __llvm_prf_cnts
#define INSTR_PROF_BITS_COMMON __llvm_prf_bits
#define INSTR_PROF_VALS_COMMON __llvm_prf_vals
#define INSTR_PROF_VNODES_COMMON __llvm_prf_vnds
#define INSTR_PROF_VTAB_COMMON __llvm_prf_vtab
#define INSTR_PROF_COVMAP_COMMON __llvm_covmap
#define INSTR_PROF_COVFUN_COMMON __llvm_covfun
#define INSTR_PROF_COVDATA_COMMON __llvm_covdata
#define INSTR_PROF_COVNAME_COMMON __llvm_covnames
#define INSTR_PROF_COVINIT_COMMON __llvm_covinit
#define INSTR_PROF_DATA_COFF ".lprfd$M"
#define INSTR_PROF_NAME_COFF ".lprfn$M"
#define INSTR_PROF_VNAME_COFF ".lprfvn$M"
#define INSTR_PROF_CNTS_COFF ".lprfc$M"
#define INSTR_PROF_BITS_COFF ".lprfb$M"
#define INSTR_PROF_VALS_COFF ".lprfv$M"
#define INSTR_PROF_VNODES_COFF ".lprfnd$M"
#define INSTR_PROF_VTAB_COFF ".lprfvt$M"
#define INSTR_PROF_COVMAP_COFF ".lcovmap$M"
#define INSTR_PROF_COVFUN_COFF ".lcovfun$M"
#define INSTR_PROF_COVDATA_COFF ".lcovd"
#define INSTR_PROF_COVNAME_COFF ".lcovn"
#define INSTR_PROF_COVINIT_COFF ".lcovd$M"
#define INSTR_PROF_DATA_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_DATA_COMMON)
#define INSTR_PROF_NAME_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_NAME_COMMON)
#define INSTR_PROF_CNTS_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_CNTS_COMMON)
#define INSTR_PROF_BITS_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_BITS_COMMON)
#define INSTR_PROF_VTAB_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_VTAB_COMMON)
#define INSTR_PROF_VNAME_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_VNAME_COMMON)
#define INSTR_PROF_VALS_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_VALS_COMMON)
#define INSTR_PROF_VNODES_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_VNODES_COMMON)
#define INSTR_PROF_COVMAP_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_COVMAP_COMMON)
#define INSTR_PROF_COVFUN_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_COVFUN_COMMON)
#define INSTR_PROF_COVDATA_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_COVDATA_COMMON)
#define INSTR_PROF_COVNAME_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_COVNAME_COMMON)
#define INSTR_PROF_COVINIT_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_COVINIT_COMMON)
#define INSTR_PROF_SECT_START(Sect)
#define INSTR_PROF_SECT_STOP(Sect)
#define INSTR_PROF_VALUE_PROF_FUNC __llvm_profile_instrument_target
#define INSTR_PROF_VALUE_PROF_FUNC_STR INSTR_PROF_QUOTE(INSTR_PROF_VALUE_PROF_FUNC)
#define INSTR_PROF_VALUE_PROF_MEMOP_FUNC __llvm_profile_instrument_memop
#define INSTR_PROF_VALUE_PROF_MEMOP_FUNC_STR INSTR_PROF_QUOTE(INSTR_PROF_VALUE_PROF_MEMOP_FUNC)
#define INSTR_PROF_DATA_ALIGNMENT 8
#define INSTR_PROF_RAW_HEADER(Type, Name, Init)
#define INSTR_PROF_DATA(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_VTABLE_DATA(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_VALUE_NODE(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_DATA_DEFINED
#define VALUE_PROF_FUNC_PARAM(ArgType, ArgName, ArgLLVMType)
#define INSTR_PROF_COMMA
#define VALUE_PROF_KIND(Enumerator, Value, Descr)
#define COVMAP_FUNC_RECORD(Type, LLVMType, Name, Initializer)
#define COVMAP_HEADER(Type, LLVMType, Name, Initializer)
#define COVINIT_FUNC(Type, LLVMType, Name, Initializer)
Enumerations
enum llvm::InstrProfSectKind { llvm::INSTR_PROF_DATA, llvm::INSTR_PROF_DATA }
enum llvm::InstrProfValueKind : uint32_t { llvm::INSTR_PROF_DATA, llvm::INSTR_PROF_DATA }
enum class llvm::InstrProfKind { llvm::Unknown = 0x0 , llvm::FrontendInstrumentation = 0x1 , llvm::IRInstrumentation = 0x2 , llvm::FunctionEntryInstrumentation = 0x4 , llvm::ContextSensitive = 0x8 , llvm::SingleByteCoverage = 0x10 , llvm::FunctionEntryOnly = 0x20 , llvm::MemProf = 0x40 , llvm::TemporalProfile = 0x80 , llvm::LoopEntriesInstrumentation = 0x100 }
An enum describing the attributes of an instrumented profile. More...
enum class llvm::instrprof_error { llvm::success = 0 , llvm::eof, llvm::unrecognized_format, llvm::bad_magic, llvm::bad_header, llvm::unsupported_version, llvm::unsupported_hash_type, llvm::too_large, llvm::truncated, llvm::malformed, llvm::missing_correlation_info, llvm::unexpected_correlation_info, llvm::unable_to_correlate_profile, llvm::unknown_function, llvm::invalid_prof, llvm::hash_mismatch, llvm::count_mismatch, llvm::bitmap_mismatch, llvm::counter_overflow, llvm::value_site_count_mismatch, llvm::compress_failed, llvm::uncompress_failed, llvm::empty_raw_profile, llvm::zlib_unavailable, llvm::raw_profile_version_mismatch, llvm::counter_value_too_large }
enum class llvm::IndexedInstrProf::HashT : uint32_t { llvm::IndexedInstrProf::MD5, llvm::IndexedInstrProf::Last = MD5 }
enum llvm::IndexedInstrProf::ProfVersion { llvm::IndexedInstrProf::Version1 = 1 , llvm::IndexedInstrProf::Version2 = 2 , llvm::IndexedInstrProf::Version3 = 3 , llvm::IndexedInstrProf::Version4 = 4 , llvm::IndexedInstrProf::Version5 = 5 , llvm::IndexedInstrProf::Version6 = 6 , llvm::IndexedInstrProf::Version7 = 7 , llvm::IndexedInstrProf::Version8 = 8 , llvm::IndexedInstrProf::Version9 = 9 , llvm::IndexedInstrProf::Version10 = 10 , llvm::IndexedInstrProf::Version11 = 11 , llvm::IndexedInstrProf::Version12 = 12 , llvm::IndexedInstrProf::Version13 = 13 , llvm::IndexedInstrProf::CurrentVersion = INSTR_PROF_INDEX_VERSION }
Functions
uint64_t llvm::getInstrMaxCountValue ()
Return the max count value. We reserver a few large values for special use.
LLVM_ABI std::string llvm::getInstrProfSectionName (InstrProfSectKind IPSK, Triple::ObjectFormatType OF, bool AddSegmentInfo=true)
Return the name of the profile section corresponding to IPSK.
StringRef llvm::getInstrProfValueProfFuncName ()
Return the name profile runtime entry point to do value profiling for a given site.
StringRef llvm::getInstrProfValueProfMemOpFuncName ()
Return the name profile runtime entry point to do memop size value profiling.
StringRef llvm::getInstrProfNameVarPrefix ()
Return the name prefix of variables containing instrumented function names.
StringRef llvm::getInstrProfVTableVarPrefix ()
Return the name prefix of variables containing virtual table profile data.
StringRef llvm::getInstrProfDataVarPrefix ()
Return the name prefix of variables containing per-function control data.
StringRef llvm::getInstrProfCountersVarPrefix ()
Return the name prefix of profile counter variables.
StringRef llvm::getInstrProfBitmapVarPrefix ()
Return the name prefix of profile bitmap variables.
StringRef llvm::getInstrProfValuesVarPrefix ()
Return the name prefix of value profile variables.
StringRef llvm::getInstrProfVNodesVarName ()
Return the name of value profile node array variables:
StringRef llvm::getInstrProfNamesVarName ()
Return the name of the variable holding the strings (possibly compressed) of all function's PGO names.
StringRef llvm::getInstrProfVTableNamesVarName ()
StringRef llvm::getCoverageMappingVarName ()
Return the name of a covarage mapping variable (internal linkage) for each instrumented source module.
StringRef llvm::getCoverageUnusedNamesVarName ()
Return the name of the internal variable recording the array of PGO name vars referenced by the coverage mapping.
StringRef llvm::getInstrProfRegFuncsName ()
Return the name of function that registers all the per-function control data at program startup time by calling __llvm_register_function.
StringRef llvm::getInstrProfRegFuncName ()
Return the name of the runtime interface that registers per-function control data for one instrumented function.
StringRef llvm::getInstrProfNamesRegFuncName ()
Return the name of the runtime interface that registers the PGO name strings.
StringRef llvm::getInstrProfInitFuncName ()
Return the name of the runtime initialization method that is generated by the compiler.
StringRef llvm::getInstrProfRuntimeHookVarName ()
Return the name of the hook variable defined in profile runtime library.
StringRef llvm::getInstrProfRuntimeHookVarUseFuncName ()
Return the name of the compiler generated function that references the runtime hook variable.
StringRef llvm::getInstrProfCounterBiasVarName ()
StringRef llvm::getInstrProfBitmapBiasVarName ()
StringRef llvm::getInstrProfNameSeparator ()
Return the marker used to separate PGO names during serialization.
LLVM_ABI bool llvm::isGPUProfTarget (const Module &M)
Determines whether module targets a GPU eligable for PGO instrumentation.
LLVM_ABI std::string llvm::getPGOFuncName (const Function &F, bool InLTO=false, uint64_t Version=INSTR_PROF_INDEX_VERSION)
Please use getIRPGOFuncName for LLVM IR instrumentation.
LLVM_ABI std::string llvm::getPGOFuncName (StringRef RawFuncName, GlobalValue::LinkageTypes Linkage, StringRef FileName, uint64_t Version=INSTR_PROF_INDEX_VERSION)
Return the modified name for a function suitable to be used the key for profile lookup.
LLVM_ABI std::string llvm::getIRPGOFuncName (const Function &F, bool InLTO=false)
LLVM_ABI std::pair< StringRef, StringRef > llvm::getParsedIRPGOName (StringRef IRPGOName)
LLVM_ABI std::string llvm::getPGOFuncNameVarName (StringRef FuncName, GlobalValue::LinkageTypes Linkage)
Return the name of the global variable used to store a function name in PGO instrumentation.
LLVM_ABI GlobalVariable * llvm::createPGOFuncNameVar (Function &F, StringRef PGOFuncName)
Create and return the global variable for function name used in PGO instrumentation.
LLVM_ABI GlobalVariable * llvm::createPGOFuncNameVar (Module &M, GlobalValue::LinkageTypes Linkage, StringRef PGOFuncName)
Create and return the global variable for function name used in PGO instrumentation.
LLVM_ABI StringRef llvm::getPGOFuncNameVarInitializer (GlobalVariable *NameVar)
Return the initializer in string of the PGO name var NameVar.
LLVM_ABI StringRef llvm::getFuncNameWithoutPrefix (StringRef PGOFuncName, StringRef FileName="")
Given a PGO function name, remove the filename prefix and return the original (static) function name.
LLVM_ABI Error llvm::collectGlobalObjectNameStrings (ArrayRef< std::string > NameStrs, bool doCompression, std::string &Result)
Given a vector of strings (names of global objects like functions or, virtual tables) NameStrs, the method generates a combined string Result that is ready to be serialized.
LLVM_ABI Error llvm::collectPGOFuncNameStrings (ArrayRef< GlobalVariable * > NameVars, std::string &Result, bool doCompression=true)
Produce Result string with the same format described above.
LLVM_ABI Error llvm::collectVTableStrings (ArrayRef< GlobalVariable * > VTables, std::string &Result, bool doCompression)
LLVM_ABI bool llvm::isIRPGOFlagSet (const Module *M)
Check if INSTR_PROF_RAW_VERSION_VAR is defined.
LLVM_ABI bool llvm::canRenameComdatFunc (const Function &F, bool CheckAddressTaken=false)
Check if we can safely rename this Comdat function.
LLVM_ABI void llvm::annotateValueSite (Module &M, Instruction &Inst, const InstrProfRecord &InstrProfR, InstrProfValueKind ValueKind, uint32_t SiteIndx, uint32_t MaxMDCount=3)
Get the value profile data for value site SiteIdx from InstrProfR and annotate the instruction Inst with the value profile meta data.
LLVM_ABI void llvm::annotateValueSite (Module &M, Instruction &Inst, ArrayRef< InstrProfValueData > VDs, uint64_t Sum, InstrProfValueKind ValueKind, uint32_t MaxMDCount)
Same as the above interface but using an ArrayRef, as well as Sum.
LLVM_ABI SmallVector< InstrProfValueData, 4 > llvm::getValueProfDataFromInst (const Instruction &Inst, InstrProfValueKind ValueKind, uint32_t MaxNumValueData, uint64_t &TotalC, bool GetNoICPValue=false)
Extract the value profile data from Inst and returns them if Inst is annotated with value profile data.
StringRef llvm::getPGOFuncNameMetadataName ()
StringRef llvm::getPGONameMetadataName ()
LLVM_ABI MDNode * llvm::getPGOFuncNameMetadata (const Function &F)
Return the PGOFuncName meta data associated with a function.
LLVM_ABI std::string llvm::getPGOName (const GlobalVariable &V, bool InLTO=false)
LLVM_ABI void llvm::createPGOFuncNameMetadata (Function &F, StringRef PGOFuncName)
Create the PGOFuncName meta data if PGOFuncName is different from function's raw name.
LLVM_ABI void llvm::createPGONameMetadata (GlobalObject &GO, StringRef PGOName)
Create the PGOName metadata if a global object's PGO name is different from its mangled name.
LLVM_ABI bool llvm::needsComdatForCounter (const GlobalObject &GV, const Module &M)
Check if we can use Comdat for profile variables.
LLVM_ABI Error llvm::readAndDecodeStrings (StringRef NameStrings, std::function< Error(StringRef)> NameCallback)
NameStrings is a string composed of one or more possibly encoded sub-strings.
LLVM_ABI const std::error_category & llvm::instrprof_category ()
std::error_code llvm::make_error_code (instrprof_error E)
uint64_t llvm::IndexedInstrProf::ComputeHash (StringRef K)
llvm::INSTR_PROF_DATA (const uint64_t, llvm::Type::getInt64Ty(Ctx), NameRef, ConstantInt::get(llvm::Type::getInt64Ty(Ctx), IndexedInstrProf::ComputeHash(getPGOFuncNameVarInitializer(Inc->getName())))) INSTR_PROF_DATA(const uint64_t
FunctionAddr llvm::INSTR_PROF_DATA (IntPtrT, llvm::PointerType::getUnqual(Ctx), Values, ValuesPtrExpr) INSTR_PROF_DATA(const uint32_t
FunctionAddr VTableAddr llvm::INSTR_PROF_VTABLE_DATA (const uint32_t, llvm::Type::getInt32Ty(Ctx), VTableSize, ConstantInt::get(llvm::Type::getInt32Ty(Ctx), VTableSizeVal)) INSTR_PROF_VALUE_NODE(uint64_t
FunctionAddr VTableAddr uintptr_t llvm::CountersBegin (uintptr_t) DataBegin) INSTR_PROF_RAW_HEADER(uint64_t
FunctionAddr VTableAddr uintptr_t uintptr_t llvm::BitmapBegin (uintptr_t) DataBegin) VALUE_PROF_FUNC_PARAM(uint64_t
FunctionAddr VTableAddr uintptr_t uintptr_t WriteoutF llvm::COVINIT_FUNC (IntPtrT, llvm::PointerType::getUnqual(Ctx), ResetFunction, ResetF) typedef struct ValueProfRecord
This is the header of the data structure that defines the on-disk layout of the value profile data of a particular kind for one function.
INSTR_PROF_VISIBILITY ValueProfRecord * llvm::getFirstValueProfRecord (ValueProfData *This)
Return the first ValueProfRecord instance.
INSTR_PROF_VISIBILITY ValueProfRecord * llvm::getValueProfRecordNext (ValueProfRecord *This)
Use this method to advance to the next This ValueProfRecord.
INSTR_PROF_VISIBILITY InstrProfValueData * llvm::getValueProfRecordValueData (ValueProfRecord *This)
Return the pointer to the start of value data array.
INSTR_PROF_VISIBILITY uint32_t llvm::getValueProfRecordHeaderSize (uint32_t NumValueSites)
uint64_t llvm::IndexedInstrProf::ComputeHash (HashT Type, StringRef K)
std::unique_ptr< Summary > llvm::IndexedInstrProf::allocSummary (uint32_t TotalSize)
template
uint64_t llvm::RawInstrProf::getMagic ()
template<>
uint64_t llvm::RawInstrProf::getMagic< uint64_t > ()
template<>
uint64_t llvm::RawInstrProf::getMagic< uint32_t > ()
LLVM_ABI void llvm::createProfileFileNameVar (Module &M, StringRef InstrProfileOutput)
Variables
llvm::FuncHash
llvm::FunctionPointer
FunctionAddr llvm::NumCounters
FunctionAddr llvm::Int16ArrayTy
FunctionAddr llvm::NumValueSites [IPVK_Last+1]
FunctionAddr llvm::NumBitmapBytes
FunctionAddr llvm::VTableNameHash
FunctionAddr llvm::VTablePointer
FunctionAddr VTableAddr llvm::Value
FunctionAddr VTableAddr llvm::Count
FunctionAddr VTableAddr llvm::Next
FunctionAddr VTableAddr llvm::CountersDelta
FunctionAddr VTableAddr uintptr_t llvm::BitmapDelta
FunctionAddr VTableAddr uintptr_t uintptr_t llvm::TargetValue
FunctionAddr VTableAddr uintptr_t uintptr_t llvm::Data
FunctionAddr VTableAddr uintptr_t uintptr_t llvm::DataSize
FunctionAddr VTableAddr uintptr_t uintptr_t llvm::Int32Ty
FunctionAddr VTableAddr uintptr_t uintptr_t llvm::NRecords
FunctionAddr VTableAddr uintptr_t uintptr_t llvm::FilenamesSize
FunctionAddr VTableAddr uintptr_t uintptr_t llvm::CoverageSize
FunctionAddr VTableAddr uintptr_t uintptr_t llvm::Version
FunctionAddr VTableAddr uintptr_t uintptr_t llvm::WriteoutFunction
llvm::ValueProfRecord
const uint64_t llvm::IndexedInstrProf::Magic = 0x8169666f72706cff
const uint64_t llvm::IndexedInstrProf::Version = ProfVersion::CurrentVersion
const HashT llvm::IndexedInstrProf::HashType = HashT::MD5
const uint64_t llvm::RawInstrProf::Version = INSTR_PROF_RAW_VERSION
LLVM_ABI cl::opt< bool > llvm::DoInstrProfNameCompression

COVINIT_FUNC [1/6]

#define COVINIT_FUNC ( Type,
LLVMType,
Name,
Initializer )

COVINIT_FUNC [2/6]

#define COVINIT_FUNC ( Type,
LLVMType,
Name,
Initializer )

COVINIT_FUNC [3/6]

#define COVINIT_FUNC ( Type,
LLVMType,
Name,
Initializer )

COVINIT_FUNC [4/6]

#define COVINIT_FUNC ( Type,
LLVMType,
Name,
Initializer )

COVINIT_FUNC [5/6]

#define COVINIT_FUNC ( Type,
LLVMType,
Name,
Initializer )

COVINIT_FUNC [6/6]

#define COVINIT_FUNC ( Type,
LLVMType,
Name,
Initializer )

COVMAP_FUNC_RECORD [1/6]

#define COVMAP_FUNC_RECORD ( Type,
LLVMType,
Name,
Initializer )

COVMAP_FUNC_RECORD [2/6]

#define COVMAP_FUNC_RECORD ( Type,
LLVMType,
Name,
Initializer )

COVMAP_FUNC_RECORD [3/6]

#define COVMAP_FUNC_RECORD ( Type,
LLVMType,
Name,
Initializer )

COVMAP_FUNC_RECORD [4/6]

#define COVMAP_FUNC_RECORD ( Type,
LLVMType,
Name,
Initializer )

COVMAP_FUNC_RECORD [5/6]

#define COVMAP_FUNC_RECORD ( Type,
LLVMType,
Name,
Initializer )

COVMAP_FUNC_RECORD [6/6]

#define COVMAP_FUNC_RECORD ( Type,
LLVMType,
Name,
Initializer )

COVMAP_HEADER [1/6]

#define COVMAP_HEADER ( Type,
LLVMType,
Name,
Initializer )

COVMAP_HEADER [2/6]

#define COVMAP_HEADER ( Type,
LLVMType,
Name,
Initializer )

COVMAP_HEADER [3/6]

#define COVMAP_HEADER ( Type,
LLVMType,
Name,
Initializer )

COVMAP_HEADER [4/6]

#define COVMAP_HEADER ( Type,
LLVMType,
Name,
Initializer )

COVMAP_HEADER [5/6]

#define COVMAP_HEADER ( Type,
LLVMType,
Name,
Initializer )

COVMAP_HEADER [6/6]

#define COVMAP_HEADER ( Type,
LLVMType,
Name,
Initializer )

GET_VERSION

INSTR_PROF_BITS_COFF

#define INSTR_PROF_BITS_COFF ".lprfb$M"

INSTR_PROF_BITS_COMMON

#define INSTR_PROF_BITS_COMMON __llvm_prf_bits

INSTR_PROF_BITS_SECT_NAME

#define INSTR_PROF_BITS_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_BITS_COMMON)

INSTR_PROF_CNTS_COFF

#define INSTR_PROF_CNTS_COFF ".lprfc$M"

INSTR_PROF_CNTS_COMMON

#define INSTR_PROF_CNTS_COMMON __llvm_prf_cnts

INSTR_PROF_CNTS_SECT_NAME

#define INSTR_PROF_CNTS_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_CNTS_COMMON)

INSTR_PROF_COMMA [1/6]

INSTR_PROF_COMMA [2/6]

INSTR_PROF_COMMA [3/6]

INSTR_PROF_COMMA [4/6]

INSTR_PROF_COMMA [5/6]

INSTR_PROF_COMMA [6/6]

INSTR_PROF_CONCAT

#define INSTR_PROF_CONCAT ( x,
y )

Value:

INSTR_PROF_SIMPLE_CONCAT(x,y)

#define INSTR_PROF_SIMPLE_CONCAT(x, y)

INSTR_PROF_COVDATA_COFF

#define INSTR_PROF_COVDATA_COFF ".lcovd"

INSTR_PROF_COVDATA_COMMON

#define INSTR_PROF_COVDATA_COMMON __llvm_covdata

INSTR_PROF_COVDATA_SECT_NAME

#define INSTR_PROF_COVDATA_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_COVDATA_COMMON)

INSTR_PROF_COVFUN_COFF

#define INSTR_PROF_COVFUN_COFF ".lcovfun$M"

INSTR_PROF_COVFUN_COMMON

#define INSTR_PROF_COVFUN_COMMON __llvm_covfun

INSTR_PROF_COVFUN_SECT_NAME

#define INSTR_PROF_COVFUN_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_COVFUN_COMMON)

INSTR_PROF_COVINIT_COFF

#define INSTR_PROF_COVINIT_COFF ".lcovd$M"

INSTR_PROF_COVINIT_COMMON

#define INSTR_PROF_COVINIT_COMMON __llvm_covinit

INSTR_PROF_COVINIT_SECT_NAME

#define INSTR_PROF_COVINIT_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_COVINIT_COMMON)

INSTR_PROF_COVMAP_COFF

#define INSTR_PROF_COVMAP_COFF ".lcovmap$M"

INSTR_PROF_COVMAP_COMMON

#define INSTR_PROF_COVMAP_COMMON __llvm_covmap

INSTR_PROF_COVMAP_SECT_NAME

#define INSTR_PROF_COVMAP_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_COVMAP_COMMON)

INSTR_PROF_COVMAP_VERSION

#define INSTR_PROF_COVMAP_VERSION 6

INSTR_PROF_COVNAME_COFF

#define INSTR_PROF_COVNAME_COFF ".lcovn"

INSTR_PROF_COVNAME_COMMON

#define INSTR_PROF_COVNAME_COMMON __llvm_covnames

INSTR_PROF_COVNAME_SECT_NAME

#define INSTR_PROF_COVNAME_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_COVNAME_COMMON)

INSTR_PROF_DATA [1/6]

#define INSTR_PROF_DATA ( Type,
LLVMType,
Name,
Init )

INSTR_PROF_DATA [2/6]

#define INSTR_PROF_DATA ( Type,
LLVMType,
Name,
Initializer )

INSTR_PROF_DATA [3/6]

#define INSTR_PROF_DATA ( Type,
LLVMType,
Name,
Initializer )

INSTR_PROF_DATA [4/6]

#define INSTR_PROF_DATA ( Type,
LLVMType,
Name,
Initializer )

INSTR_PROF_DATA [5/6]

#define INSTR_PROF_DATA ( Type,
LLVMType,
Name,
Initializer )

INSTR_PROF_DATA [6/6]

#define INSTR_PROF_DATA ( Type,
LLVMType,
Name,
Initializer )

INSTR_PROF_DATA_ALIGNMENT

#define INSTR_PROF_DATA_ALIGNMENT 8

INSTR_PROF_DATA_COFF

#define INSTR_PROF_DATA_COFF ".lprfd$M"

INSTR_PROF_DATA_COMMON

#define INSTR_PROF_DATA_COMMON __llvm_prf_data

INSTR_PROF_DATA_DEFINED [1/5]

#define INSTR_PROF_DATA_DEFINED

INSTR_PROF_DATA_DEFINED [2/5]

#define INSTR_PROF_DATA_DEFINED

INSTR_PROF_DATA_DEFINED [3/5]

#define INSTR_PROF_DATA_DEFINED

INSTR_PROF_DATA_DEFINED [4/5]

#define INSTR_PROF_DATA_DEFINED

INSTR_PROF_DATA_DEFINED [5/5]

#define INSTR_PROF_DATA_DEFINED

INSTR_PROF_DATA_INC

#define INSTR_PROF_DATA_INC

INSTR_PROF_DATA_SECT_NAME

#define INSTR_PROF_DATA_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_DATA_COMMON)

INSTR_PROF_INDEX_VERSION

#define INSTR_PROF_INDEX_VERSION 13

INSTR_PROF_MAX_NUM_VAL_PER_SITE

#define INSTR_PROF_MAX_NUM_VAL_PER_SITE 255

INSTR_PROF_NAME_COFF

#define INSTR_PROF_NAME_COFF ".lprfn$M"

INSTR_PROF_NAME_COMMON

#define INSTR_PROF_NAME_COMMON __llvm_prf_names

INSTR_PROF_NAME_SECT_NAME

#define INSTR_PROF_NAME_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_NAME_COMMON)

INSTR_PROF_PROFILE_BITMAP_BIAS_VAR

#define INSTR_PROF_PROFILE_BITMAP_BIAS_VAR __llvm_profile_bitmap_bias

INSTR_PROF_PROFILE_COUNTER_BIAS_VAR

#define INSTR_PROF_PROFILE_COUNTER_BIAS_VAR __llvm_profile_counter_bias

INSTR_PROF_PROFILE_NAME_VAR

#define INSTR_PROF_PROFILE_NAME_VAR __llvm_profile_filename

INSTR_PROF_PROFILE_RUNTIME_VAR

#define INSTR_PROF_PROFILE_RUNTIME_VAR __llvm_profile_runtime

INSTR_PROF_PROFILE_SAMPLING_VAR

#define INSTR_PROF_PROFILE_SAMPLING_VAR __llvm_profile_sampling

INSTR_PROF_PROFILE_SET_TIMESTAMP

#define INSTR_PROF_PROFILE_SET_TIMESTAMP __llvm_profile_set_timestamp

INSTR_PROF_QUOTE

#define INSTR_PROF_QUOTE ( x )

INSTR_PROF_RAW_HEADER [1/6]

#define INSTR_PROF_RAW_HEADER ( Type,
Name,
Init )

INSTR_PROF_RAW_HEADER [2/6]

#define INSTR_PROF_RAW_HEADER ( Type,
Name,
Initializer )

INSTR_PROF_RAW_HEADER [3/6]

#define INSTR_PROF_RAW_HEADER ( Type,
Name,
Initializer )

INSTR_PROF_RAW_HEADER [4/6]

#define INSTR_PROF_RAW_HEADER ( Type,
Name,
Initializer )

INSTR_PROF_RAW_HEADER [5/6]

#define INSTR_PROF_RAW_HEADER ( Type,
Name,
Initializer )

INSTR_PROF_RAW_HEADER [6/6]

#define INSTR_PROF_RAW_HEADER ( Type,
Name,
Initializer )

INSTR_PROF_RAW_MAGIC_32

#define INSTR_PROF_RAW_MAGIC_32

INSTR_PROF_RAW_MAGIC_64

#define INSTR_PROF_RAW_MAGIC_64

INSTR_PROF_RAW_VERSION

#define INSTR_PROF_RAW_VERSION 10

INSTR_PROF_RAW_VERSION_VAR

#define INSTR_PROF_RAW_VERSION_VAR __llvm_profile_raw_version

INSTR_PROF_SECT_ENTRY

#define INSTR_PROF_SECT_ENTRY ( Kind,
SectNameCommon,
SectNameCoff,
Prefix )

INSTR_PROF_SECT_START

#define INSTR_PROF_SECT_START ( Sect )

Value:

INSTR_PROF_CONCAT(__start_,Sect)

#define INSTR_PROF_CONCAT(x, y)

INSTR_PROF_SECT_STOP

#define INSTR_PROF_SECT_STOP ( Sect )

Value:

INSTR_PROF_CONCAT(__stop_,Sect)

INSTR_PROF_SIMPLE_CONCAT

#define INSTR_PROF_SIMPLE_CONCAT ( x,
y )

INSTR_PROF_SIMPLE_QUOTE

#define INSTR_PROF_SIMPLE_QUOTE ( x )

INSTR_PROF_VALS_COFF

#define INSTR_PROF_VALS_COFF ".lprfv$M"

INSTR_PROF_VALS_COMMON

#define INSTR_PROF_VALS_COMMON __llvm_prf_vals

INSTR_PROF_VALS_SECT_NAME

#define INSTR_PROF_VALS_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_VALS_COMMON)

INSTR_PROF_VALUE_NODE [1/6]

#define INSTR_PROF_VALUE_NODE ( Type,
LLVMType,
Name,
Initializer )

INSTR_PROF_VALUE_NODE [2/6]

#define INSTR_PROF_VALUE_NODE ( Type,
LLVMType,
Name,
Initializer )

INSTR_PROF_VALUE_NODE [3/6]

#define INSTR_PROF_VALUE_NODE ( Type,
LLVMType,
Name,
Initializer )

INSTR_PROF_VALUE_NODE [4/6]

#define INSTR_PROF_VALUE_NODE ( Type,
LLVMType,
Name,
Initializer )

INSTR_PROF_VALUE_NODE [5/6]

#define INSTR_PROF_VALUE_NODE ( Type,
LLVMType,
Name,
Initializer )

INSTR_PROF_VALUE_NODE [6/6]

#define INSTR_PROF_VALUE_NODE ( Type,
LLVMType,
Name,
Initializer )

INSTR_PROF_VALUE_PROF_DATA

#define INSTR_PROF_VALUE_PROF_DATA

INSTR_PROF_VALUE_PROF_FUNC

#define INSTR_PROF_VALUE_PROF_FUNC __llvm_profile_instrument_target

INSTR_PROF_VALUE_PROF_FUNC_STR

#define INSTR_PROF_VALUE_PROF_FUNC_STR INSTR_PROF_QUOTE(INSTR_PROF_VALUE_PROF_FUNC)

INSTR_PROF_VALUE_PROF_MEMOP_FUNC

#define INSTR_PROF_VALUE_PROF_MEMOP_FUNC __llvm_profile_instrument_memop

INSTR_PROF_VALUE_PROF_MEMOP_FUNC_STR

#define INSTR_PROF_VALUE_PROF_MEMOP_FUNC_STR INSTR_PROF_QUOTE(INSTR_PROF_VALUE_PROF_MEMOP_FUNC)

INSTR_PROF_VISIBILITY

#define INSTR_PROF_VISIBILITY

INSTR_PROF_VNAME_COFF

#define INSTR_PROF_VNAME_COFF ".lprfvn$M"

INSTR_PROF_VNAME_COMMON

#define INSTR_PROF_VNAME_COMMON __llvm_prf_vns

INSTR_PROF_VNAME_SECT_NAME

#define INSTR_PROF_VNAME_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_VNAME_COMMON)

INSTR_PROF_VNODES_COFF

#define INSTR_PROF_VNODES_COFF ".lprfnd$M"

INSTR_PROF_VNODES_COMMON

#define INSTR_PROF_VNODES_COMMON __llvm_prf_vnds

INSTR_PROF_VNODES_SECT_NAME

#define INSTR_PROF_VNODES_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_VNODES_COMMON)

INSTR_PROF_VTAB_COFF

#define INSTR_PROF_VTAB_COFF ".lprfvt$M"

INSTR_PROF_VTAB_COMMON

#define INSTR_PROF_VTAB_COMMON __llvm_prf_vtab

INSTR_PROF_VTAB_SECT_NAME

#define INSTR_PROF_VTAB_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_VTAB_COMMON)

INSTR_PROF_VTABLE_DATA [1/6]

#define INSTR_PROF_VTABLE_DATA ( Type,
LLVMType,
Name,
Init )

INSTR_PROF_VTABLE_DATA [2/6]

#define INSTR_PROF_VTABLE_DATA ( Type,
LLVMType,
Name,
Initializer )

INSTR_PROF_VTABLE_DATA [3/6]

#define INSTR_PROF_VTABLE_DATA ( Type,
LLVMType,
Name,
Initializer )

INSTR_PROF_VTABLE_DATA [4/6]

#define INSTR_PROF_VTABLE_DATA ( Type,
LLVMType,
Name,
Initializer )

INSTR_PROF_VTABLE_DATA [5/6]

#define INSTR_PROF_VTABLE_DATA ( Type,
LLVMType,
Name,
Initializer )

INSTR_PROF_VTABLE_DATA [6/6]

#define INSTR_PROF_VTABLE_DATA ( Type,
LLVMType,
Name,
Initializer )

INSTR_PROF_VTABLE_DATA_DEFINED

#define INSTR_PROF_VTABLE_DATA_DEFINED

VALUE_PROF_FUNC_PARAM [1/6]

#define VALUE_PROF_FUNC_PARAM ( ArgType,
ArgName,
ArgLLVMType )

VALUE_PROF_FUNC_PARAM [2/6]

#define VALUE_PROF_FUNC_PARAM ( ArgType,
ArgName,
ArgLLVMType )

VALUE_PROF_FUNC_PARAM [3/6]

#define VALUE_PROF_FUNC_PARAM ( ArgType,
ArgName,
ArgLLVMType )

VALUE_PROF_FUNC_PARAM [4/6]

#define VALUE_PROF_FUNC_PARAM ( ArgType,
ArgName,
ArgLLVMType )

VALUE_PROF_FUNC_PARAM [5/6]

#define VALUE_PROF_FUNC_PARAM ( ArgType,
ArgName,
ArgLLVMType )

VALUE_PROF_FUNC_PARAM [6/6]

#define VALUE_PROF_FUNC_PARAM ( ArgType,
ArgName,
ArgLLVMType )

VALUE_PROF_KIND [1/6]

#define VALUE_PROF_KIND ( Enumerator,
Value,
Descr )

VALUE_PROF_KIND [2/6]

#define VALUE_PROF_KIND ( Enumerator,
Value,
Descr )

VALUE_PROF_KIND [3/6]

#define VALUE_PROF_KIND ( Enumerator,
Value,
Descr )

VALUE_PROF_KIND [4/6]

#define VALUE_PROF_KIND ( Enumerator,
Value,
Descr )

VALUE_PROF_KIND [5/6]

#define VALUE_PROF_KIND ( Enumerator,
Value,
Descr )

VALUE_PROF_KIND [6/6]

#define VALUE_PROF_KIND ( Enumerator,
Value,
Descr )

VARIANT_MASK_BYTE_COVERAGE

#define VARIANT_MASK_BYTE_COVERAGE (0x1ULL << 60)

VARIANT_MASK_CSIR_PROF

#define VARIANT_MASK_CSIR_PROF (0x1ULL << 57)

VARIANT_MASK_DBG_CORRELATE

#define VARIANT_MASK_DBG_CORRELATE (0x1ULL << 59)

VARIANT_MASK_FUNCTION_ENTRY_ONLY

#define VARIANT_MASK_FUNCTION_ENTRY_ONLY (0x1ULL << 61)

VARIANT_MASK_INSTR_ENTRY

#define VARIANT_MASK_INSTR_ENTRY (0x1ULL << 58)

VARIANT_MASK_INSTR_LOOP_ENTRIES

#define VARIANT_MASK_INSTR_LOOP_ENTRIES (0x1ULL << 55)

VARIANT_MASK_IR_PROF

#define VARIANT_MASK_IR_PROF (0x1ULL << 56)

VARIANT_MASK_MEMPROF

#define VARIANT_MASK_MEMPROF (0x1ULL << 62)

VARIANT_MASK_TEMPORAL_PROF

#define VARIANT_MASK_TEMPORAL_PROF (0x1ULL << 63)

VARIANT_MASKS_ALL

#define VARIANT_MASKS_ALL 0xffffffff00000000ULL