LLVM 20.0.0git
|
#include "llvm/ProfileData/SampleProfReader.h"
Public Member Functions | |
SampleProfileReaderExtBinary (std::unique_ptr< MemoryBuffer > B, LLVMContext &C, SampleProfileFormat Format=SPF_Ext_Binary) | |
Public Member Functions inherited from llvm::sampleprof::SampleProfileReaderExtBinaryBase | |
SampleProfileReaderExtBinaryBase (std::unique_ptr< MemoryBuffer > B, LLVMContext &C, SampleProfileFormat Format) | |
std::error_code | readImpl () override |
Read sample profiles in extensible format from the associated file. | |
uint64_t | getSectionSize (SecType Type) |
Get the total size of all Type sections. | |
uint64_t | getFileSize () |
Get the total size of header and all sections. | |
bool | dumpSectionInfo (raw_ostream &OS=dbgs()) override |
bool | collectFuncsFromModule () override |
Collect functions with definitions in Module M. | |
std::unique_ptr< ProfileSymbolList > | getProfileSymbolList () override |
void | setSkipFlatProf (bool Skip) override |
Don't read profile without context if the flag is set. | |
Public Member Functions inherited from llvm::sampleprof::SampleProfileReaderBinary | |
SampleProfileReaderBinary (std::unique_ptr< MemoryBuffer > B, LLVMContext &C, SampleProfileFormat Format=SPF_None) | |
std::error_code | readHeader () override |
Read and validate the file header. | |
std::error_code | readImpl () override |
Read sample profiles from the associated file. | |
std::vector< FunctionId > * | getNameTable () override |
It includes all the names that have samples either in outline instance or inline instance. | |
Public Member Functions inherited from llvm::sampleprof::SampleProfileReader | |
SampleProfileReader (std::unique_ptr< MemoryBuffer > B, LLVMContext &C, SampleProfileFormat Format=SPF_None) | |
virtual | ~SampleProfileReader ()=default |
virtual std::error_code | readHeader ()=0 |
Read and validate the file header. | |
void | setDiscriminatorMaskedBitFrom (FSDiscriminatorPass P) |
Set the bits for FS discriminators. | |
uint32_t | getDiscriminatorMask () const |
Get the bitmask the discriminators: For FS profiles, return the bit mask for this pass. | |
std::error_code | read () |
The interface to read sample profiles from the associated file. | |
virtual std::error_code | readImpl ()=0 |
The implementaion to read sample profiles from the associated file. | |
void | dumpFunctionProfile (const FunctionSamples &FS, raw_ostream &OS=dbgs()) |
Print the profile for FunctionSamples on stream OS . | |
virtual bool | collectFuncsFromModule () |
Collect functions with definitions in Module M. | |
void | dump (raw_ostream &OS=dbgs()) |
Print all the profiles on stream OS . | |
void | dumpJson (raw_ostream &OS=dbgs()) |
Print all the profiles on stream OS in the JSON format. | |
FunctionSamples * | getSamplesFor (const Function &F) |
Return the samples collected for function F . | |
FunctionSamples * | getSamplesFor (StringRef Fname) |
Return the samples collected for function F . | |
SampleProfileMap & | getProfiles () |
Return all the profiles. | |
void | reportError (int64_t LineNumber, const Twine &Msg) const |
Report a parse error message. | |
ProfileSummary & | getSummary () const |
Return the profile summary. | |
MemoryBuffer * | getBuffer () const |
SampleProfileFormat | getFormat () const |
Return the profile format. | |
bool | profileIsProbeBased () const |
Whether input profile is based on pseudo probes. | |
bool | profileIsCS () const |
Whether input profile is fully context-sensitive. | |
bool | profileIsPreInlined () const |
Whether input profile contains ShouldBeInlined contexts. | |
bool | profileIsFS () const |
Whether input profile is flow-sensitive. | |
virtual std::unique_ptr< ProfileSymbolList > | getProfileSymbolList () |
virtual std::vector< FunctionId > * | getNameTable () |
It includes all the names that have samples either in outline instance or inline instance. | |
virtual bool | dumpSectionInfo (raw_ostream &OS=dbgs()) |
bool | useMD5 () const |
Return whether names in the profile are all MD5 numbers. | |
virtual void | setProfileUseMD5 () |
Force the profile to use MD5 in Sample contexts, even if function names are present. | |
virtual void | setSkipFlatProf (bool Skip) |
Don't read profile without context if the flag is set. | |
virtual bool | hasUniqSuffix () |
Return whether any name in the profile contains ".__uniq." suffix. | |
SampleProfileReaderItaniumRemapper * | getRemapper () |
void | setModule (const Module *Mod) |
Static Public Member Functions | |
static bool | hasFormat (const MemoryBuffer &Buffer) |
Return true if Buffer is in the format supported by this class. | |
Static Public Member Functions inherited from llvm::sampleprof::SampleProfileReader | |
static ErrorOr< std::unique_ptr< SampleProfileReader > > | create (StringRef Filename, LLVMContext &C, vfs::FileSystem &FS, FSDiscriminatorPass P=FSDiscriminatorPass::Base, StringRef RemapFilename="") |
Create a sample profile reader appropriate to the file format. | |
static ErrorOr< std::unique_ptr< SampleProfileReader > > | create (std::unique_ptr< MemoryBuffer > &B, LLVMContext &C, vfs::FileSystem &FS, FSDiscriminatorPass P=FSDiscriminatorPass::Base, StringRef RemapFilename="") |
Create a sample profile reader from the supplied memory buffer. | |
Additional Inherited Members | |
Protected Member Functions inherited from llvm::sampleprof::SampleProfileReaderExtBinaryBase | |
std::error_code | readSecHdrTableEntry (uint64_t Idx) |
std::error_code | readSecHdrTable () |
std::error_code | readFuncMetadata (bool ProfileHasAttribute) |
std::error_code | readFuncMetadata (bool ProfileHasAttribute, FunctionSamples *FProfile) |
std::error_code | readFuncOffsetTable () |
std::error_code | readFuncProfiles () |
std::error_code | readNameTableSec (bool IsMD5, bool FixedLengthMD5) |
std::error_code | readCSNameTableSec () |
std::error_code | readProfileSymbolList () |
std::error_code | readHeader () override |
Read and validate the file header. | |
std::error_code | verifySPMagic (uint64_t Magic) override=0 |
virtual std::error_code | readOneSection (const uint8_t *Start, uint64_t Size, const SecHdrTableEntry &Entry) |
virtual std::error_code | readCustomSection (const SecHdrTableEntry &Entry)=0 |
bool | useFuncOffsetList () const |
Determine which container readFuncOffsetTable() should populate, the list FuncOffsetList or the map FuncOffsetTable. | |
Protected Member Functions inherited from llvm::sampleprof::SampleProfileReaderBinary | |
template<typename T > | |
ErrorOr< T > | readNumber () |
Read a numeric value of type T from the profile. | |
template<typename T > | |
ErrorOr< T > | readUnencodedNumber () |
Read a numeric value of type T from the profile. | |
ErrorOr< StringRef > | readString () |
Read a string from the profile. | |
template<typename T > | |
ErrorOr< size_t > | readStringIndex (T &Table) |
Read the string index and check whether it overflows the table. | |
std::error_code | readFuncProfile (const uint8_t *Start) |
Read the next function profile instance. | |
std::error_code | readProfile (FunctionSamples &FProfile) |
Read the contents of the given profile instance. | |
std::error_code | readMagicIdent () |
Read the contents of Magic number and Version number. | |
std::error_code | readSummary () |
Read profile summary. | |
std::error_code | readNameTable () |
Read the whole name table. | |
ErrorOr< FunctionId > | readStringFromTable (size_t *RetIdx=nullptr) |
Read a string indirectly via the name table. Optionally return the index. | |
ErrorOr< SampleContextFrames > | readContextFromTable (size_t *RetIdx=nullptr) |
Read a context indirectly via the CSNameTable. | |
ErrorOr< std::pair< SampleContext, uint64_t > > | readSampleContextFromTable () |
Read a context indirectly via the CSNameTable if the profile has context, otherwise same as readStringFromTable, also return its hash value. | |
Protected Member Functions inherited from llvm::sampleprof::SampleProfileReader | |
void | computeSummary () |
Compute summary for this profile. | |
Static Protected Member Functions inherited from llvm::sampleprof::SampleProfileReader | |
static std::unique_ptr< ProfileSummary > | takeSummary (SampleProfileReader &Reader) |
Take ownership of the summary of this reader. | |
Protected Attributes inherited from llvm::sampleprof::SampleProfileReaderExtBinaryBase | |
std::vector< SecHdrTableEntry > | SecHdrTable |
std::unique_ptr< ProfileSymbolList > | ProfSymList |
DenseMap< hash_code, uint64_t > | FuncOffsetTable |
The table mapping from a function context's MD5 to the offset of its FunctionSample towards file start. | |
std::vector< std::pair< SampleContext, uint64_t > > | FuncOffsetList |
The list version of FuncOffsetTable. | |
DenseSet< StringRef > | FuncsToUse |
The set containing the functions to use when compiling a module. | |
bool | SkipFlatProf = false |
If SkipFlatProf is true, skip the sections with SecFlagFlat flag. | |
Protected Attributes inherited from llvm::sampleprof::SampleProfileReaderBinary | |
const uint8_t * | Data = nullptr |
Points to the current location in the buffer. | |
const uint8_t * | End = nullptr |
Points to the end of the buffer. | |
std::vector< FunctionId > | NameTable |
Function name table. | |
std::vector< SampleContextFrameVector > | CSNameTable |
CSNameTable is used to save full context vectors. | |
std::vector< uint64_t > | MD5SampleContextTable |
Table to cache MD5 values of sample contexts corresponding to readSampleContextFromTable(), used to index into Profiles or FuncOffsetTable. | |
const uint64_t * | MD5SampleContextStart = nullptr |
The starting address of the table of MD5 values of sample contexts. | |
Protected Attributes inherited from llvm::sampleprof::SampleProfileReader | |
SampleProfileMap | Profiles |
Map every function to its associated profile. | |
LLVMContext & | Ctx |
LLVM context used to emit diagnostics. | |
std::unique_ptr< MemoryBuffer > | Buffer |
Memory buffer holding the profile file. | |
std::unique_ptr< ProfileSummary > | Summary |
Profile summary information. | |
std::unique_ptr< SampleProfileReaderItaniumRemapper > | Remapper |
bool | ProfileIsProbeBased = false |
Whether samples are collected based on pseudo probes. | |
bool | ProfileIsCS = false |
Whether function profiles are context-sensitive flat profiles. | |
bool | ProfileIsPreInlined = false |
Whether function profile contains ShouldBeInlined contexts. | |
uint32_t | CSProfileCount = 0 |
Number of context-sensitive profiles. | |
bool | ProfileIsFS = false |
Whether the function profiles use FS discriminators. | |
SampleProfileFormat | Format = SPF_None |
The format of sample. | |
const Module * | M = nullptr |
The current module being compiled if SampleProfileReader is used by compiler. | |
uint32_t | MaskedBitFrom = 31 |
Zero out the discriminator bits higher than bit MaskedBitFrom (0 based). | |
bool | ProfileIsMD5 = false |
Whether the profile uses MD5 for Sample Contexts and function names. | |
Definition at line 786 of file SampleProfReader.h.
|
inline |
Definition at line 796 of file SampleProfReader.h.
|
static |
Return true if Buffer
is in the format supported by this class.
Definition at line 1510 of file SampleProfReader.cpp.
References llvm::sampleprof::SampleProfileReader::Buffer, llvm::sampleprof::SampleProfileReaderBinary::Data, llvm::decodeULEB128(), llvm::sampleprof::SPF_Ext_Binary, and llvm::sampleprof::SPMagic().
Referenced by llvm::sampleprof::SampleProfileReader::create().