linux-sparse.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Christopher Li <sparse@chrisli.org>
To: Jeff Garzik <jeff@garzik.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 10:45:17 -0700	[thread overview]
Message-ID: <70318cbf0904271045s6b2e300evad7f6ec05dd96b3f@mail.gmail.com> (raw)
In-Reply-To: <49F588BA.4060503@garzik.org>

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.

> 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.

> The general idea with LLVM bitcode is to pass it type information, and it
> will ensure that bitfields are handled properly, structs are laid out and
> padded properly, function return types handled, etc.  LLVM handles all the
> address generation for us, once we give it enough type info.

Currently the linearize instruction already has the C type information. David's
compiler back end needs that. We still need the structure laid though.

Chris
--
To unsubscribe from this list: send the line "unsubscribe linux-sparse" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2009-04-27 17:45 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 [this message]
2009-04-27 17:53       ` Christopher Li
2009-04-27 22:57       ` Jeff Garzik
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=70318cbf0904271045s6b2e300evad7f6ec05dd96b3f@mail.gmail.com \
    --to=sparse@chrisli.org \
    --cc=jeff@garzik.org \
    --cc=linux-sparse@vger.kernel.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 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).