@@ -826,13 +826,23 @@ bool SampleProfileReaderExtBinaryBase::useFuncOffsetList() const {
826826std::error_code
827827SampleProfileReaderExtBinaryBase::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