1 #include <stdarg.h>
2 #include <stdbool.h>
3 #include <stdint.h>
4 #include <stdlib.h>
5 
6 enum C {
7   X = 2,
8   Y,
9 };
10 typedef uint32_t C;
11 
12 typedef struct A {
13   int32_t m0;
14 } A;
15 
16 typedef struct B {
17   int32_t x;
18   float y;
19 } B;
20 
21 enum F_Tag {
22   Foo,
23   Bar,
24   Baz,
25 };
26 typedef uint8_t F_Tag;
27 
28 typedef struct Bar_Body {
29   F_Tag tag;
30   uint8_t x;
31   int16_t y;
32 } Bar_Body;
33 
34 typedef union F {
35   F_Tag tag;
36   struct {
37     F_Tag foo_tag;
38     int16_t foo;
39   };
40   Bar_Body bar;
41 } F;
42 
43 enum H_Tag {
44   Hello,
45   There,
46   Everyone,
47 };
48 typedef uint8_t H_Tag;
49 
50 typedef struct There_Body {
51   uint8_t x;
52   int16_t y;
53 } There_Body;
54 
55 typedef struct H {
56   H_Tag tag;
57   union {
58     struct {
59       int16_t hello;
60     };
61     There_Body there;
62   };
63 } H;
64 
65 void root(struct A x, struct B y, C z, union F f, struct H h);
66