[PATCH] D12923: Add support for function attribute "notail"
Akira Hatanaka via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 21 18:22:26 PDT 2015
Several users have been asking for this function attribute to prevent
losing the calling functions's information in the backtrace. If we attach
the attribute to a function, ideally we would want to prevent tail call
optimization on all call sites that call the function. However, the
compiler cannot always tell which function is called from a call site if
it's an indirect call, so it's fine if an indirect call to the marked
function ends up being tail-call optimized. For direct calls, we want the
function attribute to prevent tail call 100% of the time.
We can also use a "notail" marker on the call instruction instead of using
a function attribute. The only downside of using a marker is that we
probably will never be able to prevent tail call optimization on indirect
calls even when the compiler can turn it into a direct call (for example,
via inlining). I'm not sure at the moment how important this is.
On Thu, Sep 17, 2015 at 9:47 AM, Philip Reames via llvm-commits <
llvm-commits at lists.llvm.org> wrote:
> Can you give a bit of background on what you're trying to address here?
> After reading through the discussion and seeing that this is a best effort
> flag, I'm not sure that a function attribute is the best way to describe
> this. I'm open to being convinced it is, but I'd like to hear a bit more
> about the use case and get broader visibility on the proposal first.
> On 09/16/2015 07:27 PM, Akira Hatanaka via llvm-commits wrote:
> ahatanak created this revision.
> ahatanak added a subscriber: llvm-commits.
> This patch adds support for a new IR function attribute "notail". The attribute is used to disable tail call optimization on calls to functions marked with the attribute.
> This attribute is different from the existing attribute "disable-tail-calls", which disables tail call optimizations on all call sites within the marked function.
> The patch to add support for the corresponding source-level function attribute is here:http://reviews.llvm.org/D12922
> llvm-commits mailing listllvm-commits at lists.llvm.orghttp://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-commits