1 /* Test -fdump-go-specs option.  */
2 
3 /* { dg-options "-c -fdump-go-spec=godump-1.out" } */
4 /* { dg-do compile } */
5 /* { dg-skip-if "not supported for target" { ! "alpha*-*-* s390*-*-* i?86-*-* x86_64-*-*" } } */
6 /* { dg-skip-if "not supported for target" { ! lp64 } } */
7 
8 #include <stdint.h>
9 
10 /* Necessary quoting in the regexp patters:
11 
12      (?n) at beginning of pattern to make ^ and $ work.
13      "     ->  \"
14      *, +  ->  "*", "+"
15      [, ]  ->  "\[", "\]"
16      (, )  ->  "\[(\]", "\[)\]"
17      {, }  ->  "\{", "\}"
18 */
19 
20 /*** integer based types ***/
21 typedef char c_t;
22 /* { dg-final { scan-file godump-1.out "(?n)^type _c_t u?int8$" } } */
23 
24 char c_v1;
25 /* { dg-final { scan-file godump-1.out "(?n)^var _c_v1 u?int\[0-9\]*$" } } */
26 
27 c_t c_v2;
28 /* { dg-final { scan-file godump-1.out "(?n)^var _c_v2 _c_t$" } } */
29 
30 typedef short s_t;
31 /* { dg-final { scan-file godump-1.out "(?n)^type _s_t int\[0-9\]*$" } } */
32 
33 short s_v1;
34 /* { dg-final { scan-file godump-1.out "(?n)^var _s_v1 int\[0-9\]*$" } } */
35 
36 s_t s_v2;
37 /* { dg-final { scan-file godump-1.out "(?n)^var _s_v2 _s_t$" } } */
38 
39 typedef int i_t;
40 /* { dg-final { scan-file godump-1.out "(?n)^type _i_t int\[0-9\]*$" } } */
41 
42 int i_v1;
43 /* { dg-final { scan-file godump-1.out "(?n)^var _i_v1 int\[0-9\]*$" } } */
44 
45 i_t i_v2;
46 /* { dg-final { scan-file godump-1.out "(?n)^var _i_v2 _i_t$" } } */
47 
48 typedef long l_t;
49 /* { dg-final { scan-file godump-1.out "(?n)^type _l_t int\[0-9\]*$" } } */
50 
51 long l_v1;
52 /* { dg-final { scan-file godump-1.out "(?n)^var _l_v1 int\[0-9\]*$" } } */
53 
54 l_t l_v2;
55 /* { dg-final { scan-file godump-1.out "(?n)^var _l_v2 _l_t$" } } */
56 
57 typedef long long ll_t;
58 /* { dg-final { scan-file godump-1.out "(?n)^type _ll_t int\[0-9\]*$" } } */
59 
60 long long ll_v1;
61 /* { dg-final { scan-file godump-1.out "(?n)^var _ll_v1 int\[0-9\]*$" } } */
62 
63 ll_t ll_v2;
64 /* { dg-final { scan-file godump-1.out "(?n)^var _ll_v2 _ll_t$" } } */
65 
66 typedef unsigned char uc_t;
67 /* { dg-final { scan-file godump-1.out "(?n)^type _uc_t uint8$" } } */
68 
69 unsigned char uc_v1;
70 /* { dg-final { scan-file godump-1.out "(?n)^var _uc_v1 uint\[0-9\]*$" } } */
71 
72 uc_t uc_v2;
73 /* { dg-final { scan-file godump-1.out "(?n)^var _uc_v2 _uc_t$" } } */
74 
75 typedef unsigned short us_t;
76 /* { dg-final { scan-file godump-1.out "(?n)^type _us_t uint\[0-9\]*$" } } */
77 
78 unsigned short us_v1;
79 /* { dg-final { scan-file godump-1.out "(?n)^var _us_v1 uint\[0-9\]*$" } } */
80 
81 us_t us_v2;
82 /* { dg-final { scan-file godump-1.out "(?n)^var _us_v2 _us_t$" } } */
83 
84 typedef unsigned int ui_t;
85 /* { dg-final { scan-file godump-1.out "(?n)^type _ui_t uint\[0-9\]*$" } } */
86 
87 unsigned int ui_v1;
88 /* { dg-final { scan-file godump-1.out "(?n)^var _ui_v1 uint\[0-9\]*$" } } */
89 
90 ui_t ui_v2;
91 /* { dg-final { scan-file godump-1.out "(?n)^var _ui_v2 _ui_t$" } } */
92 
93 typedef unsigned long ul_t;
94 /* { dg-final { scan-file godump-1.out "(?n)^type _ul_t uint\[0-9\]*$" } } */
95 
96 unsigned long ul_v1;
97 /* { dg-final { scan-file godump-1.out "(?n)^var _ul_v1 uint\[0-9\]*$" } } */
98 
99 ul_t ul_v2;
100 /* { dg-final { scan-file godump-1.out "(?n)^var _ul_v2 _ul_t$" } } */
101 
102 typedef unsigned long long ull_t;
103 /* { dg-final { scan-file godump-1.out "(?n)^type _ull_t uint\[0-9\]*$" } } */
104 
105 unsigned long long ull_v1;
106 /* { dg-final { scan-file godump-1.out "(?n)^var _ull_v1 uint\[0-9\]*$" } } */
107 
108 ull_t ull_v2;
109 /* { dg-final { scan-file godump-1.out "(?n)^var _ull_v2 _ull_t$" } } */
110 
111 typedef signed char sc_t;
112 /* { dg-final { scan-file godump-1.out "(?n)^type _sc_t int8$" } } */
113 
114 signed char sc_v1;
115 /* { dg-final { scan-file godump-1.out "(?n)^var _sc_v1 int\[0-9\]*$" } } */
116 
117 sc_t sc_v2;
118 /* { dg-final { scan-file godump-1.out "(?n)^var _sc_v2 _sc_t$" } } */
119 
120 typedef signed short ss_t;
121 /* { dg-final { scan-file godump-1.out "(?n)^type _ss_t int\[0-9\]*$" } } */
122 
123 signed short ss_v1;
124 /* { dg-final { scan-file godump-1.out "(?n)^var _ss_v1 int\[0-9\]*$" } } */
125 
126 ss_t ss_v2;
127 /* { dg-final { scan-file godump-1.out "(?n)^var _ss_v2 _ss_t$" } } */
128 
129 typedef signed int si_t;
130 /* { dg-final { scan-file godump-1.out "(?n)^type _si_t int\[0-9\]*$" } } */
131 
132 signed int si_v1;
133 /* { dg-final { scan-file godump-1.out "(?n)^var _si_v1 int\[0-9\]*$" } } */
134 
135 si_t si_v2;
136 /* { dg-final { scan-file godump-1.out "(?n)^var _si_v2 _si_t$" } } */
137 
138 typedef signed long sl_t;
139 /* { dg-final { scan-file godump-1.out "(?n)^type _sl_t int\[0-9\]*$" } } */
140 
141 signed long sl_v1;
142 /* { dg-final { scan-file godump-1.out "(?n)^var _sl_v1 int\[0-9\]*$" } } */
143 
144 sl_t sl_v2;
145 /* { dg-final { scan-file godump-1.out "(?n)^var _sl_v2 _sl_t$" } } */
146 
147 typedef signed long long sll_t;
148 /* { dg-final { scan-file godump-1.out "(?n)^type _sll_t int\[0-9\]*$" } } */
149 
150 signed long long sll_v1;
151 /* { dg-final { scan-file godump-1.out "(?n)^var _sll_v1 int\[0-9\]*$" } } */
152 
153 sll_t sll_v2;
154 /* { dg-final { scan-file godump-1.out "(?n)^var _sll_v2 _sll_t$" } } */
155 
156 typedef int8_t i8_t;
157 /* { dg-final { scan-file godump-1.out "(?n)^type _i8_t int8$" } } */
158 
159 int8_t i8_v1;
160 /* { dg-final { scan-file godump-1.out "(?n)^var _i8_v1 _int8_t$" } } */
161 
162 i8_t i8_v2;
163 /* { dg-final { scan-file godump-1.out "(?n)^var _i8_v2 _i8_t$" } } */
164 
165 typedef int16_t i16_t;
166 /* { dg-final { scan-file godump-1.out "(?n)^type _i16_t int16$" } } */
167 
168 int16_t i16_v1;
169 /* { dg-final { scan-file godump-1.out "(?n)^var _i16_v1 _int16_t$" } } */
170 
171 i16_t i16_v2;
172 /* { dg-final { scan-file godump-1.out "(?n)^var _i16_v2 _i16_t$" } } */
173 
174 typedef int32_t i32_t;
175 /* { dg-final { scan-file godump-1.out "(?n)^type _i32_t int32$" } } */
176 
177 int32_t i32_v1;
178 /* { dg-final { scan-file godump-1.out "(?n)^var _i32_v1 _int32_t$" } } */
179 
180 i32_t i32_v2;
181 /* { dg-final { scan-file godump-1.out "(?n)^var _i32_v2 _i32_t$" } } */
182 
183 typedef int64_t i64_t;
184 /* { dg-final { scan-file godump-1.out "(?n)^type _i64_t int64$" } } */
185 
186 int64_t i64_v1;
187 /* { dg-final { scan-file godump-1.out "(?n)^var _i64_v1 _int64_t$" } } */
188 
189 i64_t i64_v2;
190 /* { dg-final { scan-file godump-1.out "(?n)^var _i64_v2 _i64_t$" } } */
191 
192 typedef uint8_t ui8_t;
193 /* { dg-final { scan-file godump-1.out "(?n)^type _ui8_t uint8$" } } */
194 
195 uint8_t ui8_v1;
196 /* { dg-final { scan-file godump-1.out "(?n)^var _ui8_v1 _uint8_t$" } } */
197 
198 ui8_t ui8_v2;
199 /* { dg-final { scan-file godump-1.out "(?n)^var _ui8_v2 _ui8_t$" } } */
200 
201 typedef uint16_t iu16_t;
202 /* { dg-final { scan-file godump-1.out "(?n)^type _iu16_t uint16$" } } */
203 
204 uint16_t iu16_v1;
205 /* { dg-final { scan-file godump-1.out "(?n)^var _iu16_v1 _uint16_t$" } } */
206 
207 iu16_t iu16_v2;
208 /* { dg-final { scan-file godump-1.out "(?n)^var _iu16_v2 _iu16_t$" } } */
209 
210 typedef uint32_t iu32_t;
211 /* { dg-final { scan-file godump-1.out "(?n)^type _iu32_t uint32$" } } */
212 
213 uint32_t iu32_v1;
214 /* { dg-final { scan-file godump-1.out "(?n)^var _iu32_v1 _uint32_t$" } } */
215 
216 iu32_t iu32_v2;
217 /* { dg-final { scan-file godump-1.out "(?n)^var _iu32_v2 _iu32_t$" } } */
218 
219 typedef uint64_t iu64_t;
220 /* { dg-final { scan-file godump-1.out "(?n)^type _iu64_t uint64$" } } */
221 
222 uint64_t iu64_v1;
223 /* { dg-final { scan-file godump-1.out "(?n)^var _iu64_v1 _uint64_t$" } } */
224 
225 iu64_t iu64_v2;
226 /* { dg-final { scan-file godump-1.out "(?n)^var _iu64_v2 _iu64_t$" } } */
227 
228 typedef const char cc_t;
229 /* { dg-final { scan-file godump-1.out "(?n)^type _cc_t u?int8$" } } */
230 
231 const char cc_v1;
232 /* { dg-final { scan-file godump-1.out "(?n)^var _cc_v1 u?int8$" } } */
233 
234 cc_t cc_v2;
235 /* { dg-final { scan-file godump-1.out "(?n)^var _cc_v2 _cc_t$" } } */
236 
237 
238 /*** pointer and array types ***/
239 typedef void *vp_t;
240 /* { dg-final { scan-file godump-1.out "(?n)^type _vp_t \\*byte$" } } */
241 
242 void *vp_v1;
243 /* { dg-final { scan-file godump-1.out "(?n)^var _vp_v1 \\*byte$" } } */
244 
245 vp_t vp_v2;
246 /* { dg-final { scan-file godump-1.out "(?n)^var _vp_v2 _vp_t$" } } */
247 
248 typedef int **ipp_t;
249 /* { dg-final { scan-file godump-1.out "(?n)^type _ipp_t \\*\\*int\[0-9\]*$" } } */
250 
251 int **ipp_v1;
252 /* { dg-final { scan-file godump-1.out "(?n)^var _ipp_v1 \\*\\*int\[0-9\]*$" } } */
253 
254 ipp_t ipp_v2;
255 /* { dg-final { scan-file godump-1.out "(?n)^var _ipp_v2 _ipp_t$" } } */
256 
257 typedef char ca_t[];
258 /* { dg-final { scan-file godump-1.out "(?n)^type _ca_t \\\[0\\\]u?int8$" } } */
259 
260 char ca_v1[]; /* { dg-warning "array 'ca_v1' assumed to have one element" } */
261 /* { dg-final { scan-file godump-1.out "(?n)^var _ca_v1 \\\[0\\+1\\\]u?int8$" } } */
262 
263 char ca_v1b[2];
264 /* { dg-final { scan-file godump-1.out "(?n)^var _ca_v1b \\\[1\\+1\\\]u?int8$" } } */
265 
266 ca_t ca_v2; /* { dg-warning "array 'ca_v2' assumed to have one element" } */
267 /* { dg-final { scan-file godump-1.out "(?n)^var _ca_v2 \\\[0\\+1\\\]u?int8$" } } */
268 
269 typedef short sa2_t[2];
270 /* { dg-final { scan-file godump-1.out "(?n)^type _sa2_t \\\[1\\+1\\\]int\[0-9\]*$" } } */
271 
272 short sa2_v1[2];
273 /* { dg-final { scan-file godump-1.out "(?n)^var _sa2_v1 \\\[1\\+1\\\]int\[0-9\]*$" } } */
274 
275 sa2_t sa2_v2;
276 /* { dg-final { scan-file godump-1.out "(?n)^var _sa2_v2 _sa2_t$" } } */
277 
278 
279 /*** floating point types ***/
280 typedef float f_t;
281 /* { dg-final { scan-file godump-1.out "(?n)^type _f_t float\[0-9\]*$" } } */
282 
283 float f_v1;
284 /* { dg-final { scan-file godump-1.out "(?n)^var _f_v1 float\[0-9\]*$" } } */
285 
286 f_t f_v2;
287 /* { dg-final { scan-file godump-1.out "(?n)^var _f_v2 _f_t$" } } */
288 
289 typedef double d_t;
290 /* { dg-final { scan-file godump-1.out "(?n)^type _d_t float\[0-9\]*$" } } */
291 
292 double d_v1;
293 /* { dg-final { scan-file godump-1.out "(?n)^var _d_v1 float\[0-9\]*$" } } */
294 
295 d_t d_v2;
296 /* { dg-final { scan-file godump-1.out "(?n)^var _d_v2 _d_t$" } } */
297 
298 typedef long double ld_t;
299 /* { dg-final { scan-file godump-1.out "(?n)^// type _ld_t INVALID-float-\[0-9\]*$" } } */
300 
301 long double ld_v1;
302 /* { dg-final { scan-file godump-1.out "(?n)^// var _ld_v1 INVALID-float-\[0-9\]*$" } } */
303 
304 ld_t ld_v2;
305 /* { dg-final { scan-file godump-1.out "(?n)^// var _ld_v2 INVALID-float-\[0-9\]*$" } } */
306 
307 /*** complex types ***/
308 typedef _Complex cx_t;
309 /* { dg-final { scan-file godump-1.out "(?n)^type _cx_t complex\[0-9\]*$" } } */
310 
311 _Complex cx_v1;
312 /* { dg-final { scan-file godump-1.out "(?n)^var _cx_v1 complex\[0-9\]*$" } } */
313 
314 cx_t cx_v2;
315 /* { dg-final { scan-file godump-1.out "(?n)^var _cx_v2 _cx_t$" } } */
316 
317 typedef float _Complex fcx_t;
318 /* { dg-final { scan-file godump-1.out "(?n)^type _fcx_t complex\[0-9\]*$" } } */
319 
320 float _Complex fcx_v1;
321 /* { dg-final { scan-file godump-1.out "(?n)^var _fcx_v1 complex\[0-9\]*$" } } */
322 
323 fcx_t fcx_v2;
324 /* { dg-final { scan-file godump-1.out "(?n)^var _fcx_v2 _fcx_t$" } } */
325 
326 typedef double _Complex dcx_t;
327 /* { dg-final { scan-file godump-1.out "(?n)^type _dcx_t complex\[0-9\]*$" } } */
328 
329 double _Complex dcx_v1;
330 /* { dg-final { scan-file godump-1.out "(?n)^var _dcx_v1 complex\[0-9\]*$" } } */
331 
332 dcx_t dcx_v2;
333 /* { dg-final { scan-file godump-1.out "(?n)^var _dcx_v2 _dcx_t$" } } */
334 
335 typedef long double _Complex ldcx_t;
336 /* { dg-final { scan-file godump-1.out "(?n)^// type _ldcx_t INVALID-complex-\[0-9\]*$" } } */
337 
338 long double _Complex ldcx_v1;
339 /* { dg-final { scan-file godump-1.out "(?n)^// var _ldcx_v1 INVALID-complex-\[0-9\]*$" } } */
340 
341 ldcx_t ldcx_v2;
342 /* { dg-final { scan-file godump-1.out "(?n)^// var _ldcx_v2 INVALID-complex-\[0-9\]*$" } } */
343 
344 typedef int _Complex icx_t;
345 /* { dg-final { scan-file godump-1.out "(?n)^// type _icx_t INVALID-complex-non-real$" } } */
346 
347 int _Complex icx_v1;
348 /* { dg-final { scan-file godump-1.out "(?n)^// var _icx_v1 INVALID-complex-non-real$" } } */
349 
350 icx_t icx_v2;
351 /* { dg-final { scan-file godump-1.out "(?n)^// var _icx_v2 INVALID-complex-non-real$" } } */
352 
353 
354 /*** nested typedefs ***/
355 typedef int32_t ni_t;
356 /* { dg-final { scan-file godump-1.out "(?n)^type _ni_t int32$" } } */
357 
358 typedef ni_t ni2_t;
359 /* { dg-final { scan-file godump-1.out "(?n)^type _ni2_t int32$" } } */
360 
361 ni2_t ni2_v2;
362 /* { dg-final { scan-file godump-1.out "(?n)^var _ni2_v2 _ni2_t$" } } */
363 
364 typedef ni2_t ni3_t;
365 /* { dg-final { scan-file godump-1.out "(?n)^type _ni3_t int32$" } } */
366 
367 ni3_t ni3_v2;
368 /* { dg-final { scan-file godump-1.out "(?n)^var _ni3_v2 _ni3_t$" } } */
369 
370 
371 /*** enums ***/
372 enum { E11 };
373 /* { dg-final { scan-file godump-1.out "(?n)^const _E11 = 0$" } } */
374 
375 enum { EV11 } e1_v1;
376 /* { dg-final { scan-file godump-1.out "(?n)^var _e1_v1 u?int\[0-9\]*$" } } */
377 /* { dg-final { scan-file godump-1.out "(?n)^const _EV11 = 0$" } } */
378 
379 enum { E21, E22 };
380 /* { dg-final { scan-file godump-1.out "(?n)^const _E21 = 0$" } } */
381 /* { dg-final { scan-file godump-1.out "(?n)^const _E22 = 1$" } } */
382 
383 enum { EV21, EV22 } e2_v1;
384 /* { dg-final { scan-file godump-1.out "(?n)^var _e2_v1 u?int\[0-9\]*$" } } */
385 /* { dg-final { scan-file godump-1.out "(?n)^const _EV21 = 0$" } } */
386 /* { dg-final { scan-file godump-1.out "(?n)^const _EV22 = 1$" } } */
387 
388 enum { EN1 = 3, EN2 = 77, EN3 = -1, EN4 };
389 /* { dg-final { scan-file godump-1.out "(?n)^const _EN1 = 3$" } } */
390 /* { dg-final { scan-file godump-1.out "(?n)^const _EN2 = 77$" } } */
391 /* { dg-final { scan-file godump-1.out "(?n)^const _EN3 = -1$" } } */
392 /* { dg-final { scan-file godump-1.out "(?n)^const _EN4 = 0$" } } */
393 
394 typedef enum { ET1, ET2 } et_t;
395 /* { dg-final { scan-file godump-1.out "(?n)^type _et_t u?int\[0-9\]*$" } } */
396 /* { dg-final { scan-file godump-1.out "(?n)^const _ET1 = 0$" } } */
397 /* { dg-final { scan-file godump-1.out "(?n)^const _ET2 = 1$" } } */
398 
399 typedef enum e_t_idem_v1 { ETIV1 } e_t_idem_v1;
400 /* { dg-final { scan-file godump-1.out "(?n)^type _e_t_idem_v1 u?int\[0-9\]*$" } } */
401 /* { dg-final { scan-file godump-1.out "(?n)^const _ETIV1 = 0$" } } */
402 
403 typedef enum e_t_idem_v2 e_t_idem_v2;
404 enum e_t_idem_v2 { ETIV2 };
405 /* { dg-final { scan-file godump-1.out "(?n)^type _e_t_idem_v2 u?int\[0-9\]*$" } } */
406 /* { dg-final { scan-file godump-1.out "(?n)^const _ETIV2 = 0$" } } */
407 
408 enum { ETV1, ETV2 } et_v1;
409 /* { dg-final { scan-file godump-1.out "(?n)^var _et_v1 u?int\[0-9\]*$" } } */
410 /* { dg-final { scan-file godump-1.out "(?n)^const _ETV1 = 0$" } } */
411 /* { dg-final { scan-file godump-1.out "(?n)^const _ETV2 = 1$" } } */
412 
413 et_t et_v2;
414 /* { dg-final { scan-file godump-1.out "(?n)^var _et_v2 _et_t$" } } */
415 
416 
417 /*** simple structs ***/
418 typedef struct { } ts0e;
419 /* { dg-final { scan-file godump-1.out "(?n)^type _ts0e struct \{ \}$" } } */
420 
421 struct { } s0e;
422 /* { dg-final { scan-file godump-1.out "(?n)^var _s0e struct \{ \}$" } } */
423 
424 typedef struct { int8_t e1; } ts1e;
425 /* { dg-final { scan-file godump-1.out "(?n)^type _ts1e struct \{ e1 int8; \}$" } } */
426 
427 struct { int8_t e1; } s1e;
428 /* { dg-final { scan-file godump-1.out "(?n)^var _s1e struct \{ e1 int8; \}$" } } */
429 
430 typedef struct { int8_t e1; void *e2; } ts2el;
431 /* { dg-final { scan-file godump-1.out "(?n)^type _ts2el struct \{ e1 int8; e2 \\*byte; \}$" } } */
432 
433 struct { int8_t e1; void *e2; } s2el;
434 /* { dg-final { scan-file godump-1.out "(?n)^var _s2el struct \{ e1 int8; e2 \\*byte; \}$" } } */
435 
436 typedef struct { void *e1; int8_t e2; } ts2eg;
437 /* { dg-final { scan-file godump-1.out "(?n)^type _ts2eg struct \{ e1 \\*byte; e2 int8; Godump_0_pad \\\[.\\\]byte; \}$" } } */
438 
439 struct { void *e1; int8_t e2; } s2eg;
440 /* { dg-final { scan-file godump-1.out "(?n)^var _s2eg struct \{ e1 \\*byte; e2 int8; Godump_0_pad \\\[.\\\]byte; \}$" } } */
441 
442 typedef struct { int64_t l; int8_t c; int32_t i; int16_t s; } tsme;
443 /* { dg-final { scan-file godump-1.out "(?n)^type _tsme struct \{ l int64; c int8; i int32; s int16; Godump_0_pad \\\[.\\\]byte; \}$" } } */
444 
445 struct { int64_t l; int8_t c; int32_t i; int16_t s; } sme;
446 /* { dg-final { scan-file godump-1.out "(?n)^var _sme struct \{ l int64; c int\8; i int32; s int16; Godump_0_pad \\\[.\\\]byte; \}$" } } */
447 
448 typedef struct { int16_t sa[3]; int8_t ca[3]; } tsae;
449 /* { dg-final { scan-file godump-1.out "(?n)^type _tsae struct \{ sa \\\[2\\+1\\\]int16; ca \\\[2\\+1\\\]int8; Godump_0_pad \\\[.\\\]byte; \}$" } } */
450 
451 struct { int16_t sa[3]; int8_t ca[3]; } sae;
452 /* { dg-final { scan-file godump-1.out "(?n)^var _sae struct \{ sa \\\[2\\+1\\\]int16; ca \\\[2\\+1\\\]int8; Godump_0_pad \\\[.\\\]byte; \}$" } } */
453 
454 typedef struct { float f; } tsf_equiv;
455 /* { dg-final { scan-file godump-1.out "(?n)^type _tsf_equiv struct \{ f float\[0-9\]*; \}$" } } */
456 
457 struct { float f; } sf_equiv;
458 /* { dg-final { scan-file godump-1.out "(?n)^var _sf_equiv struct \{ f float\[0-9\]*; \}$" } } */
459 
460 typedef struct { float f; uint8_t : 0; } tsf_not_equiv;
461 /* { dg-final { scan-file godump-1.out "(?n)^type _tsf_not_equiv struct \{ f float\[0-9\]*; \}$" } } */
462 
463 struct { float f; uint8_t : 0; } sf_not_equiv;
464 /* { dg-final { scan-file godump-1.out "(?n)^var _sf_not_equiv struct \{ f float\[0-9\]*; \}$" } } */
465 
466 typedef struct { double d; } tsd_equiv;
467 /* { dg-final { scan-file godump-1.out "(?n)^type _tsd_equiv struct \{ d float\[0-9\]*; \}$" } } */
468 
469 struct { double d; } sd_equiv;
470 /* { dg-final { scan-file godump-1.out "(?n)^var _sd_equiv struct \{ d float\[0-9\]*; \}$" } } */
471 
472 typedef struct { double d; uint8_t : 0; } tsd_not_equiv;
473 /* { dg-final { scan-file godump-1.out "(?n)^type _tsd_not_equiv struct \{ d float\[0-9\]*; \}$" } } */
474 
475 struct { double d; uint8_t : 0; } sd_not_equiv;
476 /* { dg-final { scan-file godump-1.out "(?n)^var _sd_not_equiv struct \{ d float\[0-9\]*; \}$" } } */
477 
478 typedef struct s_undef_t s_undef_t2;
479 
480 typedef struct s_fwd *s_fwd_p;
481 /* { dg-final { scan-file godump-1.out "(?n)^type _s_fwd_p \\*_s_fwd$" } } */
482 
483 struct s_fwd v_fwd;
484 /* { dg-final { scan-file godump-1.out "(?n)^var _v_fwd _s_fwd" } } */
485 
486 struct s_fwd { };
487 /* { dg-final { scan-file godump-1.out "(?n)^type _s_fwd struct \{ \}$" } } */
488 
489 typedef struct s_t_idem_v1 {} s_t_idem_v1;
490 /* { dg-final { scan-file godump-1.out "(?n)^type _s_t_idem_v1 struct \{ \}$" } } */
491 
492 typedef struct s_t_idem_v2 s_t_idem_v2;
493 struct s_t_idem_v2 { };
494 /* { dg-final { scan-file godump-1.out "(?n)^type _s_t_idem_v2 struct \{ \}$" } } */
495 
496 /*** nested structs ***/
497 typedef struct { struct { uint8_t ca[3]; } s; uint32_t i; } tsn;
498 /* { dg-final { scan-file godump-1.out "(?n)^type _tsn struct \{ s struct \{ ca \\\[2\\+1\\\]uint8; \}; i uint32; \}$" } } */
499 
500 struct { struct { uint8_t ca[3]; } s; uint32_t i; } sn;
501 /* { dg-final { scan-file godump-1.out "(?n)^var _sn struct \{ s struct \{ ca \\\[2\\+1\\\]uint8; \}; i uint32; \}$" } } */
502 
503 typedef struct { struct { uint8_t a; uint16_t s; }; uint8_t b; } tsn_anon;
504 /* { dg-final { scan-file godump-1.out "(?n)^type _tsn_anon struct \{ a uint8; s uint16; b uint8; Godump_0_pad \\\[.\\\]byte; Godump_1_align \\\[0\\\]int16; \}$" } } */
505 
506 struct { struct { uint8_t a; uint16_t s; }; uint8_t b; } sn_anon;
507 /* { dg-final { scan-file godump-1.out "(?n)^var _sn_anon struct \{ a uint8; s uint16; b uint8; Godump_0_pad \\\[.\\\]byte; Godump_1_align \\\[0\\\]int16; \}$" } } */
508 
509 
510 /*** structs with bitfields ***/
511 typedef struct { uint8_t : 0; uint8_t c; } tsbf_anon_pad1;
512 /* { dg-final { scan-file godump-1.out "(?n)^type _tsbf_anon_pad1 struct \{ c uint8; \}$" } } */
513 
514 struct { uint8_t : 0; uint8_t c; } sbf_anon_pad1;
515 /* { dg-final { scan-file godump-1.out "(?n)^var _sbf_anon_pad1 struct \{ c uint8; \}$" } } */
516 
517 typedef struct { uint8_t : 1; uint8_t c; } tsbf_anon_pad2;
518 /* { dg-final { scan-file godump-1.out "(?n)^type _tsbf_anon_pad2 struct \{ Godump_0_pad \\\[1\\\]byte; c uint8; \}$" } } */
519 
520 struct { uint8_t : 1; uint8_t c; } sbf_anon_pad2;
521 /* { dg-final { scan-file godump-1.out "(?n)^var _sbf_anon_pad2 struct \{ Godump_0_pad \\\[1\\\]byte; c uint8; \}$" } } */
522 
523 typedef struct { uint8_t : 7; uint8_t c; } tsbf_anon_pad3;
524 /* { dg-final { scan-file godump-1.out "(?n)^type _tsbf_anon_pad3 struct \{ Godump_0_pad \\\[1\\\]byte; c uint8; \}$" } } */
525 
526 struct { uint8_t : 7; uint8_t c; } sbf_anon_pad3;
527 /* { dg-final { scan-file godump-1.out "(?n)^var _sbf_anon_pad3 struct \{ Godump_0_pad \\\[1\\\]byte; c uint8; \}$" } } */
528 
529 typedef struct { uint8_t : 8; uint8_t c; } tsbf_anon_pad4;
530 /* { dg-final { scan-file godump-1.out "(?n)^type _tsbf_anon_pad4 struct \{ Godump_0 uint8; c uint8; \}$" } } */
531 
532 struct { uint8_t : 8; uint8_t c; } sbf_anon_pad4;
533 /* { dg-final { scan-file godump-1.out "(?n)^var _sbf_anon_pad4 struct \{ Godump_0 uint8; c uint8; \}$" } } */
534 
535 typedef struct { uint64_t : 0; uint8_t c; } tsbf_anon_pad5;
536 /* { dg-final { scan-file godump-1.out "(?n)^type _tsbf_anon_pad5 struct \{ c uint8; \}$" } } */
537 
538 struct { uint64_t : 0; uint8_t c; } sbf_anon_pad5;
539 /* { dg-final { scan-file godump-1.out "(?n)^var _sbf_anon_pad5 struct \{ c uint8; \}$" } } */
540 
541 typedef struct { uint64_t : 1; uint8_t c; } tsbf_anon_pad6;
542 /* { dg-final { scan-file godump-1.out "(?n)^type _tsbf_anon_pad6 struct \{ Godump_0_pad \\\[1\\\]byte; c uint8; \}$" } } */
543 
544 struct { uint64_t : 1; uint8_t c; } sbf_anon_pad6;
545 /* { dg-final { scan-file godump-1.out "(?n)^var _sbf_anon_pad6 struct \{ Godump_0_pad \\\[1\\\]byte; c uint8; \}$" } } */
546 
547 typedef struct { uint64_t : 63; uint8_t c; } tsbf_anon_pad7;
548 /* { dg-final { scan-file godump-1.out "(?n)^type _tsbf_anon_pad7 struct \{ Godump_0_pad \\\[8\\\]byte; c uint8; \}$" } } */
549 
550 struct { uint64_t : 63; uint8_t c; } sbf_anon_pad7;
551 /* { dg-final { scan-file godump-1.out "(?n)^var _sbf_anon_pad7 struct \{ Godump_0_pad \\\[8\\\]byte; c uint8; \}$" } } */
552 
553 typedef struct { uint64_t : 64; uint8_t c; } tsbf_anon_pad8;
554 /* { dg-final { scan-file godump-1.out "(?n)^type _tsbf_anon_pad8 struct \{ Godump_0 uint64; c uint8; \}$" } } */
555 
556 struct { uint64_t : 64; uint8_t c; } sbf_anon_pad8;
557 /* { dg-final { scan-file godump-1.out "(?n)^var _sbf_anon_pad8 struct \{ Godump_0 uint64; c uint8; \}$" } } */
558 
559 typedef struct { uint8_t bf : 1; uint8_t c; } tsbf_pad8_1;
560 /* { dg-final { scan-file godump-1.out "(?n)^type _tsbf_pad8_1 struct \{ Godump_0_pad \\\[1\\\]byte; c uint8; \}$" } } */
561 
562 struct { uint8_t bf : 1; uint8_t c; } sbf_pad8_1;
563 /* { dg-final { scan-file godump-1.out "(?n)^var _sbf_pad8_1 struct \{ Godump_0_pad \\\[1\\\]byte; c uint8; \}$" } } */
564 
565 typedef struct { uint8_t bf : 7; uint8_t c; } tsbf_pad8_2;
566 /* { dg-final { scan-file godump-1.out "(?n)^type _tsbf_pad8_2 struct \{ Godump_0_pad \\\[1\\\]byte; c uint8; \}$" } } */
567 
568 struct { uint8_t bf : 7; uint8_t c; } sbf_pad8_2;
569 /* { dg-final { scan-file godump-1.out "(?n)^var _sbf_pad8_2 struct \{ Godump_0_pad \\\[1\\\]byte; c uint8; \}$" } } */
570 
571 typedef struct { uint8_t bf : 8; uint8_t c; } tsbf_pad8_3;
572 /* { dg-final { scan-file godump-1.out "(?n)^type _tsbf_pad8_3 struct \{ bf uint8; c uint8; \}$" } } */
573 
574 struct { uint8_t bf : 8; uint8_t c; } sbf_pad8_3;
575 /* { dg-final { scan-file godump-1.out "(?n)^var _sbf_pad8_3 struct \{ bf uint8; c uint8; \}$" } } */
576 
577 typedef struct { uint16_t bf : 1; uint8_t c; } tsbf_pad16_1;
578 /* { dg-final { scan-file godump-1.out "(?n)^type _tsbf_pad16_1 struct \{ Godump_0_pad \\\[1\\\]byte; c uint8; Godump_1_align \\\[0\\\]int16; \}$" } } */
579 
580 struct { uint16_t bf : 1; uint8_t c; } sbf_pad16_1;
581 /* { dg-final { scan-file godump-1.out "(?n)^var _sbf_pad16_1 struct \{ Godump_0_pad \\\[1\\\]byte; c uint8; Godump_1_align \\\[0\\\]int16; \}$" } } */
582 
583 typedef struct { uint16_t bf : 15; uint8_t c; } tsbf_pad16_2;
584 /* { dg-final { scan-file godump-1.out "(?n)^type _tsbf_pad16_2 struct \{ Godump_0_pad \\\[2\\\]byte; c uint8; Godump_1_pad \\\[.\\\]byte; Godump_2_align \\\[0\\\]int16; \}$" } } */
585 
586 struct { uint16_t bf : 15; uint8_t c; } sbf_pad16_2;
587 /* { dg-final { scan-file godump-1.out "(?n)^var _sbf_pad16_2 struct \{ Godump_0_pad \\\[2\\\]byte; c uint8; Godump_1_pad \\\[.\\\]byte; Godump_2_align \\\[0\\\]int16; \}$" } } */
588 
589 typedef struct { uint16_t bf : 16; uint8_t c; } tsbf_pad16_3;
590 /* { dg-final { scan-file godump-1.out "(?n)^type _tsbf_pad16_3 struct \{ bf uint16; c uint8; Godump_0_pad \\\[.\\\]byte; \}$" } } */
591 
592 struct { uint16_t bf : 16; uint8_t c; } sbf_pad16_3;
593 /* { dg-final { scan-file godump-1.out "(?n)^var _sbf_pad16_3 struct \{ bf uint16; c uint8; Godump_0_pad \\\[.\\\]byte; \}$" } } */
594 
595 typedef struct { uint32_t bf : 1; uint8_t c; } tsbf_pad32_1;
596 /* { dg-final { scan-file godump-1.out "(?n)^type _tsbf_pad32_1 struct \{ Godump_0_pad \\\[1\\\]byte; c uint8; Godump_1_pad \\\[.\\\]byte; Godump_2_align \\\[0\\\]int32; \}$" } } */
597 
598 struct { uint32_t bf : 1; uint8_t c; } sbf_pad32_1;
599 /* { dg-final { scan-file godump-1.out "(?n)^var _sbf_pad32_1 struct \{ Godump_0_pad \\\[1\\\]byte; c uint8; Godump_1_pad \\\[.\\\]byte; Godump_2_align \\\[0\\\]int32; \}$" } } */
600 
601 typedef struct { uint32_t bf : 31; uint8_t c; } tsbf_pad32_2;
602 /* { dg-final { scan-file godump-1.out "(?n)^type _tsbf_pad32_2 struct \{ Godump_0_pad \\\[4\\\]byte; c uint8; Godump_1_pad \\\[.\\\]byte; Godump_2_align \\\[0\\\]int32; \}$" } } */
603 
604 struct { uint32_t bf : 31; uint8_t c; } sbf_pad32_2;
605 /* { dg-final { scan-file godump-1.out "(?n)^var _sbf_pad32_2 struct \{ Godump_0_pad \\\[4\\\]byte; c uint8; Godump_1_pad \\\[.\\\]byte; Godump_2_align \\\[0\\\]int32; \}$" } } */
606 
607 typedef struct { uint32_t bf : 32; uint8_t c; } tsbf_pad32_3;
608 /* { dg-final { scan-file godump-1.out "(?n)^type _tsbf_pad32_3 struct \{ bf uint32; c uint8; Godump_0_pad \\\[.\\\]byte; \}$" } } */
609 
610 struct { uint32_t bf : 32; uint8_t c; } sbf_pad32_3;
611 /* { dg-final { scan-file godump-1.out "(?n)^var _sbf_pad32_3 struct \{ bf uint32; c uint8; Godump_0_pad \\\[.\\\]byte; \}$" } } */
612 
613 typedef struct { uint64_t bf : 1; uint8_t c; } tsbf_pad64_1;
614 /* { dg-final { scan-file godump-1.out "(?n)^type _tsbf_pad64_1 struct \{ Godump_0_pad \\\[1\\\]byte; c uint8; Godump_1_pad \\\[.\\\]byte; Godump_2_align \\\[0\\\]int64; \}$" } } */
615 
616 struct { uint64_t bf : 1; uint8_t c; } sbf_pad64_1;
617 /* { dg-final { scan-file godump-1.out "(?n)^var _sbf_pad64_1 struct \{ Godump_0_pad \\\[1\\\]byte; c uint8; Godump_1_pad \\\[.\\\]byte; Godump_2_align \\\[0\\\]int64; \}$" } } */
618 
619 typedef struct { uint64_t bf : 63; uint8_t c; } tsbf_pad64_2;
620 /* { dg-final { scan-file godump-1.out "(?n)^type _tsbf_pad64_2 struct \{ Godump_0_pad \\\[8\\\]byte; c uint8; Godump_1_pad \\\[.\\\]byte; Godump_2_align \\\[0\\\]int64; \}$" } } */
621 
622 struct { uint64_t bf : 63; uint8_t c; } sbf_pad64_2;
623 /* { dg-final { scan-file godump-1.out "(?n)^var _sbf_pad64_2 struct \{ Godump_0_pad \\\[8\\\]byte; c uint8; Godump_1_pad \\\[.\\\]byte; Godump_2_align \\\[0\\\]int64; \}$" } } */
624 
625 typedef struct { uint64_t bf : 64; uint8_t c; } tsbf_pad64_3;
626 /* { dg-final { scan-file godump-1.out "(?n)^type _tsbf_pad64_3 struct \{ bf uint\[0-9\]*; c uint8; Godump_0_pad \\\[.\\\]byte; \}$" } } */
627 
628 struct { uint64_t bf : 64; uint8_t c; } sbf_pad64_3;
629 /* { dg-final { scan-file godump-1.out "(?n)^var _sbf_pad64_3 struct \{ bf uint\[0-9\]*; c uint8; Godump_0_pad \\\[.\\\]byte; \}$" } } */
630 
631 typedef struct { uint8_t b1 : 1; } tsbf_1b;
632 /* { dg-final { scan-file godump-1.out "(?n)^type _tsbf_1b struct \{ Godump_0_pad \\\[1\\\]byte; \}$" } } */
633 
634 struct { uint8_t b1 : 1; } sbf_1b;
635 /* { dg-final { scan-file godump-1.out "(?n)^var _sbf_1b struct \{ Godump_0_pad \\\[1\\\]byte; \}$" } } */
636 
637 typedef struct
638 {
639   uint8_t b1 : 1; uint8_t b2 : 1; uint8_t b3 : 1; uint8_t b4 : 1;
640   uint8_t b5 : 1; uint8_t b6 : 1; uint8_t b7 : 1; uint8_t b8 : 1;
641 } tsbf_8b;
642 /* { dg-final { scan-file godump-1.out "(?n)^type _tsbf_8b struct \{ Godump_0_pad \\\[1\\\]byte; \}$" } } */
643 
644 struct
645 {
646   uint8_t b1 : 1; uint8_t b2 : 1; uint8_t b3 : 1; uint8_t b4 : 1;
647   uint8_t b5 : 1; uint8_t b6 : 1; uint8_t b7 : 1; uint8_t b8 : 1;
648 } sbf_8b;
649 /* { dg-final { scan-file godump-1.out "(?n)^var _sbf_8b struct \{ Godump_0_pad \\\[1\\\]byte; \}$" } } */
650 
651 typedef struct {
652   uint8_t b1 : 1; uint8_t b2 : 1; uint8_t b3 : 1; uint8_t b4 : 1;
653   uint8_t b5 : 1; uint8_t b6 : 1; uint8_t b7 : 1; uint8_t b8 : 1;
654   uint8_t b9 : 1;
655 } tsbf_9b;
656 /* { dg-final { scan-file godump-1.out "(?n)^type _tsbf_9b struct \{ Godump_0_pad \\\[2\\\]byte; \}$" } } */
657 
658 struct {
659   uint8_t b1 : 1; uint8_t b2 : 1; uint8_t b3 : 1; uint8_t b4 : 1;
660   uint8_t b5 : 1; uint8_t b6 : 1; uint8_t b7 : 1; uint8_t b8 : 1;
661   uint8_t b9 : 1;
662 } sbf_9b;
663 /* { dg-final { scan-file godump-1.out "(?n)^var _sbf_9b struct \{ Godump_0_pad \\\[2\\\]byte; \}$" } } */
664 
665 typedef struct {
666   uint8_t b1 : 7; uint8_t b2 : 7; uint8_t b3 : 2;
667 } tsbf_18b;
668 /* { dg-final { scan-file godump-1.out "(?n)^type _tsbf_18b struct \{ Godump_0_pad \\\[3\\\]byte; \}$" } } */
669 
670 struct {
671   uint8_t b1 : 7; uint8_t b2 : 7; uint8_t b3 : 2;
672 } sbf_18b;
673 /* { dg-final { scan-file godump-1.out "(?n)^var _sbf_18b struct \{ Godump_0_pad \\\[3\\\]byte; \}$" } } */
674 
675 struct
676 {
677   uint16_t bf1 : 8;
678   uint8_t c;
679   uint16_t bf2 : 8;
680   uint32_t bf3 : 12;
681   uint16_t s;
682 } sbf_gaps;
683 /* { dg-final { scan-file godump-1.out "(?n)^var _sbf_gaps struct \{ bf1 uint8; c uint8; bf2 uint8; Godump_0_pad \\\[2\\\]byte; s uint16; Godump_1_align \\\[0\\\]int32; \}$" } } */
684 
685 typedef struct
686 {
687   uint16_t bf1 : 8;
688   uint8_t c;
689   uint16_t bf2 : 8;
690   uint32_t bf3 : 12;
691   uint16_t s;
692 } tsbf_gaps;
693 /* { dg-final { scan-file godump-1.out "(?n)^type _tsbf_gaps struct \{ bf1 uint8; c uint8; bf2 uint8; Godump_0_pad \\\[2\\\]byte; s uint16; Godump_1_align \\\[0\\\]int32; \}$" } } */
694 
695 typedef struct
696 {
697 	union
698 	{
699 		int64_t : 1;
700 		union
701 		{
702 			int32_t bf : 1;
703 			union
704 			{
705 				int16_t s;
706 				int8_t c;
707 			};
708 		};
709 	} u;
710 } ts_nested;
711 /* { dg-final { scan-file godump-1.out "(?n)^type _ts_nested struct \{ u struct \{ s int16; Godump_0_pad \\\[2\\\]byte; Godump_1_align \\\[0\\\]u?int32; \}; \}$" } } */
712 
713 struct
714 {
715 	union
716 	{
717 		int64_t : 1;
718 		union
719 		{
720 			int32_t bf : 1;
721 			union
722 			{
723 				int16_t s;
724 				int8_t c;
725 			};
726 		};
727 	} u;
728 } s_nested;
729 /* { dg-final { scan-file godump-1.out "(?n)^var _s_nested struct \{ u struct \{ s int16; Godump_0_pad \\\[2\\\]byte; Godump_1_align \\\[0\\\]u?int32; \}; \}$" } } */
730 
731 typedef struct
732 {
733 	struct
734 	{
735 		int64_t : 1;
736 		struct
737 		{
738 			int32_t bf : 1;
739 			struct
740 			{
741 				int16_t s;
742 				int8_t c;
743 			};
744 		};
745 	} u;
746 } ts_nested2;
747 /* { dg-final { scan-file godump-1.out "(?n)^type _ts_nested2 struct \{ u struct \{ Godump_0_pad \\\[4\\\]byte; Godump_1_pad \\\[2\\\]byte; s int16; c int8; Godump_2_pad \\\[1\\\]byte; Godump_3_pad \\\[2\\\]byte; Godump_4_align \\\[0\\\]u?int32; \}; \}$" } } */
748 
749 struct
750 {
751 	struct
752 	{
753 		int64_t : 1;
754 		struct
755 		{
756 			int32_t bf : 1;
757 			struct
758 			{
759 				int16_t s;
760 				int8_t c;
761 			};
762 		};
763 	} u;
764 } s_nested2;
765 /* { dg-final { scan-file godump-1.out "(?n)^var _s_nested2 struct \{ u struct \{ Godump_0_pad \\\[4\\\]byte; Godump_1_pad \\\[2\\\]byte; s int16; c int8; Godump_2_pad \\\[1\\\]byte; Godump_3_pad \\\[2\\\]byte; Godump_4_align \\\[0\\\]u?int32; \}; \}$" } } */
766 
767 
768 /*** unions ***/
769 typedef union { } tue;
770 /* { dg-final { scan-file godump-1.out "(?n)^type _tue struct \{ \}$" } } */
771 
772 union { } ue;
773 /* { dg-final { scan-file godump-1.out "(?n)^var _ue struct \{ \}$" } } */
774 
775 typedef union u_t_idem_v1 { } u_t_idem_v1;
776 /* { dg-final { scan-file godump-1.out "(?n)^type _u_t_idem_v1 struct \{ \}$" } } */
777 
778 typedef union u_t_idem_v2 u_t_idem_v2;
779 union u_t_idem_v2 { };
780 /* { dg-final { scan-file godump-1.out "(?n)^type _u_t_idem_v2 struct \{ \}$" } } */
781 
782 typedef union { uint8_t c; uint64_t l; } tu1;
783 /* { dg-final { scan-file godump-1.out "(?n)^type _tu1 struct \{ c uint8; Godump_0_pad \\\[.\\\]byte; Godump_1_align \\\[0\\\]u?int64; \}$" } } */
784 
785 union { uint8_t c; uint64_t l; } u1;
786 /* { dg-final { scan-file godump-1.out "(?n)^var _u1 struct \{ c uint8; Godump_0_pad \\\[.\\\]byte; Godump_1_align \\\[0\\\]u?int64; \}$" } } */
787 
788 typedef union { uint64_t l; uint8_t c; } tu2;
789 /* { dg-final { scan-file godump-1.out "(?n)^type _tu2 struct \{ l uint64; \}$" } } */
790 
791 union { uint64_t l; uint8_t c; } u2;
792 /* { dg-final { scan-file godump-1.out "(?n)^var _u2 struct \{ l uint64; \}$" } } */
793 
794 typedef union { uint64_t l[3]; uint8_t c; } tu3;
795 /* { dg-final { scan-file godump-1.out "(?n)^type _tu3 struct \{ l \\\[2\\+1\\\]uint64; \}$" } } */
796 
797 union { uint64_t l[3]; uint8_t c; } u3;
798 /* { dg-final { scan-file godump-1.out "(?n)^var _u3 struct \{ l \\\[2\\+1\\\]uint64; \}$" } } */
799 
800 typedef struct { union { uint8_t c; uint64_t l; }; } tsu_anon;
801 /* { dg-final { scan-file godump-1.out "(?n)^type _tsu_anon struct \{ c uint8; Godump_0_pad \\\[7\\\]byte; Godump_1_align \\\[0\\\]u?int64; \}$" } } */
802 
803 struct { union { uint8_t c; uint64_t l; }; } su_anon;
804 /* { dg-final { scan-file godump-1.out "(?n)^var _su_anon struct \{ c uint8; Godump_0_pad \\\[7\\\]byte; Godump_1_align \\\[0\\\]u?int64; \}$" } } */
805 
806 typedef union { uint64_t bf : 1; uint8_t ca[5]; } tu_size;
807 /* { dg-final { scan-file godump-1.out "(?n)^type _tu_size struct \{ ca \\\[4\\+1\\\]uint8; Godump_0_pad \\\[.\\\]byte; Godump_1_align \\\[0\\\]u?int64; \}$" } } */
808 
809 union { uint64_t bf : 1; uint8_t ca[5]; } u_size;
810 /* { dg-final { scan-file godump-1.out "(?n)^var _u_size struct \{ ca \\\[4\\+1\\\]uint8; Godump_0_pad \\\[.\\\]byte; Godump_1_align \\\[0\\\]u?int64; \}$" } } */
811 
812 typedef union { uint64_t : 1; uint8_t ca[5]; } tu2_size;
813 /* { dg-final { scan-file godump-1.out "(?n)^type _tu2_size struct \{ ca \\\[4\\+1\\\]uint8; \}$" } } */
814 
815 union { uint64_t : 1; uint8_t ca[5]; } u2_size;
816 /* { dg-final { scan-file godump-1.out "(?n)^var _u2_size struct \{ ca \\\[4\\+1\\\]uint8; \}$" } } */
817 
818 typedef union u_undef_t u_undef_t2;
819 
820 typedef union { uint64_t b : 1; uint8_t ca[5]; } tu3_size;
821 /* { dg-final { scan-file godump-1.out "(?n)^type _tu3_size struct \{ ca \\\[4\\+1\\\]uint8; Godump_0_pad \\\[.\\\]byte; Godump_1_align \\\[0\\\]u?int64; \}$" } } */
822 
823 union { uint64_t b : 1; uint8_t ca[5]; } u3_size;
824 /* { dg-final { scan-file godump-1.out "(?n)^var _u3_size struct \{ ca \\\[4\\+1\\\]uint8; Godump_0_pad \\\[.\\\]byte; Godump_1_align \\\[0\\\]u?int64; \}$" } } */
825 
826 typedef union
827 {
828 	union
829 	{
830 		int64_t : 1;
831 		union
832 		{
833 			int32_t bf : 1;
834 			union
835 			{
836 				int16_t s;
837 				int8_t c;
838 			};
839 		};
840 	} u;
841 } tu_nested;
842 /* { dg-final { scan-file godump-1.out "(?n)^type _tu_nested struct \{ u struct \{ s int16; Godump_0_pad \\\[2\\\]byte; Godump_1_align \\\[0\\\]u?int32; \}; \}$" } } */
843 
844 union
845 {
846 	union
847 	{
848 		int64_t : 1;
849 		union
850 		{
851 			int32_t bf : 1;
852 			union
853 			{
854 				int16_t s;
855 				int8_t c;
856 			};
857 		};
858 	} u;
859 } u_nested;
860 /* { dg-final { scan-file godump-1.out "(?n)^var _u_nested struct \{ u struct \{ s int16; Godump_0_pad \\\[2\\\]byte; Godump_1_align \\\[0\\\]u?int32; \}; \}$" } } */
861 
862 typedef union
863 {
864 	struct
865 	{
866 		int64_t : 1;
867 		struct
868 		{
869 			int32_t bf : 1;
870 			struct
871 			{
872 				int16_t s;
873 				int8_t c;
874 			};
875 		};
876 	} u;
877 } tu_nested2;
878 /* { dg-final { scan-file godump-1.out "(?n)^type _tu_nested2 struct \{ u struct \{ Godump_0_pad \\\[4\\\]byte; Godump_1_pad \\\[2\\\]byte; s int16; c int8; Godump_2_pad \\\[1\\\]byte; Godump_3_pad \\\[2\\\]byte; Godump_4_align \\\[0\\\]u?int32; \}; \}$" } } */
879 
880 union
881 {
882 	struct
883 	{
884 		int64_t : 1;
885 		struct
886 		{
887 			int32_t bf : 1;
888 			struct
889 			{
890 				int16_t s;
891 				int8_t c;
892 			};
893 		};
894 	} u;
895 } u_nested2;
896 /* { dg-final { scan-file godump-1.out "(?n)^var _u_nested2 struct \{ u struct \{ Godump_0_pad \\\[4\\\]byte; Godump_1_pad \\\[2\\\]byte; s int16; c int8; Godump_2_pad \\\[1\\\]byte; Godump_3_pad \\\[2\\\]byte; Godump_4_align \\\[0\\\]u?int32; \}; \}$" } } */
897 
898 
899 /*** functions ***/
900 extern uint32_t func1(uint8_t c);
901 /* { dg-final { scan-file godump-1.out "(?n)^func _func1 \[(\]uint\[0-9\]*\[)\] uint\[0-9\]* __asm__\[(\]\"func1\"\[)\]$" } } */
902 
903 typedef int8_t (*func_t)(void *p);
904 /* { dg-final { scan-file godump-1.out "(?n)^type _func_t func\[(\]\\*byte\[)\] int\[0-9\]*$" } } */
905 
906 /* { dg-final { remove-build-file "godump-1.out" } } */
907