[llvm-commits] patch: target option to disable tail calls

Eli Friedman eli.friedman at gmail.com
Wed Jan 18 15:25:28 PST 2012


On Wed, Jan 18, 2012 at 3:10 PM, Nick Lewycky <nlewycky at google.com> wrote:
> The attached patch adds a new "-no-tail-calls" flag to llc, and implements
> it in the x86 backend only. The intent is to support gcc's
> -fno-optimize-sibling-calls in clang, which as far as I can tell just
> disables tail calls period. The goal is to help ASAN produce correct stack
> traces, which requires disabling all tail calls.
>
> As an aside, there is a good reason to do this in the backend and not at the
> IR-level. The "tail" marker is used to indicate things that are useful to
> the optimizers themselves; for example alias analysis interprets the
> presence of a tail marker as proof that the callee can't access any alloca's
> in the caller, whether the pointer has been captured or not.

You're right that expressing this constraint with the tail marker
doesn't make sense; that said, why not a function attribute?

-Eli



More information about the llvm-commits mailing list