[LLVMdev] Request documentation for global var syntax

Schimmel, Mark mark.schimmel at windriver.com
Thu Feb 1 08:54:00 PST 2007

Does anyone have any good ideas to verify that the layout of a struct
from the front end (field offsets and alignment) exactly match LLVM's
interpretation of that struct?  I want to support packing of structs and
pragmas/attributes for alignment and validate that the front end and
back end match.  [ This is a different front end (ie. Not GNU based). ]

For example:
	__packed struct S1 {
		char c;
		double d;

If I wanted c at byte offset 0 and d at byte offset 1, how would I
communicate that to LLVM?  If the user applied another pragma/attribute
which aligned d at offset 2, how would I communicate that and validate
it?  The assumption here is that the user could declare a struct type
whose layout doesn't match the default layout from LLVM.

Perhaps I could extend llvm-as to accept additional annotations in type

	%S1 = type align 1 { sbyte at 0, double at 2 }

I don't see anything like this in the 1.9 grammar.

-----Original Message-----
From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu]
On Behalf Of Chris Lattner
Sent: Saturday, January 13, 2007 4:35 PM
To: LLVM Developers Mailing List
Subject: Re: [LLVMdev] Request documentation for global var syntax

On Thu, 11 Jan 2007, Schimmel, Mark wrote:
> file://docs/LangRef.html#globalvars
> The section describing the definition of global vars discusses that
> can specify an alignment and can also specify a section.  Could
> provide an example that works in gccas in release 1.9 for both
> which section the var is assigned to and defining the variables
> alignment?

They are just comma separated:

%G = constant float 1.000000e+00, section "foo", align 4

> Also, is there another document that describes how you define sections
> and their attributes?

sections are target-specific, usually defined by the linker.


LLVM Developers mailing list
LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu

More information about the llvm-dev mailing list