From 24201b6437b2acad035fe474ec37f733e9045174 Mon Sep 17 00:00:00 2001 From: Rong Xu Date: Wed, 25 Aug 2021 09:07:34 -0700 Subject: [PATCH] [SampleFDO] Set ProfileIsFS bit properly from the internal option We have "-profile-isfs" internal option for text, binary, and compactbinary format (mostly for debug and test purpose). We need to set the related flag in FunctionSamples so that ProfileIsFS is written to the header in extbinary format. Differential Revision: https://reviews.llvm.org/D108707 --- llvm/lib/ProfileData/SampleProfReader.cpp | 3 +++ llvm/test/tools/llvm-profdata/sample-fs.test | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/llvm/lib/ProfileData/SampleProfReader.cpp b/llvm/lib/ProfileData/SampleProfReader.cpp index 7fc9552..b40361b 100644 --- a/llvm/lib/ProfileData/SampleProfReader.cpp +++ b/llvm/lib/ProfileData/SampleProfReader.cpp @@ -251,6 +251,7 @@ std::error_code SampleProfileReaderText::readImpl() { 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 @@ SampleProfileReaderBinary::readFuncProfile(const uint8_t *Start) { 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 @@ std::error_code SampleProfileReaderCompactBinary::readImpl() { // 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 index 7ea56a6..d3d038b 100644 --- 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 merge --sample %p/Inputs/sample-fs.proftext -profile-isfs -fs 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} -- 2.7.4