From: Josh Triplett <josh@joshtriplett.org>
To: Chris Forbes <chrisf@ijw.co.nz>
Cc: linux-sparse@vger.kernel.org
Subject: Re: [RFC PATCH 0/2] check for identical exprs on LHS and RHS of '&&'
Date: Wed, 10 Aug 2011 10:44:23 -0700 [thread overview]
Message-ID: <20110810174423.GA6677@leaf> (raw)
In-Reply-To: <1312967235-23817-1-git-send-email-chrisf@ijw.co.nz>
On Wed, Aug 10, 2011 at 09:07:13PM +1200, Chris Forbes wrote:
> Hi, I've started working on a new check for sparse to pick up a common
> error -- identical expressions appearing on both sides of some binary
> operators.
>
> This initially supports '&&', and incompletely -- but the plan is to
> check instances of '!=', '==' and '||' the same way.
>
> The check relies on recursively walking the ->left and ->right expressions,
> looking for differences. The implementation is a little verbose, but can
> be shared between all the operators.
>
> What I'd like to know is:
>
> * Do people consider this a worthwhile check to make?
I'd definitely love to see this check. I saw an example of the kinds of
bugs it can find in a recent article
(http://software.intel.com/en-us/blogs/2011/08/08/pvs-studio-vs-clang/),
and immediately wished Sparse and/or GCC would include that check.
> * Am I "doing it right" with the expression walking?
Seems OK at first glance, with one exception: you need to handle
expressions with side-effects specially, since you could legitimately
write something like (x == func() && x == func()), or (x == *p++ && x ==
*p++).
> * Are there other cases which people would be interested in?
How about checking for the same expression multiple times in a single
block of | or & expressions? (flag1 | flag2 | flag2) seems like a
likely copy/paste error.
- Josh Triplett
next prev parent reply other threads:[~2011-08-10 17:45 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-10 9:07 [RFC PATCH 0/2] check for identical exprs on LHS and RHS of '&&' Chris Forbes
2011-08-10 9:07 ` [PATCH 1/2] add test case for identical exprs on LHS and RHS of '&&' operator Chris Forbes
2011-08-10 9:07 ` [PATCH 2/2] initial work on check for identical exprs on both sides of '&&'; needs more Chris Forbes
2011-08-10 17:44 ` Josh Triplett [this message]
2011-08-10 17:46 ` [RFC PATCH 0/2] check for identical exprs on LHS and RHS of '&&' Al Viro
2011-08-12 19:34 ` Dan Carpenter
2011-08-12 19:16 ` Christopher Li
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20110810174423.GA6677@leaf \
--to=josh@joshtriplett.org \
--cc=chrisf@ijw.co.nz \
--cc=linux-sparse@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.