6 // Intended to exercise all syntactic parts of the C language.
29 static void f0(int x) {
32 inline void f0_0(int x) {
36 extern void f0_1(int x) {
54 void *label = &&theif;
75 asm goto("" ::::label_true);
84 typedef struct ipair {
88 void f4(int a0, int a1, int a2, va_list ap) {
89 int t0 = a0 ? a1 : a2;
90 float t1 = (float) a0;
92 ipair t2a = { .second = 2 };
93 int t3 = sizeof(ipair);
102 const char *t9 = __FUNCTION__;
104 int t11 = __builtin_offsetof(ipair, first);
105 int t12 = __builtin_types_compatible_p(ipair, int);
106 int t12_0 = __builtin_classify_type(t0);
107 int t12_1 = __builtin_classify_type(t1);
108 int t12_2 = __builtin_classify_type(t2);
109 // FIXME: Add _Complex and aggregate cases.
110 int t13 = va_arg(ap, int);
113 int t14 = __extension__(t13);
115 unsigned t16 = t14 ^ t15;
117 int t17_0 = t16 % t16;
119 int t19 = t18 ? 0 : 1;
120 char *t20; ++t20; --t20;
121 float t21; ++t21; --t21;
122 double t22; ++t22; --t22;
123 long double t23; ++t23; --t23;
125 int t25 = __real t24;
126 int t26 = __imag t24;
127 const char *t27 = t9;
128 t27 += (unsigned char) 0xFF;
129 t27 += (signed char) 0xFF;
131 struct { char f0[10]; } *t28;
133 char *t30 = &t28->f0[1];
135 struct s1 { int f0; };
136 struct s1 t31_a, t31_b;
138 int t31 = (t31_cond ? t31_a : t31_b).f0;
140 _Complex float t32_a, t32_b;
142 int t32 = __real (t32_cond ? t32_a : t32_b);
144 struct { int x, y; } t33, *t34, t35[12], t36(int, float);
145 float t37, *t38, t39[9], t40(double);
150 typedef __attribute__((ext_vector_type(2))) float float2;
151 typedef __attribute__((ext_vector_type(4))) float float4;
154 float4 t0 = (float4) { 0, 1, 2, 3 };
156 t0.lo.even = t1.hi.x;
158 // irgen doesn't support this yet.
161 float2 t2 = (t2_cond ? t0 : t1).lo;
166 const char *s0 = __func__;
167 const char *s1 = __FUNCTION__;
168 const char *s2 = __PRETTY_FUNCTION__;
171 // Arg mismatch with passed type.
182 // Function which inputs an array
191 x = (struct f10_s0) { .iv0 = "name" };
194 // Nested structures.
202 // Unnamed structures.
211 struct s12 var = { .aa = 33 };