This bug exists in various forms in multiple versions of gcc: $ cat gccbug.c
struct sel { const char *name; unsigned int enabled; }; int selog_on(struct sel *); #define selog_on(sel) \ (sel.enabled == 0 \ ? selog_on(&sel) \ : sel.enabled != 42) void dostuff(int *); void gccbug1(void) { struct sel sel = { "test", 0 }; if(selog_on(sel)) { dostuff(0); } } void gccbug2(void) { struct sel sel = { "test", 0 }; if(selog_on(sel)) { int i; dostuff(&i); } } $ gcc -O -Wunreachable-code -c gccbug.c gccbug.c: In function `gccbug2': gccbug.c:25: warning: will never be executed $ gcc --version gcc --version gcc (GCC) 3.4.4 [FreeBSD] 20050518 $ gcc -O -Wunreachable-code -c gccbug.c gccbug.c: In function âgccbug2â: gccbug.c:24: warning: will never be executed gccbug.c: In function âgccbug1â: gccbug.c:17: warning: will never be executed $ gcc -O -Werror -Wunreachable-code -c gccbug.c cc1: warnings being treated as errors gccbug.c: In function âgccbug2â: gccbug.c:24: warning: will never be executed $ gcc --version gcc (GCC) 4.1.2 20070115 (prerelease) (SUSE Linux) $ gcc -O -Wunreachable-code -c gccbug.c gccbug.c: In function 'gccbug2': gccbug.c:24: warning: will never be executed gccbug.c: In function 'gccbug1': gccbug.c:17: warning: will never be executed $ gcc -O -Werror -Wunreachable-code -c gccbug.c cc1: warnings being treated as errors gccbug.c: In function 'gccbug2': gccbug.c:24: warning: will never be executed $ gcc --version gcc (GCC) 4.2.1 20070719 [FreeBSD] -- Summary: Incorrect warning: will never be executed Product: gcc Version: 4.2.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: dot at dotat dot at GCC host triplet: i386-undermydesk-freebsd GCC target triplet: i386-undermydesk-freebsd http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35973