mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
[ProfileSummary] Add options to override hot and cold count thresholds.
Summary: The hot and cold count thresholds are derived from the summary, but for debugging purposes it is convenient to provide the actual thresholds. Reviewers: davidxl Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D54040 llvm-svn: 346005
This commit is contained in:
parent
f0e0bc3bbf
commit
7ebd53f3b7
@ -51,6 +51,18 @@ static cl::opt<unsigned> ProfileSummaryHugeWorkingSetSizeThreshold(
|
||||
" blocks required to reach the -profile-summary-cutoff-hot"
|
||||
" percentile exceeds this count."));
|
||||
|
||||
// The next two options override the counts derived from summary computation and
|
||||
// are useful for debugging purposes.
|
||||
static cl::opt<int> ProfileSummaryHotCount(
|
||||
"profile-summary-hot-count", cl::ReallyHidden, cl::ZeroOrMore,
|
||||
cl::desc("A fixed hot count that overrides the count derived from"
|
||||
" profile-summary-cutoff-hot"));
|
||||
|
||||
static cl::opt<int> ProfileSummaryColdCount(
|
||||
"profile-summary-cold-count", cl::ReallyHidden, cl::ZeroOrMore,
|
||||
cl::desc("A fixed cold count that overrides the count derived from"
|
||||
" profile-summary-cutoff-cold"));
|
||||
|
||||
// Find the summary entry for a desired percentile of counts.
|
||||
static const ProfileSummaryEntry &getEntryForPercentile(SummaryEntryVector &DS,
|
||||
uint64_t Percentile) {
|
||||
@ -198,9 +210,15 @@ void ProfileSummaryInfo::computeThresholds() {
|
||||
auto &HotEntry =
|
||||
getEntryForPercentile(DetailedSummary, ProfileSummaryCutoffHot);
|
||||
HotCountThreshold = HotEntry.MinCount;
|
||||
if (ProfileSummaryHotCount.getNumOccurrences() > 0)
|
||||
HotCountThreshold = ProfileSummaryHotCount;
|
||||
auto &ColdEntry =
|
||||
getEntryForPercentile(DetailedSummary, ProfileSummaryCutoffCold);
|
||||
ColdCountThreshold = ColdEntry.MinCount;
|
||||
if (ProfileSummaryColdCount.getNumOccurrences() > 0)
|
||||
ColdCountThreshold = ProfileSummaryColdCount;
|
||||
assert(ColdCountThreshold <= HotCountThreshold &&
|
||||
"Cold count threshold cannot exceed hot count threshold!");
|
||||
HasHugeWorkingSetSize =
|
||||
HotEntry.NumCounts > ProfileSummaryHugeWorkingSetSizeThreshold;
|
||||
}
|
||||
|
@ -1,19 +1,31 @@
|
||||
; RUN: opt < %s -disable-output -passes=print-profile-summary -S 2>&1 | FileCheck %s
|
||||
; RUN: opt < %s -disable-output -profile-summary-hot-count=500 -passes=print-profile-summary -S 2>&1 | FileCheck %s -check-prefixes=OVERRIDE-HOT
|
||||
; RUN: opt < %s -disable-output -profile-summary-cold-count=0 -passes=print-profile-summary -S 2>&1 | FileCheck %s -check-prefixes=OVERRIDE-COLD
|
||||
; RUN: opt < %s -disable-output -profile-summary-cold-count=200 -profile-summary-hot-count=1000 -passes=print-profile-summary -S 2>&1 | FileCheck %s -check-prefixes=OVERRIDE-BOTH
|
||||
|
||||
define void @f1() !prof !20 {
|
||||
; CHECK-LABEL: f1 :hot
|
||||
; OVERRIDE-HOT-LABEL: f1
|
||||
; OVERRIDE-COLD-LABEL: f1 :hot
|
||||
; OVERRIDE-BOTH-LABEL: f1
|
||||
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @f2() !prof !21 {
|
||||
; CHECK-LABEL: f2 :cold
|
||||
; OVERRIDE-HOT-LABEL: f2 :cold
|
||||
; OVERRIDE-COLD-LABEL: f2
|
||||
; OVERRIDE-BOTH-LABEL: f2
|
||||
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @f3() !prof !22 {
|
||||
; CHECK-LABEL: f3
|
||||
; OVERRIDE-HOT-LABEL: f3
|
||||
; OVERRIDE-COLD-LABEL: f3
|
||||
; OVERRIDE-BOTH-LABEL: f3
|
||||
|
||||
ret void
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user