[LLVMdev] different layout of structs for llc vs. llvm-gcc

Reid Kleckner reid.kleckner at gmail.com
Wed Jul 14 14:17:57 PDT 2010


I believe he was asking if adding __attribute__((aligned(NN))) to the
fields worked.  It's probably a cleaner away of accomplishing
alignment than padding.

Reid

On Wed, Jul 14, 2010 at 2:03 PM, Torvald Riegel
<torvald at se.inf.tu-dresden.de> wrote:
> On Wednesday 14 July 2010 17:57:26 Andrew Lenharth wrote:
>> On Wed, Jul 14, 2010 at 10:54 AM, Eli Friedman <eli.friedman at gmail.com>
> wrote:
>> > On Wed, Jul 14, 2010 at 8:33 AM, Andrew Lenharth <andrewl at lenharth.org>
> wrote:
>> >> On Wed, Jul 14, 2010 at 10:26 AM, Eli Friedman <eli.friedman at gmail.com>
> wrote:
>> >> Is alignment on a field propagated when the struct is split up?
>> >
>> > Irrelevant here; the struct in question only has 4 byte alignment.
>>
>> Not meant to be irrelevant because the though not explained.  What I
>> meant to say was if the padding was accomplished with an align
>> directive on the field, would the alignment be propagated to the
>> global after being split up?
>
> I tried this already (in the form of { uint32_t field; uint8_t pad[60];
> uint32_field2;}). Alignment seems to be properly propagated, but pad[] is still
> removed, so I believe that other globals without custom alignment constraints
> could still be located in the same cachelines as field or field2.
>
> Torvald
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>




More information about the llvm-dev mailing list