diff options
Diffstat (limited to 'llvm/lib/ProfileData/ProfileSummaryBuilder.cpp')
-rw-r--r-- | llvm/lib/ProfileData/ProfileSummaryBuilder.cpp | 6 |
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); |