diff options
Diffstat (limited to 'test/Sema/align-x86.c')
-rw-r--r-- | test/Sema/align-x86.c | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/test/Sema/align-x86.c b/test/Sema/align-x86.c index c9a6398..61bd1d3 100644 --- a/test/Sema/align-x86.c +++ b/test/Sema/align-x86.c @@ -14,7 +14,31 @@ short chk1[__alignof__(g3) == 8 ? 1 : -1]; short chk2[__alignof__(_Complex double) == 8 ? 1 : -1]; // PR6362 -struct __attribute__((packed)) {unsigned int a} g4; +struct __attribute__((packed)) {unsigned int a;} g4; short chk1[__alignof__(g4) == 1 ? 1 : -1]; short chk2[__alignof__(g4.a) == 1 ? 1 : -1]; + +// PR5637 + +#define ALIGNED(x) __attribute__((aligned(x))) + +typedef ALIGNED(2) struct { + char a[3]; +} T; + +short chk1[sizeof(T) == 3 ? 1 : -1]; +short chk2[sizeof(T[1]) == 4 ? 1 : -1]; +short chk3[sizeof(T[2]) == 6 ? 1 : -1]; +short chk4[sizeof(T[2][1]) == 8 ? 1 : -1]; +short chk5[sizeof(T[1][2]) == 6 ? 1 : -1]; + +typedef struct ALIGNED(2) { + char a[3]; +} T2; + +short chk1[sizeof(T2) == 4 ? 1 : -1]; +short chk2[sizeof(T2[1]) == 4 ? 1 : -1]; +short chk3[sizeof(T2[2]) == 8 ? 1 : -1]; +short chk4[sizeof(T2[2][1]) == 8 ? 1 : -1]; +short chk5[sizeof(T2[1][2]) == 8 ? 1 : -1]; |