[PATCH] D153797: [CSSPGO][Preinliner] Bump up the threshold to favor previous compiler inline decision.
Hongtao Yu via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 26 17:09:28 PDT 2023
hoy updated this revision to Diff 534791.
hoy added a comment.
Updating D153797 <https://reviews.llvm.org/D153797>: [CSSPGO][Preinliner] Bump up the threshold to favor previous compiler inline decision.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D153797/new/
https://reviews.llvm.org/D153797
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
@@ -57,6 +57,12 @@
cl::desc(
"Replay previous inlining and adjust context profile accordingly"));
+static cl::opt<int> CSPreinlMultiplierForPrevInl(
+ "csspgo-preinliner-multiplier-for-previous-inlining", cl::Hidden,
+ cl::init(100),
+ cl::desc(
+ "Multiplier to bump up callsite threshold for previous inlining."));
+
CSPreInliner::CSPreInliner(SampleContextTracker &Tracker,
ProfiledBinary &Binary, ProfileSummary *Summary)
: UseContextCost(UseContextCostForPreInliner),
@@ -153,11 +159,12 @@
}
bool CSPreInliner::shouldInline(ProfiledInlineCandidate &Candidate) {
+ bool WasInlined =
+ Candidate.CalleeSamples->getContext().hasAttribute(ContextWasInlined);
// If replay inline is requested, simply follow the inline decision of the
// profiled binary.
if (SamplePreInlineReplay)
- return Candidate.CalleeSamples->getContext().hasAttribute(
- ContextWasInlined);
+ return WasInlined;
unsigned int SampleThreshold = SampleColdCallSiteThreshold;
uint64_t ColdCountThreshold = ProfileSummaryBuilder::getColdCountThreshold(
@@ -184,6 +191,12 @@
// want any inlining for cold callsites.
SampleThreshold = SampleHotCallSiteThreshold * NormalizedHotness * 100 +
SampleColdCallSiteThreshold + 1;
+ // Bump up the threshold to favor previous compiler inline decision. The
+ // compiler has more insight and knowledge about functions based on their IR
+ // and attribures and should be able to make a more reasonable inline
+ // decision.
+ if (WasInlined)
+ SampleThreshold *= CSPreinlMultiplierForPrevInl;
}
return (Candidate.SizeCost < SampleThreshold);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D153797.534791.patch
Type: text/x-patch
Size: 1922 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230627/1e1f9b0a/attachment.bin>
More information about the llvm-commits
mailing list