LLVM  10.0.0svn
Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
llvm::sampleprof::SampleProfileReader Class Referenceabstract

Sample-based profile reader. More...

#include "llvm/ProfileData/SampleProfReader.h"

Inheritance diagram for llvm::sampleprof::SampleProfileReader:
Inheritance graph
[legend]
Collaboration diagram for llvm::sampleprof::SampleProfileReader:
Collaboration graph
[legend]

Public Member Functions

 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. More...
 
std::error_code read ()
 The interface to read sample profiles from the associated file. More...
 
virtual std::error_code readImpl ()=0
 The implementaion to read sample profiles from the associated file. More...
 
void dumpFunctionProfile (StringRef FName, raw_ostream &OS=dbgs())
 Print the profile for FName on stream OS. More...
 
virtual void collectFuncsFrom (const Module &M)
 
void dump (raw_ostream &OS=dbgs())
 Print all the profiles on stream OS. More...
 
FunctionSamplesgetSamplesFor (const Function &F)
 Return the samples collected for function F. More...
 
virtual FunctionSamplesgetSamplesFor (StringRef Fname)
 Return the samples collected for function F. More...
 
StringMap< FunctionSamples > & getProfiles ()
 Return all the profiles. More...
 
void reportError (int64_t LineNumber, Twine Msg) const
 Report a parse error message. More...
 
ProfileSummarygetSummary () const
 Return the profile summary. More...
 
MemoryBuffergetBuffer () const
 
SampleProfileFormat getFormat () const
 Return the profile format. More...
 
virtual std::unique_ptr< ProfileSymbolListgetProfileSymbolList ()
 
virtual std::vector< StringRef > * getNameTable ()
 It includes all the names that have samples either in outline instance or inline instance. More...
 
virtual bool dumpSectionInfo (raw_ostream &OS=dbgs())
 

Static Public Member Functions

static ErrorOr< std::unique_ptr< SampleProfileReader > > create (const std::string Filename, LLVMContext &C, const std::string RemapFilename="")
 Create a sample profile reader appropriate to the file format. More...
 
static ErrorOr< std::unique_ptr< SampleProfileReader > > create (std::unique_ptr< MemoryBuffer > &B, LLVMContext &C, const std::string RemapFilename="")
 Create a sample profile reader from the supplied memory buffer. More...
 

Protected Member Functions

void computeSummary ()
 Compute summary for this profile. More...
 

Static Protected Member Functions

static std::unique_ptr< ProfileSummarytakeSummary (SampleProfileReader &Reader)
 Take ownership of the summary of this reader. More...
 

Protected Attributes

StringMap< FunctionSamplesProfiles
 Map every function to its associated profile. More...
 
LLVMContextCtx
 LLVM context used to emit diagnostics. More...
 
std::unique_ptr< MemoryBufferBuffer
 Memory buffer holding the profile file. More...
 
std::unique_ptr< ProfileSummarySummary
 Profile summary information. More...
 
std::unique_ptr< SampleProfileReaderItaniumRemapperRemapper
 
SampleProfileFormat Format = SPF_None
 The format of sample. More...
 

Detailed Description

Sample-based profile reader.

Each profile contains sample counts for all the functions executed. Inside each function, statements are annotated with the collected samples on all the instructions associated with that statement.

For this to produce meaningful data, the program needs to be compiled with some debug information (at minimum, line numbers: -gline-tables-only). Otherwise, it will be impossible to match IR instructions to the line numbers collected by the profiler.

From the profile file, we are interested in collecting the following information:

The reader supports two file formats: text and binary. The text format is useful for debugging and testing, while the binary format is more compact and I/O efficient. They can both be used interchangeably.

Definition at line 321 of file SampleProfReader.h.

Constructor & Destructor Documentation

◆ SampleProfileReader()

llvm::sampleprof::SampleProfileReader::SampleProfileReader ( std::unique_ptr< MemoryBuffer B,
LLVMContext C,
SampleProfileFormat  Format = SPF_None 
)
inline

Definition at line 323 of file SampleProfReader.h.

