Following emits a warning about potential use of uninitialized variable, even though the variable initialization and it's use are guarded by the same predicate. int f (void); int g (int a) { int b; if (a) b = f (); asm volatile ("#"); if (a) return b; return 1; } $ gcc -O -Wuninitialized -c repro.c repro.c: In function 'g': repro.c:5: warning: 'b' may be used uninitialized in this function This happens with gcc 4.3.0 and 4.3.1
*** This bug has been marked as a duplicate of 36550 ***