[LLVMdev] Struct Types and GCC compatibility
Chris Lattner
sabre at nondot.org
Tue Dec 20 12:04:15 PST 2005
On Tue, 20 Dec 2005, Mike Emmel wrote:
> Hi all I'm writing a direct llvm backend for gcjx a new java fronted for gcc.
Great!
> I'm now ready to tackle creating the structures to represnt classes I
> read the gcc 4.0 patches and it seems that the llvm struct is padded
> and aligned using the info from the gcc tree.
Yes.
> In my case I don't have this information. I'm willing to intially let
> llvm align and pad the struct but its not clear what the natural
> values are since it seems to be packed.
Ok.
> In any case some helpful hints on what the right route is here would
> be appreciated. It would be nice to get compatibility with gcc.
I think that just letting LLVM do the packing will probably be what you
want. The cases where the C front-end needs to manually hack on things
are for bigfields, explicit alignment attributes, etc, which I don't think
Java has (correct me if I'm wrong)! LLVM uses very simple layout rules,
basically inserting padding before each structure element to bring it to
its natural alignment. The alignment of a struct is the maximum of the
alignment of its elements, and the size of the struct is always a multiple
of the alignment.
I hope this is the information you are looking for. If you have more
specific questions, please feel free to ask.
-Chris
--
http://nondot.org/sabre/
http://llvm.org/
More information about the llvm-dev
mailing list