It seems selog tickles a live-code analysis bug in gcc. Here's a fairly minimal test case:
$ 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]