Update prebuilt Clang to r416183b from Android.
https://android.googlesource.com/platform/prebuilts/clang/host/
linux-x86/+/06a71ddac05c22edb2d10b590e1769b3f8619bef
clang 12.0.5 (based on r416183b) from build 7284624.
Change-Id: I277a316abcf47307562d8b748b84870f31a72866
Signed-off-by: Olivier Deprez <olivier.deprez@arm.com>
diff --git a/linux-x64/clang/include/llvm/ProfileData/Coverage/CoverageMappingReader.h b/linux-x64/clang/include/llvm/ProfileData/Coverage/CoverageMappingReader.h
index 57a2aae..3a611bc 100644
--- a/linux-x64/clang/include/llvm/ProfileData/Coverage/CoverageMappingReader.h
+++ b/linux-x64/clang/include/llvm/ProfileData/Coverage/CoverageMappingReader.h
@@ -67,10 +67,10 @@
increment();
return *this;
}
- bool operator==(const CoverageMappingIterator &RHS) {
+ bool operator==(const CoverageMappingIterator &RHS) const {
return Reader == RHS.Reader;
}
- bool operator!=(const CoverageMappingIterator &RHS) {
+ bool operator!=(const CoverageMappingIterator &RHS) const {
return Reader != RHS.Reader;
}
Expected<CoverageMappingRecord &> operator*() {
@@ -113,20 +113,6 @@
Error readString(StringRef &Result);
};
-/// Reader for the raw coverage filenames.
-class RawCoverageFilenamesReader : public RawCoverageReader {
- std::vector<StringRef> &Filenames;
-
-public:
- RawCoverageFilenamesReader(StringRef Data, std::vector<StringRef> &Filenames)
- : RawCoverageReader(Data), Filenames(Filenames) {}
- RawCoverageFilenamesReader(const RawCoverageFilenamesReader &) = delete;
- RawCoverageFilenamesReader &
- operator=(const RawCoverageFilenamesReader &) = delete;
-
- Error read();
-};
-
/// Checks if the given coverage mapping data is exported for
/// an unused function.
class RawCoverageMappingDummyChecker : public RawCoverageReader {
@@ -188,6 +174,8 @@
FilenamesBegin(FilenamesBegin), FilenamesSize(FilenamesSize) {}
};
+ using DecompressedData = std::vector<std::unique_ptr<SmallVector<char, 0>>>;
+
private:
std::vector<StringRef> Filenames;
std::vector<ProfileMappingRecord> MappingRecords;
@@ -197,7 +185,17 @@
std::vector<CounterExpression> Expressions;
std::vector<CounterMappingRegion> MappingRegions;
- BinaryCoverageReader() = default;
+ // Used to tie the lifetimes of coverage function records to the lifetime of
+ // this BinaryCoverageReader instance. Needed to support the format change in
+ // D69471, which can split up function records into multiple sections on ELF.
+ std::string FuncRecords;
+
+ // Used to tie the lifetimes of decompressed strings to the lifetime of this
+ // BinaryCoverageReader instance.
+ DecompressedData Decompressed;
+
+ BinaryCoverageReader(std::string &&FuncRecords)
+ : FuncRecords(std::move(FuncRecords)) {}
public:
BinaryCoverageReader(const BinaryCoverageReader &) = delete;
@@ -208,7 +206,7 @@
SmallVectorImpl<std::unique_ptr<MemoryBuffer>> &ObjectFileBuffers);
static Expected<std::unique_ptr<BinaryCoverageReader>>
- createCoverageReaderFromBuffer(StringRef Coverage,
+ createCoverageReaderFromBuffer(StringRef Coverage, std::string &&FuncRecords,
InstrProfSymtab &&ProfileNames,
uint8_t BytesInAddress,
support::endianness Endian);
@@ -216,6 +214,24 @@
Error readNextRecord(CoverageMappingRecord &Record) override;
};
+/// Reader for the raw coverage filenames.
+class RawCoverageFilenamesReader : public RawCoverageReader {
+ std::vector<StringRef> &Filenames;
+
+ // Read an uncompressed sequence of filenames.
+ Error readUncompressed(uint64_t NumFilenames);
+
+public:
+ RawCoverageFilenamesReader(StringRef Data, std::vector<StringRef> &Filenames)
+ : RawCoverageReader(Data), Filenames(Filenames) {}
+ RawCoverageFilenamesReader(const RawCoverageFilenamesReader &) = delete;
+ RawCoverageFilenamesReader &
+ operator=(const RawCoverageFilenamesReader &) = delete;
+
+ Error read(CovMapVersion Version,
+ BinaryCoverageReader::DecompressedData &Decompressed);
+};
+
} // end namespace coverage
} // end namespace llvm