LLVM  17.0.0git
Classes | Namespaces | Macros | Enumerations | Functions | Variables
InstrProf.h File Reference
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/BitmaskEnum.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/StringSet.h"
#include "llvm/ADT/Triple.h"
#include "llvm/IR/GlobalValue.h"
#include "llvm/IR/ProfileSummary.h"
#include "llvm/ProfileData/InstrProfData.inc"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/Endian.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/Host.h"
#include "llvm/Support/MD5.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <cassert>
#include <cstddef>
#include <cstdint>
#include <cstring>
#include <list>
#include <memory>
#include <string>
#include <system_error>
#include <utility>
#include <vector>
Include dependency graph for InstrProf.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.


class  llvm::InstrProfError
class  llvm::SoftInstrProfErrors
class  llvm::InstrProfSymtab
 A symbol table used for function 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::IndexedInstrProf::Header
struct  llvm::IndexedInstrProf::Summary
struct  llvm::IndexedInstrProf::Summary::Entry
struct  llvm::RawInstrProf::ProfileData< IntPtrT >
struct  llvm::RawInstrProf::Header


 This is an optimization pass for GlobalISel generic memory operations.


#define INSTR_PROF_SECT_ENTRY(Kind, SectNameCommon, SectNameCoff, Prefix)   Kind,
#define VALUE_PROF_KIND(Enumerator, Value, Descr)   Enumerator = Value,
#define INSTR_PROF_DATA(Type, LLVMType, Name, Init)   Type Name;
#define INSTR_PROF_RAW_HEADER(Type, Name, Init)   const Type Name;


