Skip to content

Commit

Permalink
Profile summary cleanup.
Browse files Browse the repository at this point in the history
Differential Revision: http://reviews.llvm.org/D18468

llvm-svn: 264619
  • Loading branch information
Easwaran Raman committed Mar 28, 2016
1 parent d9f6356 commit 8f6b9ef
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 29 deletions.
45 changes: 21 additions & 24 deletions llvm/include/llvm/ProfileData/ProfileCommon.h
Expand Up @@ -71,16 +71,21 @@ class ProfileSummary {
protected:
SummaryEntryVector DetailedSummary;
std::vector<uint32_t> DetailedSummaryCutoffs;
uint64_t TotalCount, MaxCount;
uint32_t NumCounts;
uint64_t TotalCount, MaxCount, MaxFunctionCount;
uint32_t NumCounts, NumFunctions;
ProfileSummary(Kind K, std::vector<uint32_t> Cutoffs)
: PSK(K), DetailedSummaryCutoffs(Cutoffs), TotalCount(0), MaxCount(0),
NumCounts(0) {}
ProfileSummary(Kind K) : PSK(K), TotalCount(0), MaxCount(0), NumCounts(0) {}
MaxFunctionCount(0), NumCounts(0), NumFunctions(0) {}
ProfileSummary(Kind K)
: PSK(K), TotalCount(0), MaxCount(0), MaxFunctionCount(0), NumCounts(0),
NumFunctions(0) {}
ProfileSummary(Kind K, SummaryEntryVector DetailedSummary,
uint64_t TotalCount, uint64_t MaxCount, uint32_t NumCounts)
uint64_t TotalCount, uint64_t MaxCount,
uint64_t MaxFunctionCount, uint32_t NumCounts,
uint32_t NumFunctions)
: PSK(K), DetailedSummary(DetailedSummary), TotalCount(TotalCount),
MaxCount(MaxCount), NumCounts(NumCounts) {}
MaxCount(MaxCount), MaxFunctionCount(MaxFunctionCount),
NumCounts(NumCounts), NumFunctions(NumFunctions) {}
~ProfileSummary() = default;
inline void addCount(uint64_t Count);
/// \brief Return metadata specific to the profile format.
Expand All @@ -105,11 +110,12 @@ class ProfileSummary {
Metadata *getMD(LLVMContext &Context);
/// \brief Construct profile summary from metdata.
static ProfileSummary *getFromMD(Metadata *MD);
uint32_t getNumFunctions() { return NumFunctions; }
uint64_t getMaxFunctionCount() { return MaxFunctionCount; }
};

class InstrProfSummary final : public ProfileSummary {
uint64_t MaxInternalBlockCount, MaxFunctionCount;
uint32_t NumFunctions;
uint64_t MaxInternalBlockCount;
inline void addEntryCount(uint64_t Count);
inline void addInternalCount(uint64_t Count);

Expand All @@ -118,53 +124,44 @@ class InstrProfSummary final : public ProfileSummary {

public:
InstrProfSummary(std::vector<uint32_t> Cutoffs)
: ProfileSummary(PSK_Instr, Cutoffs), MaxInternalBlockCount(0),
MaxFunctionCount(0), NumFunctions(0) {}
: ProfileSummary(PSK_Instr, Cutoffs), MaxInternalBlockCount(0) {}
InstrProfSummary(const IndexedInstrProf::Summary &S);
InstrProfSummary(uint64_t TotalCount, uint64_t MaxBlockCount,
uint64_t MaxInternalBlockCount, uint64_t MaxFunctionCount,
uint32_t NumBlocks, uint32_t NumFunctions,
SummaryEntryVector Summary)
: ProfileSummary(PSK_Instr, Summary, TotalCount, MaxBlockCount,
NumBlocks),
MaxInternalBlockCount(MaxInternalBlockCount),
MaxFunctionCount(MaxFunctionCount), NumFunctions(NumFunctions) {}
MaxFunctionCount, NumBlocks, NumFunctions),
MaxInternalBlockCount(MaxInternalBlockCount) {}
static bool classof(const ProfileSummary *PS) {
return PS->getKind() == PSK_Instr;
}
void addRecord(const InstrProfRecord &);
uint32_t getNumBlocks() { return NumCounts; }
uint64_t getTotalCount() { return TotalCount; }
uint32_t getNumFunctions() { return NumFunctions; }
uint64_t getMaxFunctionCount() { return MaxFunctionCount; }
uint64_t getMaxBlockCount() { return MaxCount; }
uint64_t getMaxInternalBlockCount() { return MaxInternalBlockCount; }
};

