extend.texi (Other Builtins): Add __builtin_is_constant_evaluated.
authorMartin Sebor <msebor@redhat.com>
Fri, 22 Feb 2019 18:38:36 +0000 (18:38 +0000)
committerMartin Sebor <msebor@gcc.gnu.org>
Fri, 22 Feb 2019 18:38:36 +0000 (11:38 -0700)
gcc/ChangeLog:

* doc/extend.texi (Other Builtins): Add
__builtin_is_constant_evaluated.

From-SVN: r269129

gcc/ChangeLog
gcc/doc/extend.texi

index 8d5698750aba961e166d68ac8ecf6706cd395b82..77e2e8316a42a3f69c2bdf34a842ad30e7eb6c2a 100644 (file)
@@ -1,3 +1,8 @@
+2019-02-22  Martin Sebor  <msebor@redhat.com>
+
+       * doc/extend.texi (Other Builtins): Add
+       __builtin_is_constant_evaluated.
+
 2019-02-22  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/87609
        sub<mode>3_compare1): Allow stack pointer for source register.
        * config/aarch64/predicates.md (aarch64_general_reg): New predicate.
 
+2019-02-22  Martin Sebor  <msebor@redhat.com>
+
+       PR tree-optimization/88993
+       PR tree-optimization/88853
+       * gimple-ssa-sprintf.c (sprintf_dom_walker::call_info::is_file_func):
+       New helper.
+       (sprintf_dom_walker::call_info::is_string_func): New helper.
+       (format_directive): Only issue "may exceed" 4095/INT_MAX warnings
+       for formatted string functions.
+       (sprintf_dom_walker::handle_gimple_call): Fix a typo in a comment.
+
 2019-02-22  Martin Sebor  <msebor@redhat.com>
 
        PR c/89425
index 545d8510f9df9d4b2ba729cf646633fbfde63720..d9c78a3b0d84ac6cfbe7ea8e95bcc840caa205a4 100644 (file)
@@ -12890,6 +12890,23 @@ built-in in this case, because it has no opportunity to perform
 optimization.
 @end deftypefn
 
+@deftypefn {Built-in Function} bool __builtin_is_constant_evaluated (void)
+The @code{__builtin_is_constant_evaluated} function is available only
+in C++.  The built-in is intended to be used by implementations of
+the @code{std::is_constant_evaluated} C++ function.  Programs should make
+use of the latter function rather than invoking the built-in directly.
+
+The main use case of the built-in is to determine whether a @code{constexpr}
+function is being called in a @code{constexpr} context.  A call to
+the function evaluates to a core constant expression with the value
+@code{true} if and only if it occurs within the evaluation of an expression
+or conversion that is manifestly constant-evaluated as defined in the C++
+standard.  Manifestly constant-evaluated contexts include constant-expressions,
+the conditions of @code{constexpr if} statements, constraint-expressions, and
+initializers of variables usable in constant expressions.   For more details
+refer to the latest revision of the C++ standard.
+@end deftypefn
+
 @deftypefn {Built-in Function} long __builtin_expect (long @var{exp}, long @var{c})
 @opindex fprofile-arcs
 You may use @code{__builtin_expect} to provide the compiler with