◆ ~SampleProfileReader()

virtual llvm::sampleprof::SampleProfileReader::~SampleProfileReader ( )
virtualdefault

Member Function Documentation

◆ collectFuncsFrom()

virtual void llvm::sampleprof::SampleProfileReader::collectFuncsFrom ( const Module M)
inlinevirtual

◆ computeSummary()

void SampleProfileReader::computeSummary ( )
protected

◆ create() [1/2]

ErrorOr< std::unique_ptr< SampleProfileReader > > SampleProfileReader::create ( const std::string  Filename,
LLVMContext C,
const std::string  RemapFilename = "" 
)
static

Create a sample profile reader appropriate to the file format.

Create a sample profile reader based on the format of the input file.

Create a remapper underlying if RemapFilename is not empty.

Parameters
FilenameThe file to open.
CThe LLVM context to use to emit diagnostics.
RemapFilenameThe file used for profile remapping.
Returns
an error code indicating the status of the created reader.

Definition at line 1266 of file SampleProfReader.cpp.

References C, and setupMemoryBuffer().

Referenced by llvm::sampleprof::SampleProfileReaderItaniumRemapper::create().

◆ create() [2/2]

ErrorOr< std::unique_ptr< SampleProfileReader > > SampleProfileReader::create ( std::unique_ptr< MemoryBuffer > &  B,
LLVMContext C,
const std::string  RemapFilename = "" 
)
static

Create a sample profile reader from the supplied memory buffer.

Create a sample profile reader based on the format of the input data.

Create a remapper underlying if RemapFilename is not empty.

Parameters
BThe memory buffer to create the reader from (assumes ownership).
CThe LLVM context to use to emit diagnostics.
RemapFilenameThe file used for profile remapping.
Returns
an error code indicating the status of the created reader.

Definition at line 1333 of file SampleProfReader.cpp.

References llvm::sampleprof::SampleProfileReaderItaniumRemapper::create(), llvm::LLVMContext::diagnose(), llvm::sampleprof::FunctionSamples::Format, llvm::sampleprof::SampleProfileReaderText::hasFormat(), llvm::sampleprof::SampleProfileReaderRawBinary::hasFormat(), llvm::sampleprof::SampleProfileReaderExtBinary::hasFormat(), llvm::sampleprof::SampleProfileReaderCompactBinary::hasFormat(), llvm::sampleprof::SampleProfileReaderGCC::hasFormat(), and llvm::unrecognized_format.

◆ dump()

void SampleProfileReader::dump ( raw_ostream OS = dbgs())

Print all the profiles on stream OS.

Dump all the function profiles found on stream OS.

Definition at line 57 of file SampleProfReader.cpp.

References dumpFunctionProfile(), I, and Profiles.

◆ dumpFunctionProfile()

void SampleProfileReader::dumpFunctionProfile ( StringRef  FName,
raw_ostream OS = dbgs() 
)

Print the profile for FName on stream OS.

Dump the function profile for FName.

Parameters
FNameName of the function to print.
OSStream to emit the output to.

Definition at line 51 of file SampleProfReader.cpp.

References Profiles.

Referenced by dump().

◆ dumpSectionInfo()

virtual bool llvm::sampleprof::SampleProfileReader::dumpSectionInfo ( raw_ostream OS = dbgs())
inlinevirtual

Reimplemented in llvm::sampleprof::SampleProfileReaderExtBinaryBase.

Definition at line 411 of file SampleProfReader.h.

◆ getBuffer()

MemoryBuffer* llvm::sampleprof::SampleProfileReader::getBuffer ( ) const
inline

Definition at line 399 of file SampleProfReader.h.

◆ getFormat()

SampleProfileFormat llvm::sampleprof::SampleProfileReader::getFormat ( ) const
inline

Return the profile format.

Definition at line 402 of file SampleProfReader.h.

◆ getNameTable()

virtual std::vector<StringRef>* llvm::sampleprof::SampleProfileReader::getNameTable ( )
inlinevirtual

It includes all the names that have samples either in outline instance or inline instance.

