annotate gcc/testsuite/c-c++-common/builtin-has-attribute-2.c @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents
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 __builtin_has_attribute return value for types.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
2 { dg-do compile }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
3 { dg-options "-Wall -ftrack-macro-expansion=0" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
4 { dg-options "-Wall -Wno-narrowing -Wno-unused-local-typedefs -ftrack-macro-expansion=0" { target c++ } } */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
5
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
6 #define ATTR(...) __attribute__ ((__VA_ARGS__))
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
7
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
8 #define A(expect, sym, attr) \
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
9 typedef int Assert [1 - 2 * !(__builtin_has_attribute (sym, attr) == expect)]
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
10
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
11 struct ATTR (packed) Packed { char c; int i; };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
12
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
13 void fvoid (void);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
14 struct Packed fpacked (void);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
15
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
16 union OrdinaryUnion { void *p; int i; };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
17 union ATTR (transparent_union) TransparentUnion { void *p; int i; };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
18
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
19 /* Exercise __builtin_has_attribute with the first argument that
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
20 is a type. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
21
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
22 void test_type (int n)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
23 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
24 /* Verify both forms of the attribute spelling. Unlike the attribute
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
25 keyword that can be spelled three ways (with either leading or
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
26 trailing underscores, or with both), attribute names can only be
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
27 spelled two ways. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
28 A (0, int, aligned);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
29 A (0, int, __aligned__);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
30
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
31 A (0, int, aligned (1));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
32 A (0, int, aligned (2));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
33 A (0, int[1], aligned);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
34 A (0, int[1], aligned (2));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
35 A (0, int[n], aligned);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
36 A (0, int[n], aligned (4));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
37
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
38 /* Again, verify both forms of the attribute spelling. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
39 A (1, ATTR (aligned) char, aligned);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
40 A (1, ATTR (aligned (2)) short, aligned);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
41 A (1, ATTR (aligned (4)) int, __aligned__);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
42
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
43 A (0, int ATTR (aligned (4)), aligned (2));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
44 A (0, int ATTR (aligned (2)), aligned (4));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
45 /* GCC retains both attributes when the type is defined in the builtin. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
46 A (1, int ATTR (aligned (2), aligned (4)), aligned (2));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
47 A (1, int ATTR (aligned (2), aligned (4)), aligned (4));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
48 /* The following fails due to bug 87524.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
49 A (1, int ATTR (aligned (4), aligned (2))), aligned (4)); */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
50 A (0, int ATTR (aligned (4), aligned (2)), aligned (8));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
51
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
52 A (1, int ATTR (aligned (8)), aligned (1 + 7));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
53
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
54 enum { eight = 8 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
55 A (1, int ATTR (aligned (8)), aligned (eight));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
56 A (1, int ATTR (aligned (eight)), aligned (1 + 7));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
57
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
58 struct NotPacked { char c; int i; };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
59 A (0, struct NotPacked, packed);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
60 A (1, struct Packed, packed);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
61
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
62 /* Exercise types returned from a function. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
63 A (0, fvoid (), packed);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
64 A (1, fpacked (), packed);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
65
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
66 struct ATTR (aligned (2), packed) Aligned2Packed { char c; int i; };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
67 A (1, struct Aligned2Packed, aligned);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
68 A (1, struct Aligned2Packed, aligned (2));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
69 A (0, struct Aligned2Packed, aligned (4));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
70 A (1, struct Aligned2Packed, packed);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
71
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
72 A (0, int, may_alias);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
73 A (1, ATTR (may_alias) int, may_alias);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
74
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
75 A (0, char, warn_if_not_aligned (1));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
76 A (0, char, warn_if_not_aligned (2));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
77
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
78 A (1, ATTR (warn_if_not_aligned (2)) char, warn_if_not_aligned);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
79 A (0, ATTR (warn_if_not_aligned (2)) char, warn_if_not_aligned (1));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
80 A (1, ATTR (warn_if_not_aligned (2)) char, warn_if_not_aligned (2));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
81 A (0, ATTR (warn_if_not_aligned (2)) char, warn_if_not_aligned (4));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
82
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
83 A (0, union OrdinaryUnion, transparent_union);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
84
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
85 A (1, union TransparentUnion, transparent_union);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
86 A (1, const union TransparentUnion, transparent_union);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
87 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
88
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
89 /* Exercise __builtin_has_attribute with the first argument that
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
90 is a typedef. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
91
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
92 void test_typedef (int n)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
93 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
94 typedef char A1[1];
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
95 A (0, A1, aligned);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
96 A (0, A1, aligned (1));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
97 A (0, A1, aligned (2));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
98
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
99 typedef char An[n];
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
100 A (0, An, aligned);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
101 A (0, An, aligned (1));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
102 A (0, An, aligned (2));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
103
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
104 typedef ATTR (aligned (8)) short AI8;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
105 A (1, AI8, aligned);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
106 A (0, AI8, aligned (4));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
107 A (1, AI8, aligned (8));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
108 A (0, AI8, aligned (16));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
109
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
110 A (1, const AI8, aligned);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
111 A (1, const volatile AI8, aligned);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
112
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
113 typedef ATTR (aligned (2), aligned (8), aligned (16)) int AI16;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
114 A (1, AI16, aligned);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
115 A (0, AI16, aligned (1));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
116 A (0, AI16, aligned (2));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
117 A (0, AI16, aligned (4));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
118 A (0, AI16, aligned (8));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
119 A (1, AI16, aligned (16));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
120 A (0, AI16, aligned (32));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
121
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
122 typedef const AI16 CAI16;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
123 A (1, CAI16, aligned);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
124 A (0, CAI16, aligned (1));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
125 A (1, CAI16, aligned (16));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
126
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
127 typedef int I;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
128 A (0, I, may_alias);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
129 A (0, AI8, may_alias);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
130
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
131 typedef ATTR (may_alias) int MAI;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
132 A (1, MAI, may_alias);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
133
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
134 typedef ATTR (aligned (4), may_alias) char A4MAC;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
135 A (0, A4MAC, aligned (0)); /* { dg-warning "requested alignment .0. is not a positive power of 2" } */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
136 A (0, A4MAC, aligned (1));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
137 A (0, A4MAC, aligned (2));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
138 A (1, A4MAC, aligned (4));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
139 A (0, A4MAC, aligned (8));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
140 A (1, A4MAC, may_alias);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
141
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
142 typedef ATTR (may_alias, aligned (8)) char A8MAC;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
143 A (1, A8MAC, aligned);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
144 A (0, A8MAC, aligned (0)); /* { dg-warning "requested alignment .0. is not a positive power of 2" } */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
145 A (0, A8MAC, aligned (1));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
146 A (0, A8MAC, aligned (2));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
147 A (0, A8MAC, aligned (4));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
148 A (1, A8MAC, aligned (8));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
149 A (0, A8MAC, aligned (16));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
150 A (1, A8MAC, may_alias);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
151
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
152 typedef ATTR (may_alias) const AI8 CMAI8;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
153 A (1, CMAI8, aligned);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
154 A (1, CMAI8, may_alias);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
155 A (0, CMAI8, aligned (4));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
156 A (1, CMAI8, aligned (8));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
157
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
158 typedef void Fnull (void*, void*, void*);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
159 A (0, Fnull, nonnull);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
160 A (0, Fnull, nonnull (1));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
161 A (0, Fnull, nonnull (2));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
162 A (0, Fnull, nonnull (3));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
163
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
164 typedef ATTR (nonnull) Fnull Fnonnull;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
165 A (1, Fnonnull, nonnull);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
166 A (1, Fnonnull, nonnull (1));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
167 A (1, Fnonnull, nonnull (2));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
168 A (1, Fnonnull, nonnull (3));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
169
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
170 typedef ATTR (nonnull (2)) void Fnonnull_2 (void*, void*, void*);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
171 A (0, Fnonnull_2, nonnull);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
172 A (0, Fnonnull_2, nonnull (1));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
173 A (1, Fnonnull_2, nonnull (2));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
174 A (0, Fnonnull_2, nonnull (3));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
175
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
176 typedef ATTR (nonnull (1), nonnull (2), nonnull (3))
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
177 void Fnonnull_1_2_3 (void*, void*, void*);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
178
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
179 /* The following fails because the built-in doesn't recognize that
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
180 a single nonnull with no arguments is the same as one nonnull for
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
181 each function parameter. Disable the testing for now.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
182 A (1, Fnonnull_1_2_3, nonnull);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
183 */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
184 A (1, Fnonnull_1_2_3, nonnull (1));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
185 A (1, Fnonnull_1_2_3, nonnull (2));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
186 A (1, Fnonnull_1_2_3, nonnull (3));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
187
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
188 typedef void Freturns (void);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
189 A (0, Fnull, noreturn);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
190 A (0, Freturns, noreturn);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
191
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
192 typedef ATTR (warn_if_not_aligned (8)) char CWA8;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
193 A (0, CWA8, warn_if_not_aligned (2));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
194 A (0, CWA8, warn_if_not_aligned (4));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
195 A (1, CWA8, warn_if_not_aligned (8));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
196 A (0, CWA8, warn_if_not_aligned (16));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
197
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
198 typedef union OrdinaryUnion OrdUnion;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
199 A (0, OrdUnion, transparent_union);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
200
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
201 /* The attribute is ignored on typedefs but GCC fails to diagnose
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
202 it (see bug ). */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
203 typedef union ATTR (transparent_union)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
204 OrdinaryUnion TransUnion; /* { dg-warning "\\\[-Wattributes" "pr87578" { xfail { ! { c++ } } } } */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
205 A (0, TransUnion, transparent_union);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
206 }