summaryrefslogtreecommitdiffstats
path: root/llvm/lib/ProfileData/SampleProfWriter.cpp
diff options
context:
space:
mode:
authorWei Mi <wmi@google.com>2019-08-31 02:27:26 +0000
committerWei Mi <wmi@google.com>2019-08-31 02:27:26 +0000
commit798e59b81fb7a92cd5f3b1bb0761283f99adcd46 (patch)
tree4d889c8c277676ff95bf9885a5a80ded011b3a07 /llvm/lib/ProfileData/SampleProfWriter.cpp
parent0377ca641c9af0262270d091578cab19523b1bc6 (diff)
downloadbcm5719-llvm-798e59b81fb7a92cd5f3b1bb0761283f99adcd46.tar.gz
bcm5719-llvm-798e59b81fb7a92cd5f3b1bb0761283f99adcd46.zip
[SampleFDO] Add profile symbol list section to discriminate function being
cold versus function being newly added. This is the second half of https://reviews.llvm.org/D66374. Profile symbol list is the collection of function symbols showing up in the binary which generates the current profile. It is used to discriminate function being cold versus function being newly added. Profile symbol list is only added for profile with ExtBinary format. During profile use compilation, when profile-sample-accurate is enabled, a function without profile will be regarded as cold only when it is contained in that list. Differential Revision: https://reviews.llvm.org/D66766 llvm-svn: 370563
Diffstat (limited to 'llvm/lib/ProfileData/SampleProfWriter.cpp')
-rw-r--r--llvm/lib/ProfileData/SampleProfWriter.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/llvm/lib/ProfileData/SampleProfWriter.cpp b/llvm/lib/ProfileData/SampleProfWriter.cpp
index 47f97de2a3b..068ce5bf959 100644
--- a/llvm/lib/ProfileData/SampleProfWriter.cpp
+++ b/llvm/lib/ProfileData/SampleProfWriter.cpp
@@ -121,7 +121,12 @@ std::error_code SampleProfileWriterExtBinary::writeSections(
if (std::error_code EC = writeFuncProfiles(ProfileMap))
return EC;
- addNewSection(SecLBRProfile, SectionStart);
+ SectionStart = addNewSection(SecLBRProfile, SectionStart);
+
+ if (ProfSymList && ProfSymList->size() > 0)
+ if (std::error_code EC = ProfSymList->write(*OutputStream))
+ return EC;
+ addNewSection(SecProfileSymbolList, SectionStart);
return sampleprof_error::success;
}
OpenPOWER on IntegriCloud