Reimplemented in llvm::sampleprof::SampleProfileReaderBinary.

Definition at line 410 of file SampleProfReader.h.

◆ getProfiles()

StringMap<FunctionSamples>& llvm::sampleprof::SampleProfileReader::getProfiles ( )
inline

Return all the profiles.

Definition at line 376 of file SampleProfReader.h.

Referenced by llvm::createSampleProfileLoaderPass().

◆ getProfileSymbolList()

virtual std::unique_ptr<ProfileSymbolList> llvm::sampleprof::SampleProfileReader::getProfileSymbolList ( )
inlinevirtual

Reimplemented in llvm::sampleprof::SampleProfileReaderExtBinary.

Definition at line 404 of file SampleProfReader.h.

◆ getSamplesFor() [1/2]

FunctionSamples* llvm::sampleprof::SampleProfileReader::getSamplesFor ( const Function F)
inline

◆ getSamplesFor() [2/2]

virtual FunctionSamples* llvm::sampleprof::SampleProfileReader::getSamplesFor ( StringRef  Fname)
inlinevirtual

Return the samples collected for function F.

Definition at line 362 of file SampleProfReader.h.

References llvm::sampleprof::getRepInFormat().

◆ getSummary()

ProfileSummary& llvm::sampleprof::SampleProfileReader::getSummary ( ) const
inline

Return the profile summary.

Definition at line 397 of file SampleProfReader.h.

Referenced by llvm::createSampleProfileLoaderPass().

◆ read()

std::error_code llvm::sampleprof::SampleProfileReader::read ( )
inline

The interface to read sample profiles from the associated file.

Definition at line 333 of file SampleProfReader.h.

References llvm::dbgs(), and llvm::success.

◆ readHeader()

virtual std::error_code llvm::sampleprof::SampleProfileReader::readHeader ( )
pure virtual

◆ readImpl()

virtual std::error_code llvm::sampleprof::SampleProfileReader::readImpl ( )
pure virtual

◆ reportError()

void llvm::sampleprof::SampleProfileReader::reportError ( int64_t  LineNumber,
Twine  Msg 
) const
inline

◆ takeSummary()

static std::unique_ptr<ProfileSummary> llvm::sampleprof::SampleProfileReader::takeSummary ( SampleProfileReader Reader)
inlinestaticprotected

Take ownership of the summary of this reader.

Definition at line 432 of file SampleProfReader.h.

References Summary.

Member Data Documentation

◆ Buffer

std::unique_ptr<MemoryBuffer> llvm::sampleprof::SampleProfileReader::Buffer
protected

◆ Ctx

LLVMContext& llvm::sampleprof::SampleProfileReader::Ctx
protected

LLVM context used to emit diagnostics.

Definition at line 422 of file SampleProfReader.h.

◆ Format

SampleProfileFormat llvm::sampleprof::SampleProfileReader::Format = SPF_None
protected

The format of sample.

Definition at line 442 of file SampleProfReader.h.

◆ Profiles

StringMap<FunctionSamples> llvm::sampleprof::SampleProfileReader::Profiles
protected

Map every function to its associated profile.

The profile of every function executed at runtime is collected in the structure FunctionSamples. This maps function objects to their corresponding profiles.

Definition at line 411 of file SampleProfReader.h.

Referenced by computeSummary(), dump(), dumpFunctionProfile(), llvm::sampleprof::SampleProfileReaderText::readImpl(), and llvm::sampleprof::SampleProfileReaderGCC::readOneFunctionProfile().

◆ Remapper

std::unique_ptr<SampleProfileReaderItaniumRemapper> llvm::sampleprof::SampleProfileReader::Remapper
protected

Definition at line 439 of file SampleProfReader.h.

◆ Summary

std::unique_ptr<ProfileSummary> llvm::sampleprof::SampleProfileReader::Summary
protected

Profile summary information.

Definition at line 428 of file SampleProfReader.h.

Referenced by computeSummary(), llvm::sampleprof::SampleProfileReaderBinary::readSummary(), and takeSummary().


The documentation for this class was generated from the following files: