[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