summaryrefslogtreecommitdiffstats
path: root/llvm/lib/ProfileData/ProfileSummaryBuilder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/ProfileData/ProfileSummaryBuilder.cpp')
-rw-r--r--llvm/lib/ProfileData/ProfileSummaryBuilder.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/ProfileData/ProfileSummaryBuilder.cpp b/llvm/lib/ProfileData/ProfileSummaryBuilder.cpp
index bbb640cfaee8..8ec26b0a0e65 100644
--- a/llvm/lib/ProfileData/ProfileSummaryBuilder.cpp
+++ b/llvm/lib/ProfileData/ProfileSummaryBuilder.cpp
@@ -110,7 +110,13 @@ void SampleProfileSummaryBuilder::addRecord(
NumFunctions++;
if (FS.getHeadSamples() > MaxFunctionCount)
MaxFunctionCount = FS.getHeadSamples();
+ } else if (FS.getContext().hasAttribute(
+ sampleprof::ContextDuplicatedIntoBase)) {
+ // Do not recount callee samples if they are already merged into their base
+ // profiles. This can happen to CS nested profile.
+ return;
}
+
for (const auto &I : FS.getBodySamples()) {
uint64_t Count = I.second.getSamples();
addCount(Count);