From 16a919a7162aa5dc92c0834ad4eef8b7f878a7ae Mon Sep 17 00:00:00 2001 From: Martin Sebor Date: Fri, 22 Feb 2019 18:38:36 +0000 Subject: [PATCH] extend.texi (Other Builtins): Add __builtin_is_constant_evaluated. gcc/ChangeLog: * doc/extend.texi (Other Builtins): Add __builtin_is_constant_evaluated. From-SVN: r269129 --- gcc/ChangeLog | 16 ++++++++++++++++ gcc/doc/extend.texi | 17 +++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8d5698750aba..77e2e8316a42 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2019-02-22 Martin Sebor + + * doc/extend.texi (Other Builtins): Add + __builtin_is_constant_evaluated. + 2019-02-22 Richard Biener PR tree-optimization/87609 @@ -26,6 +31,17 @@ sub3_compare1): Allow stack pointer for source register. * config/aarch64/predicates.md (aarch64_general_reg): New predicate. +2019-02-22 Martin Sebor + + 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 PR c/89425 diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 545d8510f9df..d9c78a3b0d84 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -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 -- 2.39.2