[Bug c/45780] Warning for arithmetic operations involving C99 _Bool variable

2019-06-14 Thread egallager at gcc dot gnu.org
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

2018-09-14 Thread egallager at gcc dot gnu.org
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

2015-06-09 Thread mpolacek at gcc dot gnu.org
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

2015-05-28 Thread egall at gwmail dot gwu.edu
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

2015-05-28 Thread mpolacek at gcc dot gnu.org
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

2015-05-28 Thread egall at gwmail dot gwu.edu
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

2010-11-03 Thread ericb at gcc dot gnu.org
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

2010-09-24 Thread ubizjak at gmail dot com
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.