[Bug c/45780] Warning for arithmetic operations involving C99 _Bool variable
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=45780 --- Comment #7 from Eric Gallager --- (In reply to Uroš Bizjak from comment #0) > > >> It can be done ultimately, but as a prerequisite, we should have > > >> warnings in -Wextra for all of > > >> > > >> ? boolvar++; ++boolvar; > > >> ? boolvar--; --boolvar; > > >> ? boolvar = nonbool; > > >> ? boolvar & nonbool; boolvar &= nonbool; > > >> ? boolvar | nonbool; boolvar |= nonbool; > > >> ? boolvar ^ nonbool; boolvar ^= nonbool; > > > > > > Fair enough. I have CCed Manuel, perhaps he is interested in this warning. > > > > I am not sure it fits in -Wconversion. -Wbool-arith perhaps? > I made a testcase that includes all of those: $ cat 45780.c #include #include static bool f1(int i) { return i; } static bool f2(int i) { i = !!i; return i; } int main(int argc, char **argv) { bool a = true; bool b = a++; bool c = ++b; bool d = argc; bool e = a & argc; bool f = b | argc; bool g = c ^ argc; f &= argc; g |= argc; e ^= argc; if (f1(argc)) e--; else --e; if (!!argc) return ((argv != NULL) ? d : ((f > g) ? e : (f << g))); else return f2(argc); } $ gcc's -Wbool-operation currently catches the increments and decrements, but none of the rest of the operations: $ /usr/local/bin/gcc -c -Wall -Wextra -Wbool-compare -Wint-in-bool-context -Wparentheses -pedantic -Wconversion 45780.c 45780.c: In function 'main': 45780.c:18:13: warning: increment of a boolean expression [-Wbool-operation] 18 | bool b = a++; | ^~ 45780.c:19:12: warning: increment of a boolean expression [-Wbool-operation] 19 | bool c = ++b; |^~ 45780.c:28:6: warning: decrement of a boolean expression [-Wbool-operation] 28 | e--; | ^~ 45780.c:30:5: warning: decrement of a boolean expression [-Wbool-operation] 30 | --e; | ^~ $
[Bug c/45780] Warning for arithmetic operations involving C99 _Bool variable
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=45780 Eric Gallager changed: What|Removed |Added CC||manu at gcc dot gnu.org --- Comment #6 from Eric Gallager --- (In reply to Uroš Bizjak from comment #0) > Pasted from the thread that introduced _Bool in place of "GCC bool": > > > > > >> It can be done ultimately, but as a prerequisite, we should have > > >> warnings in -Wextra for all of > > >> > > >> ? boolvar++; ++boolvar; > > >> ? boolvar--; --boolvar; > > >> ? boolvar = nonbool; > > >> ? boolvar & nonbool; boolvar &= nonbool; > > >> ? boolvar | nonbool; boolvar |= nonbool; > > >> ? boolvar ^ nonbool; boolvar ^= nonbool; > > > > > > Fair enough. I have CCed Manuel, perhaps he is interested in this warning. > > cc-ing him on this, too
[Bug c/45780] Warning for arithmetic operations involving C99 _Bool variable
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=45780 --- Comment #5 from Marek Polacek --- I think -Wbool-arith makes sense as a separate option. While -Wc90-c99-compat warns about any use of bool (in a declaration, cast, ...), -Wbool-arith would only warn about suspicious uses of boolean vars.
[Bug c/45780] Warning for arithmetic operations involving C99 _Bool variable
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=45780 --- Comment #4 from Eric Gallager --- (In reply to Marek Polacek from comment #3) > (In reply to Eric Gallager from comment #2) > > The -Wc90-c99-compat that made it into gcc5 currently warns about > > any usage of bool whatsoever, not just the specific usages of bool > > listed in this bug... > > Right, that was the point of it. ...so is this bug worth keeping open then? It'd seem kinda redundant to me for extra, more-specific warnings about bools to be placed in -Wc90-c99-compat (as was originally proposed), when the flag already prints the more-generalized warnings that it currently does. Or would they get their own separate -Wbool-arith option? If so, what would happen when a user specifies both a hypothetical -Wbool-arith flag along with -Wc90-c99-compat at the same time? I'm just kinda worried that such a situation could lead to duplicated and/or excessive warnings...
[Bug c/45780] Warning for arithmetic operations involving C99 _Bool variable
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=45780 Marek Polacek changed: What|Removed |Added CC||mpolacek at gcc dot gnu.org --- Comment #3 from Marek Polacek --- (In reply to Eric Gallager from comment #2) > The -Wc90-c99-compat that made it into gcc5 currently warns about any usage > of bool whatsoever, not just the specific usages of bool listed in this > bug... Right, that was the point of it.
[Bug c/45780] Warning for arithmetic operations involving C99 _Bool variable
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=45780 Eric Gallager changed: What|Removed |Added CC||egall at gwmail dot gwu.edu --- Comment #2 from Eric Gallager --- The -Wc90-c99-compat that made it into gcc5 currently warns about any usage of bool whatsoever, not just the specific usages of bool listed in this bug...
[Bug c/45780] Warning for arithmetic operations involving C99 _Bool variable
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45780 Eric Blake changed: What|Removed |Added CC||ericb at gcc dot gnu.org --- Comment #1 from Eric Blake 2010-11-03 20:05:00 UTC --- Don't forget a warning on implicit conversions from int to bool, such as: bool f(int i) { return i; } although it might make sense to avoid warnings on provably 0/1 int conversion to bool, as in: bool f(int i) { i = !!i; return i; }
[Bug c/45780] Warning for arithmetic operations involving C99 _Bool variable
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45780 Uros Bizjak changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2010.09.24 18:44:45 date|| Version|4.5.2 |unknown Ever Confirmed|0 |1 -- Configure bugmail: http://gcc.gnu.org/bugzilla/userprefs.cgi?tab=email --- You are receiving this mail because: --- You are on the CC list for the bug.