aboutsummaryrefslogtreecommitdiffstats
path: root/test/Transforms/Inline/2009-01-13-RecursiveInlineCrash.ll
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2012-03-14 23:19:53 +0000
committerChandler Carruth <chandlerc@gmail.com>2012-03-14 23:19:53 +0000
commit274d377ea68195989c3238fe96ce2ca812a12faf (patch)
treee9a23eb0299a10c12754432f23d2cc04ac536d2b /test/Transforms/Inline/2009-01-13-RecursiveInlineCrash.ll
parent8b11fdd8bb78840937ceebdfe44397dd8d2697fd (diff)
downloadexternal_llvm-274d377ea68195989c3238fe96ce2ca812a12faf.zip
external_llvm-274d377ea68195989c3238fe96ce2ca812a12faf.tar.gz
external_llvm-274d377ea68195989c3238fe96ce2ca812a12faf.tar.bz2
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
Diffstat (limited to 'test/Transforms/Inline/2009-01-13-RecursiveInlineCrash.ll')
0 files changed, 0 insertions, 0 deletions