[llvm-dev] Discussion on the function "bool llvm::isInTailCallPosition()"
Victor Huang via llvm-dev
llvm-dev at lists.llvm.org
Fri May 15 19:06:12 PDT 2020
Hi All,
We are encountering an issue where "bool llvm::isInTailCallPosition()" returns
true for a callee not in a tail call position.
The function "bool llvm::isInTailCallPosition()" (
https://pastebin.com/fMxAsh95) only checks whether a call is in a tail call
position if the call has side effects, accesses memory or is not safe to
speculatively execute. Therefore, a “speculatable” function will always be
considered in a tail-call position - regardless of whether it actually is.
A small example as below:
IR reproducer https://pastebin.com/eZwVxr2K produces a tail call in caller
without storing the result, which can be seen in the initial SDAG shared
below:
https://pastebin.com/SnyKHeZT
Any ideas or suggestions?
Thanks,
Victor
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200515/9e9a52b7/attachment.html>
More information about the llvm-dev
mailing list