This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [C/C++ PATCH] Further -Wlogical-not-parentheses improvement (PR c/65120)


On 03/09/15 15:26, Jakub Jelinek wrote:
Hi!

As mentioned by richi, !x == 0 is actually equivalent to !(x == 0)
and x != 0 and !x != 0 is equivalent to !(x != 0) and x == 0, so this
patch adjusts the warning not to warn in that case, as adding parens
doesn't change anything.

Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?

2015-03-09  Jakub Jelinek  <jakub@redhat.com>

	PR c/65120
	* c-common.c (warn_logical_not_parentheses): Don't warn for
	!x == 0 or !x != 0.

	* c-typeck.c (parser_build_binary_op): Check for tcc_comparison
	before preparing arguments to warn_logical_not_parentheses.

	* parser.c (cp_parser_binary_expression): Check for tcc_comparison
	before preparing arguments to warn_logical_not_parentheses.
	Use maybe_constant_value on rhs.

	* c-c++-common/pr49706.c (fn2): Don't expect warning if enumerator
	on rhs is 0.
	(fn4): New test.
	* c-c++-common/pr65120.c: New test.
C++ and testsuite bits are fine too.
jeff



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]