[LLVMdev] Equivalent alignment of __attribute__((__aligned__))

Garrison Venn gvenn.cfe.dev at gmail.com
Mon Feb 1 12:22:52 PST 2010

Of course, clang has to do this. Thanks!


On Feb 1, 2010, at 15:06, Chris Lattner wrote:

> On Feb 1, 2010, at 12:01 PM, Garrison Venn wrote:
>> Sorry as you interpreted I meant minimum alignment. 
>> My issue is in translating from a C struct which has a member aligned with 
>> __attribute__((__aligned__)) to a generated packed StructType where I use padding
>> to force the alignment of said member. Instances of this struct are placed on the heap
>> via malloc. Although I'm currently using static C code to determine the padding size, I'm trying 
>> to avoid using such code since I'm not sure which llvm platforms don't support __attribute__((__aligned__)). 
>> Knowing that malloc will give me an address aligned to any platform supported datatype, and knowing 
>> this minimum alignment (which I believe is equivalent to __attribute__((__aligned__))), I could
>> calculate the above value. I'm currently using the alignment of long double instead.
>> Any recommended way of determining this value or doing the equivalent?
> There is no good way to do this at the LLVM IR level, and you need a lot more information than just attribute(aligned).  Take a look at the code in clang that handles record layout, for example.
> -Chris

More information about the llvm-dev mailing list