[PATCH] D124632: [CSSPGO] Turn on priority inlining for probe-only profile
Wenlei He via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 28 23:29:55 PDT 2022
wenlei added inline comments.
================
Comment at: llvm/lib/Transforms/IPO/SampleProfile.cpp:2030
+ if (!UsePreInlinerDecision.getNumOccurrences())
+ UsePreInlinerDecision = true;
+ } else if (!Reader->profileIsCS()) {
----------------
hoy wrote:
> wenlei wrote:
> > Actually when we use preinline decision should we also ignore size limits? We don't have to do it here, but perhaps something worth trying.
> >
> > When preinliner is well tuned, I think size limit only makes sense if we have flat cs profile without preinline.
> I think with preinline decision, the size limits are actually ignored:
>
> https://github.com/llvm/llvm-project/blob/fc7573f29c79a4bbcfc0d6d001b7c7ae9f1344c7/llvm/lib/Transforms/IPO/SampleProfile.cpp#L1396
The code you linked (shouldInlineCandidate) is about how we evaluate a candidate, but when size limit is hit, we stop evaluating new candidate: https://github.com/llvm/llvm-project/blob/fc7573f29c79a4bbcfc0d6d001b7c7ae9f1344c7/llvm/lib/Transforms/IPO/SampleProfile.cpp#L1451
================
Comment at: llvm/lib/Transforms/IPO/SampleProfile.cpp:2043
+ if (FunctionSamples::ProfileIsCS) {
+ ProfileIsCS = Reader->profileIsCS();
+ // Tracker for profiles under different context
----------------
hoy wrote:
> wenlei wrote:
> > Is it actually possible that FunctionSamples::ProfileIsCS is true but Reader->profileIsCS() is false?
> I don't think so. They are defined by same value in the reader:
>
> https://github.com/llvm/llvm-project/blob/d3e5f0ab01c6b885082a1e12a7dfe5e55d340e52/llvm/lib/ProfileData/SampleProfReader.cpp#L367
>
> https://github.com/llvm/llvm-project/blob/d3e5f0ab01c6b885082a1e12a7dfe5e55d340e52/llvm/lib/ProfileData/SampleProfReader.cpp#L657
>
> Actually I think the `ProfileIsCS` field should be removed, and instead using FunctionSamples::ProfileIsCS everywhere. I can make a separate diff to clean this up.
If it's not possible, we can do
```ProfileIsCS = true;```
instead of
```ProfileIsCS = Reader->profileIsCS();```
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D124632/new/
https://reviews.llvm.org/D124632
More information about the llvm-commits
mailing list