LLVM 20.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/JSON.h"
#include "llvm/Support/LEB128.h"
#include "llvm/Support/LineIterator.h"
#include "llvm/Support/MD5.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/VirtualFileSystem.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 class | LineType { CallSiteProfile , BodyProfile , Metadata } |
Functions | |
static void | dumpFunctionProfileJson (const FunctionSamples &S, json::OStream &JOS, bool TopLevel=false) |
static bool | ParseHead (const StringRef &Input, StringRef &FName, uint64_t &NumSamples, uint64_t &NumHeadSamples) |
Parse Input as function head. | |
static bool | isOffsetLegal (unsigned L) |
Returns true if line offset L is legal (only has 16 bits). | |
static bool | parseMetadata (const StringRef &Input, uint64_t &FunctionHash, uint32_t &Attributes) |
Parse Input that contains metadata. | |
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. | |
static std::string | getSecFlagsStr (const SecHdrTableEntry &Entry) |
static ErrorOr< std::unique_ptr< MemoryBuffer > > | setupMemoryBuffer (const Twine &Filename, vfs::FileSystem &FS) |
Prepare a memory buffer for the contents of Filename . | |
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 51 of file SampleProfReader.cpp.
|
strong |
Enumerator | |
---|---|
CallSiteProfile | |
BodyProfile | |
Metadata |
Definition at line 196 of file SampleProfReader.cpp.
|
static |
Definition at line 77 of file SampleProfReader.cpp.
References llvm::json::OStream::attribute(), llvm::json::OStream::attributeArray(), llvm::sampleprof::LineLocation::Discriminator, dumpFunctionProfileJson(), llvm::sampleprof::FunctionSamples::getBodySamples(), llvm::sampleprof::FunctionSamples::getCallsiteSamples(), llvm::sampleprof::FunctionSamples::getFunction(), llvm::sampleprof::FunctionSamples::getHeadSamples(), llvm::sampleprof::SampleRecord::getSamples(), llvm::sampleprof::SampleRecord::getSortedCallTargets(), llvm::sampleprof::FunctionSamples::getTotalSamples(), I, llvm::sampleprof::LineLocation::LineOffset, llvm::json::OStream::object(), and llvm::sampleprof::FunctionId::str().
Referenced by dumpFunctionProfileJson(), and llvm::sampleprof::SampleProfileReader::dumpJson().
|
static |
Definition at line 1345 of file SampleProfReader.cpp.
References llvm::sampleprof::hasSecFlag(), llvm::sampleprof::SecFlagCompress, llvm::sampleprof::SecFlagFixedLengthMD5, llvm::sampleprof::SecFlagFlat, llvm::sampleprof::SecFlagFSDiscriminator, llvm::sampleprof::SecFlagFullContext, llvm::sampleprof::SecFlagHasAttribute, llvm::sampleprof::SecFlagIsPreInlined, llvm::sampleprof::SecFlagIsProbeBased, llvm::sampleprof::SecFlagMD5Name, llvm::sampleprof::SecFlagOrdered, llvm::sampleprof::SecFlagPartial, llvm::sampleprof::SecFlagUniqSuffix, llvm::sampleprof::SecFuncMetadata, llvm::sampleprof::SecFuncOffsetTable, llvm::sampleprof::SecNameTable, and llvm::sampleprof::SecProfSummary.
Referenced by llvm::sampleprof::SampleProfileReaderExtBinaryBase::dumpSectionInfo().
Returns true if line offset L
is legal (only has 16 bits).
Definition at line 172 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 157 of file SampleProfReader.cpp.
References llvm::StringRef::getAsInteger(), llvm::StringRef::rfind(), and llvm::StringRef::substr().
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 214 of file SampleProfReader.cpp.
References Attributes, 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(), 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 181 of file SampleProfReader.cpp.
References Attributes, llvm::StringRef::getAsInteger(), llvm::StringRef::starts_with(), llvm::StringRef::substr(), and llvm::StringRef::trim().
Referenced by llvm::MetadataLoader::parseFunctionMetadata(), ParseLine(), and llvm::MetadataLoader::parseModuleMetadata().
|
static |
Prepare a memory buffer for the contents of Filename
.
Definition at line 1804 of file SampleProfReader.cpp.
References llvm::MemoryBuffer::getSTDIN().