annotate gcc/testsuite/gcc.target/aarch64/attr-aligned.c @ 152:2b5abeee2509

update gcc11
author anatofuz
date Mon, 25 May 2020 07:50:57 +0900
parents 1830386684a0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
145
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
1 /* Verify that valid alignment on functions is accepted and results
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
2 in the alignment expected for the target and that alignment of
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
3 zero is ignored with a warning.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
4 { dg-do compile }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
5 { dg-options "-Wno-pedantic -ftrack-macro-expansion=0" } */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
6
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
7 #define ASSERT(expr) _Static_assert (expr, #expr)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
8 #define ALIGN(n) __attribute__ ((aligned (n)))
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
9 #define alignof(expr) __alignof__ (expr)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
10 #define HAS_ALIGN(f, n) __builtin_has_attribute (f, __aligned__ (n))
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
11
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
12 #define MINALIGN(N) ((N) < 4 ? 4 : (N))
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
13 #define MAXALIGN 16
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
14
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
15 /* No alignment specified. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
16 void f (void) { }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
17
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
18 /* Empty alignment means maximum. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
19 ALIGN () void f_ (void) { }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
20
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
21 ALIGN (0) void f0 (void) { } /* { dg-warning "requested alignment .0. is not a positive power of 2" } */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
22 ALIGN (1) void f1 (void) { }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
23 ALIGN (2) void f2 (void) { }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
24 ALIGN (4) void f4 (void) { }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
25 ALIGN (8) void f8 (void) { }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
26 ALIGN (16) void f16 (void) { }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
27 ALIGN (32) void f32 (void) { }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
28
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
29 ASSERT (alignof (f_) == MAXALIGN);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
30 ASSERT (alignof (f0) == alignof (f));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
31 ASSERT (alignof (f1) == MINALIGN (1));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
32 ASSERT (alignof (f2) == MINALIGN (2));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
33 ASSERT (alignof (f4) == MINALIGN (4));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
34 ASSERT (alignof (f8) == MINALIGN (8));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
35 ASSERT (alignof (f16) == MINALIGN (16));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
36 ASSERT (alignof (f32) == MINALIGN (32));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
37
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
38 ASSERT (!__builtin_has_attribute (f, aligned));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
39 ASSERT (__builtin_has_attribute (f_, aligned));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
40 ASSERT (!__builtin_has_attribute (f0, aligned));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
41
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
42 ASSERT (!HAS_ALIGN (f_, MAXALIGN));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
43
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
44 ASSERT (HAS_ALIGN (f1, 1));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
45 ASSERT (!HAS_ALIGN (f1, 2));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
46
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
47 ASSERT (!HAS_ALIGN (f2, 1));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
48 ASSERT (HAS_ALIGN (f2, 2));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
49 ASSERT (!HAS_ALIGN (f2, 4));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
50
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
51 ASSERT (!HAS_ALIGN (f4, 2));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
52 ASSERT (HAS_ALIGN (f4, 4));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
53 ASSERT (!HAS_ALIGN (f4, 8));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
54
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
55 ASSERT (!HAS_ALIGN (f8, 4));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
56 ASSERT (HAS_ALIGN (f8, 8));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
57 ASSERT (!HAS_ALIGN (f8, 16));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
58
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
59 ASSERT (!HAS_ALIGN (f16, 8));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
60 ASSERT (HAS_ALIGN (f16, 16));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
61 ASSERT (!HAS_ALIGN (f16, 32));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
62
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
63 ASSERT (!HAS_ALIGN (f32, 16));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
64 ASSERT (HAS_ALIGN (f32, 32));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
65 ASSERT (!HAS_ALIGN (f32, 64));