LLVM
15.0.0git
|
#include "llvm/ProfileData/SampleProfReader.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/ProfileSummary.h"
#include "llvm/ProfileData/ProfileCommon.h"
#include "llvm/ProfileData/SampleProf.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Compression.h"
#include "llvm/Support/ErrorOr.h"
#include "llvm/Support/LEB128.h"
#include "llvm/Support/LineIterator.h"
#include "llvm/Support/MD5.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <cstddef>
#include <cstdint>
#include <limits>
#include <memory>
#include <system_error>
#include <vector>
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "samplepgo-reader" |
Enumerations | |
enum | LineType { LineType::CallSiteProfile, LineType::BodyProfile, LineType::Metadata } |
Functions | |
static bool | ParseHead (const StringRef &Input, StringRef &FName, uint64_t &NumSamples, uint64_t &NumHeadSamples) |
Parse Input as function head. More... | |
static bool | isOffsetLegal (unsigned L) |
Returns true if line offset L is legal (only has 16 bits). More... | |
static bool | parseMetadata (const StringRef &Input, uint64_t &FunctionHash, uint32_t &Attributes) |
Parse Input that contains metadata. More... | |
static bool | ParseLine (const StringRef &Input, LineType &LineTy, uint32_t &Depth, uint64_t &NumSamples, uint32_t &LineOffset, uint32_t &Discriminator, StringRef &CalleeName, DenseMap< StringRef, uint64_t > &TargetCountMap, uint64_t &FunctionHash, uint32_t &Attributes) |
Parse Input as line sample. More... | |
static std::string | getSecFlagsStr (const SecHdrTableEntry &Entry) |
static ErrorOr< std::unique_ptr< MemoryBuffer > > | setupMemoryBuffer (const Twine &Filename) |
Prepare a memory buffer for the contents of Filename . More... | |
Variables | |
static cl::opt< bool > | ProfileIsFSDisciminator ("profile-isfs", cl::Hidden, cl::init(false), cl::desc("Profile uses flow sensitive discriminators")) |
#define DEBUG_TYPE "samplepgo-reader" |
Definition at line 49 of file SampleProfReader.cpp.
|
strong |
Enumerator | |
---|---|
CallSiteProfile | |
BodyProfile | |
Metadata |
Definition at line 121 of file SampleProfReader.cpp.
|
static |
Definition at line 1254 of file SampleProfReader.cpp.
|
static |
Returns true if line offset L
is legal (only has 16 bits).
Definition at line 97 of file SampleProfReader.cpp.
Referenced by ParseLine(), llvm::sampleprof::SampleProfileReaderExtBinaryBase::readCSNameTableSec(), and llvm::sampleprof::SampleProfileReaderBinary::readProfile().
|
static |
Parse Input
as function head.
Parse one line of Input
, and update function name in FName
, function's total sample count in NumSamples
, function's entry count in NumHeadSamples
.
Definition at line 82 of file SampleProfReader.cpp.
Referenced by llvm::sampleprof::SampleProfileReaderText::hasFormat(), and llvm::sampleprof::SampleProfileReaderText::readImpl().
|
static |
Parse Input
as line sample.
Input | input line. |
LineTy | Type of this line. |
Depth | the depth of the inline stack. |
NumSamples | total samples of the line/inlined callsite. |
LineOffset | line offset to the start of the function. |
Discriminator | discriminator of the line. |
TargetCountMap | map from indirect call target to count. |
FunctionHash | the function's CFG hash, used by pseudo probe. |
returns true if parsing is successful.
Definition at line 139 of file SampleProfReader.cpp.
References Attributes, BodyProfile, CallSiteProfile, llvm::count(), llvm::Depth, llvm::StringRef::find(), llvm::StringRef::find_first_not_of(), llvm::StringRef::find_first_of(), llvm::StringRef::find_last_of(), llvm::StringRef::getAsInteger(), isDigit(), isOffsetLegal(), Metadata, llvm::StringRef::npos, parseMetadata(), llvm::StringRef::size(), and llvm::StringRef::substr().
Referenced by llvm::sampleprof::SampleProfileReaderText::readImpl().
|
static |
Parse Input
that contains metadata.
Possible metadata:
FunctionHash
. Definition at line 106 of file SampleProfReader.cpp.
References Attributes, and llvm::StringRef::getAsInteger().
Referenced by llvm::MetadataLoader::parseFunctionMetadata(), ParseLine(), and llvm::MetadataLoader::parseModuleMetadata().
|
static |
Prepare a memory buffer for the contents of Filename
.
Definition at line 1762 of file SampleProfReader.cpp.
References llvm::sampleprof::SampleProfileReader::Buffer, llvm::MemoryBuffer::getFileOrSTDIN(), llvm::max(), move, and llvm::too_large.
Referenced by llvm::sampleprof::SampleProfileReaderItaniumRemapper::create(), and llvm::sampleprof::SampleProfileReader::create().
|
static |