Attempting to pass a pointer to a va_list variable to a function expecting such a pointer causes a warning about passing a pointer of incompatible type.
[EMAIL PROTECTED] ~/work/ffdev $ gcc -v -save-temps -ansi -pedantic -Wall -W -O -c t.c Reading specs from /usr/lib/gcc/powerpc-unknown-linux-gnu/3.4.5/specs Configured with: /var/tmp/portage/gcc-3.4.5-r1/work/gcc-3.4.5/configure --prefix=/usr --bindir=/usr/powerpc-unknown-linux-gnu/gcc-bin/3.4.5 --includedir=/usr/lib/gcc/powerpc-unknown-linux -gnu/3.4.5/include --datadir=/usr/share/gcc-data/powerpc-unknown-linux-gnu/3.4.5 --mandir=/usr/share/gcc-data/powerpc-unknown-linux-gnu/3.4.5/man --infodir=/usr/share/gcc-data/powerpc-unk nown-linux-gnu/3.4.5/info --with-gxx-include-dir=/usr/lib/gcc/powerpc-unknown-linux-gnu/3.4.5/include/g++-v3 --host=powerpc-unknown-linux-gnu --build=powerpc-unknown-linux-gnu --disable-a ltivec --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --disable-libunwind-exceptions --disable-multilib --enable-languages=c,c++,java,f77 - -enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu Thread model: posix gcc version 3.4.5 (Gentoo 3.4.5-r1, ssp-3.4.5-1.0, pie-8.7.9) /usr/libexec/gcc/powerpc-unknown-linux-gnu/3.4.5/cc1 -E -quiet -v -D__unix__ -D__gnu_linux__ -D__linux__ -Asystem=linux -Asystem=unix -Asystem=posix t.c -ansi -pedantic -Wall -W -O -o t. i ignoring nonexistent directory "/usr/local/include" ignoring nonexistent directory "/usr/lib/gcc/powerpc-unknown-linux-gnu/3.4.5/../../../../powerpc-unknown-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: /usr/lib/gcc/powerpc-unknown-linux-gnu/3.4.5/include /usr/include End of search list. /usr/libexec/gcc/powerpc-unknown-linux-gnu/3.4.5/cc1 -fpreprocessed t.i -quiet -dumpbase t.c -ansi -auxbase t -O -pedantic -Wall -W -ansi -version -o t.s GNU C version 3.4.5 (Gentoo 3.4.5-r1, ssp-3.4.5-1.0, pie-8.7.9) (powerpc-unknown-linux-gnu) compiled by GNU C version 3.4.4 (Gentoo 3.4.4-r1, ssp-3.4.4-1.0, pie-8.7.8). GGC heuristics: --param ggc-min-expand=64 --param ggc-min-heapsize=64407 t.c:3: warning: unused parameter 'arg' t.c: In function `bar': t.c:9: warning: passing arg 1 of `foo' from incompatible pointer type /usr/lib/gcc/powerpc-unknown-linux-gnu/3.4.5/../../../../powerpc-unknown-linux-gnu/bin/as -mppc -many -V -Qy -o t.o t.s GNU assembler version 2.16.1 (powerpc-unknown-linux-gnu) using BFD version 2.16.1 [EMAIL PROTECTED] ~/work/ffdev $ cat t.i # 1 "t.c" # 1 "<built-in>" # 1 "<command line>" # 1 "t.c" # 1 "/usr/lib/gcc/powerpc-unknown-linux-gnu/3.4.5/include/stdarg.h" 1 3 4 # 43 "/usr/lib/gcc/powerpc-unknown-linux-gnu/3.4.5/include/stdarg.h" 3 4 typedef __builtin_va_list __gnuc_va_list; # 105 "/usr/lib/gcc/powerpc-unknown-linux-gnu/3.4.5/include/stdarg.h" 3 4 typedef __gnuc_va_list va_list; # 2 "t.c" 2 void foo(va_list *arg) { } void bar(va_list arg) { foo(&arg); } [EMAIL PROTECTED] ~/work/ffdev $ gcc -v Reading specs from /usr/lib/gcc/powerpc-unknown-linux-gnu/3.4.5/specs Configured with: /var/tmp/portage/gcc-3.4.5-r1/work/gcc-3.4.5/configure --prefix=/usr --bindir=/usr/powerpc-unknown-linux-gnu/gcc-bin/3.4.5 --includedir=/usr/lib/gcc/powerpc-unknown-linux-gnu/3.4.5/include --datadir=/usr/share/gcc-data/powerpc-unknown-linux-gnu/3.4.5 --mandir=/usr/share/gcc-data/powerpc-unknown-linux-gnu/3.4.5/man --infodir=/usr/share/gcc-data/powerpc-unknown-linux-gnu/3.4.5/info --with-gxx-include-dir=/usr/lib/gcc/powerpc-unknown-linux-gnu/3.4.5/include/g++-v3 --host=powerpc-unknown-linux-gnu --build=powerpc-unknown-linux-gnu --disable-altivec --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --disable-libunwind-exceptions --disable-multilib --enable-languages=c,c++,java,f77 --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu Thread model: posix gcc version 3.4.5 (Gentoo 3.4.5-r1, ssp-3.4.5-1.0, pie-8.7.9) [EMAIL PROTECTED] ~/work/ffdev $ The warning about the unused variable is expected. The real code (much more complex) from which this was cut down used the variable and still generated the warning about incompatible pointer type. The standard says that vl_list should be an object type, and others on the news group comp.lang.c agree that my code is valid. See thread http://groups.google.com/group/comp.lang.c/browse_frm/thread/e64d6ffd19ab7ae3/faf78d3f5fb3acfe?lnk=st&q=group%3Acomp.lang.c+insubject%3Ava_list&rnum=1&hl=en#faf78d3f5fb3acfe -- Summary: Warning on passing pointer to va_list Product: gcc Version: 3.4.5 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: gcc at flash-gordon dot me dot uk GCC build triplet: powerpc-unknown-linux-gnu GCC host triplet: powerpc-unknown-linux-gnu GCC target triplet: powerpc-unknown-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27534