diff options
author | Vedant Kumar <vsk@apple.com> | 2017-08-01 21:23:26 +0000 |
---|---|---|
committer | Vedant Kumar <vsk@apple.com> | 2017-08-01 21:23:26 +0000 |
commit | 4b102c3d5c4f7232bf915a934eb3dbdd709fb471 (patch) | |
tree | 754ebd6023e7c29995f166250312b353d13c7ca8 /llvm/lib/ProfileData | |
parent | 52889219effe9cb3646b921a1dec74d4e139ee7d (diff) | |
download | bcm5719-llvm-4b102c3d5c4f7232bf915a934eb3dbdd709fb471.tar.gz bcm5719-llvm-4b102c3d5c4f7232bf915a934eb3dbdd709fb471.zip |
[llvm-cov] Allow specifying distinct architectures for each loaded binary
The coverage tool needs to know which slice to look at when it's handed
a universal binary. Some projects need to look at aggregate coverage
reports for a variety of slices in different binaries: this patch adds
support for these kinds of projects to llvm-cov.
rdar://problem/33579007
llvm-svn: 309747
Diffstat (limited to 'llvm/lib/ProfileData')
-rw-r--r-- | llvm/lib/ProfileData/Coverage/CoverageMapping.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp b/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp index 8c5f136ea27..c435cb6ac84 100644 --- a/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp +++ b/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp @@ -260,7 +260,7 @@ Expected<std::unique_ptr<CoverageMapping>> CoverageMapping::load( Expected<std::unique_ptr<CoverageMapping>> CoverageMapping::load(ArrayRef<StringRef> ObjectFilenames, - StringRef ProfileFilename, StringRef Arch) { + StringRef ProfileFilename, ArrayRef<StringRef> Arches) { auto ProfileReaderOrErr = IndexedInstrProfReader::create(ProfileFilename); if (Error E = ProfileReaderOrErr.takeError()) return std::move(E); @@ -268,10 +268,11 @@ CoverageMapping::load(ArrayRef<StringRef> ObjectFilenames, SmallVector<std::unique_ptr<CoverageMappingReader>, 4> Readers; SmallVector<std::unique_ptr<MemoryBuffer>, 4> Buffers; - for (StringRef ObjectFilename : ObjectFilenames) { - auto CovMappingBufOrErr = MemoryBuffer::getFileOrSTDIN(ObjectFilename); + for (const auto &File : llvm::enumerate(ObjectFilenames)) { + auto CovMappingBufOrErr = MemoryBuffer::getFileOrSTDIN(File.value()); if (std::error_code EC = CovMappingBufOrErr.getError()) return errorCodeToError(EC); + StringRef Arch = Arches.empty() ? StringRef() : Arches[File.index()]; auto CoverageReaderOrErr = BinaryCoverageReader::create(CovMappingBufOrErr.get(), Arch); if (Error E = CoverageReaderOrErr.takeError()) |