From: Al Viro <viro@ftp.linux.org.uk>
To: Linus Torvalds <torvalds@osdl.org>
Cc: linux-sparse@vger.kernel.org
Subject: Re: [PATCHSET] fouled-bitwise handling
Date: Sun, 1 Oct 2006 17:45:13 +0100 [thread overview]
Message-ID: <20061001164513.GW29920@ftp.linux.org.uk> (raw)
In-Reply-To: <Pine.LNX.4.64.0610010906030.3952@g5.osdl.org>
On Sun, Oct 01, 2006 at 09:21:21AM -0700, Linus Torvalds wrote:
> The only reason I think you're doing it wrong is that you're using this
> totally new separate mechanism for it (which is not a bad mechanism, but
> it's very much a special case), and you should not need to!
> The fact is, regardless of any bitwise issues, the
>
> (cast) narrower-type <op> (wider-type "&" (cast) narrower-type)
>
> should _always_ be simplified to a small-type.
Sure. Now try to carry that to more complex expressions.
> And I _think_ we should be able to do exactly the same for this one, by
> simply noticing that doing a
>
> (widening-cast) a == b & (widening-cast) c
>
> is by definition throwing away the higher bits on both sides, and we can
> just turn it into the simpler
>
> a == c & (narrowing-cast) b
>
> instead. Of course, we can only do this with ops that don't have overflow
> from the narrower type (but comparisons and bitops are ok).
>
> No?
At which phase would you do that? We assign types pretty much leaves
to root - type of node is derived from the types of children.
Now, you suggest basically going *other* way. I.e. noticing that
we have
<complex expression in narrow> & <complex expression in wide>
and trying to propagate narrowing down another subexpression.
Note that we need *both* arguments typed - we don't know which one
might be narrow here. So it's really re-evaluation of subexpression.
OK, so we have expand phase that could do that. _However_, we'd have
to postpone the bitwise checks until that phase, or we'd get them
anyway. And that is not to mention the fun with evaluate_expression()
mangling the tree, so re-walking it won't be easy.
IOW, I very much prefer to deal with that by _existing_ mechanism;
namely, the type assignment. It's easier to propagate the information
along with the rest of type information, in the direction we are
already doing.
next prev parent reply other threads:[~2006-10-01 16:45 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-10-01 13:57 [PATCHSET] fouled-bitwise handling Al Viro
2006-10-01 14:09 ` Al Viro
2006-10-01 16:21 ` Linus Torvalds
2006-10-01 16:45 ` Al Viro [this message]
2006-10-01 16:52 ` Linus Torvalds
2006-10-01 17:22 ` Al Viro
2006-10-01 17:29 ` Al Viro
2006-10-01 17:58 ` Linus Torvalds
2006-10-01 17:33 ` Linus Torvalds
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=20061001164513.GW29920@ftp.linux.org.uk \
--to=viro@ftp.linux.org.uk \
--cc=linux-sparse@vger.kernel.org \
--cc=torvalds@osdl.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).