[PATCH] Teach InlineCost to account for a null check which can be folded away

Philip Reames listmail at philipreames.com
Mon Apr 20 14:45:53 PDT 2015


Hi chandlerc, nlewycky,

If we have a caller that knows a particular argument can never be null, we can exploit this fact while simplifying values in the inline cost analysis.  This has the effect of reducing the cost for inlining when a null check is present in the callee, but the value is known non null in the caller.  In particular, any dependent control flow can be discounted from the cost estimate.

Note that this is only adjusting the inline cost analysis.  As separate changes, I'm going to add support for propagating the null attribute to the call site.  An alternate approach would be the have the inline cost analysis ask a ValueTracking question about the caller's formal argument.  Separating this into two pieces using the already existing nonnull attribute seemed preferable.  

Does anyone think I need to teach InlineFunction to exploit the attribute in the same way?  Or are we willing to assume this will happen correctly after inlining?

http://reviews.llvm.org/D9129

Files:
  lib/Analysis/IPA/InlineCost.cpp
  test/Transforms/Inline/nonnull.ll

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D9129.24065.patch
Type: text/x-patch
Size: 4563 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150420/359b7261/attachment.bin>


More information about the llvm-commits mailing list