diff options
author | Wei Mi <wmi@google.com> | 2019-08-31 02:27:26 +0000 |
---|---|---|
committer | Wei Mi <wmi@google.com> | 2019-08-31 02:27:26 +0000 |
commit | 798e59b81fb7a92cd5f3b1bb0761283f99adcd46 (patch) | |
tree | 4d889c8c277676ff95bf9885a5a80ded011b3a07 /llvm/lib/ProfileData/SampleProfWriter.cpp | |
parent | 0377ca641c9af0262270d091578cab19523b1bc6 (diff) | |
download | bcm5719-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.cpp | 7 |
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; } |