diff --git a/llvm/lib/ProfileData/SampleProfReader.cpp b/llvm/lib/ProfileData/SampleProfReader.cpp --- a/llvm/lib/ProfileData/SampleProfReader.cpp +++ b/llvm/lib/ProfileData/SampleProfReader.cpp @@ -251,6 +251,7 @@ bool SeenMetadata = false; ProfileIsFS = ProfileIsFSDisciminator; + FunctionSamples::ProfileIsFS = ProfileIsFS; for (; !LineIt.is_at_eof(); ++LineIt) { if ((*LineIt)[(*LineIt).find_first_not_of(' ')] == '#') continue; @@ -599,6 +600,7 @@ std::error_code SampleProfileReaderBinary::readImpl() { ProfileIsFS = ProfileIsFSDisciminator; + FunctionSamples::ProfileIsFS = ProfileIsFS; while (!at_eof()) { if (std::error_code EC = readFuncProfile(Data)) return EC; @@ -887,6 +889,7 @@ // given a module. bool LoadFuncsToBeUsed = collectFuncsFromModule(); ProfileIsFS = ProfileIsFSDisciminator; + FunctionSamples::ProfileIsFS = ProfileIsFS; std::vector OffsetsToUse; if (!LoadFuncsToBeUsed) { // load all the function profiles. diff --git a/llvm/test/tools/llvm-profdata/sample-fs.test b/llvm/test/tools/llvm-profdata/sample-fs.test --- a/llvm/test/tools/llvm-profdata/sample-fs.test +++ b/llvm/test/tools/llvm-profdata/sample-fs.test @@ -52,3 +52,7 @@ RUN: llvm-profdata show --sample %p/Inputs/sample-fs.proftext -profile-isfs -fs-discriminator-pass=Pass1 -o %t3-text RUN: diff %t3-binary %t3-text +4- ProfileIsFS is set properly in extbinary format from the internal option +RUN: llvm-profdata merge --sample %p/Inputs/sample-fs.proftext -profile-isfs --extbinary -o %t_extbin.afdo +RUN: llvm-profdata show --sample --show-sec-info-only %t_extbin.afdo | FileCheck %s --check-prefix=ISFSSET +ISFSSET: Flags: {fs-discriminator}