@@ -27890,7 +27890,8 @@ Predefined Macros,cpp,The GNU C Preprocessor}).
each needed template instantiation is emitted.
* Bound member functions:: You can extract a function pointer to the
method denoted by a @samp{->*} or @samp{.*} expression.
-* C++ Attributes:: Variable, function, and type attributes for C++ only.
+* C++ Attributes:: Variable, function, statement, and type attributes
+ for C++ only.
* Function Multiversioning:: Declaring multiple function versions.
* Type Traits:: Compiler support for type traits.
* C++ Concepts:: Improved support for generic programming.
@@ -28458,6 +28459,22 @@ precedence and the @code{hot} attribute is not propagated.
For the effects of the @code{hot} attribute on functions, see
@ref{Common Function Attributes}.
+@cindex @code{musttail} statement attribute
+@item musttail
+
+The @code{gnu::musttail} or @code{clang::hottail} attribute
+can be applied to a return statement that returns the value
+of a call to indicate that the call must be a tail call
+that does not allocate extra stack space.
+
+@smallexample
+[[gnu::musttail]] return foo();
+@end smallexample
+
+If the compiler cannot generate a tail call it will generate
+an error. Tail calls generally require enabling optimization.
+On some targets they may not be supported.
+
@end table
@node Function Multiversioning