https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66658
Bug ID: 66658 Summary: missing -Wunused-value negating a function result in a comma expression Product: gcc Version: 5.1.0 Status: UNCONFIRMED Severity: minor Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: msebor at gcc dot gnu.org Target Milestone: --- The -Wunused-value warning is documented to: Warn whenever a statement computes a result that is explicitly not used. There are two minor issues here: 1) The following test case shows that GCC misses the opportunity to diagnose the NOT expression in the first operand of the comma expression: $ cat /build/tmp/u.c && ~/bin/gcc-5.1.0/bin/g++ -Wunused-value -c -o/dev/null /build/tmp/u.c int foo (int, int = 0); int bar (int a) { if (a && !foo (0), 1) return 1; return 0; } Clang diagnoses this code as one would expect. The example isn't C++ specific but with default arguments it's easy to accidentally write "... !foo (0), 1)" when "... foo (0, 1))" is intended. Having GCC issue a warning will help find these types of mistakes. 2) The documentation is subtly incorrect in that it uses the term "statement" when what it actually means "expression." If it really meant statement then expressions such as initializers of function default arguments such as in the example below would be excluded (when they are not): int a; int foo (int, int = 0); int bar (int, int = (a && !foo (0), 1));