From deda33cdbdae0c4c68860e71bd940320cd227819 Mon Sep 17 00:00:00 2001 From: Xinliang David Li Date: Tue, 20 Sep 2016 21:04:22 +0000 Subject: [PATCH] [Profile] dump ic value profile value/site-count histogram Differential Revision: http://reviews.google.com/D24783 llvm-svn: 282017 --- llvm/test/tools/llvm-profdata/value-prof.proftext | 3 +++ llvm/tools/llvm-profdata/llvm-profdata.cpp | 12 +++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/llvm/test/tools/llvm-profdata/value-prof.proftext b/llvm/test/tools/llvm-profdata/value-prof.proftext index 75a745664499..b5979c842498 100644 --- a/llvm/test/tools/llvm-profdata/value-prof.proftext +++ b/llvm/test/tools/llvm-profdata/value-prof.proftext @@ -66,4 +66,7 @@ foo2:20000 #ICSUM: Total Number of Indirect Call Sites : 3 #ICSUM: Total Number of Sites With Values : 2 #ICSUM: Total Number of Profiled Values : 3 +#ICSUM: NumTargets, SiteCount +#ICSUM 1, 1 +#ICSUM 2, 1 diff --git a/llvm/tools/llvm-profdata/llvm-profdata.cpp b/llvm/tools/llvm-profdata/llvm-profdata.cpp index d5c05daf9b68..059c4dc79c86 100644 --- a/llvm/tools/llvm-profdata/llvm-profdata.cpp +++ b/llvm/tools/llvm-profdata/llvm-profdata.cpp @@ -463,6 +463,7 @@ static int showInstrProfile(const std::string &Filename, bool ShowCounts, uint64_t TotalNumValueSites = 0; uint64_t TotalNumValueSitesWithValueProfile = 0; uint64_t TotalNumValues = 0; + std::vector ICHistogram; for (const auto &Func : *Reader) { bool Show = ShowAllFunctions || (!ShowFunction.empty() && @@ -515,8 +516,12 @@ static int showInstrProfile(const std::string &Filename, bool ShowCounts, std::unique_ptr VD = Func.getValueForSite(IPVK_IndirectCallTarget, I); TotalNumValues += NV; - if (NV) + if (NV) { TotalNumValueSitesWithValueProfile++; + if (NV > ICHistogram.size()) + ICHistogram.resize(NV, 0); + ICHistogram[NV - 1]++; + } for (uint32_t V = 0; V < NV; V++) { OS << "\t[ " << I << ", "; OS << Symtab.getFuncName(VD[V].Value) << ", " << VD[V].Count @@ -543,6 +548,11 @@ static int showInstrProfile(const std::string &Filename, bool ShowCounts, OS << "Total Number of Sites With Values : " << TotalNumValueSitesWithValueProfile << "\n"; OS << "Total Number of Profiled Values : " << TotalNumValues << "\n"; + + OS << "IC Value histogram : \n\tNumTargets, SiteCount\n"; + for (unsigned I = 0; I < ICHistogram.size(); I++) { + OS << "\t" << I + 1 << ", " << ICHistogram[I] << "\n"; + } } if (ShowDetailedSummary) {