Andi Kleen <a...@linux.intel.com> writes:
> This patch implements a clang compatible [[musttail]] attribute for > returns. This is PR83324. See also PR52067 and PR110899. > > musttail is useful as an alternative to computed goto for interpreters. > With computed goto the interpreter function usually ends up very big > which causes problems with register allocation and other per function > optimizations not scaling. With musttail the interpreter can be instead > written as a sequence of smaller functions that call each other. To > avoid unbounded stack growth this requires forcing a sibling call, which > this attribute does. It guarantees an error if the call cannot be tail > called which allows the programmer to fix it instead of risking a stack > overflow. Unlike computed goto it is also type-safe. > Yeah, CPython is going to require this for its new JIT. > The attribute is only supported for C++, since the C-parser > has no support for statement attributes for non empty statements. > It could be added there with __attribute__ too but would need > some minor grammar adjustments. ... although it'll need C there.