From: Jeff Garzik <jeff@garzik.org>
To: Christopher Li <sparse@chrisli.org>
Cc: linux-sparse@vger.kernel.org, Al Viro <viro@zeniv.linux.org.uk>
Subject: Re: sparse: Why test-parse shows "+=" as a store?
Date: Mon, 27 Apr 2009 18:57:49 -0400 [thread overview]
Message-ID: <49F6386D.5050809@garzik.org> (raw)
In-Reply-To: <70318cbf0904271045s6b2e300evad7f6ec05dd96b3f@mail.gmail.com>
Christopher Li wrote:
> On Mon, Apr 27, 2009 at 3:28 AM, Jeff Garzik <jeff@garzik.org> wrote:
>> Use of test-parsing eliminates my code as a factor -- which was why I
>> mentioned it.
>>
>> Oh well, I will figure it out.
>
> Let me take a look at your code as well. Maybe I can spot some thing.
>
>> linearized output is too low level for LLVM in several cases. The shifts in
>> linearize_load_gen() and linearize_store_gen() get in the way, for example.
>> Having sparse calculate struct offsets itself is also not desirable: in
>> order to use LLVM's getelementptr instruction, you should instead give LLVM
>> the type information and member indices, and let it figure out the address
>> calculation from there.
>
> Right. I think GET_ELEMENT_PTR is the only part missing. I think it is
> a relative small change to preserve the structure laid, comparing to rewriting
> everything.
>
> BTW, I don't think linearize lost that structure information. It
> happens way before
> linearize stage. Sparse converts the structure member access into void pointer
> add very early on. If you want to preserve that information,
> you need to change more than just linearize code. So linearize is not the
> blocking factor here. It needs upstream change as well.
I just managed to figure out how to locate, enumerate and declare sparse
SYM_STRUCT to LLVM backend, in s2l-gen.c, without any upstream changes.
>> Thus, use of linearize would imply having to work backwards and recreate
>> information lost during the linearization.
>
> Or, we can teach sparse to preserve that information in the linearize level.
Well, I'll tell you what. If you or somebody else wants to volunteer to
make key sparse & linearize changes, then I will work on a linearize
LLVM backend.
Absent that, the motivation is lower, considering I have a current,
working approach that does not require any upstream changes.
Jeff
next prev parent reply other threads:[~2009-04-27 22:57 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-26 20:52 sparse: Why test-parse shows "+=" as a store? Jeff Garzik
2009-04-27 6:04 ` Christopher Li
2009-04-27 10:28 ` Jeff Garzik
2009-04-27 17:45 ` Christopher Li
2009-04-27 17:53 ` Christopher Li
2009-04-27 22:57 ` Jeff Garzik [this message]
2009-04-27 23:39 ` Christopher Li
2009-04-28 0:24 ` Jeff Garzik
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=49F6386D.5050809@garzik.org \
--to=jeff@garzik.org \
--cc=linux-sparse@vger.kernel.org \
--cc=sparse@chrisli.org \
--cc=viro@zeniv.linux.org.uk \
/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.