This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c/43772] Errant -Wlogical-op warning when testing limits
- From: "eggert at gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sat, 28 Apr 2012 22:40:27 +0000
- Subject: [Bug c/43772] Errant -Wlogical-op warning when testing limits
- Auto-submitted: auto-generated
- References: <bug-43772-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43772
--- Comment #20 from eggert at gnu dot org 2012-04-28 22:40:27 UTC ---
(In reply to comment #19)
> > intmax_t i = (whatever);
> > if (INT_MAX < i && i <= LONG_MAX)
> Have you actually seen that?
No, I just now invented that example. It was based on experience I've
had in using macros like those in gnulib's intprops.h
<http://git.savannah.gnu.org/cgit/gnulib.git/tree/lib/intprops.h>
though none of those macros actually have that particular code.
>I would imagine the following to be more common:
>if(i<=INT_MAX)
> print("i is in 'int'");
>else if(i<=LONG_MAX)
Yes, intprops.h already has written code that way (instead of using &&)
in order to avoid a somewhat-similar bug in the Sun C compiler.
There's a comment to that effect in intprops.h.
> we are not talking of having this warning by default,
> this is an isolated warning not even included in -Wall -Wextra.
We can always disable -Wlogical-op when compiling
any code that has the problem. It's not a big deal,
though it is an annoyance that will prevent people from benefiting
from -Wlogical-op. I'm afraid I don't have any magic answers here.