diff options
Diffstat (limited to 'test/regression/alignas.c')
-rw-r--r-- | test/regression/alignas.c | 57 |
1 files changed, 25 insertions, 32 deletions
diff --git a/test/regression/alignas.c b/test/regression/alignas.c index b3754039..777c13a5 100644 --- a/test/regression/alignas.c +++ b/test/regression/alignas.c @@ -2,16 +2,12 @@ #include <stdio.h> -#if __STDC_VERSION__ < 201100 && defined(__GNUC__) -#define _Alignas(x) __attribute__((aligned(x))) -#define _Alignof(x) __alignof__(x) -#endif - #ifdef _Alignas #undef _Alignas #endif -#ifdef _Alignof -#undef _Alignof + +#if __STDC_VERSION__ < 201100 && defined(__GNUC__) +#define _Alignas(x) __attribute((aligned(x))) #endif /* Base type */ @@ -24,10 +20,9 @@ _Alignas(16) int b[3]; typedef int int3[3]; _Alignas(16) int3 bb; -#if 0 -typedef _Alignas(16) int int16; +/* _Alignas is not allowed in typedefs but the "aligned" attribute is */ +typedef __attribute((aligned(16))) int int16; int16 bbb[3]; -#endif char filler2; @@ -72,28 +67,26 @@ char filler8; int main() { - printf("a: size = %u, alignment = %u, address mod 16 = %u\n", - (unsigned) sizeof(a), (unsigned) _Alignof(a), ((unsigned) &a) & 0xF); - printf("b: size = %u, alignment = %u, address mod 16 = %u\n", - (unsigned) sizeof(b), (unsigned) _Alignof(b), ((unsigned) &b) & 0xF); - printf("bb: size = %u, alignment = %u, address mod 16 = %u\n", - (unsigned) sizeof(bb), (unsigned) _Alignof(bb), ((unsigned) &bb) & 0xF); -#if 0 - printf("bbb: size = %u, alignment = %u, address mod 16 = %u\n", - (unsigned) sizeof(bbb), (unsigned) _Alignof(bbb), ((unsigned) &bbb) & 0xF); -#endif - printf("c: size = %u, alignment = %u, address mod 16 = %u\n", - (unsigned) sizeof(c), (unsigned) _Alignof(c), ((unsigned) &c) & 0xF); - printf("d: size = %u, alignment = %u, address mod 64 = %u\n", - (unsigned) sizeof(d), (unsigned) _Alignof(d), ((unsigned) &d) & 0x3F); - printf("e: size = %u, alignment = %u, address mod 16 = %u\n", - (unsigned) sizeof(e), (unsigned) _Alignof(e), ((unsigned) &e) & 0xF); - printf("f: size = %u, alignment = %u, address mod 32 = %u\n", - (unsigned) sizeof(f), (unsigned) _Alignof(f), ((unsigned) &f) & 0x1F); - printf("g: size = %u, alignment = %u, address mod 16 = %u\n", - (unsigned) sizeof(g), (unsigned) _Alignof(g), ((unsigned) &g) & 0xF); - printf("h: size = %u, alignment = %u, address mod 64 = %u\n", - (unsigned) sizeof(h), (unsigned) _Alignof(h), ((unsigned) &h) & 0x3F); + printf("a: size = %u, address mod 16 = %u\n", + (unsigned) sizeof(a), ((unsigned) &a) & 0xF); + printf("b: size = %u, address mod 16 = %u\n", + (unsigned) sizeof(b), ((unsigned) &b) & 0xF); + printf("bb: size = %u, address mod 16 = %u\n", + (unsigned) sizeof(bb), ((unsigned) &bb) & 0xF); + printf("bbb: size = %u, address mod 16 = %u\n", + (unsigned) sizeof(bbb), ((unsigned) &bbb) & 0xF); + printf("c: size = %u, address mod 16 = %u\n", + (unsigned) sizeof(c), ((unsigned) &c) & 0xF); + printf("d: size = %u, address mod 64 = %u\n", + (unsigned) sizeof(d), ((unsigned) &d) & 0x3F); + printf("e: size = %u, address mod 16 = %u\n", + (unsigned) sizeof(e), ((unsigned) &e) & 0xF); + printf("f: size = %u, address mod 32 = %u\n", + (unsigned) sizeof(f), ((unsigned) &f) & 0x1F); + printf("g: size = %u, address mod 16 = %u\n", + (unsigned) sizeof(g), ((unsigned) &g) & 0xF); + printf("h: size = %u, address mod 64 = %u\n", + (unsigned) sizeof(h), ((unsigned) &h) & 0x3F); return 0; } |