aboutsummaryrefslogtreecommitdiffstats
path: root/test/regression/alignas.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/regression/alignas.c')
-rw-r--r--test/regression/alignas.c57
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;
}