@@ -410,24 +410,30 @@ CoverageMapping::load(ArrayRef<StringRef> ObjectFilenames,
410
410
}
411
411
412
412
if (BIDFetcher) {
413
- const auto &Compare = [](object::BuildIDRef A, object::BuildIDRef B) {
413
+ const auto &CompareLT = [](object::BuildIDRef A, object::BuildIDRef B) {
414
414
return StringRef (reinterpret_cast <const char *>(A.data ()), A.size ()) <
415
415
StringRef (reinterpret_cast <const char *>(B.data ()), B.size ());
416
416
};
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
+ };
417
421
std::vector<object::BuildID> ProfileBinaryIDs;
418
422
if (Error E = ProfileReader->readBinaryIds (ProfileBinaryIDs))
419
423
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 ());
422
427
423
428
SmallVector<object::BuildIDRef> BinaryIDsToFetch;
424
429
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 ());
427
433
std::set_difference (
428
434
ProfileBinaryIDs.begin (), ProfileBinaryIDs.end (),
429
435
FoundBinaryIDs.begin (), FoundBinaryIDs.end (),
430
- std::inserter (BinaryIDsToFetch, BinaryIDsToFetch.end ()), Compare );
436
+ std::inserter (BinaryIDsToFetch, BinaryIDsToFetch.end ()), CompareLT );
431
437
}
432
438
433
439
for (object::BuildIDRef BinaryID : BinaryIDsToFetch) {
0 commit comments