LLVM  6.0.0svn
Public Member Functions | List of all members
llvm::sampleprof::FunctionSamples Class Reference

Representation of the samples collected for a function. More...

#include "llvm/ProfileData/SampleProf.h"

Public Member Functions

 FunctionSamples ()=default
 
void print (raw_ostream &OS=dbgs(), unsigned Indent=0) const
 Print the samples collected for a function on stream OS. More...
 
void dump () const
 
sampleprof_error addTotalSamples (uint64_t Num, uint64_t Weight=1)
 
sampleprof_error addHeadSamples (uint64_t Num, uint64_t Weight=1)
 
sampleprof_error addBodySamples (uint32_t LineOffset, uint32_t Discriminator, uint64_t Num, uint64_t Weight=1)
 
sampleprof_error addCalledTargetSamples (uint32_t LineOffset, uint32_t Discriminator, const std::string &FName, uint64_t Num, uint64_t Weight=1)
 
ErrorOr< uint64_t > findSamplesAt (uint32_t LineOffset, uint32_t Discriminator) const
 Return the number of samples collected at the given location. More...
 
ErrorOr< SampleRecord::CallTargetMapfindCallTargetMapAt (uint32_t LineOffset, uint32_t Discriminator) const
 Returns the call target map collected at a given location. More...
 
FunctionSamplesMapfunctionSamplesAt (const LineLocation &Loc)
 Return the function samples at the given callsite location. More...
 
const FunctionSamplesMapfindFunctionSamplesMapAt (const LineLocation &Loc) const
 Returns the FunctionSamplesMap at the given Loc. More...
 
const FunctionSamplesfindFunctionSamplesAt (const LineLocation &Loc, StringRef CalleeName) const
 Returns a pointer to FunctionSamples at the given callsite location Loc with callee CalleeName. More...
 
bool empty () const
 
uint64_t getTotalSamples () const
 Return the total number of samples collected inside the function. More...
 
uint64_t getHeadSamples () const
 Return the total number of branch samples that have the function as the branch target. More...
 
uint64_t getEntrySamples () const
 Return the sample count of the first instruction of the function. More...
 
const BodySampleMapgetBodySamples () const
 Return all the samples collected in the body of the function. More...
 
const CallsiteSampleMapgetCallsiteSamples () const
 Return all the callsite samples collected in the body of the function. More...
 
sampleprof_error merge (const FunctionSamples &Other, uint64_t Weight=1)
 Merge the samples in Other into this one. More...
 
void findInlinedFunctions (DenseSet< GlobalValue::GUID > &S, const Module *M, uint64_t Threshold) const
 Recursively traverses all children, if the total sample count of the corresponding function is no less than Threshold, add its corresponding GUID to S. More...
 
void setName (StringRef FunctionName)
 Set the name of the function. More...
 
const StringRefgetName () const
 Return the function name. More...
 

Detailed Description

Representation of the samples collected for a function.

This data structure contains all the collected samples for the body of a function. Each sample corresponds to a LineLocation instance within the body of the function.

Definition at line 196 of file SampleProf.h.

Constructor & Destructor Documentation

◆ FunctionSamples()

llvm::sampleprof::FunctionSamples::FunctionSamples ( )
default

Member Function Documentation

◆ addBodySamples()

sampleprof_error llvm::sampleprof::FunctionSamples::addBodySamples ( uint32_t  LineOffset,
uint32_t  Discriminator,
uint64_t  Num,
uint64_t  Weight = 1 
)
inline

◆ addCalledTargetSamples()

sampleprof_error llvm::sampleprof::FunctionSamples::addCalledTargetSamples ( uint32_t  LineOffset,
uint32_t  Discriminator,
const std::string &  FName,
uint64_t  Num,
uint64_t  Weight = 1 
)
inline

◆ addHeadSamples()

sampleprof_error llvm::sampleprof::FunctionSamples::addHeadSamples ( uint64_t  Num,
uint64_t  Weight = 1 
)
inline

◆ addTotalSamples()

sampleprof_error llvm::sampleprof::FunctionSamples::addTotalSamples ( uint64_t  Num,
uint64_t  Weight = 1 
)
inline

◆ dump()

LLVM_DUMP_METHOD void FunctionSamples::dump ( ) const

Definition at line 154 of file SampleProf.cpp.

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

◆ empty()

bool llvm::sampleprof::FunctionSamples::empty ( ) const
inline

Definition at line 294 of file SampleProf.h.

◆ findCallTargetMapAt()

ErrorOr<SampleRecord::CallTargetMap> llvm::sampleprof::FunctionSamples::findCallTargetMapAt ( uint32_t  LineOffset,
uint32_t  Discriminator 
) const
inline

Returns the call target map collected at a given location.

Each location is specified by LineOffset and Discriminator. If the location is not found in profile, return error.

Definition at line 249 of file SampleProf.h.

Referenced by callsiteIsHot(), and SortCallTargets().

◆ findFunctionSamplesAt()

