Thread: add -Wlogical-op to standard compiler options?
I think it might be worth adding -Wlogical-op to the standard warning options (for supported compilers, determined by configure test). `-Wlogical-op' Warn about suspicious uses of logical operators in expressions. This includes using logical operatorsin contexts where a bit-wise operator is likely to be expected. In addition to what it says there, it appears to warn about illogical combinations of < and >. I have been using it locally for a while without problems. We have already found a couple of bugs this way.
Peter Eisentraut <peter_e@gmx.net> writes: > I think it might be worth adding -Wlogical-op to the standard warning > options (for supported compilers, determined by configure test). Does that add any new warnings with the current source code, and if so what? regards, tom lane
On 11/15/12 9:40 AM, Tom Lane wrote: > Peter Eisentraut <peter_e@gmx.net> writes: >> I think it might be worth adding -Wlogical-op to the standard warning >> options (for supported compilers, determined by configure test). > > Does that add any new warnings with the current source code, and if > so what? none
Peter Eisentraut <peter_e@gmx.net> writes: > On 11/15/12 9:40 AM, Tom Lane wrote: >> Peter Eisentraut <peter_e@gmx.net> writes: >>> I think it might be worth adding -Wlogical-op to the standard warning >>> options (for supported compilers, determined by configure test). >> Does that add any new warnings with the current source code, and if >> so what? > none No objection from me then. regards, tom lane
On Thu, Nov 15, 2012 at 1:46 PM, Peter Eisentraut <peter_e@gmx.net> wrote: > On 11/15/12 9:40 AM, Tom Lane wrote: >> Peter Eisentraut <peter_e@gmx.net> writes: >>> I think it might be worth adding -Wlogical-op to the standard warning >>> options (for supported compilers, determined by configure test). >> >> Does that add any new warnings with the current source code, and if >> so what? > > none Using gcc (GCC) 4.4.6 20120305 (Red Hat 4.4.6-4), I get dozens of warnings, all apparently coming from somewhere in the MemSet macro. example: pl_handler.c:301: warning: logical '&&' with non-zero constant will always evaluate as true Probably has something to do with: /* \ * If MEMSET_LOOP_LIMIT == 0, optimizer should find \ * the whole "if" false at compile time. \ */ \ MEMSET_LOOP_LIMIT != 0) \ Cheers, Jeff
On Wed, 2012-11-21 at 11:46 -0800, Jeff Janes wrote: > Using gcc (GCC) 4.4.6 20120305 (Red Hat 4.4.6-4), I get dozens of > warnings, all apparently coming from somewhere in the MemSet macro. OK, reverted. It looks like they dialed it down to a more useful volume in GCC 4.5, but that doesn't really help us.