[llvm-dev] Another tail call optimization question
Haoran Xu via llvm-dev
llvm-dev at lists.llvm.org
Sat Oct 3 02:02:53 PDT 2020
Hello,
Could anyone kindly explain to me why the 'g()' in the following function
cannot have tail call optimization?
> void f(int* x);
> void g();
> void h(int v) {
> f(&v);
> g();
> }
>
A while ago I was taught that tail call optimization cannot apply if local
variables needs to be kept alive, but 'g()' doesn't seem to require
anything to be alive on the stack.
I tried to manually add 'tail' to the emitted LLVM IR and it appears to
work.
Any idea how I could fix this and let clang automatically generate tail
call?
Thanks!
Best,
Haoran
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20201003/35e23c06/attachment.html>
More information about the llvm-dev
mailing list