Document that attribute noreturn inhibits tail call optimization
authorFlorian Weimer <fweimer@redhat.com>
Fri, 21 Sep 2018 19:49:36 +0000 (21:49 +0200)
committerFlorian Weimer <fw@gcc.gnu.org>
Fri, 21 Sep 2018 19:49:36 +0000 (21:49 +0200)
PR middle-end/81035
* doc/extend.texi (Common Function Attributes): Mention that
noreturn suppresses tail call optimization.

From-SVN: r264490

gcc/ChangeLog
gcc/doc/extend.texi

index 667ecca4ed0c32cacd27c1d4865c4f9331dcc564..3129eae5c2b57eff67e8a682d2b3ada8f983ed77 100644 (file)
@@ -1,3 +1,9 @@
+2018-09-21  Florian Weimer  <fweimer@redhat.com>
+
+       PR middle-end/81035
+       * doc/extend.texi (Common Function Attributes): Mention that
+       noreturn suppresses tail call optimization.
+
 2018-09-21  David Malcolm  <dmalcolm@redhat.com>
 
        PR tree-optimization/87309
index 4b606c007d89055c0f1858e229cf589cf74881f4..7a696556c359c5438219260f6fbbab582fea3d59 100644 (file)
@@ -3157,6 +3157,9 @@ The @code{noreturn} keyword does not affect the exceptional path when that
 applies: a @code{noreturn}-marked function may still return to the caller
 by throwing an exception or calling @code{longjmp}.
 
+In order to preserve backtraces, GCC will never turn calls to
+@code{noreturn} functions into tail calls.
+
 Do not assume that registers saved by the calling function are
 restored before calling the @code{noreturn} function.