From: Jeff Garzik <jeff@garzik.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Pekka Enberg <penberg@kernel.org>,
Sparse Mailing-list <linux-sparse@vger.kernel.org>,
josh@joshtriplett.org
Subject: Re: [PATCH] Re: LLVM and PSEUDO_REG/PSEUDO_PHI
Date: Sun, 28 Aug 2011 15:31:45 -0400 [thread overview]
Message-ID: <4E5A97A1.4010504@garzik.org> (raw)
In-Reply-To: <CA+55aFw5VYSXduhXrtQx5CM4ubvOoHtrbyF74Y_wOQpBxE6Vmw@mail.gmail.com>
On 08/28/2011 01:04 PM, Linus Torvalds wrote:
> On Sun, Aug 28, 2011 at 3:04 AM, Jeff Garzik<jeff@garzik.org> wrote:
>>
>> * need to start integrating struct support. LLVM has a type system where
>> one defines data structures in the IR, then uses 'getelementptr' LLVM
>> instruction to build addresses for complex load/store operations. The Linux
>> kernel uses a lot of function calls (indirect branches) from values buried
>> deep within a struct.
>
> You really shouldn't need to do that.
>
> You should consider all types to be just "blocks of memory", and
> sparse has already calculated all offsets etc for you. As far as LLVM
> is concerned, the memory has no structure, it's just a blob.
We _already_ do this in the backend, and LLVM supports
LOAD-from-random-address just fine:
https://github.com/penberg/sparse-llvm/blob/master/sparse-llvm.c#L325
But that comment was thinking more medium term, supporting multiple
platforms means properly handling struct layout in memory, which gets
into the realm of platform-specific ABIs.
It didn't seem like we would want to encode a ton of ABI detail into the
sparse C front-end. But it sounds like there will be a lot of ABI
detail found, if sparse is doing all the memory layout and such.
> Sometimes you cannot even get the "element" name. Look at
> ./test-linearize output of something like this:
Nobody cares about the element name, least of all LLVM. LLVM provides a
convenience naming feature, but you don't have to use that.
ABI-dictated memory layout is the main detail to get right, across
platforms.
Jeff
next prev parent reply other threads:[~2011-08-28 19:31 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <4E5495C9.6050207@kernel.org>
[not found] ` <CA+55aFwLLn30qohqJeBZLVUYWLKUnbBxnL9u+v=4Fx8TpxDQUQ@mail.gmail.com>
[not found] ` <4E55F33C.50203@kernel.org>
[not found] ` <CAOJsxLF-=mPSdKLwmc61ZRTQrLGjPTUwVw+PqabYvGKVRwh9sQ@mail.gmail.com>
[not found] ` <CAOJsxLFMz7fs4ySkizHk43a0fz9VKS5ReWXoJa8cy2AQ6iwRng@mail.gmail.com>
[not found] ` <CA+55aFywG3vBA87W2h1f=-H144MTZesEwp5jVu8ndyBfLX7Sbg@mail.gmail.com>
[not found] ` <alpine.DEB.2.00.1108252046090.6272@localhost6.localdomain6>
[not found] ` <CA+55aFxRkS4HLeW18-q+4Co7kRdiQBv4wnD=GX5ymAGigXR3MQ@mail.gmail.com>
[not found] ` <alpine.DEB.2.00.1108252107210.6272@localhost6.localdomain6>
[not found] ` <4E58731A.7010708@garzik.org>
[not found] ` <alpine.DEB.2.00.1108271104440.2570@localhost6.localdomain6>
[not found] ` <4E58AE9E.1090601@garzik.org>
[not found] ` <4E59478C.9000504@garzik.org>
[not found] ` <alpine.DEB.2.00.1108280815530.2734@localhost6.localdomain6>
2011-08-28 10:04 ` [PATCH] Re: LLVM and PSEUDO_REG/PSEUDO_PHI Jeff Garzik
2011-08-28 10:18 ` Jeff Garzik
2011-08-29 14:45 ` Pekka Enberg
2011-08-28 17:04 ` Linus Torvalds
2011-08-28 17:52 ` Josh Triplett
2011-08-28 18:23 ` Linus Torvalds
2011-08-28 19:33 ` Jeff Garzik
2011-08-31 12:09 ` Pekka Enberg
2011-08-28 19:31 ` Jeff Garzik [this message]
2011-08-28 19:46 ` Linus Torvalds
2011-08-29 14:42 ` Pekka Enberg
2011-08-29 15:14 ` Jeff Garzik
2011-08-29 16:16 ` Josh Triplett
[not found] ` <alpine.DEB.2.00.1108252310490.22479@localhost6.localdomain6>
[not found] ` <CA+55aFy3TUT=BFD+Nb9H6uDBhz427kC4tBc+ehQDs6JBggTuHQ@mail.gmail.com>
[not found] ` <4E573A3E.6060104@kernel.org>
[not found] ` <CA+55aFzbV0OvrtkzbjxvL1tkfF=+6xbBsyWb8XtAcK-YNeKjZw@mail.gmail.com>
[not found] ` <alpine.DEB.2.00.1108271214410.14365@localhost6.localdomain6>
[not found] ` <CA+55aFzbfD4RDe52HCL9mfSYMzFdvP96OiK5ifkfUKNkzjJNrg@mail.gmail.com>
2011-08-29 19:45 ` Pekka Enberg
2011-08-29 19:52 ` Jeff Garzik
2011-08-29 20:32 ` Linus Torvalds
2011-08-29 20:42 ` Pekka Enberg
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=4E5A97A1.4010504@garzik.org \
--to=jeff@garzik.org \
--cc=josh@joshtriplett.org \
--cc=linux-sparse@vger.kernel.org \
--cc=penberg@kernel.org \
--cc=torvalds@linux-foundation.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).