[PATCH] D152338: [BOLT] Handle recursive calls as inter-branches in DataAggregator
Amir Ayupov via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 6 22:11:28 PDT 2023
Amir created this revision.
Amir added a reviewer: bolt.
Herald added a reviewer: rafauler.
Herald added subscribers: treapster, ayermolo.
Herald added a reviewer: maksfb.
Herald added a project: All.
Amir requested review of this revision.
Herald added subscribers: llvm-commits, yota9.
Herald added a project: LLVM.
Align yaml and fdata profiles by applying the same treatment to recursive
calls (direct, indirect, tail). fdata profile increments entry count when
handling recursive calls. Make perf/pre-aggregated perf reader (DataAggregator)
do the same.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D152338
Files:
bolt/lib/Profile/DataAggregator.cpp
bolt/test/X86/Inputs/pre-aggregated.txt
bolt/test/X86/pre-aggregated-perf.test
Index: bolt/test/X86/pre-aggregated-perf.test
===================================================================
--- bolt/test/X86/pre-aggregated-perf.test
+++ bolt/test/X86/pre-aggregated-perf.test
@@ -43,6 +43,11 @@
PERF2BOLT: 1 usqrt 3d 1 usqrt 3f 0 22
PERF2BOLT: 1 usqrt a 1 usqrt 10 0 22
+NEWFORMAT: - name: 'frame_dummy/1'
+NEWFORMAT: fid: 3
+NEWFORMAT: hash: 0x24496F7F9594E89F
+NEWFORMAT: exec: 1
+
NEWFORMAT: - name: usqrt
NEWFORMAT: fid: 7
NEWFORMAT: exec: 0
Index: bolt/test/X86/Inputs/pre-aggregated.txt
===================================================================
--- bolt/test/X86/Inputs/pre-aggregated.txt
+++ bolt/test/X86/Inputs/pre-aggregated.txt
@@ -6,3 +6,4 @@
B 4011a0 4011a9 33 4
B 4011ad 401180 58 0
F 401170 4011b2 22
+B 400dae 400d90 1 0
Index: bolt/lib/Profile/DataAggregator.cpp
===================================================================
--- bolt/lib/Profile/DataAggregator.cpp
+++ bolt/lib/Profile/DataAggregator.cpp
@@ -777,7 +777,8 @@
if (!FromFunc && !ToFunc)
return false;
- if (FromFunc == ToFunc) {
+ // Treat recursive control transfers as inter-branches.
+ if (FromFunc == ToFunc && (To != ToFunc->getAddress())) {
recordBranch(*FromFunc, From - FromFunc->getAddress(),
To - FromFunc->getAddress(), Count, Mispreds);
return doIntraBranch(*FromFunc, From, To, Count, Mispreds);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D152338.529157.patch
Type: text/x-patch
Size: 1477 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230607/63f0800e/attachment.bin>
More information about the llvm-commits
mailing list