LLVM  6.0.0svn
Classes | Namespaces | Macros | Enumerations | Functions | Variables
InstrProf.h File Reference
#include "llvm/ADT/ArrayRef.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/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.

Classes

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::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
 

Namespaces

 llvm
 Compute iterated dominance frontiers using a linear time algorithm.
 
 llvm::object
 
 llvm::IndexedInstrProf
 
 llvm::RawInstrProf
 

Macros

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

Enumerations

enum  llvm::InstrProfSectKind
 
enum  llvm::InstrProfValueKind : uint32_t
 
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::unknown_function, 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::CurrentVersion = INSTR_PROF_INDEX_VERSION
}
 

Functions

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::getInstrProfValueRangeProfFuncName ()
 Return the name profile runtime entry point to do value range 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::getInstrProfComdatPrefix ()
 Return the name prefix of the COMDAT group for instrumentation variables associated with a COMDAT function. 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::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 thatis 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)
 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_categoryllvm::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 ()
 
template<>
uint64_t llvm::RawInstrProf::getMagic< uint64_t > ()
 
template<>
uint64_t llvm::RawInstrProf::getMagic< uint32_t > ()
 
void llvm::getMemOPSizeRangeFromOption (StringRef Str, int64_t &RangeStart, int64_t &RangeLast)
 

Variables

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
 

Macro Definition Documentation

◆ INSTR_PROF_DATA

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

Definition at line 995 of file InstrProf.h.

◆ INSTR_PROF_RAW_HEADER

#define INSTR_PROF_RAW_HEADER (   Type,
  Name,
  Init 
)    const Type Name;

Definition at line 1004 of file InstrProf.h.

◆ INSTR_PROF_SECT_ENTRY

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

Definition at line 58 of file InstrProf.h.

◆ INSTR_PROF_VALUE_PROF_DATA

#define INSTR_PROF_VALUE_PROF_DATA

Definition at line 814 of file InstrProf.h.

◆ VALUE_PROF_KIND

#define VALUE_PROF_KIND (   Enumerator,
  Value 
)    Enumerator = Value,

Definition at line 238 of file InstrProf.h.