const FunctionSamples* llvm::sampleprof::FunctionSamples::findFunctionSamplesAt ( const LineLocation Loc,
StringRef  CalleeName 
) const
inline

Returns a pointer to FunctionSamples at the given callsite location Loc with callee CalleeName.

If no callsite can be found, relax the restriction to return the FunctionSamples at callsite location Loc with the maximum total sample count.

Definition at line 274 of file SampleProf.h.

Referenced by callsiteIsHot().

◆ findFunctionSamplesMapAt()

const FunctionSamplesMap* llvm::sampleprof::FunctionSamples::findFunctionSamplesMapAt ( const LineLocation Loc) const
inline

Returns the FunctionSamplesMap at the given Loc.

Definition at line 263 of file SampleProf.h.

References llvm::StringMap< ValueTy, AllocatorTy >::find().

Referenced by callsiteIsHot().

◆ findInlinedFunctions()

void llvm::sampleprof::FunctionSamples::findInlinedFunctions ( DenseSet< GlobalValue::GUID > &  S,
const Module M,
uint64_t  Threshold 
) const
inline

Recursively traverses all children, if the total sample count of the corresponding function is no less than Threshold, add its corresponding GUID to S.

Also traverse the BodySamples to add hot CallTarget's GUID to S.

Definition at line 359 of file SampleProf.h.

References Callee, llvm::Module::getFunction(), llvm::GlobalValue::getGUID(), llvm::Function::getSubprogram(), llvm::detail::DenseSetImpl< ValueT, DenseMap< ValueT, detail::DenseSetEmpty, ValueInfoT, detail::DenseSetPair< ValueT > >, ValueInfoT >::insert(), and Threshold.

Referenced by callsiteIsHot().

◆ findSamplesAt()

ErrorOr<uint64_t> llvm::sampleprof::FunctionSamples::findSamplesAt ( uint32_t  LineOffset,
uint32_t  Discriminator 
) const
inline

Return the number of samples collected at the given location.

Each location is specified by LineOffset and Discriminator. If the location is not found in profile, return error.

Definition at line 236 of file SampleProf.h.

Referenced by callsiteIsHot().

◆ functionSamplesAt()

FunctionSamplesMap& llvm::sampleprof::FunctionSamples::functionSamplesAt ( const LineLocation Loc)
inline

Return the function samples at the given callsite location.

Definition at line 257 of file SampleProf.h.

Referenced by llvm::sampleprof::SampleProfileReaderGCC::readOneFunctionProfile(), and llvm::sampleprof::SampleProfileReaderBinary::readProfile().

◆ getBodySamples()

const BodySampleMap& llvm::sampleprof::FunctionSamples::getBodySamples ( ) const
inline

◆ getCallsiteSamples()

const CallsiteSampleMap& llvm::sampleprof::FunctionSamples::getCallsiteSamples ( ) const
inline

◆ getEntrySamples()

uint64_t llvm::sampleprof::FunctionSamples::getEntrySamples ( ) const
inline

Return the sample count of the first instruction of the function.

The function can be either a standalone symbol or an inlined function.

Definition at line 308 of file SampleProf.h.

References T.

Referenced by callsiteIsHot().

◆ getHeadSamples()

uint64_t llvm::sampleprof::FunctionSamples::getHeadSamples ( ) const
inline

Return the total number of branch samples that have the function as the branch target.

This should be equivalent to the sample of the first instruction of the symbol. But as we directly get this info for raw profile without referring to potentially inaccurate debug info, this gives more accurate profile data and is preferred for standalone symbols.

Definition at line 304 of file SampleProf.h.

Referenced by llvm::SampleProfileSummaryBuilder::addRecord(), merge(), llvm::sampleprof::SampleProfileWriterText::write(), and llvm::sampleprof::SampleProfileWriterBinary::write().

◆ getName()

const StringRef& llvm::sampleprof::FunctionSamples::getName ( ) const
inline

◆ getTotalSamples()

uint64_t llvm::sampleprof::FunctionSamples::getTotalSamples ( ) const
inline

◆ merge()

sampleprof_error llvm::sampleprof::FunctionSamples::merge ( const FunctionSamples Other,
uint64_t  Weight = 1 
)
inline

Merge the samples in Other into this one.

Optionally scale samples by Weight.

Definition at line 336 of file SampleProf.h.

References getBodySamples(), getCallsiteSamples(), getHeadSamples(), getName(), getTotalSamples(), I, llvm::MergeResult(), and llvm::success.

◆ print()

void FunctionSamples::print ( raw_ostream OS = dbgs(),
unsigned  Indent = 0 
) const

Print the samples collected for a function on stream OS.

Definition at line 111 of file SampleProf.cpp.

References llvm::sampleprof::SampleSorter< LocationT, SampleT >::get(), llvm::raw_ostream::indent(), and SI.

Referenced by llvm::sampleprof::operator<<().

◆ setName()

void llvm::sampleprof::FunctionSamples::setName ( StringRef  FunctionName)
inline

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