Skip to content
Snippets Groups Projects
Commit 161ff9db authored by Vedant Kumar's avatar Vedant Kumar
Browse files

[Coverage] Adopt llvm::coverage::encodeFilenamesAndRawMappings (NFC)

Use an llvm helper function to encode filenames and raw mappings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@273056 91177308-0d34-0410-b5e6-96231b3b80d8
parent 0c218a09
No related branches found
No related tags found
No related merge requests found
...@@ -1008,35 +1008,27 @@ void CoverageMappingModuleGen::emit() { ...@@ -1008,35 +1008,27 @@ void CoverageMappingModuleGen::emit() {
// Create the filenames and merge them with coverage mappings // Create the filenames and merge them with coverage mappings
llvm::SmallVector<std::string, 16> FilenameStrs; llvm::SmallVector<std::string, 16> FilenameStrs;
llvm::SmallVector<StringRef, 16> FilenameRefs;
FilenameStrs.resize(FileEntries.size()); FilenameStrs.resize(FileEntries.size());
FilenameRefs.resize(FileEntries.size());
for (const auto &Entry : FileEntries) { for (const auto &Entry : FileEntries) {
llvm::SmallString<256> Path(Entry.first->getName()); llvm::SmallString<256> Path(Entry.first->getName());
llvm::sys::fs::make_absolute(Path); llvm::sys::fs::make_absolute(Path);
auto I = Entry.second; auto I = Entry.second;
FilenameStrs[I] = std::string(Path.begin(), Path.end()); FilenameStrs[I] = std::string(Path.begin(), Path.end());
FilenameRefs[I] = FilenameStrs[I];
} }
std::string FilenamesAndCoverageMappings; size_t FilenamesSize;
llvm::raw_string_ostream OS(FilenamesAndCoverageMappings); size_t CoverageMappingSize;
CoverageFilenamesSectionWriter(FilenameRefs).write(OS); llvm::Expected<std::string> CoverageDataOrErr = encodeFilenamesAndRawMappings(
std::string RawCoverageMappings = FilenameStrs, CoverageMappings, FilenamesSize, CoverageMappingSize);
llvm::join(CoverageMappings.begin(), CoverageMappings.end(), ""); if (llvm::Error E = CoverageDataOrErr.takeError()) {
OS << RawCoverageMappings; llvm::handleAllErrors(std::move(E), [](llvm::ErrorInfoBase &EI) {
size_t CoverageMappingSize = RawCoverageMappings.size(); llvm::report_fatal_error(EI.message());
size_t FilenamesSize = OS.str().size() - CoverageMappingSize; });
// Append extra zeroes if necessary to ensure that the size of the filenames
// and coverage mappings is a multiple of 8.
if (size_t Rem = OS.str().size() % 8) {
CoverageMappingSize += 8 - Rem;
for (size_t I = 0, S = 8 - Rem; I < S; ++I)
OS << '\0';
} }
std::string CoverageData = std::move(CoverageDataOrErr.get());
auto *FilenamesAndMappingsVal = auto *FilenamesAndMappingsVal =
llvm::ConstantDataArray::getString(Ctx, OS.str(), false); llvm::ConstantDataArray::getString(Ctx, CoverageData, false);
// Create the deferred function records array // Create the deferred function records array
auto RecordsTy = auto RecordsTy =
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment