llvm-6502/test/Transforms/Inline
Chandler Carruth 274d377ea6 Extend the inline cost calculation to account for bonuses due to
correlated pairs of pointer arguments at the callsite. This is designed
to recognize the common C++ idiom of begin/end pointer pairs when the
end pointer is a constant offset from the begin pointer. With the
C-based idiom of a pointer and size, the inline cost saw the constant
size calculation, and this provides the same level of information for
begin/end pairs.

In order to propagate this information we have to search for candidate
operations on a pair of pointer function arguments (or derived from
them) which would be simplified if the pointers had a known constant
offset. Then the callsite analysis looks for such pointer pairs in the
argument list, and applies the appropriate bonus.

This helps LLVM detect that half of bounds-checked STL algorithms
(such as hash_combine_range, and some hybrid sort implementations)
disappear when inlined with a constant size input. However, it's not
a complete fix due the inaccuracy of our cost metric for constants in
general. I'm looking into that next.

Benchmarks showed no significant code size change, and very minor
performance changes. However, specific code such as hashing is showing
significantly cleaner inlining decisions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152752 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-14 23:19:53 +00:00
..
2003-09-14-InlineValue.ll Update to new EH scheme. 2011-09-01 01:08:21 +00:00
2003-09-22-PHINodeInlineFail.ll
2003-09-22-PHINodesInExceptionDest.ll Update to new EH scheme. 2011-09-01 01:08:21 +00:00
2003-09-22-PHINodesInNormalInvokeDest.ll
2003-10-13-AllocaDominanceProblem.ll
2004-04-15-InlineDeletesCall.ll Replace more uses of 'unwind' in the tests with calls to landingpad and 2011-09-19 22:11:35 +00:00
2004-04-20-InlineLinkOnce.ll
2004-10-17-InlineFunctionWithoutReturn.ll Replace more uses of 'unwind' in the tests with calls to landingpad and 2011-09-19 22:11:35 +00:00
2006-01-14-CallGraphUpdate.ll
2006-07-12-InlinePruneCGUpdate.ll
2006-11-09-InlineCGUpdate-2.ll Replace more uses of 'unwind' in the tests with calls to landingpad and 2011-09-19 22:11:35 +00:00
2006-11-09-InlineCGUpdate.ll Replace more uses of 'unwind' in the tests with calls to landingpad and 2011-09-19 22:11:35 +00:00
2007-04-15-InlineEH.ll Update to new EH scheme. 2011-09-01 01:08:21 +00:00
2007-06-06-NoInline.ll
2007-06-25-WeakInline.ll
2007-12-19-InlineNoUnwind.ll Try to eliminate the use of the 'unwind' instruction. 2011-09-02 22:41:11 +00:00
2008-09-02-AlwaysInline.ll
2008-09-02-NoInline.ll
2008-10-30-AlwaysInline.ll
2008-11-04-AlwaysInline.ll
2009-01-08-NoInlineDynamicAlloca.ll
2009-01-13-RecursiveInlineCrash.ll
2009-05-07-CallUsingSelfCrash.ll
2010-05-12-ValueMap.ll
2010-05-31-ByvalTailcall.ll
alloca_test.ll
alloca-bonus.ll Undo a previous restriction on the inline cost calculation which Nick 2012-03-09 02:49:36 +00:00
alloca-in-scc.ll
always_inline_dyn_alloca.ll
array_merge.ll Commit test change, forgotten as part of r131838. 2011-05-22 05:31:47 +00:00
basictest.ll relax testcase a bit. 2011-01-14 07:46:33 +00:00
blockaddress.ll Remap blockaddress correctly when inlining a function. Fixes PR10162. 2011-10-21 20:45:19 +00:00
byval.ll when eliding a byval copy due to inlining a readonly function, we have 2010-12-20 08:10:40 +00:00
callgraph-update.ll Update to new EH scheme. 2011-09-01 01:08:21 +00:00
casts.ll
cfg_preserve_test.ll
crash2.ll
crash.ll Update to new EH scheme. 2011-09-01 01:08:21 +00:00
delete-call.ll
devirtualize-2.ll
devirtualize-3.ll
devirtualize.ll
dynamic_alloca_test.ll
externally_available.ll
gvn-inline-iteration.ll
inline_cleanup.ll
inline_constprop.ll When inlining a function and adding its inner call sites to the 2012-03-12 11:19:33 +00:00
inline_dce.ll
inline_invoke.ll Update to new EH scheme. 2011-09-02 01:25:11 +00:00
inline_prune.ll
inline_returns_twice.ll Allow inlining of functions with returns_twice calls, if they have the 2011-12-18 20:35:43 +00:00
inline-invoke-tail.ll Remove all references to the old EH. 2012-01-31 02:09:07 +00:00
inline-tail.ll
invoke_test-1.ll Update to new EH scheme. 2011-09-01 01:08:21 +00:00
invoke_test-2.ll Update to new EH scheme. 2011-09-01 01:08:21 +00:00
invoke_test-3.ll Update to new EH scheme. 2011-09-01 01:08:21 +00:00
lifetime.ll Teach the inliner to emit llvm.lifetime.start/end, to scope the local variables 2011-05-22 05:22:10 +00:00
lit.local.cfg Replace all instances of dg.exp file with lit.local.cfg, since all tests are run with LIT now and now Dejagnu. dg.exp is no longer needed. 2012-02-16 06:28:33 +00:00
nested-inline.ll
noinline-recursive-fn.ll Upgrade syntax of tests using volatile instructions to use 'load volatile' instead of 'volatile load', which is archaic. 2011-11-27 06:54:59 +00:00
noinline.ll
PR4909.ll
ptr-diff.ll Extend the inline cost calculation to account for bonuses due to 2012-03-14 23:19:53 +00:00