LLVM 20.0.0git
|
Reader for the simple text based instrprof format. More...
#include "llvm/ProfileData/InstrProfReader.h"
Public Member Functions | |
TextInstrProfReader (std::unique_ptr< MemoryBuffer > DataBuffer_) | |
TextInstrProfReader (const TextInstrProfReader &)=delete | |
TextInstrProfReader & | operator= (const TextInstrProfReader &)=delete |
uint64_t | getVersion () const override |
Return the profile version. | |
bool | isIRLevelProfile () const override |
bool | hasCSIRLevelProfile () const override |
bool | instrEntryBBEnabled () const override |
bool | instrLoopEntriesEnabled () const override |
Return true if the profile instruments all loop entries. | |
bool | hasSingleByteCoverage () const override |
Return true if the profile has single byte counters representing coverage. | |
bool | functionEntryOnly () const override |
Return true if the profile only instruments function entries. | |
bool | hasMemoryProfile () const override |
Return true if profile includes a memory profile. | |
bool | hasTemporalProfile () const override |
Return true if this has a temporal profile. | |
InstrProfKind | getProfileKind () const override |
Returns a BitsetEnum describing the attributes of the profile. | |
Error | readHeader () override |
Read the header. | |
Error | readNextRecord (NamedInstrProfRecord &Record) override |
Read a single record. | |
InstrProfSymtab & | getSymtab () override |
Return the PGO symtab. | |
Public Member Functions inherited from llvm::InstrProfReader | |
InstrProfReader ()=default | |
virtual | ~InstrProfReader ()=default |
virtual Error | readHeader ()=0 |
Read the header. Required before reading first record. | |
virtual Error | readNextRecord (NamedInstrProfRecord &Record)=0 |
Read a single record. | |
virtual Error | readBinaryIds (std::vector< llvm::object::BuildID > &BinaryIds) |
Read a list of binary ids. | |
virtual Error | printBinaryIds (raw_ostream &OS) |
Print binary ids. | |
InstrProfIterator | begin () |
Iterator over profile data. | |
InstrProfIterator | end () |
virtual uint64_t | getVersion () const =0 |
Return the profile version. | |
virtual bool | isIRLevelProfile () const =0 |
virtual bool | hasCSIRLevelProfile () const =0 |
virtual bool | instrEntryBBEnabled () const =0 |
virtual bool | instrLoopEntriesEnabled () const =0 |
Return true if the profile instruments all loop entries. | |
virtual bool | hasSingleByteCoverage () const =0 |
Return true if the profile has single byte counters representing coverage. | |
virtual bool | functionEntryOnly () const =0 |
Return true if the profile only instruments function entries. | |
virtual bool | hasMemoryProfile () const =0 |
Return true if profile includes a memory profile. | |
virtual bool | hasTemporalProfile () const =0 |
Return true if this has a temporal profile. | |
virtual InstrProfKind | getProfileKind () const =0 |
Returns a BitsetEnum describing the attributes of the profile. | |
virtual InstrProfSymtab & | getSymtab ()=0 |
Return the PGO symtab. | |
void | accumulateCounts (CountSumOrPercent &Sum, bool IsCS) |
Compute the sum of counts and return in Sum. | |
bool | isEOF () |
Return true if the reader has finished reading the profile data. | |
bool | hasError () |
Return true if the reader encountered an error reading profiling data. | |
Error | getError () |
Get the current error. | |
virtual SmallVector< TemporalProfTraceTy > & | getTemporalProfTraces (std::optional< uint64_t > Weight={}) |
uint64_t | getTemporalProfTraceStreamSize () |
Static Public Member Functions | |
static bool | hasFormat (const MemoryBuffer &Buffer) |
Return true if the given buffer is in text instrprof format. | |
Static Public Member Functions inherited from llvm::InstrProfReader | |
static Expected< std::unique_ptr< InstrProfReader > > | create (const Twine &Path, vfs::FileSystem &FS, const InstrProfCorrelator *Correlator=nullptr, const object::BuildIDFetcher *BIDFetcher=nullptr, const InstrProfCorrelator::ProfCorrelatorKind BIDFetcherCorrelatorKind=InstrProfCorrelator::ProfCorrelatorKind::NONE, std::function< void(Error)> Warn=nullptr) |
Factory method to create an appropriately typed reader for the given instrprof file. | |
static Expected< std::unique_ptr< InstrProfReader > > | create (std::unique_ptr< MemoryBuffer > Buffer, const InstrProfCorrelator *Correlator=nullptr, const object::BuildIDFetcher *BIDFetcher=nullptr, const InstrProfCorrelator::ProfCorrelatorKind BIDFetcherCorrelatorKind=InstrProfCorrelator::ProfCorrelatorKind::NONE, std::function< void(Error)> Warn=nullptr) |
Additional Inherited Members | |
Protected Member Functions inherited from llvm::InstrProfReader | |
Error | error (instrprof_error Err, const std::string &ErrMsg="") |
Set the current error and return same. | |
Error | error (Error &&E) |
Error | success () |
Clear the current error and return a successful one. | |
Protected Attributes inherited from llvm::InstrProfReader | |
std::unique_ptr< InstrProfSymtab > | Symtab |
SmallVector< TemporalProfTraceTy > | TemporalProfTraces |
A list of temporal profile traces. | |
uint64_t | TemporalProfTraceStreamSize = 0 |
The total number of temporal profile traces seen. | |
Reader for the simple text based instrprof format.
This format is a simple text format that's suitable for test data. Records are separated by one or more blank lines, and record fields are separated by new lines.
Each record consists of a function name, a function hash, a number of counters, and then each counter value, in that order.
Definition at line 243 of file InstrProfReader.h.
|
inline |
Definition at line 257 of file InstrProfReader.h.
|
delete |
|
inlineoverridevirtual |
Return true if the profile only instruments function entries.
Implements llvm::InstrProfReader.
Definition at line 290 of file InstrProfReader.h.
References llvm::FunctionEntryOnly.
|
inlineoverridevirtual |
Returns a BitsetEnum describing the attributes of the profile.
To check individual attributes prefer using the helpers above.
Implements llvm::InstrProfReader.
Definition at line 303 of file InstrProfReader.h.
|
inlineoverridevirtual |
Return the PGO symtab.
There are three different readers: Raw, Text, and Indexed profile readers. The first two types of readers are used only by llvm-profdata tool, while the indexed profile reader is also used by llvm-cov tool and the compiler ( backend or frontend). Since creating PGO symtab can create significant runtime and memory overhead (as it touches data for the whole program), InstrProfSymtab for the indexed profile reader should be created on demand and it is recommended to be only used for dumping purpose with llvm-proftool, not with the compiler.
Implements llvm::InstrProfReader.
Definition at line 311 of file InstrProfReader.h.
References assert(), and llvm::InstrProfReader::Symtab.
|
inlineoverridevirtual |
Return the profile version.
Implements llvm::InstrProfReader.
Definition at line 266 of file InstrProfReader.h.
|
inlineoverridevirtual |
Implements llvm::InstrProfReader.
Definition at line 272 of file InstrProfReader.h.
References llvm::ContextSensitive.
|
static |
Return true if the given buffer is in text instrprof format.
Definition at line 239 of file InstrProfReader.cpp.
References llvm::StringRef::begin(), llvm::count(), llvm::MemoryBuffer::getBufferSize(), and llvm::MemoryBuffer::getBufferStart().
Referenced by llvm::InstrProfReader::create().
|
inlineoverridevirtual |
Return true if profile includes a memory profile.
Implements llvm::InstrProfReader.
Definition at line 294 of file InstrProfReader.h.
|
inlineoverridevirtual |
Return true if the profile has single byte counters representing coverage.
Implements llvm::InstrProfReader.
Definition at line 286 of file InstrProfReader.h.
References llvm::SingleByteCoverage.
|
inlineoverridevirtual |
Return true if this has a temporal profile.
Implements llvm::InstrProfReader.
Definition at line 299 of file InstrProfReader.h.
References llvm::TemporalProfile.
|
inlineoverridevirtual |
Implements llvm::InstrProfReader.
Definition at line 276 of file InstrProfReader.h.
References llvm::FunctionEntryInstrumentation.
|
inlineoverridevirtual |
Return true if the profile instruments all loop entries.
Implements llvm::InstrProfReader.
Definition at line 281 of file InstrProfReader.h.
References llvm::LoopEntriesInstrumentation.
|
inlineoverridevirtual |
Implements llvm::InstrProfReader.
Definition at line 268 of file InstrProfReader.h.
References llvm::IRInstrumentation.
|
delete |
|
overridevirtual |
Read the header.
Implements llvm::InstrProfReader.
Definition at line 252 of file InstrProfReader.cpp.
References llvm::bad_header, llvm::ContextSensitive, error, llvm::FrontendInstrumentation, llvm::FunctionEntryInstrumentation, llvm::IRInstrumentation, llvm::LoopEntriesInstrumentation, llvm::SingleByteCoverage, llvm::StringRef::starts_with(), llvm::StringRef::substr(), llvm::InstrProfReader::success(), llvm::InstrProfReader::Symtab, and llvm::TemporalProfile.
|
overridevirtual |
Read a single record.
Implements llvm::InstrProfReader.
Definition at line 403 of file InstrProfReader.cpp.
References llvm::StringRef::empty(), llvm::eof, error, I, llvm::line_iterator::is_at_end(), llvm::malformed, llvm::StringRef::starts_with(), llvm::InstrProfReader::success(), llvm::InstrProfReader::Symtab, and llvm::truncated.