[PATCH] D16381: Infrastructure to allow use of PGO in inliner

Easwaran Raman via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 3 16:21:28 PST 2016

eraman marked 4 inline comments as done.
eraman added a comment.

In http://reviews.llvm.org/D16381#342401, @davidxl wrote:

> Please also add a test case that covers proper profile update with always inline as intended for the refactoring.

Done. I have added the alwaysinline attribute to the callee in the first test case and have run it with -always-inline alone.

Comment at: include/llvm/Analysis/InlineCost.h:152
@@ -132,1 +151,3 @@
+/// \brief Return estimated count of the block \p BB.
+Optional<uint64_t> getBlockCount(BasicBlock *BB, BlockFrequencyAnalysis *BFA);
davidxl wrote:
> I suggest making this a member method of BFA. Also provide a wrapper method -- this will be the primary API used by other clients for callsite hotness:
> Optional<uint64_t> getCallsiteCount(CallSite CS);
I agree that this needs to be moved somewhere else, but I am not convinced BFA is that place. In the other profile refactoring patch, I have created a ProfileCommon.h. Perhaps that is a good place for profile related urility methods like this?

Comment at: test/Transforms/Inline/function-count-update.ll:20
@@ +19,3 @@
+define i32 @caller(i32 %n) !prof !2 {
+  %i = call i32 @callee(i32 %n)
+  %j = call i32 @callee(i32 %i)
davidxl wrote:
> Can you make these two calls in a block that is not the entry block?
That does not matter for the purposes of this test case. 


More information about the llvm-commits mailing list