[llvm-dev] Noncapture use of locals disabling TailRecursionElimination

Xun Li via llvm-dev llvm-dev at lists.llvm.org
Fri May 8 13:34:02 PDT 2020


Hi,

I was looking into the implementation of TailRecursionElimination, and
noticed that we have the constrain that if any call uses a local, even
though it doesn't capture the local, it would still prohibit TCE. This
contain seems unnecessary and overly limiting? Relevant code is here:
https://github.com/llvm/llvm-project/blob/cbe77ca9bd05393b1df1abf016b01f44d1d10a49/llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp#L275

Looking through the tests that cover this scenario
(https://github.com/llvm/llvm-project/blob/e29874eaa04d24b8c67776bf5729474d671a58f6/llvm/test/Transforms/TailCallElim/basic.ll#L66),
I found it referring to rdar://14324281 and PR962. What are they?
These haven't been updated since 2014, so I wonder what is the latest
state and have them been resolved?

cc nicholas who authored the original code.

Thanks!

-- 
Xun


More information about the llvm-dev mailing list