llvm/test/Transforms/TailCallElim
Sanjoy Das daf21289b6 Avoid tail recursion elimination across calls with operand bundles
Summary:
In some specific scenarios with well understood operand bundle types
(like `"deopt"`) it may be possible to go ahead and convert recursion to
iteration, but TailRecursionElimination does not have that logic today
so avoid doing the right thing for now.

I need some input on whether `"funclet"` operand bundles should also
block tail recursion elimination.  If not, I'll allow TRE across calls
with `"funclet"` operand bundles and add a test case.

Reviewers: rnk, majnemer, nlewycky, ahatanak

Subscribers: mcrosier, llvm-commits

Differential Revision: https://reviews.llvm.org/D26270

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286147 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-07 21:01:49 +00:00
..
2010-06-26-MultipleReturnValues.ll
accum_recursion.ll [PM] Port TailCallElim 2016-07-06 23:48:41 +00:00
ackermann.ll
basic.ll [OperandBundles] Have TailCallElim play nice with operand bundles 2015-12-23 09:58:43 +00:00
deopt-bundle.ll Avoid tail recursion elimination across calls with operand bundles 2016-11-07 21:01:49 +00:00
dont_reorder_load.ll Push isDereferenceableAndAlignedPointer down into isSafeToLoadUnconditionally 2016-01-17 12:35:29 +00:00
dup_tail.ll
EraseBB.ll Fix tail recursion elimination 2014-11-19 13:32:51 +00:00
inf-recursion.ll TRE: Just erase dead BBs and tweak the iteration loop not to increment the deleted BB iterator. 2015-02-28 16:47:27 +00:00
notail.ll Add 'notail' marker for call instructions. 2015-11-06 23:55:38 +00:00
reorder_load.ll Push isDereferenceableAndAlignedPointer down into isSafeToLoadUnconditionally 2016-01-17 12:35:29 +00:00
setjmp.ll