forked from OSchip/llvm-project
[SamplePGO] Add switch to honor zero count on block level as accurate
Add a new LLVM switch `-profile-sample-block-accurate` to trust zero block counts for branches. Currently we leave out such zero counts when annotating branch weight metadata, which would lead to weights being considered as unknown. Differential Revision: https://reviews.llvm.org/D110117
This commit is contained in:
parent
f8b1cc3657
commit
5f187f0afa
|
@ -143,6 +143,12 @@ static cl::opt<bool> ProfileSampleAccurate(
|
|||
"callsite and function as having 0 samples. Otherwise, treat "
|
||||
"un-sampled callsites and functions conservatively as unknown. "));
|
||||
|
||||
static cl::opt<bool> ProfileSampleBlockAccurate(
|
||||
"profile-sample-block-accurate", cl::Hidden, cl::init(false),
|
||||
cl::desc("If the sample profile is accurate, we will mark all un-sampled "
|
||||
"branches and calls as having 0 samples. Otherwise, treat "
|
||||
"them conservatively as unknown. "));
|
||||
|
||||
static cl::opt<bool> ProfileAccurateForSymsInList(
|
||||
"profile-accurate-for-symsinlist", cl::Hidden, cl::ZeroOrMore,
|
||||
cl::init(true),
|
||||
|
@ -1529,7 +1535,7 @@ void SampleProfileLoader::generateMDProfMetadata(Function &F) {
|
|||
{static_cast<uint32_t>(BlockWeights[BB])}));
|
||||
}
|
||||
}
|
||||
} else if (OverwriteExistingWeights) {
|
||||
} else if (OverwriteExistingWeights || ProfileSampleBlockAccurate) {
|
||||
// Set profile metadata (possibly annotated by LTO prelink) to zero or
|
||||
// clear it for cold code.
|
||||
for (auto &I : BB->getInstList()) {
|
||||
|
|
Loading…
Reference in New Issue