Do not want to use BFI to get profile count for sample pgo
Summary: For SamplePGO, we already record the callsite count in the call instruction itself. So we do not want to use BFI to get profile count as it is less accurate.
Reviewers: tejohnson, davidxl, eraman
Reviewed By: eraman
Subscribers: sanjoy, llvm-commits, mehdi_amini
Differential Revision: https://reviews.llvm.org/D36025
llvm-svn: 309964
diff --git a/llvm/unittests/Analysis/ProfileSummaryInfoTest.cpp b/llvm/unittests/Analysis/ProfileSummaryInfoTest.cpp
index 68a6d7b..76b0744 100644
--- a/llvm/unittests/Analysis/ProfileSummaryInfoTest.cpp
+++ b/llvm/unittests/Analysis/ProfileSummaryInfoTest.cpp
@@ -196,14 +196,18 @@
CallSite CS1(BB1->getFirstNonPHI());
auto *CI2 = BB2->getFirstNonPHI();
+ // Manually attach branch weights metadata to the call instruction.
+ SmallVector<uint32_t, 1> Weights;
+ Weights.push_back(1000);
+ MDBuilder MDB(M->getContext());
+ CI2->setMetadata(LLVMContext::MD_prof, MDB.createBranchWeights(Weights));
CallSite CS2(CI2);
- EXPECT_TRUE(PSI.isHotCallSite(CS1, &BFI));
- EXPECT_FALSE(PSI.isHotCallSite(CS2, &BFI));
+ EXPECT_FALSE(PSI.isHotCallSite(CS1, &BFI));
+ EXPECT_TRUE(PSI.isHotCallSite(CS2, &BFI));
// Test that CS2 is considered hot when it gets an MD_prof metadata with
// weights that exceed the hot count threshold.
- MDBuilder MDB(M->getContext());
CI2->setMetadata(llvm::LLVMContext::MD_prof, MDB.createBranchWeights({400}));
EXPECT_TRUE(PSI.isHotCallSite(CS2, &BFI));
}