re PR c/80409 (Document that va_arg(ap, void*) can be used to consume any pointer...
authorSandra Loosemore <sandra@codesourcery.com>
Tue, 26 Feb 2019 02:33:26 +0000 (21:33 -0500)
committerSandra Loosemore <sandra@gcc.gnu.org>
Tue, 26 Feb 2019 02:33:26 +0000 (21:33 -0500)
2019-02-25  Sandra Loosemore  <sandra@codesourcery.com>

PR c/80409

gcc/
* doc/extend.texi (Variadic Pointer Args): New section.

From-SVN: r269203

gcc/ChangeLog
gcc/doc/extend.texi

index b146480f84dc74452a37e5fd4c8262a8917a9372..94505990bcc1fbd328b3583b03cca23d9b0163c4 100644 (file)
@@ -1,3 +1,9 @@
+2019-02-25  Sandra Loosemore  <sandra@codesourcery.com>
+
+       PR c/80409
+
+       * doc/extend.texi (Variadic Pointer Args): New section.
+
 2019-02-25  Sandra Loosemore  <sandra@codesourcery.com>
            Martin Sebor  <msebor@gmail.com>
 
index d9c78a3b0d84ac6cfbe7ea8e95bcc840caa205a4..696d892cfecee75e3a3b32ca4104ea04a93341ba 100644 (file)
@@ -47,6 +47,7 @@ extensions, accepted by GCC in C90 mode and in C++.
 * Escaped Newlines::    Slightly looser rules for escaped newlines.
 * Subscripting::        Any array can be subscripted, even if not an lvalue.
 * Pointer Arith::       Arithmetic on @code{void}-pointers and function pointers.
+* Variadic Pointer Args::  Pointer arguments to variadic functions.
 * Pointers to Arrays::  Pointers to arrays with qualifiers work as expected.
 * Initializers::        Non-constant initializers.
 * Compound Literals::   Compound literals give structures, unions
@@ -1944,6 +1945,22 @@ and on function types, and returns 1.
 The option @option{-Wpointer-arith} requests a warning if these extensions
 are used.
 
+@node Variadic Pointer Args
+@section Pointer Arguments in Variadic Functions
+@cindex pointer arguments in variadic functions
+@cindex variadic functions, pointer arguments
+
+Standard C requires that pointer types used with @code{va_arg} in
+functions with variable argument lists either must be compatible with
+that of the actual argument, or that one type must be a pointer to
+@code{void} and the other a pointer to a character type.  GNU C
+implements the POSIX XSI extension that additionally permits the use
+of @code{va_arg} with a pointer type to receive arguments of any other
+pointer type.
+
+In particular, in GNU C @samp{va_arg (ap, void *)} can safely be used
+to consume an argument of any pointer type.
+
 @node Pointers to Arrays
 @section Pointers to Arrays with Qualifiers Work as Expected
 @cindex pointers to arrays