Обсуждение: 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.