[llvm-dev] Discussion on the function "bool llvm::isInTailCallPosition()"

Johannes Doerfert via llvm-dev llvm-dev at lists.llvm.org
Fri May 15 21:40:32 PDT 2020


The conditional seems to have been there for a long time 
(450aa64fc1878b55f0715c8672c59dac2e312beb).

Though, it seems odd we say `speculatable` calls are automatically in a 
tail position. They can also not always be moved to one.

I would not be surprised if all tests pass if you remove the outer 
conditional, especially since we do not yet derive speculatable.


Maybe someone more active in this area can chime in.


Cheers,

   Johannes



On 5/15/20 9:06 PM, Victor Huang via llvm-dev wrote:
> 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
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200515/2fa5e86b/attachment.html>


More information about the llvm-dev mailing list