will __attribute__((aligned(CACHE_LINE_SIZE))) break struct alignment
Florian Weimer
fweimer@redhat.com
Mon Nov 6 14:30:00 GMT 2017
On 11/06/2017 06:04 AM, Yubin Ruan wrote:
> I am using something like this:
>
> struct S1 {
> int index __attribute__((aligned(CACHE_LINE_SIZE)));
> struct S2 some_other;
> };
>
> I am not using anything like `#pragma pack`.
>
> I am wondering whether adding that
> `__attribute__((aligned(CACHE_LINE_SIZE)))` will break GCC's automatic
> alignment for S1 and S2. Can anyone point me to any document which
> specify this behavior?
It will change the alignment of struct S1, so code which allocates
objects of struct S1 will have to be modified, and the offset in structs
of a member of type struct S1 will likely change (and so will the
offsets of members after it).
So in general, this is not an ABI-compatible change.
Thanks,
Florian
More information about the Gcc-help
mailing list