LLVM 20.0.0git
|
A symbol table used for function [IR]PGO name look-up with keys (such as pointers, md5hash values) to the function. More...
#include "llvm/ProfileData/InstrProf.h"
Public Types | |
using | AddrHashMap = std::vector< std::pair< uint64_t, uint64_t > > |
Public Member Functions | |
InstrProfSymtab () | |
InstrProfSymtab (const InstrProfSymtab &)=delete | |
InstrProfSymtab & | operator= (const InstrProfSymtab &)=delete |
InstrProfSymtab (InstrProfSymtab &&)=delete | |
InstrProfSymtab & | operator= (InstrProfSymtab &&)=delete |
Error | create (object::SectionRef &Section) |
Create InstrProfSymtab from an object file section which contains function PGO names. | |
Error | create (StringRef NameStrings) |
NameStrings is a string composed of one of more sub-strings encoded in the format described in collectPGOFuncNameStrings . | |
Error | create (StringRef FuncNameStrings, StringRef VTableNameStrings) |
Initialize symtab states with function names and vtable names. | |
Error | initVTableNamesFromCompressedStrings (StringRef CompressedVTableNames) |
Initialize 'this' with the set of vtable names encoded in CompressedVTableNames . | |
Error | create (StringRef D, uint64_t BaseAddr) |
This interface is used by reader of CoverageMapping test format. | |
Error | create (Module &M, bool InLTO=false) |
A wrapper interface to populate the PGO symtab with functions decls from module M . | |
template<typename NameIterRange > | |
Error | create (const NameIterRange &IterRange) |
Create InstrProfSymtab from a set of names iteratable from IterRange . | |
template<typename FuncNameIterRange , typename VTableNameIterRange > | |
Error | create (const FuncNameIterRange &FuncIterRange, const VTableNameIterRange &VTableIterRange) |
Create InstrProfSymtab from a set of function names and vtable names iteratable from IterRange . | |
Error | addSymbolName (StringRef SymbolName) |
Error | addFuncName (StringRef FuncName) |
The method name is kept since there are many callers. | |
Error | addVTableName (StringRef VTableName) |
Adds VTableName as a known symbol, and inserts it to a map that tracks all vtable names. | |
const StringSet & | getVTableNames () const |
void | mapAddress (uint64_t Addr, uint64_t MD5Val) |
Map a function address to its name's MD5 hash. | |
void | mapVTableAddress (uint64_t StartAddr, uint64_t EndAddr, uint64_t MD5Val) |
Map the address range (i.e., [start_address, end_address)) of a variable to its names' MD5 hash. | |
uint64_t | getFunctionHashFromAddress (uint64_t Address) |
Return a function's hash, or 0, if the function isn't in this SymTab. | |
uint64_t | getVTableHashFromAddress (uint64_t Address) |
Return a vtable's hash, or 0 if the vtable doesn't exist in this SymTab. | |
StringRef | getFuncName (uint64_t FuncNameAddress, size_t NameSize) |
Return function's PGO name from the function name's symbol address in the object file. | |
StringRef | getFuncOrVarName (uint64_t ValMD5Hash) |
Return name of functions or global variables from the name's md5 hash value. | |
StringRef | getFuncOrVarNameIfDefined (uint64_t ValMD5Hash) |
Just like getFuncOrVarName, except that it will return literal string 'External Symbol' if the function or global variable is external to this symbol table. | |
Function * | getFunction (uint64_t FuncMD5Hash) |
Return function from the name's md5 hash. Return nullptr if not found. | |
GlobalVariable * | getGlobalVariable (uint64_t MD5Hash) |
Return the global variable corresponding to md5 hash. | |
StringRef | getNameData () const |
Return the name section data. | |
void | dumpNames (raw_ostream &OS) const |
Dump the symbols in this table. | |
Static Public Member Functions | |
static bool | isExternalSymbol (const StringRef &Symbol) |
True if Symbol is the value used to represent external symbols. | |
A symbol table used for function [IR]PGO name look-up with keys (such as pointers, md5hash values) to the function.
A function's [IR]PGO name or name's md5hash are used in retrieving the profile data of the function. See getIRPGOFuncName()
and getPGOFuncName
methods for details how [IR]PGO name is formed.
Definition at line 454 of file InstrProf.h.
using llvm::InstrProfSymtab::AddrHashMap = std::vector<std::pair<uint64_t, uint64_t> > |
Definition at line 456 of file InstrProf.h.
|
inline |
Definition at line 519 of file InstrProf.h.
|
delete |
|
delete |
The method name is kept since there are many callers.
It just forwards to 'addSymbolName'.
Definition at line 592 of file InstrProf.h.
References addSymbolName().
Referenced by create(), and llvm::InstrProfWriter::writeText().
Definition at line 574 of file InstrProf.h.
References llvm::IndexedInstrProf::ComputeHash(), llvm::StringSet< AllocatorTy >::insert(), llvm::malformed, and llvm::Error::success().
Referenced by addFuncName(), and addVTableName().
Adds VTableName as a known symbol, and inserts it to a map that tracks all vtable names.
Definition at line 596 of file InstrProf.h.
References addSymbolName(), E, llvm::StringSet< AllocatorTy >::insert(), and llvm::Error::success().
Referenced by create(), initVTableNamesFromCompressedStrings(), and llvm::InstrProfWriter::writeText().
Error llvm::InstrProfSymtab::create | ( | const FuncNameIterRange & | FuncIterRange, |
const VTableNameIterRange & | VTableIterRange | ||
) |
Create InstrProfSymtab from a set of function names and vtable names iteratable from IterRange
.
This interface is used by IndexedProfReader.
Definition at line 677 of file InstrProf.h.
References addFuncName(), addVTableName(), E, Name, and llvm::Error::success().
Error llvm::InstrProfSymtab::create | ( | const NameIterRange & | IterRange | ) |
Create InstrProfSymtab from a set of names iteratable from IterRange
.
This interface is used by IndexedProfReader.
Definition at line 667 of file InstrProf.h.
References addFuncName(), E, Name, and llvm::Error::success().
A wrapper interface to populate the PGO symtab with functions decls from module M
.
This interface is used by transformation passes such as indirect function call promotion. Variable InLTO
indicates if this is called from LTO optimization passes.
Definition at line 471 of file InstrProf.cpp.
References F, G, llvm::getIRPGOFuncName(), llvm::getPGOFuncName(), llvm::getPGOName(), and llvm::Error::success().
Error InstrProfSymtab::create | ( | object::SectionRef & | Section | ) |
Create InstrProfSymtab from an object file section which contains function PGO names.
When section may contain raw string data or string data in compressed form. This method only initialize the symtab with reference to the data and the section base address. The decompression will be delayed until before it is used. See also create(StringRef)
method.
Definition at line 495 of file CoverageMappingReader.cpp.
References llvm::Address, llvm::Triple::COFF, llvm::Data, llvm::getInstrProfSectionName(), llvm::object::ObjectFile::isRelocatableObject(), llvm::Error::success(), and llvm::Expected< T >::takeError().
Referenced by loadBinaryFormat(), loadTestingFormat(), llvm::InstrProfReaderIndex< HashTableImpl >::populateSymtab(), promoteIndirectCalls(), and runCGProfilePass().
This interface is used by reader of CoverageMapping test format.
Definition at line 660 of file InstrProf.h.
References D, and llvm::Error::success().
Initialize symtab states with function names and vtable names.
FuncNameStrings
is a string composed of one or more encoded function name strings, and VTableNameStrings
composes of one or more encoded vtable names. This interface is solely used by raw profile reader.
Definition at line 573 of file InstrProf.cpp.
References addFuncName(), addVTableName(), and llvm::readAndDecodeStrings().
NameStrings
is a string composed of one of more sub-strings encoded in the format described in collectPGOFuncNameStrings
.
This method is a wrapper to readAndDecodeStrings
method.
Definition at line 567 of file InstrProf.cpp.
References addFuncName(), and llvm::readAndDecodeStrings().
void llvm::InstrProfSymtab::dumpNames | ( | raw_ostream & | OS | ) | const |
Dump the symbols in this table.
Definition at line 655 of file InstrProf.cpp.
References llvm::StringMap< ValueTy, AllocatorTy >::keys(), OS, and llvm::sort().
Return function's PGO name from the function name's symbol address in the object file.
If an error occurs, return an empty string.
Definition at line 515 of file CoverageMappingReader.cpp.
References llvm::Address, llvm::Data, llvm::Offset, and Size.
Referenced by llvm::coverage::CovMapFunctionRecordV1< IntPtrT >::getFuncName().
Return name of functions or global variables from the name's md5 hash value.
If not found, return an empty string.
Definition at line 711 of file InstrProf.h.
References LHS, llvm::lower_bound(), llvm::sampleprof::MD5Hash(), and RHS.
Referenced by llvm::coverage::accessors::getFuncNameViaRef(), getFuncOrVarNameIfDefined(), and llvm::InstrProfWriter::writeTextTemporalProfTraceData().
Just like getFuncOrVarName, except that it will return literal string 'External Symbol' if the function or global variable is external to this symbol table.
Definition at line 704 of file InstrProf.h.
References llvm::StringRef::empty(), getFuncOrVarName(), and llvm::sampleprof::MD5Hash().
Referenced by llvm::InstrProfWriter::writeRecordInText().
Return function from the name's md5 hash. Return nullptr if not found.
Definition at line 721 of file InstrProf.h.
References LHS, llvm::lower_bound(), and RHS.
Referenced by runCGProfilePass().
Return a function's hash, or 0, if the function isn't in this SymTab.
Definition at line 641 of file InstrProf.cpp.
References A, and llvm::partition_point().
|
inline |
Return the global variable corresponding to md5 hash.
Return nullptr if not found.
Definition at line 731 of file InstrProf.h.
References llvm::sampleprof::MD5Hash().
|
inline |
Return the name section data.
Definition at line 654 of file InstrProf.h.
Return a vtable's hash, or 0 if the vtable doesn't exist in this SymTab.
Definition at line 635 of file InstrProf.cpp.
References llvm::IntervalMap< KeyT, ValT, N, Traits >::lookup().
Definition at line 606 of file InstrProf.h.
Error llvm::InstrProfSymtab::initVTableNamesFromCompressedStrings | ( | StringRef | CompressedVTableNames | ) |
Initialize 'this' with the set of vtable names encoded in CompressedVTableNames
.
Definition at line 585 of file InstrProf.cpp.
References addVTableName(), and llvm::readAndDecodeStrings().
True if Symbol is the value used to represent external symbols.
Definition at line 642 of file InstrProf.h.
Map a function address to its name's MD5 hash.
This interface is only used by the raw profiler reader.
Definition at line 610 of file InstrProf.h.
References Addr.
|
inline |
Map the address range (i.e., [start_address, end_address)) of a variable to its names' MD5 hash.
This interface is only used by the raw profile reader.
Definition at line 617 of file InstrProf.h.
References llvm::IntervalMap< KeyT, ValT, N, Traits >::insert().
|
delete |
|
delete |