Skip to content

Commit 9977b65

Browse files
committed
[llvm-cov] Fix logic error in debuginfod lookup.
Differential Revision: https://reviews.llvm.org/D136702
1 parent feedb4a commit 9977b65

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

llvm/lib/ProfileData/Coverage/CoverageMapping.cpp

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -410,24 +410,30 @@ CoverageMapping::load(ArrayRef<StringRef> ObjectFilenames,
410410
}
411411

412412
if (BIDFetcher) {
413-
const auto &Compare = [](object::BuildIDRef A, object::BuildIDRef B) {
413+
const auto &CompareLT = [](object::BuildIDRef A, object::BuildIDRef B) {
414414
return StringRef(reinterpret_cast<const char *>(A.data()), A.size()) <
415415
StringRef(reinterpret_cast<const char *>(B.data()), B.size());
416416
};
417+
const auto &CompareEQ = [](object::BuildIDRef A, object::BuildIDRef B) {
418+
return StringRef(reinterpret_cast<const char *>(A.data()), A.size()) ==
419+
StringRef(reinterpret_cast<const char *>(B.data()), B.size());
420+
};
417421
std::vector<object::BuildID> ProfileBinaryIDs;
418422
if (Error E = ProfileReader->readBinaryIds(ProfileBinaryIDs))
419423
return createFileError(ProfileFilename, std::move(E));
420-
llvm::sort(ProfileBinaryIDs, Compare);
421-
std::unique(ProfileBinaryIDs.begin(), ProfileBinaryIDs.end(), Compare);
424+
llvm::sort(ProfileBinaryIDs, CompareLT);
425+
ProfileBinaryIDs.erase(llvm::unique(ProfileBinaryIDs, CompareEQ),
426+
ProfileBinaryIDs.end());
422427

423428
SmallVector<object::BuildIDRef> BinaryIDsToFetch;
424429
if (!ProfileBinaryIDs.empty()) {
425-
llvm::sort(FoundBinaryIDs, Compare);
426-
std::unique(FoundBinaryIDs.begin(), FoundBinaryIDs.end(), Compare);
430+
llvm::sort(FoundBinaryIDs, CompareLT);
431+
FoundBinaryIDs.erase(llvm::unique(FoundBinaryIDs, CompareEQ),
432+
FoundBinaryIDs.end());
427433
std::set_difference(
428434
ProfileBinaryIDs.begin(), ProfileBinaryIDs.end(),
429435
FoundBinaryIDs.begin(), FoundBinaryIDs.end(),
430-
std::inserter(BinaryIDsToFetch, BinaryIDsToFetch.end()), Compare);
436+
std::inserter(BinaryIDsToFetch, BinaryIDsToFetch.end()), CompareLT);
431437
}
432438

433439
for (object::BuildIDRef BinaryID : BinaryIDsToFetch) {

0 commit comments

Comments
 (0)