[PATCH] D98094: [CSSPGO] Always use callsite samples as callsite probe counts.
Hongtao Yu via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Mar 8 22:52:56 PST 2021
This revision was automatically updated to reflect the committed changes.
Closed by commit rG4c3d759d0019: [CSSPGO] Always use callsite samples as callsite probe counts. (authored by hoy).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D98094/new/
https://reviews.llvm.org/D98094
Files:
llvm/lib/Transforms/IPO/SampleProfile.cpp
Index: llvm/lib/Transforms/IPO/SampleProfile.cpp
===================================================================
--- llvm/lib/Transforms/IPO/SampleProfile.cpp
+++ llvm/lib/Transforms/IPO/SampleProfile.cpp
@@ -520,10 +520,12 @@
if (isa<BranchInst>(Inst) || isa<IntrinsicInst>(Inst) || isa<PHINode>(Inst))
return std::error_code();
- // If a direct call/invoke instruction is inlined in profile
- // (findCalleeFunctionSamples returns non-empty result), but not inlined here,
- // it means that the inlined callsite has no sample, thus the call
- // instruction should have 0 count.
+ // For non-CS profile, if a direct call/invoke instruction is inlined in
+ // profile (findCalleeFunctionSamples returns non-empty result), but not
+ // inlined here, it means that the inlined callsite has no sample, thus the
+ // call instruction should have 0 count.
+ // For CS profile, the callsite count of previously inlined callees is
+ // populated with the entry count of the callees.
if (!ProfileIsCS)
if (const auto *CB = dyn_cast<CallBase>(&Inst))
if (!CB->isIndirectCall() && findCalleeFunctionSamples(*CB))
@@ -548,13 +550,16 @@
if (!FS)
return std::error_code();
- // If a direct call/invoke instruction is inlined in profile
- // (findCalleeFunctionSamples returns non-empty result), but not inlined here,
- // it means that the inlined callsite has no sample, thus the call
- // instruction should have 0 count.
- if (const auto *CB = dyn_cast<CallBase>(&Inst))
- if (!CB->isIndirectCall() && findCalleeFunctionSamples(*CB))
- return 0;
+ // For non-CS profile, If a direct call/invoke instruction is inlined in
+ // profile (findCalleeFunctionSamples returns non-empty result), but not
+ // inlined here, it means that the inlined callsite has no sample, thus the
+ // call instruction should have 0 count.
+ // For CS profile, the callsite count of previously inlined callees is
+ // populated with the entry count of the callees.
+ if (!ProfileIsCS)
+ if (const auto *CB = dyn_cast<CallBase>(&Inst))
+ if (!CB->isIndirectCall() && findCalleeFunctionSamples(*CB))
+ return 0;
const ErrorOr<uint64_t> &R = FS->findSamplesAt(Probe->Id, 0);
if (R) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D98094.329219.patch
Type: text/x-patch
Size: 2241 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210309/736f1634/attachment.bin>
More information about the llvm-commits
mailing list