diff options
Diffstat (limited to 'llvm/lib/ProfileData/SampleProf.cpp')
-rw-r--r-- | llvm/lib/ProfileData/SampleProf.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/llvm/lib/ProfileData/SampleProf.cpp b/llvm/lib/ProfileData/SampleProf.cpp index 9b01a386a360..5e11df6b6aad 100644 --- a/llvm/lib/ProfileData/SampleProf.cpp +++ b/llvm/lib/ProfileData/SampleProf.cpp @@ -531,8 +531,14 @@ void CSProfileConverter::convertProfiles(CSProfileConverter::FrameNode &Node) { // thus done optionally. It is seen that duplicating context profiles into // base profiles improves the code quality for thinlto build by allowing a // profile in the prelink phase for to-be-fully-inlined functions. - if (!NodeProfile || GenerateMergedBaseProfiles) + if (!NodeProfile) { ProfileMap[ChildProfile->getContext()].merge(*ChildProfile); + } else if (GenerateMergedBaseProfiles) { + ProfileMap[ChildProfile->getContext()].merge(*ChildProfile); + auto &SamplesMap = NodeProfile->functionSamplesAt(ChildNode.CallSiteLoc); + SamplesMap[ChildProfile->getName().str()].getContext().setAttribute( + ContextDuplicatedIntoBase); + } // Contexts coming with a `ContextShouldBeInlined` attribute indicate this // is a preinliner-computed profile. |