|
LLVM 22.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 , VirtualCallTypeProfile } |
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 | parseTypeCountMap (StringRef Input, DenseMap< StringRef, uint64_t > &TypeCountMap) |
| 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, DenseMap< StringRef, uint64_t > &TypeCountMap, uint64_t &FunctionHash, uint32_t &Attributes, bool &IsFlat) |
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 | |
| VirtualCallTypeProfile | |
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(), 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::json::OStream::object(), and llvm::sampleprof::FunctionId::str().
Referenced by dumpFunctionProfileJson(), and llvm::sampleprof::SampleProfileReader::dumpJson().
|
static |
Definition at line 1552 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::SampleProfileReaderBinary::readCallsiteVTableProf(), 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.
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 243 of file SampleProfReader.cpp.
References 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(), llvm::isDigit(), isOffsetLegal(), llvm::sampleprof::kVTableProfPrefix, Metadata, llvm::StringRef::npos, parseMetadata(), parseTypeCountMap(), llvm::StringRef::size(), llvm::StringRef::starts_with(), llvm::StringRef::substr(), and VirtualCallTypeProfile.
Referenced by llvm::sampleprof::SampleProfileReaderText::readImpl().
|
static |
Parse Input that contains metadata.
Possible metadata:
FunctionHash. Definition at line 181 of file SampleProfReader.cpp.
References llvm::StringRef::getAsInteger().
Referenced by llvm::MetadataLoader::parseFunctionMetadata(), ParseLine(), and llvm::MetadataLoader::parseModuleMetadata().
Definition at line 205 of file SampleProfReader.cpp.
References llvm::Count, and llvm::StringRef::npos.
Referenced by ParseLine().
|
static |
Prepare a memory buffer for the contents of Filename.
Definition at line 2011 of file SampleProfReader.cpp.
References llvm::MemoryBuffer::getSTDIN().