From: Richard Smith Date: Fri, 9 Dec 2011 03:40:28 +0000 (+0000) Subject: Document the updated behaviour of __builtin_constant_p introduced in r146236. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8a0f15592b08cdcbeb9f0e9d5684bacdedfb6473;p=clang Document the updated behaviour of __builtin_constant_p introduced in r146236. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146241 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/docs/InternalsManual.html b/docs/InternalsManual.html index c22b1e8d91..46041c4711 100644 --- a/docs/InternalsManual.html +++ b/docs/InternalsManual.html @@ -1692,7 +1692,10 @@ interacts with constant evaluation:

any evaluatable subexpression to be accepted as an integer constant expression.
  • __builtin_constant_p: This returns true (as a integer - constant expression) if the operand is any evaluatable constant. As a + constant expression) if the operand evaluates to either a numeric value + (that is, not a pointer cast to integral type) of integral, enumeration, + floating or complex type, or if it evaluates to the address of the first + character of a string literal (possibly cast to some other type). As a special case, if __builtin_constant_p is the (potentially parenthesized) condition of a conditional operator expression ("?:"), only the true side of the conditional operator is considered, and it is evaluated @@ -1707,7 +1710,9 @@ interacts with constant evaluation:

    floating-point literal.
  • __builtin_abs,copysign,..: These are constant folded as general constant expressions.
  • -
  • __builtin_strlen and strlen: These are constant folded as integer constant expressions if the argument is a string literal.
  • +
  • __builtin_strlen and strlen: These are + constant folded as integer constant expressions if the argument is a string + literal.