[PATCH] D109098: [CSSPGO] Add stats for pre-inliner
Wenlei He via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 1 14:58:08 PDT 2021
wenlei created this revision.
wenlei added reviewers: hoy, wmi, wlei.
Herald added subscribers: modimo, lxfind, eraman.
wenlei requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
Add some stats to help tuning pre-inliner.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D109098
Files:
llvm/tools/llvm-profgen/CSPreInliner.cpp
Index: llvm/tools/llvm-profgen/CSPreInliner.cpp
===================================================================
--- llvm/tools/llvm-profgen/CSPreInliner.cpp
+++ llvm/tools/llvm-profgen/CSPreInliner.cpp
@@ -9,6 +9,7 @@
#include "CSPreInliner.h"
#include "ProfiledBinary.h"
#include "llvm/ADT/SCCIterator.h"
+#include "llvm/ADT/Statistic.h"
#include <cstdint>
#include <queue>
@@ -17,6 +18,18 @@
using namespace llvm;
using namespace sampleprof;
+STATISTIC(PreInlNumCSInlined,
+ "Number of functions inlined with context sensitive profile");
+STATISTIC(PreInlNumCSNotInlined,
+ "Number of functions not inlined with context sensitive profile");
+STATISTIC(PreInlNumCSInlinedHitMinLimit,
+ "Number of functions with FDO inline stopped due to min size limit");
+STATISTIC(PreInlNumCSInlinedHitMaxLimit,
+ "Number of functions with FDO inline stopped due to max size limit");
+STATISTIC(
+ PreInlNumCSInlinedHitGrowthLimit,
+ "Number of functions with FDO inline stopped due to growth size limit");
+
// The switches specify inline thresholds used in SampleProfileLoader inlining.
// TODO: the actual threshold to be tuned here because the size here is based
// on machine code not LLVM IR.
@@ -163,11 +176,14 @@
if ((ShouldInline = shouldInline(Candidate))) {
// We mark context as inlined as the corresponding context profile
// won't be merged into that function's base profile.
+ ++PreInlNumCSInlined;
ContextTracker.markContextSamplesInlined(Candidate.CalleeSamples);
Candidate.CalleeSamples->getContext().setAttribute(
ContextShouldBeInlined);
FuncFinalSize += Candidate.SizeCost;
getInlineCandidates(CQueue, Candidate.CalleeSamples);
+ } else {
+ ++PreInlNumCSNotInlined;
}
LLVM_DEBUG(dbgs() << (ShouldInline ? " Inlined" : " Outlined")
<< " context profile for: "
@@ -176,6 +192,15 @@
<< ", call count:" << Candidate.CallsiteCount << ")\n");
}
+ if (!CQueue.empty()) {
+ if (SizeLimit == (unsigned)ProfileInlineLimitMax)
+ ++PreInlNumCSInlinedHitMaxLimit;
+ else if (SizeLimit == (unsigned)ProfileInlineLimitMin)
+ ++PreInlNumCSInlinedHitMinLimit;
+ else
+ ++PreInlNumCSInlinedHitGrowthLimit;
+ }
+
LLVM_DEBUG({
if (!CQueue.empty())
dbgs() << " Inline candidates ignored due to size limit (inliner "
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D109098.370076.patch
Type: text/x-patch
Size: 2439 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210901/60e5839e/attachment.bin>
More information about the llvm-commits
mailing list