This warning is logically incorrect: logical '&&' with non-zero constant will always evaluate as true should say '... will have no effect'?
Reproduce with ============== /* run: gcc -v -save-temps -Wlogical-op -c xx.c */ #define FORCE 1 #define FLAG 1 static int func (int resp, int flags) { return (resp && (FORCE || (FLAG & flags))); } output ====== Using built-in specs. Target: i686-pc-linux-gnu Configured with: /usr/local/src/gcc/src/gcc-current/configure --srcdir=/usr/local/src/gcc/src/gcc-current --prefix=/usr/local/gcc-current --enable-languages=c,c++ --with-mpfr=/usr/local/mpfr --with-gmp=/usr/local/gmp Thread model: posix gcc version 4.3.0 20070518 (experimental) /data2/usr/local/gcc-current-20070519-083055/bin/../libexec/gcc/i686-pc-linux-gnu/4.3.0/cc1 -E -quiet -v -iprefix /data2/usr/local/gcc-current-20070519-083055/bin/../lib/gcc/i686-pc-linux-gnu/4.3.0/ xx.c -mtune=generic -Wlogical-op -fpch-preprocess -o xx.i ignoring nonexistent directory "/data2/usr/local/gcc-current-20070519-083055/bin/../lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../i686-pc-linux-gnu/include" ignoring duplicate directory "/data2/usr/local/gcc-current-20070519-083055/bin/../lib/gcc/../../lib/gcc/i686-pc-linux-gnu/4.3.0/include" ignoring duplicate directory "/data2/usr/local/gcc-current-20070519-083055/bin/../lib/gcc/../../lib/gcc/i686-pc-linux-gnu/4.3.0/include-fixed" ignoring nonexistent directory "/data2/usr/local/gcc-current-20070519-083055/bin/../lib/gcc/../../lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../i686-pc-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: /data2/usr/local/gcc-current-20070519-083055/bin/../lib/gcc/i686-pc-linux-gnu/4.3.0/include /data2/usr/local/gcc-current-20070519-083055/bin/../lib/gcc/i686-pc-linux-gnu/4.3.0/include-fixed /usr/local/include /data2/usr/local/gcc-current-20070519-083055/bin/../lib/gcc/../../include /usr/include End of search list. /data2/usr/local/gcc-current-20070519-083055/bin/../libexec/gcc/i686-pc-linux-gnu/4.3.0/cc1 -fpreprocessed xx.i -quiet -dumpbase xx.c -mtune=generic -auxbase xx -Wlogical-op -version -o xx.s GNU C version 4.3.0 20070518 (experimental) (i686-pc-linux-gnu) compiled by GNU C version 4.3.0 20070518 (experimental), GMP version 4.2.1, MPFR version 2.2.1. warning: GMP header version 4.2.1 differs from library version 4.1.4. GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 Compiler executable checksum: 128b6cbfc01a7daaa897672777a1e4cb xx.c: In function 'func': xx.c:7: warning: logical '&&' with non-zero constant will always evaluate as true as -V -Qy -o xx.o xx.s GNU assembler version 2.15 (i386-linux) using BFD version 2.15 -- Summary: wrong warning wording Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: eyal at eyal dot emu dot id dot au http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32061