LLVM: include/llvm/ProfileData/Coverage/CoverageMappingReader.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14#ifndef LLVM_PROFILEDATA_COVERAGE_COVERAGEMAPPINGREADER_H
15#define LLVM_PROFILEDATA_COVERAGE_COVERAGEMAPPINGREADER_H
16
24#include
25#include
26#include
27#include
28#include
29
30namespace llvm {
32
34
35
43
44
49
51
52public:
58
61
66
71
73 increment();
74 return *this;
75 }
77 return Reader == RHS.Reader;
78 }
80 return Reader != RHS.Reader;
81 }
86 return std::move(E);
87 }
88 return Record;
89 }
94 return std::move(E);
95 }
96 return &Record;
97 }
98};
99
108
109
111protected:
113
115
120};
121
122
123
131
132
135 std::vector &Filenames;
136 std::vector &Expressions;
137 std::vector &MappingRegions;
138
139public:
142 std::vector &Filenames,
143 std::vector &Expressions,
144 std::vector &MappingRegions)
146 TranslationUnitFilenames(TranslationUnitFilenames),
147 Filenames(Filenames), Expressions(Expressions),
148 MappingRegions(MappingRegions) {}
152
154
155private:
159 readMappingRegionsSubArray(std::vector &MappingRegions,
160 unsigned InferredFileID, size_t NumFileIDs);
161};
162
163
164
166public:
182
185
186private:
187 std::vectorstd::string Filenames;
188 std::vector MappingRecords;
189 std::unique_ptr ProfileNames;
190 size_t CurrentRecord = 0;
191 std::vector FunctionsFilenames;
192 std::vector Expressions;
193 std::vector MappingRegions;
194
195
196
197
199
200
201
202
204
205 BinaryCoverageReader(std::unique_ptr Symtab,
208 : ProfileNames(std::move(Symtab)), FuncRecords(std::move(FuncRecords)),
209 CoverageMapCopy(std::move(CoverageMapCopy)) {}
210
211public:
213 BinaryCoverageReader &operator=(const BinaryCoverageReader &) = delete;
214
217 SmallVectorImpl<std::unique_ptr> &ObjectFileBuffers,
220
225 std::unique_ptr ProfileNamesPtr, uint8_t BytesInAddress,
227
229};
230
231
233 std::vectorstd::string &Filenames;
235
236
238
239public:
241 std::vectorstd::string &Filenames,
244 CompilationDir(CompilationDir) {}
248
250};
251
252}
253}
254
255#endif
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
Lightweight error class with error context and mandatory checking.
Tagged union holding either a T or a Error.
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
StringRef - Represent a constant reference to a string, i.e.
LLVM Value Representation.
static Expected< std::unique_ptr< BinaryCoverageReader > > createCoverageReaderFromBuffer(StringRef Coverage, FuncRecordsStorage &&FuncRecords, CoverageMapCopyStorage &&CoverageMap, std::unique_ptr< InstrProfSymtab > ProfileNamesPtr, uint8_t BytesInAddress, llvm::endianness Endian, StringRef CompilationDir="")
std::unique_ptr< MemoryBuffer > CoverageMapCopyStorage
Definition CoverageMappingReader.h:184
static Expected< std::vector< std::unique_ptr< BinaryCoverageReader > > > create(MemoryBufferRef ObjectBuffer, StringRef Arch, SmallVectorImpl< std::unique_ptr< MemoryBuffer > > &ObjectFileBuffers, StringRef CompilationDir="", SmallVectorImpl< object::BuildIDRef > *BinaryIDs=nullptr)
BinaryCoverageReader & operator=(const BinaryCoverageReader &)=delete
std::unique_ptr< MemoryBuffer > FuncRecordsStorage
Definition CoverageMappingReader.h:183
Error readNextRecord(CoverageMappingRecord &Record) override
BinaryCoverageReader(const BinaryCoverageReader &)=delete
A file format agnostic iterator over coverage mapping data.
Definition CoverageMappingReader.h:45
Expected< CoverageMappingRecord & > operator*()
Definition CoverageMappingReader.h:82
CoverageMappingRecord value_type
Definition CoverageMappingReader.h:54
bool operator==(const CoverageMappingIterator &RHS) const
Definition CoverageMappingReader.h:76
std::ptrdiff_t difference_type
Definition CoverageMappingReader.h:55
CoverageMappingIterator()
Definition CoverageMappingReader.h:59
~CoverageMappingIterator()
Definition CoverageMappingReader.h:67
std::input_iterator_tag iterator_category
Definition CoverageMappingReader.h:53
Expected< CoverageMappingRecord * > operator->()
Definition CoverageMappingReader.h:90
value_type & reference
Definition CoverageMappingReader.h:57
value_type * pointer
Definition CoverageMappingReader.h:56
CoverageMappingIterator(CoverageMappingReader *Reader)
Definition CoverageMappingReader.h:62
CoverageMappingIterator & operator++()
Definition CoverageMappingReader.h:72
bool operator!=(const CoverageMappingIterator &RHS) const
Definition CoverageMappingReader.h:79
CoverageMappingIterator begin()
Definition CoverageMappingReader.h:105
virtual Error readNextRecord(CoverageMappingRecord &Record)=0
virtual ~CoverageMappingReader()=default
CoverageMappingIterator end()
Definition CoverageMappingReader.h:106
RawCoverageFilenamesReader(StringRef Data, std::vector< std::string > &Filenames, StringRef CompilationDir="")
Definition CoverageMappingReader.h:240
LLVM_ABI Error read(CovMapVersion Version)
RawCoverageFilenamesReader(const RawCoverageFilenamesReader &)=delete
RawCoverageFilenamesReader & operator=(const RawCoverageFilenamesReader &)=delete
LLVM_ABI Expected< bool > isDummy()
RawCoverageMappingDummyChecker(StringRef MappingData)
Definition CoverageMappingReader.h:126
RawCoverageMappingReader(const RawCoverageMappingReader &)=delete
RawCoverageMappingReader & operator=(const RawCoverageMappingReader &)=delete
RawCoverageMappingReader(StringRef MappingData, ArrayRef< std::string > &TranslationUnitFilenames, std::vector< StringRef > &Filenames, std::vector< CounterExpression > &Expressions, std::vector< CounterMappingRegion > &MappingRegions)
Definition CoverageMappingReader.h:140
StringRef Data
Definition CoverageMappingReader.h:112
LLVM_ABI Error readSize(uint64_t &Result)
LLVM_ABI Error readIntMax(uint64_t &Result, uint64_t MaxPlus1)
LLVM_ABI Error readULEB128(uint64_t &Result)
LLVM_ABI Error readString(StringRef &Result)
RawCoverageReader(StringRef Data)
Definition CoverageMappingReader.h:114
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
@ C
The default llvm calling convention, compatible with C.
This is an optimization pass for GlobalISel generic memory operations.
FunctionAddr VTableAddr uintptr_t uintptr_t Version
Error make_error(ArgTs &&... Args)
Make a Error instance representing failure using the given error info type.
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
Implement std::hash so that hash_code can be used in STL containers.
StringRef CoverageMapping
Definition CoverageMappingReader.h:171
size_t FilenamesBegin
Definition CoverageMappingReader.h:172
StringRef FunctionName
Definition CoverageMappingReader.h:169
size_t FilenamesSize
Definition CoverageMappingReader.h:173
CovMapVersion Version
Definition CoverageMappingReader.h:168
ProfileMappingRecord(CovMapVersion Version, StringRef FunctionName, uint64_t FunctionHash, StringRef CoverageMapping, size_t FilenamesBegin, size_t FilenamesSize)
Definition CoverageMappingReader.h:175
uint64_t FunctionHash
Definition CoverageMappingReader.h:170
A Counter is an abstract value that describes how to compute the execution count for a region of code...
Coverage mapping information for a single function.
Definition CoverageMappingReader.h:36
StringRef FunctionName
Definition CoverageMappingReader.h:37
uint64_t FunctionHash
Definition CoverageMappingReader.h:38
ArrayRef< CounterExpression > Expressions
Definition CoverageMappingReader.h:40
ArrayRef< CounterMappingRegion > MappingRegions
Definition CoverageMappingReader.h:41
ArrayRef< StringRef > Filenames
Definition CoverageMappingReader.h:39