enum  llvm::InstrProfSectKind
enum  llvm::InstrProfValueKind : uint32_t
enum  llvm::InstrProfKind {
  llvm::InstrProfKind::Unknown = 0x0, llvm::InstrProfKind::FrontendInstrumentation = 0x1, llvm::InstrProfKind::IRInstrumentation = 0x2, llvm::InstrProfKind::FunctionEntryInstrumentation = 0x4,
  llvm::InstrProfKind::ContextSensitive = 0x8, llvm::InstrProfKind::SingleByteCoverage = 0x10, llvm::InstrProfKind::FunctionEntryOnly = 0x20, llvm::InstrProfKind::MemProf = 0x40
 An enum describing the attributes of an instrumented profile. More...
enum  llvm::instrprof_error {
  llvm::instrprof_error::success = 0, llvm::instrprof_error::eof, llvm::instrprof_error::unrecognized_format, llvm::instrprof_error::bad_magic,
  llvm::instrprof_error::bad_header, llvm::instrprof_error::unsupported_version, llvm::instrprof_error::unsupported_hash_type, llvm::instrprof_error::too_large,
  llvm::instrprof_error::truncated, llvm::instrprof_error::malformed, llvm::instrprof_error::missing_debug_info_for_correlation, llvm::instrprof_error::unexpected_debug_info_for_correlation,
  llvm::instrprof_error::unable_to_correlate_profile, llvm::instrprof_error::unknown_function, llvm::instrprof_error::invalid_prof, llvm::instrprof_error::hash_mismatch,
  llvm::instrprof_error::count_mismatch, llvm::instrprof_error::counter_overflow, llvm::instrprof_error::value_site_count_mismatch, llvm::instrprof_error::compress_failed,
  llvm::instrprof_error::uncompress_failed, llvm::instrprof_error::empty_raw_profile, llvm::instrprof_error::zlib_unavailable
enum  llvm::IndexedInstrProf::HashT : uint32_t { llvm::IndexedInstrProf::HashT::MD5, llvm::IndexedInstrProf::HashT::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::CurrentVersion = INSTR_PROF_INDEX_VERSION


uint64_t llvm::getInstrMaxCountValue ()
 Return the max count value. We reserver a few large values for special use. More...
std::string llvm::getInstrProfSectionName (InstrProfSectKind IPSK, Triple::ObjectFormatType OF, bool AddSegmentInfo=true)
 Return the name of the profile section corresponding to IPSK. More...
StringRef llvm::getInstrProfValueProfFuncName ()
 Return the name profile runtime entry point to do value profiling for a given site. More...
StringRef llvm::getInstrProfValueProfMemOpFuncName ()
 Return the name profile runtime entry point to do memop size value profiling. More...
StringRef llvm::getInstrProfNameVarPrefix ()
 Return the name prefix of variables containing instrumented function names. More...
StringRef llvm::getInstrProfDataVarPrefix ()
 Return the name prefix of variables containing per-function control data. More...
StringRef llvm::getInstrProfCountersVarPrefix ()
 Return the name prefix of profile counter variables. More...
StringRef llvm::getInstrProfValuesVarPrefix ()
 Return the name prefix of value profile variables. More...
StringRef llvm::getInstrProfVNodesVarName ()
 Return the name of value profile node array variables: More...
StringRef llvm::getInstrProfNamesVarName ()
 Return the name of the variable holding the strings (possibly compressed) of all function's PGO names. More...
StringRef llvm::getCoverageMappingVarName ()
 Return the name of a covarage mapping variable (internal linkage) for each instrumented source module. More...
StringRef llvm::getCoverageUnusedNamesVarName ()
 Return the name of the internal variable recording the array of PGO name vars referenced by the coverage mapping. More...
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. More...
StringRef llvm::getInstrProfRegFuncName ()
 Return the name of the runtime interface that registers per-function control data for one instrumented function. More...
StringRef llvm::getInstrProfNamesRegFuncName ()
 Return the name of the runtime interface that registers the PGO name strings. More...
StringRef llvm::getInstrProfInitFuncName ()
 Return the name of the runtime initialization method that is generated by the compiler. More...
StringRef llvm::getInstrProfRuntimeHookVarName ()
 Return the name of the hook variable defined in profile runtime library. More...
StringRef llvm::getInstrProfRuntimeHookVarUseFuncName ()
 Return the name of the compiler generated function that references the runtime hook variable. More...
StringRef llvm::getInstrProfCounterBiasVarName ()
StringRef llvm::getInstrProfNameSeparator ()
 Return the marker used to separate PGO names during serialization. More...
std::string llvm::getPGOFuncName (const Function &F, bool InLTO=false, uint64_t Version=INSTR_PROF_INDEX_VERSION)
 Return the modified name for function F suitable to be used the key for profile lookup. More...
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. More...
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. More...
GlobalVariablellvm::createPGOFuncNameVar (Function &F, StringRef PGOFuncName)
 Create and return the global variable for function name used in PGO instrumentation. More...
GlobalVariablellvm::createPGOFuncNameVar (Module &M, GlobalValue::LinkageTypes Linkage, StringRef PGOFuncName)
 Create and return the global variable for function name used in PGO instrumentation. More...
StringRef llvm::getPGOFuncNameVarInitializer (GlobalVariable *NameVar)
 Return the initializer in string of the PGO name var NameVar. More...
StringRef llvm::getFuncNameWithoutPrefix (StringRef PGOFuncName, StringRef FileName="<unknown>")
 Given a PGO function name, remove the filename prefix and return the original (static) function name. More...
Error llvm::collectPGOFuncNameStrings (ArrayRef< std::string > NameStrs, bool doCompression, std::string &Result)
 Given a vector of strings (function PGO names) NameStrs, the method generates a combined string Result that is ready to be serialized. More...
Error llvm::collectPGOFuncNameStrings (ArrayRef< GlobalVariable * > NameVars, std::string &Result, bool doCompression=true)
 Produce Result string with the same format described above. More...
Error llvm::readPGOFuncNameStrings (StringRef NameStrings, InstrProfSymtab &Symtab)
 NameStrings is a string composed of one of more sub-strings encoded in the format described above. More...
bool llvm::isIRPGOFlagSet (const Module *M)
 Check if INSTR_PROF_RAW_VERSION_VAR is defined. More...
bool llvm::canRenameComdatFunc (const Function &F, bool CheckAddressTaken=false)
 Check if we can safely rename this Comdat function. More...
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. More...
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. More...
bool llvm::getValueProfDataFromInst (const Instruction &Inst, InstrProfValueKind ValueKind, uint32_t MaxNumValueData, InstrProfValueData ValueData[], uint32_t &ActualNumValueData, uint64_t &TotalC, bool GetNoICPValue=false)
 Extract the value profile data from Inst which is annotated with value profile meta data. More...
StringRef llvm::getPGOFuncNameMetadataName ()
MDNodellvm::getPGOFuncNameMetadata (const Function &F)
 Return the PGOFuncName meta data associated with a function. More...
void llvm::createPGOFuncNameMetadata (Function &F, StringRef PGOFuncName)
 Create the PGOFuncName meta data if PGOFuncName is different from function's raw name. More...
bool llvm::needsComdatForCounter (const Function &F, const Module &M)
 Check if we can use Comdat for profile variables. More...
const std::error_category & llvm::instrprof_category ()
std::error_code llvm::make_error_code (instrprof_error E)
uint64_t llvm::IndexedInstrProf::ComputeHash (StringRef K)
support::endianness llvm::getHostEndianness ()
uint64_t llvm::IndexedInstrProf::ComputeHash (HashT Type, StringRef K)
std::unique_ptr< Summary > llvm::IndexedInstrProf::allocSummary (uint32_t TotalSize)
template<class IntPtrT >
uint64_t llvm::RawInstrProf::getMagic ()
uint64_t llvm::RawInstrProf::getMagic< uint64_t > ()
uint64_t llvm::RawInstrProf::getMagic< uint32_t > ()
void llvm::getMemOPSizeRangeFromOption (StringRef Str, int64_t &RangeStart, int64_t &RangeLast)
void llvm::createProfileFileNameVar (Module &M, StringRef InstrProfileOutput)


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
cl::opt< bool > llvm::DoInstrProfNameCompression

Macro Definition Documentation


#define INSTR_PROF_DATA (   Type,
)    Type Name;

Definition at line 1209 of file InstrProf.h.


#define INSTR_PROF_RAW_HEADER (   Type,
)    const Type Name;

Definition at line 1218 of file InstrProf.h.


#define INSTR_PROF_SECT_ENTRY (   Kind,
)    Kind,

Definition at line 59 of file InstrProf.h.



Definition at line 996 of file InstrProf.h.


#define VALUE_PROF_KIND (   Enumerator,
)    Enumerator = Value,

Definition at line 245 of file InstrProf.h.