diff options
author | Marek Polacek <polacek@redhat.com> | 2016-09-24 09:39:23 +0000 |
---|---|---|
committer | Marek Polacek <mpolacek@gcc.gnu.org> | 2016-09-24 09:39:23 +0000 |
commit | 9a2300e956daf1dd27e144d19ef95988ac661274 (patch) | |
tree | 2202f7c8afd097fcf4c53d3a4cbe532ead2f1c43 /gcc/doc | |
parent | 02ae505bc9f8040cddaf48faaaea3bc224260853 (diff) | |
download | gcc-9a2300e956daf1dd27e144d19ef95988ac661274.zip gcc-9a2300e956daf1dd27e144d19ef95988ac661274.tar.gz gcc-9a2300e956daf1dd27e144d19ef95988ac661274.tar.bz2 |
re PR c/77490 (bit-not (~) on boolean should be warned about)
PR c/77490
* c.opt (Wbool-operation): New.
* c-typeck.c (build_unary_op): Warn about bit not on expressions that
have boolean value. Warn about ++/-- on booleans.
* typeck.c (cp_build_unary_op): Warn about bit not on expressions that
have boolean value.
* doc/invoke.texi: Document -Wbool-operation.
* c-c++-common/Wbool-operation-1.c: New test.
* gcc.dg/Wbool-operation-1.c: New test.
From-SVN: r240462
Diffstat (limited to 'gcc/doc')
-rw-r--r-- | gcc/doc/invoke.texi | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index e6f503f..a5481b5 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -256,8 +256,8 @@ Objective-C and Objective-C++ Dialects}. -pedantic-errors @gol -w -Wextra -Wall -Waddress -Waggregate-return @gol -Wno-aggressive-loop-optimizations -Warray-bounds -Warray-bounds=@var{n} @gol --Wno-attributes -Wbool-compare -Wno-builtin-macro-redefined @gol --Wc90-c99-compat -Wc99-c11-compat @gol +-Wno-attributes -Wbool-compare -Wbool-operation @gol +-Wno-builtin-macro-redefined -Wc90-c99-compat -Wc99-c11-compat @gol -Wc++-compat -Wc++11-compat -Wc++14-compat -Wcast-align -Wcast-qual @gol -Wchar-subscripts -Wclobbered -Wcomment -Wconditionally-supported @gol -Wconversion -Wcoverage-mismatch -Wno-cpp -Wdangling-else -Wdate-time @gol @@ -3656,6 +3656,7 @@ Options} and @ref{Objective-C and Objective-C++ Dialect Options}. @gccoptlist{-Waddress @gol -Warray-bounds=1 @r{(only with} @option{-O2}@r{)} @gol -Wbool-compare @gol +-Wbool-operation @gol -Wc++11-compat -Wc++14-compat@gol -Wchar-subscripts @gol -Wcomment @gol @@ -4846,6 +4847,17 @@ if ((n > 1) == 2) @{ @dots{} @} @end smallexample This warning is enabled by @option{-Wall}. +@item -Wbool-operation +@opindex Wno-bool-operation +@opindex Wbool-operation +Warn about suspicious operations on expressions of a boolean type. For +instance, bitwise negation of a boolean is very likely a bug in the program. +For C, this warning also warns about incrementing or decrementing a boolean, +which rarely makes sense. (In C++, decrementing a boolean is always invalid. +Incrementing a boolean is invalid in C++1z, and deprecated otherwise.) + +This warning is enabled by @option{-Wall}. + @item -Wduplicated-cond @opindex Wno-duplicated-cond @opindex Wduplicated-cond |