Displaying 3 results from an estimated 3 matches for "funcrecurse".
2020 May 08
1
Noncapture use of locals disabling TailRecursionElimination
...https://openradar.appspot.com/ .
Nick
> Specifically, I have been looking into an issue where Clang cannot TCE
> the following code:
>
> class Foo {
> public:
> __attribute__((noinline))
> ~Foo() {}
> };
>
> void callee() {
> Foo f;
> }
>
> void funcRecurse() {
> callee();
> funcRecurse();
> }
>
> int main() {
> funcRecurse();
> }
>
> In the above code, callee will be inlined into funcRecurse, generating
> calls to ~Foo() along with lifetime management intrinsics, all using
> locals, disabling TCE. Clang can s...
2020 May 08
1
Noncapture use of locals disabling TailRecursionElimination
On 2020-05-08 1:34 p.m., Xun Li wrote:
> 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?
I think it's a necessary limitation. The idea is that
2020 May 08
3
Noncapture use of locals disabling TailRecursionElimination
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: