[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