[Bug c/47557] Effect of aligned attribute on arrays
jyasskin at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Mar 15 18:27:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47557
Jeffrey Yasskin <jyasskin at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jyasskin at gcc dot gnu.org
--- Comment #3 from Jeffrey Yasskin <jyasskin at gcc dot gnu.org> 2011-03-15 18:18:06 UTC ---
Alignments on typedefs behave very strangely (PR48138). What you want is:
typedef struct __attribute__((aligned(2))) {
char a[3];
} T;
unsigned x1 = sizeof(T); // sizeof is 4
unsigned x2 = sizeof(T[1]); // sizeof is 4
unsigned x3 = sizeof(T[2]); // sizeof is 8
unsigned x4 = sizeof(T[2][1]); // sizeof is 8
unsigned x5 = sizeof(T[1][2]); // sizeof is 8
Moving the attribute makes it apply to the struct instead of the typedef, which
fixes everything. C1x and C++0x don't allow alignments on typedefs either.
More information about the Gcc-bugs
mailing list