char *foo(char **x) { if(*x) return x[0]; return 0; } char *bar(void) { char *x, *y = 0; if(x) y = foo(&x); return y; } /usr/local/gcc-4.0.1/bin/gcc -Wall -O2 -Wuninitialized -c tg.c Give no warnings at all, even though x is used without initialization. bash-3.00$ /usr/local/gcc-4.0.1/bin/gcc -v Using built-in specs. Target: i686-pc-linux-gnu Configured with: ../gcc-4.0.1/configure --prefix=/usr/local/gcc-4.0.1 --with-gnu-ld=/usr/local/binutils-2.16.1/bin/ld --with-gnu-as=/usr/local/binutils-2.16.1/bin/as Thread model: posix gcc version 4.0.1 bash-3.00$ uname -a Linux black 2.6.13 #4 Mon Aug 29 12:35:27 KST 2005 i686 unknown unknown GNU/Linux Slackware current, built gcc 4.0 myself to check gcc 4.0 warnings in Wine.
Not this is hard to get right. Anyways, this is a dup of bug 19430. *** This bug has been marked as a duplicate of 19430 ***