class SampleProfileSummary final : public ProfileSummary {
uint64_t MaxHeadSamples;
uint32_t NumFunctions;

protected:
std::vector<Metadata *> getFormatSpecificMD(LLVMContext &Context) override;

public:
uint32_t getNumLinesWithSamples() { return NumCounts; }
uint64_t getTotalSamples() { return TotalCount; }
uint32_t getNumFunctions() { return NumFunctions; }
uint64_t getMaxHeadSamples() { return MaxHeadSamples; }
uint64_t getMaxHeadSamples() { return MaxFunctionCount; }
uint64_t getMaxSamplesPerLine() { return MaxCount; }
void addRecord(const sampleprof::FunctionSamples &FS);
SampleProfileSummary(std::vector<uint32_t> Cutoffs)
: ProfileSummary(PSK_Sample, Cutoffs), MaxHeadSamples(0),
NumFunctions(0) {}
: ProfileSummary(PSK_Sample, Cutoffs) {}
SampleProfileSummary(uint64_t TotalSamples, uint64_t MaxSamplesPerLine,
uint64_t MaxHeadSamples, int32_t NumLinesWithSamples,
uint32_t NumFunctions,
SummaryEntryVector DetailedSummary)
: ProfileSummary(PSK_Sample, DetailedSummary, TotalSamples,
MaxSamplesPerLine, NumLinesWithSamples),
MaxHeadSamples(MaxHeadSamples), NumFunctions(NumFunctions) {}
MaxSamplesPerLine, MaxHeadSamples, NumLinesWithSamples,
NumFunctions) {}
static bool classof(const ProfileSummary *PS) {
return PS->getKind() == PSK_Sample;
}
Expand Down
11 changes: 6 additions & 5 deletions llvm/lib/ProfileData/ProfileSummary.cpp
Expand Up @@ -42,8 +42,8 @@ void InstrProfSummary::addRecord(const InstrProfRecord &R) {
// equivalent to a block with a count in the instrumented profile.
void SampleProfileSummary::addRecord(const sampleprof::FunctionSamples &FS) {
NumFunctions++;
if (FS.getHeadSamples() > MaxHeadSamples)
MaxHeadSamples = FS.getHeadSamples();
if (FS.getHeadSamples() > MaxFunctionCount)
MaxFunctionCount = FS.getHeadSamples();
for (const auto &I : FS.getBodySamples())
addCount(I.second.getSamples());
}
Expand Down Expand Up @@ -103,20 +103,21 @@ bool ProfileSummary::isFunctionUnlikely(const Function *F) {
InstrProfSummary::InstrProfSummary(const IndexedInstrProf::Summary &S)
: ProfileSummary(PSK_Instr),
MaxInternalBlockCount(
S.get(IndexedInstrProf::Summary::MaxInternalBlockCount)),
MaxFunctionCount(S.get(IndexedInstrProf::Summary::MaxFunctionCount)),
NumFunctions(S.get(IndexedInstrProf::Summary::TotalNumFunctions)) {
S.get(IndexedInstrProf::Summary::MaxInternalBlockCount)) {

TotalCount = S.get(IndexedInstrProf::Summary::TotalBlockCount);
MaxCount = S.get(IndexedInstrProf::Summary::MaxBlockCount);
MaxFunctionCount = S.get(IndexedInstrProf::Summary::MaxFunctionCount);
NumCounts = S.get(IndexedInstrProf::Summary::TotalNumBlocks);
NumFunctions = S.get(IndexedInstrProf::Summary::TotalNumFunctions);

for (unsigned I = 0; I < S.NumCutoffEntries; I++) {
const IndexedInstrProf::Summary::Entry &Ent = S.getEntry(I);
DetailedSummary.emplace_back((uint32_t)Ent.Cutoff, Ent.MinBlockCount,
Ent.NumBlocks);
}
}

void InstrProfSummary::addEntryCount(uint64_t Count) {
addCount(Count);
NumFunctions++;
Expand Down

0 comments on commit 8f6b9ef

Please sign in to comment.