Skip to content

Commit dc3480c

Browse files
committed
Merge of d38380d
2 parents 6b707a0 + d38380d commit dc3480c

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

llvm/include/llvm/ProfileData/SampleProfReader.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -777,7 +777,7 @@ class SampleProfileReaderExtBinaryBase : public SampleProfileReaderBinary {
777777
std::error_code readSecHdrTable();
778778

779779
std::error_code readFuncMetadata(bool ProfileHasAttribute,
780-
SampleProfileMap &Profiles);
780+
DenseSet<FunctionSamples *> &Profiles);
781781
std::error_code readFuncMetadata(bool ProfileHasAttribute);
782782
std::error_code readFuncMetadata(bool ProfileHasAttribute,
783783
FunctionSamples *FProfile);

llvm/lib/ProfileData/SampleProfReader.cpp

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -826,13 +826,23 @@ bool SampleProfileReaderExtBinaryBase::useFuncOffsetList() const {
826826
std::error_code
827827
SampleProfileReaderExtBinaryBase::read(const DenseSet<StringRef> &FuncsToUse,
828828
SampleProfileMap &Profiles) {
829+
if (FuncsToUse.empty())
830+
return sampleprof_error::success;
831+
829832
Data = ProfileSecRange.first;
830833
End = ProfileSecRange.second;
831834
if (std::error_code EC = readFuncProfiles(FuncsToUse, Profiles))
832835
return EC;
833836
End = Data;
837+
DenseSet<FunctionSamples *> ProfilesToReadMetadata;
838+
for (auto FName : FuncsToUse) {
839+
auto I = Profiles.find(FName);
840+
if (I != Profiles.end())
841+
ProfilesToReadMetadata.insert(&I->second);
842+
}
834843

835-
if (std::error_code EC = readFuncMetadata(ProfileHasAttribute, Profiles))
844+
if (std::error_code EC =
845+
readFuncMetadata(ProfileHasAttribute, ProfilesToReadMetadata))
836846
return EC;
837847
return sampleprof_error::success;
838848
}
@@ -1300,14 +1310,12 @@ SampleProfileReaderExtBinaryBase::readFuncMetadata(bool ProfileHasAttribute,
13001310
return sampleprof_error::success;
13011311
}
13021312

1303-
std::error_code
1304-
SampleProfileReaderExtBinaryBase::readFuncMetadata(bool ProfileHasAttribute,
1305-
SampleProfileMap &Profiles) {
1313+
std::error_code SampleProfileReaderExtBinaryBase::readFuncMetadata(
1314+
bool ProfileHasAttribute, DenseSet<FunctionSamples *> &Profiles) {
13061315
if (FuncMetadataIndex.empty())
13071316
return sampleprof_error::success;
13081317

1309-
for (auto &I : Profiles) {
1310-
FunctionSamples *FProfile = &I.second;
1318+
for (auto *FProfile : Profiles) {
13111319
auto R = FuncMetadataIndex.find(FProfile->getContext().getHashCode());
13121320
if (R == FuncMetadataIndex.end())
13131321
continue;

0 commit comments

Comments
 (0)