Fortran: fix dependency checks for inquiry refs [PR115039]
[official-gcc.git] / gcc / testsuite / gcc.target / nvptx / abi-vararg-2.c
blobbcaeb5b241622a3359064767e02a3dacefa29de1
1 /* { dg-do run } */
2 /* { dg-additional-options "-Wno-pedantic -Wno-long-long -fshort-enums" } */
4 /* va args, promoted as regular knr args. */
6 void __attribute__ ((noinline)) chars (int i, ...)
8 __builtin_va_list args;
9 __builtin_va_start (args, i);
11 if (__builtin_va_arg (args, int) != 1) __builtin_abort ();
12 if (__builtin_va_arg (args, int) != 2) __builtin_abort ();
13 __builtin_va_end (args);
16 void __attribute__ ((noinline)) shorts (int i, ...)
18 __builtin_va_list args;
19 __builtin_va_start (args, i);
21 if (__builtin_va_arg (args, int) != 1) __builtin_abort ();
22 if (__builtin_va_arg (args, int) != 2) __builtin_abort ();
23 if (__builtin_va_arg (args, int) != 3) __builtin_abort ();
24 __builtin_va_end (args);
27 void __attribute__ ((noinline)) ints (int i, ...)
29 __builtin_va_list args;
30 __builtin_va_start (args, i);
32 if (__builtin_va_arg (args, int) != 1) __builtin_abort ();
33 if (__builtin_va_arg (args, int) != 2) __builtin_abort ();
34 if (__builtin_va_arg (args, int) != 3) __builtin_abort ();
35 __builtin_va_end (args);
38 void __attribute__ ((noinline)) longlongs (int i, ...)
40 __builtin_va_list args;
41 __builtin_va_start (args, i);
43 if (__builtin_va_arg (args, int) != 1) __builtin_abort ();
44 if (__builtin_va_arg (args, long long) != 2) __builtin_abort ();
45 if (__builtin_va_arg (args, long long) != 3) __builtin_abort ();
46 __builtin_va_end (args);
49 typedef int __attribute__ ((mode(TI))) ti;
51 void __attribute__ ((noinline)) tis (int i, ...)
53 __builtin_va_list args;
54 __builtin_va_start (args, i);
56 if (__builtin_va_arg (args, int) != 1) __builtin_abort ();
57 if (__builtin_va_arg (args, ti) != 2) __builtin_abort ();
58 if (__builtin_va_arg (args, ti) != 3) __builtin_abort ();
59 __builtin_va_end (args);
62 void __attribute__ ((noinline)) floats (int i, ...)
64 __builtin_va_list args;
65 __builtin_va_start (args, i);
67 if (__builtin_va_arg (args, int) != 1) __builtin_abort ();
68 if (__builtin_va_arg (args, double) != 2) __builtin_abort ();
69 if (__builtin_va_arg (args, double) != 3) __builtin_abort ();
70 __builtin_va_end (args);
73 void __attribute__ ((noinline)) doubles (int i, ...)
75 __builtin_va_list args;
76 __builtin_va_start (args, i);
78 if (__builtin_va_arg (args, int) != 1) __builtin_abort ();
79 if (__builtin_va_arg (args, double) != 2) __builtin_abort ();
80 if (__builtin_va_arg (args, double) != 3) __builtin_abort ();
81 __builtin_va_end (args);
84 typedef enum {ec1, ec2, ecmax = 0xf} echar;
85 typedef enum {es1, es2, esmax = 0xfff} eshort;
86 typedef enum {ei1, ei2, eimax = 0xfffff} eint;
88 void __attribute__ ((noinline)) echars (int i, ...)
90 __builtin_va_list args;
91 __builtin_va_start (args, i);
93 if (__builtin_va_arg (args, int) != ec1) __builtin_abort ();
94 if (__builtin_va_arg (args, int) != ec2) __builtin_abort ();
95 if (__builtin_va_arg (args, int) != ecmax) __builtin_abort ();
96 __builtin_va_end (args);
99 void __attribute__ ((noinline)) eshorts (int i, ...)
101 __builtin_va_list args;
102 __builtin_va_start (args, i);
104 if (__builtin_va_arg (args, int) != es1) __builtin_abort ();
105 if (__builtin_va_arg (args, int) != es2) __builtin_abort ();
106 if (__builtin_va_arg (args, int) != esmax) __builtin_abort ();
107 __builtin_va_end (args);
110 void __attribute__ ((noinline)) eints (int i, ...)
112 __builtin_va_list args;
113 __builtin_va_start (args, i);
115 if (__builtin_va_arg (args, int) != ei1) __builtin_abort ();
116 if (__builtin_va_arg (args, int) != ei2) __builtin_abort ();
117 if (__builtin_va_arg (args, int) != eimax) __builtin_abort ();
118 __builtin_va_end (args);
121 typedef struct {char a;} one;
122 typedef struct {short a;} two;
123 typedef struct {int a;} four;
124 typedef struct {long long a;} eight;
125 typedef struct {int a, b[12];} big;
127 void __attribute__ ((noinline)) structs (int i, ...)
129 __builtin_va_list args;
130 __builtin_va_start (args, i);
132 if (__builtin_va_arg (args, int) != 1) __builtin_abort ();
133 if (__builtin_va_arg (args, one).a != 2) __builtin_abort ();
134 if (__builtin_va_arg (args, int) != 3) __builtin_abort ();
135 if (__builtin_va_arg (args, two).a != 4) __builtin_abort ();
136 if (__builtin_va_arg (args, int) != 5) __builtin_abort ();
137 if (__builtin_va_arg (args, four).a != 6) __builtin_abort ();
138 if (__builtin_va_arg (args, int) != 7) __builtin_abort ();
139 if (__builtin_va_arg (args, eight).a != 8) __builtin_abort ();
140 if (__builtin_va_arg (args, int) != 9) __builtin_abort ();
141 if (__builtin_va_arg (args, big).a != 10) __builtin_abort ();
142 __builtin_va_end (args);
145 int main ()
147 char vc1, vc2, vc3, vc4, vc5;
148 short vs1, vs2, vs3;
149 int vi1, vi2, vi3;
150 long long vll1, vll2;
151 ti vti1, vti2;
152 float vf1, vf2;
153 double vd1, vd2;
155 one vone;
156 two vtwo;
157 four vfour;
158 eight veight;
159 big vbig;
160 echar vec1, vec2, vec3;
161 eshort ves1, ves2, ves3;
162 eint vei1, vei2, vei3;
164 vc1 = 1, vc2 = 2;
165 chars (1, vc1, vc2);
167 vc1 = 1, vs1 = 2, vs2 = 3;
168 shorts (1, vc1, vs1, vs2);
170 vc1 = 1, vi1 = 2, vi2 = 3;
171 ints (1, vc1, vi1, vi2);
173 vc1 = 1, vll1 = 2, vll2 = 3;
174 longlongs (1, vc1, vll1, vll2);
176 vc1 = 1, vti1 = 2, vti2 = 3;
177 tis (1, vc1, vti1, vti2);
179 vc1 = 1, vf1 = 2, vf2 = 3;
180 floats (1, vc1, vf1, vf2);
181 doubles (1, vc1, vf1, vf2); /* Floats are promoted, so this should work. */
183 vc1 = 1, vd1 = 2, vd2 = 3;
184 floats (1, vc1, vf1, vf2); /* Floats are promoted, so this should work. */
185 doubles (1, vc1, vf1, vf2);
187 vec1 = ec1, vec2 = ec2, vec3 = ecmax;
188 echars (1, vec1, vec2, vec3);
189 vc1 = ec1, vc2 = ec2, vc3 = ecmax;
190 echars (1, vc1, vc2, vc3);
192 ves1 = ec1, ves2 = ec2, ves3 = esmax;
193 eshorts (1, ves1, ves2, ves3);
194 vs1 = ec1, vs2 = ec2, vs3 = esmax;
195 eshorts (1, vs1, vs2, vs3);
197 vei1 = ec1, vei2 = ec2, vei3 = eimax;
198 eints (1, vei1, vei2, vei3);
199 vi1 = ec1, vi2 = ec2, vi3 = eimax;
200 eints (1, vi1, vi2, vi3);
202 vc1 = 1, vone.a = 2, vc2 = 3, vtwo.a = 4,
203 vc3 = 5, vfour.a = 6, vc4 = 7, veight.a = 8,
204 vc5 = 9, vbig.a = 10;
205 structs (1, vc1, vone, vc2, vtwo, vc3, vfour, vc4, veight, vc5, vbig);
207 return 0;