[PATCH] D110859: [llvm-profgen] Support symbol list for accurate profile
Lei Wang via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 5 23:09:46 PDT 2021
wlei updated this revision to Diff 377438.
wlei added a comment.
made it off for CS profile.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D110859/new/
https://reviews.llvm.org/D110859
Files:
llvm/test/tools/llvm-profgen/inline-cs-noprobe.test
llvm/test/tools/llvm-profgen/inline-noprobe2.test
llvm/tools/llvm-profgen/ProfileGenerator.cpp
Index: llvm/tools/llvm-profgen/ProfileGenerator.cpp
===================================================================
--- llvm/tools/llvm-profgen/ProfileGenerator.cpp
+++ llvm/tools/llvm-profgen/ProfileGenerator.cpp
@@ -32,6 +32,10 @@
cl::desc("Use md5 to represent function names in the output profile (only "
"meaningful for -extbinary)"));
+static cl::opt<bool> PopulateProfileSymbolList(
+ "populate-profile-symbol-list", cl::init(true), cl::Hidden,
+ cl::desc("Populate profile symbol list (only meaningful for -extbinary)"));
+
static cl::opt<int32_t, true> RecursionCompression(
"compress-recursion",
cl::desc("Compressing recursion by deduplicating adjacent frame "
@@ -90,6 +94,22 @@
void ProfileGeneratorBase::write(std::unique_ptr<SampleProfileWriter> Writer,
SampleProfileMap &ProfileMap) {
+ // Populate profile symbol list if extended binary format is used.
+ ProfileSymbolList SymbolList;
+
+ // Turn it off temporarily for CS profile.
+ if (FunctionSamples::ProfileIsCS &&
+ !PopulateProfileSymbolList.getNumOccurrences())
+ PopulateProfileSymbolList = false;
+
+ if (PopulateProfileSymbolList && OutputFormat == SPF_Ext_Binary) {
+ for (const auto &Item : ProfileMap) {
+ auto &Profile = Item.second;
+ SymbolList.add(Profile.getName(), true);
+ }
+ Writer->setProfileSymbolList(&SymbolList);
+ }
+
if (std::error_code EC = Writer->write(ProfileMap))
exitWithError(std::move(EC));
}
Index: llvm/test/tools/llvm-profgen/inline-noprobe2.test
===================================================================
--- llvm/test/tools/llvm-profgen/inline-noprobe2.test
+++ llvm/test/tools/llvm-profgen/inline-noprobe2.test
@@ -2,6 +2,15 @@
; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/inline-noprobe2.perfscript --binary=%S/Inputs/inline-noprobe2.perfbin --output=%t
; RUN: FileCheck %s --input-file %t --check-prefix=CHECK
+; RUN: llvm-profgen --format=extbinary --perfscript=%S/Inputs/inline-noprobe2.perfscript --binary=%S/Inputs/inline-noprobe2.perfbin --output=%t
+; RUN: llvm-profdata show -show-prof-sym-list -sample %t | FileCheck %s --check-prefix=CHECK-SYM-LIST
+
+; CHECK-SYM-LIST: Dump profile symbol list
+; CHECK-SYM-LIST: main
+; CHECK-SYM-LIST: partition_pivot_first
+; CHECK-SYM-LIST: partition_pivot_last
+; CHECK-SYM-LIST: quick_sort
+
;CHECK: partition_pivot_first:1045:5
;CHECK-NEXT: 0: 5
;CHECK-NEXT: 1: 5
Index: llvm/test/tools/llvm-profgen/inline-cs-noprobe.test
===================================================================
--- llvm/test/tools/llvm-profgen/inline-cs-noprobe.test
+++ llvm/test/tools/llvm-profgen/inline-cs-noprobe.test
@@ -5,6 +5,13 @@
; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/inline-cs-noprobe.perfscript --binary=%S/Inputs/inline-cs-noprobe.perfbin --output=%t --profile-summary-cold-count=0 --ignore-stack-samples
; RUN: FileCheck %s --input-file %t --check-prefix=CHECK-STRIP-CTX
+; RUN: llvm-profgen --format=extbinary --perfscript=%S/Inputs/inline-cs-noprobe.perfscript --binary=%S/Inputs/inline-cs-noprobe.perfbin --output=%t --profile-summary-cold-count=0 --populate-profile-symbol-list=1
+; RUN: llvm-profdata show -show-prof-sym-list -sample %t | FileCheck %s --check-prefix=CHECK-SYM-LIST
+
+; CHECK-SYM-LIST: Dump profile symbol list
+; CHECK-SYM-LIST: bar
+; CHECK-SYM-LIST: foo
+
; CHECK:[main:1 @ foo]:225:0
; CHECK: 2.1: 14
; CHECK: 3: 15
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D110859.377438.patch
Type: text/x-patch
Size: 3482 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20211006/ef4f9f61/attachment.bin>
More information about the llvm-commits
mailing list