[PATCH] D114284: [llvm-profgen] Truncate the context with zero probe ID
Lei Wang via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Nov 19 15:11:03 PST 2021
wlei updated this revision to Diff 388640.
wlei added a comment.
Updating D114284 <https://reviews.llvm.org/D114284>: [llvm-profgen] Truncate the context with zero probe ID
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D114284/new/
https://reviews.llvm.org/D114284
Files:
llvm/tools/llvm-profgen/ProfileGenerator.cpp
llvm/tools/llvm-profgen/ProfiledBinary.h
Index: llvm/tools/llvm-profgen/ProfiledBinary.h
===================================================================
--- llvm/tools/llvm-profgen/ProfiledBinary.h
+++ llvm/tools/llvm-profgen/ProfiledBinary.h
@@ -454,7 +454,13 @@
SmallVector<MCPseduoProbeFrameLocation, 16> ProbeInlineContext;
ProbeDecoder.getInlineContextForProbe(Probe, ProbeInlineContext,
IncludeLeaf);
- for (auto &Callsite : ProbeInlineContext) {
+ for (uint32_t I = 0; I < ProbeInlineContext.size(); I++) {
+ auto &Callsite = ProbeInlineContext[I];
+ // Ignore the context if the probe of the callsite is zero.
+ if(Callsite.second == 0 && I != ProbeInlineContext.size() - 1) {
+ InlineContextStack.clear();
+ continue;
+ }
InlineContextStack.emplace_back(Callsite.first,
LineLocation(Callsite.second, 0));
}
Index: llvm/tools/llvm-profgen/ProfileGenerator.cpp
===================================================================
--- llvm/tools/llvm-profgen/ProfileGenerator.cpp
+++ llvm/tools/llvm-profgen/ProfileGenerator.cpp
@@ -760,12 +760,12 @@
FunctionProfile.addHeadSamples(Count);
// Look up for the caller's function profile
const auto *InlinerDesc = Binary->getInlinerDescForProbe(Probe);
- if (InlinerDesc != nullptr) {
+ SampleContextFrames CalleeContextId =
+ FunctionProfile.getContext().getContextFrames();
+ if (InlinerDesc != nullptr && CalleeContextId.size() > 1) {
// Since the context id will be compressed, we have to use callee's
// context id to infer caller's context id to ensure they share the
// same context prefix.
- SampleContextFrames CalleeContextId =
- FunctionProfile.getContext().getContextFrames();
SampleContextFrameVector CallerContextId;
SampleContextFrame &&CallerLeafFrameLoc =
getCallerContext(CalleeContextId, CallerContextId);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D114284.388640.patch
Type: text/x-patch
Size: 2005 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20211119/3cddf6f2/attachment.bin>
More information about the llvm-commits
mailing list