1e93f7393Sniklas /*  Test passing of arguments to functions.  Use various sorts of arguments,
2e93f7393Sniklas     including basic types, pointers to those types, structures, lots of
3e93f7393Sniklas     args, etc, in various combinations. */
4e93f7393Sniklas 
5e93f7393Sniklas /* AIX requires this to be the first thing in the file.  */
6e93f7393Sniklas #ifdef __GNUC__
7e93f7393Sniklas #  define alloca __builtin_alloca
8e93f7393Sniklas #  define HAVE_STACK_ALLOCA 1
9e93f7393Sniklas #else /* not __GNUC__ */
10e93f7393Sniklas #  ifdef _AIX
11e93f7393Sniklas      #pragma alloca
12e93f7393Sniklas #    define HAVE_STACK_ALLOCA 1
13e93f7393Sniklas #  else /* Not AIX */
14e93f7393Sniklas #    ifdef sparc
15e93f7393Sniklas #      include <alloca.h>
16e93f7393Sniklas #      define HAVE_STACK_ALLOCA 1
17e93f7393Sniklas #      ifdef __STDC__
18e93f7393Sniklas          void *alloca ();
19e93f7393Sniklas #      else
20e93f7393Sniklas          char *alloca ();
21e93f7393Sniklas #      endif /* __STDC__ */
22e93f7393Sniklas #    endif /* sparc */
23e93f7393Sniklas #  endif /* Not AIX */
24e93f7393Sniklas #endif /* not __GNUC__ */
25e93f7393Sniklas 
26e93f7393Sniklas char c = 'a';
27e93f7393Sniklas char *cp = &c;
28e93f7393Sniklas 
29e93f7393Sniklas unsigned char uc = 'b';
30e93f7393Sniklas unsigned char *ucp = &uc;
31e93f7393Sniklas 
32e93f7393Sniklas short s = 1;
33e93f7393Sniklas short *sp = &s;
34e93f7393Sniklas 
35e93f7393Sniklas unsigned short us = 6;
36e93f7393Sniklas unsigned short *usp = &us;
37e93f7393Sniklas 
38e93f7393Sniklas int i = 2;
39e93f7393Sniklas int *ip = &i;
40e93f7393Sniklas 
41e93f7393Sniklas unsigned int ui = 7;
42e93f7393Sniklas unsigned int *uip = &ui;
43e93f7393Sniklas 
44e93f7393Sniklas long l = 3;
45e93f7393Sniklas long *lp = &l;
46e93f7393Sniklas 
47e93f7393Sniklas unsigned long ul = 8;
48e93f7393Sniklas unsigned long *ulp = &ul;
49e93f7393Sniklas 
50e93f7393Sniklas float f = 4.0;
51e93f7393Sniklas float *fp = &f;
52e93f7393Sniklas 
53e93f7393Sniklas double d = 5.0;
54e93f7393Sniklas double *dp = &d;
55e93f7393Sniklas 
56e93f7393Sniklas struct stag {
57e93f7393Sniklas     int s1;
58e93f7393Sniklas     int s2;
59e93f7393Sniklas } st = { 101, 102 };
60e93f7393Sniklas struct stag *stp = &st;
61e93f7393Sniklas 
62e93f7393Sniklas union utag {
63e93f7393Sniklas     int u1;
64e93f7393Sniklas     long u2;
65e93f7393Sniklas } un;
66e93f7393Sniklas union utag *unp = &un;
67e93f7393Sniklas 
68e93f7393Sniklas char carray[] = {'a', 'n', ' ', 'a', 'r', 'r', 'a', 'y', '\0'};
69e93f7393Sniklas 
70e93f7393Sniklas 
71e93f7393Sniklas /* Test various permutations and interleaving of integral arguments */
72e93f7393Sniklas 
73e93f7393Sniklas 
74*b725ae77Skettenis #ifdef PROTOTYPES
call0a(char c,short s,int i,long l)75*b725ae77Skettenis void call0a (char c, short s, int i, long l)
76*b725ae77Skettenis #else
77e93f7393Sniklas call0a (c, s, i, l)
78e93f7393Sniklas char c; short s; int i; long l;
79*b725ae77Skettenis #endif
80e93f7393Sniklas {
81e93f7393Sniklas   c = 'a';
82e93f7393Sniklas   s = 5;
83e93f7393Sniklas   i = 6;
84e93f7393Sniklas   l = 7;
85e93f7393Sniklas }
86e93f7393Sniklas 
87*b725ae77Skettenis #ifdef PROTOTYPES
call0b(short s,int i,long l,char c)88*b725ae77Skettenis void call0b (short s, int i, long l, char c)
89*b725ae77Skettenis #else
90e93f7393Sniklas call0b (s, i, l, c)
91e93f7393Sniklas short s; int i; long l; char c;
92*b725ae77Skettenis #endif
93e93f7393Sniklas {
94e93f7393Sniklas   s = 6; i = 7; l = 8; c = 'j';
95e93f7393Sniklas }
96e93f7393Sniklas 
97*b725ae77Skettenis #ifdef PROTOTYPES
call0c(int i,long l,char c,short s)98*b725ae77Skettenis void call0c (int i, long l, char c, short s)
99*b725ae77Skettenis #else
100e93f7393Sniklas call0c (i, l, c, s)
101e93f7393Sniklas int i; long l; char c; short s;
102*b725ae77Skettenis #endif
103e93f7393Sniklas {
104e93f7393Sniklas   i = 3; l = 4; c = 'k'; s = 5;
105e93f7393Sniklas }
106e93f7393Sniklas 
107*b725ae77Skettenis #ifdef PROTOTYPES
call0d(long l,char c,short s,int i)108*b725ae77Skettenis void call0d (long l, char c, short s, int i)
109*b725ae77Skettenis #else
110e93f7393Sniklas call0d (l, c, s, i)
111e93f7393Sniklas long l; char c; short s; int i;
112*b725ae77Skettenis #endif
113e93f7393Sniklas {
114e93f7393Sniklas   l = 7; c = 'z'; s = 8; i = 9;
115e93f7393Sniklas }
116e93f7393Sniklas 
117*b725ae77Skettenis #ifdef PROTOTYPES
call0e(char c1,long l,char c2,int i,char c3,short s,char c4,char c5)118*b725ae77Skettenis void call0e (char c1, long l, char c2, int i, char c3, short s, char c4, char c5)
119*b725ae77Skettenis #else
120e93f7393Sniklas call0e (c1, l, c2, i, c3, s, c4, c5)
121e93f7393Sniklas char c1; long l; char c2; int i; char c3; short s; char c4; char c5;
122*b725ae77Skettenis #endif
123e93f7393Sniklas {
124e93f7393Sniklas   c1 = 'a'; l = 5; c2 = 'b'; i = 7; c3 = 'c'; s = 7; c4 = 'f'; c5 = 'g';
125e93f7393Sniklas }
126e93f7393Sniklas 
127e93f7393Sniklas 
128e93f7393Sniklas /* Test various permutations and interleaving of unsigned integral arguments */
129e93f7393Sniklas 
130e93f7393Sniklas 
131*b725ae77Skettenis #ifdef PROTOTYPES
call1a(unsigned char uc,unsigned short us,unsigned int ui,unsigned long ul)132*b725ae77Skettenis void call1a (unsigned char uc, unsigned short us, unsigned int ui, unsigned long ul)
133*b725ae77Skettenis #else
134e93f7393Sniklas call1a (uc, us, ui, ul)
135e93f7393Sniklas unsigned char uc; unsigned short us; unsigned int ui; unsigned long ul;
136*b725ae77Skettenis #endif
137e93f7393Sniklas {
138e93f7393Sniklas   uc = 5; us = 6; ui = 7; ul = 8;
139e93f7393Sniklas }
140e93f7393Sniklas 
141*b725ae77Skettenis #ifdef PROTOTYPES
call1b(unsigned short us,unsigned int ui,unsigned long ul,unsigned char uc)142*b725ae77Skettenis void call1b (unsigned short us, unsigned int ui, unsigned long ul, unsigned char uc)
143*b725ae77Skettenis #else
144e93f7393Sniklas call1b (us, ui, ul, uc)
145e93f7393Sniklas unsigned short us; unsigned int ui; unsigned long ul; unsigned char uc;
146*b725ae77Skettenis #endif
147e93f7393Sniklas {
148e93f7393Sniklas   uc = 5; us = 6; ui = 7; ul = 8;
149e93f7393Sniklas }
150e93f7393Sniklas 
151*b725ae77Skettenis #ifdef PROTOTYPES
call1c(unsigned int ui,unsigned long ul,unsigned char uc,unsigned short us)152*b725ae77Skettenis void call1c (unsigned int ui, unsigned long ul, unsigned char uc, unsigned short us)
153*b725ae77Skettenis #else
154e93f7393Sniklas call1c (ui, ul, uc, us)
155e93f7393Sniklas unsigned int ui; unsigned long ul; unsigned char uc; unsigned short us;
156*b725ae77Skettenis #endif
157e93f7393Sniklas {
158e93f7393Sniklas   uc = 5; us = 6; ui = 7; ul = 8;
159e93f7393Sniklas }
160e93f7393Sniklas 
161*b725ae77Skettenis #ifdef PROTOTYPES
call1d(unsigned long ul,unsigned char uc,unsigned short us,unsigned int ui)162*b725ae77Skettenis void call1d (unsigned long ul, unsigned char uc, unsigned short us, unsigned int ui)
163*b725ae77Skettenis #else
164e93f7393Sniklas call1d (ul, uc, us, ui)
165e93f7393Sniklas unsigned long ul; unsigned char uc; unsigned short us; unsigned int ui;
166*b725ae77Skettenis #endif
167e93f7393Sniklas {
168e93f7393Sniklas   uc = 5; us = 6; ui = 7; ul = 8;
169e93f7393Sniklas }
170e93f7393Sniklas 
171*b725ae77Skettenis #ifdef PROTOTYPES
call1e(unsigned char uc1,unsigned long ul,unsigned char uc2,unsigned int ui,unsigned char uc3,unsigned short us,unsigned char uc4,unsigned char uc5)172*b725ae77Skettenis void call1e (unsigned char uc1, unsigned long ul, unsigned char uc2, unsigned int ui, unsigned char uc3, unsigned short us, unsigned char uc4, unsigned char uc5)
173*b725ae77Skettenis #else
174e93f7393Sniklas call1e (uc1, ul, uc2, ui, uc3, us, uc4, uc5)
175e93f7393Sniklas unsigned char uc1; unsigned long ul; unsigned char uc2; unsigned int ui;
176e93f7393Sniklas unsigned char uc3; unsigned short us; unsigned char uc4; unsigned char uc5;
177*b725ae77Skettenis #endif
178e93f7393Sniklas {
179e93f7393Sniklas   uc1 = 5; ul = 7; uc2 = 8; ui = 9; uc3 = 10; us = 11; uc4 = 12; uc5 = 55;
180e93f7393Sniklas }
181e93f7393Sniklas 
182e93f7393Sniklas /* Test various permutations and interleaving of integral arguments with
183e93f7393Sniklas    floating point arguments. */
184e93f7393Sniklas 
185e93f7393Sniklas 
186*b725ae77Skettenis #ifdef PROTOTYPES
call2a(char c,float f1,short s,double d1,int i,float f2,long l,double d2)187*b725ae77Skettenis void call2a (char c, float f1, short s, double d1, int i, float f2, long l, double d2)
188*b725ae77Skettenis #else
189e93f7393Sniklas call2a (c, f1, s, d1, i, f2, l, d2)
190e93f7393Sniklas char c; float f1; short s; double d1; int i; float f2; long l; double d2;
191*b725ae77Skettenis #endif
192e93f7393Sniklas {
193e93f7393Sniklas   c = 'a'; f1 = 0.0; s = 5; d1 = 0.0; i = 6; f2 = 0.1; l = 7; d2 = 0.2;
194e93f7393Sniklas }
195e93f7393Sniklas 
196*b725ae77Skettenis #ifdef PROTOTYPES
call2b(float f1,short s,double d1,int i,float f2,long l,double d2,char c)197*b725ae77Skettenis void call2b (float f1, short s, double d1, int i, float f2, long l, double d2, char c)
198*b725ae77Skettenis #else
199e93f7393Sniklas call2b (f1, s, d1, i, f2, l, d2, c)
200e93f7393Sniklas float f1; short s; double d1; int i; float f2; long l; double d2; char c;
201*b725ae77Skettenis #endif
202e93f7393Sniklas {
203e93f7393Sniklas   c = 'a'; f1 = 0.0; s = 5; d1 = 0.0; i = 6; f2 = 0.1; l = 7; d2 = 0.2;
204e93f7393Sniklas }
205e93f7393Sniklas 
206*b725ae77Skettenis #ifdef PROTOTYPES
call2c(short s,double d1,int i,float f2,long l,double d2,char c,float f1)207*b725ae77Skettenis void call2c (short s, double d1, int i, float f2, long l, double d2, char c, float f1)
208*b725ae77Skettenis #else
209e93f7393Sniklas call2c (s, d1, i, f2, l, d2, c, f1)
210e93f7393Sniklas short s; double d1; int i; float f2; long l; double d2; char c; float f1;
211*b725ae77Skettenis #endif
212e93f7393Sniklas {
213e93f7393Sniklas   c = 'a'; f1 = 0.0; s = 5; d1 = 0.0; i = 6; f2 = 0.1; l = 7; d2 = 0.2;
214e93f7393Sniklas }
215e93f7393Sniklas 
216*b725ae77Skettenis #ifdef PROTOTYPES
call2d(double d1,int i,float f2,long l,double d2,char c,float f1,short s)217*b725ae77Skettenis void call2d (double d1, int i, float f2, long l, double d2, char c, float f1, short s)
218*b725ae77Skettenis #else
219e93f7393Sniklas call2d (d1, i, f2, l, d2, c, f1, s)
220e93f7393Sniklas double d1; int i; float f2; long l; double d2; char c; float f1; short s;
221*b725ae77Skettenis #endif
222e93f7393Sniklas {
223e93f7393Sniklas   c = 'a'; f1 = 0.0; s = 5; d1 = 0.0; i = 6; f2 = 0.1; l = 7; d2 = 0.2;
224e93f7393Sniklas }
225e93f7393Sniklas 
226*b725ae77Skettenis #ifdef PROTOTYPES
call2e(int i,float f2,long l,double d2,char c,float f1,short s,double d1)227*b725ae77Skettenis void call2e (int i, float f2, long l, double d2, char c, float f1, short s, double d1)
228*b725ae77Skettenis #else
229e93f7393Sniklas call2e (i, f2, l, d2, c, f1, s, d1)
230e93f7393Sniklas int i; float f2; long l; double d2; char c; float f1; short s; double d1;
231*b725ae77Skettenis #endif
232e93f7393Sniklas {
233e93f7393Sniklas   c = 'a'; f1 = 0.0; s = 5; d1 = 0.0; i = 6; f2 = 0.1; l = 7; d2 = 0.2;
234e93f7393Sniklas }
235e93f7393Sniklas 
236*b725ae77Skettenis #ifdef PROTOTYPES
call2f(float f2,long l,double d2,char c,float f1,short s,double d1,int i)237*b725ae77Skettenis void call2f (float f2, long l, double d2, char c, float f1, short s, double d1, int i)
238*b725ae77Skettenis #else
239e93f7393Sniklas call2f (f2, l, d2, c, f1, s, d1, i)
240e93f7393Sniklas float f2; long l; double d2; char c; float f1; short s; double d1; int i;
241*b725ae77Skettenis #endif
242e93f7393Sniklas {
243e93f7393Sniklas   c = 'a'; f1 = 0.0; s = 5; d1 = 0.0; i = 6; f2 = 0.1; l = 7; d2 = 0.2;
244e93f7393Sniklas }
245e93f7393Sniklas 
246*b725ae77Skettenis #ifdef PROTOTYPES
call2g(long l,double d2,char c,float f1,short s,double d1,int i,float f2)247*b725ae77Skettenis void call2g (long l, double d2, char c, float f1, short s, double d1, int i, float f2)
248*b725ae77Skettenis #else
249e93f7393Sniklas call2g (l, d2, c, f1, s, d1, i, f2)
250e93f7393Sniklas long l; double d2; char c; float f1; short s; double d1; int i; float f2;
251*b725ae77Skettenis #endif
252e93f7393Sniklas {
253e93f7393Sniklas   c = 'a'; f1 = 0.0; s = 5; d1 = 0.0; i = 6; f2 = 0.1; l = 7; d2 = 0.2;
254e93f7393Sniklas }
255e93f7393Sniklas 
256*b725ae77Skettenis #ifdef PROTOTYPES
call2h(double d2,char c,float f1,short s,double d1,int i,float f2,long l)257*b725ae77Skettenis void call2h (double d2, char c, float f1, short s, double d1, int i, float f2, long l)
258*b725ae77Skettenis #else
259e93f7393Sniklas call2h (d2, c, f1, s, d1, i, f2, l)
260e93f7393Sniklas double d2; char c; float f1; short s; double d1; int i; float f2; long l;
261*b725ae77Skettenis #endif
262e93f7393Sniklas {
263e93f7393Sniklas   c = 'a'; f1 = 0.0; s = 5; d1 = 0.0; i = 6; f2 = 0.1; l = 7; d2 = 0.2;
264e93f7393Sniklas }
265e93f7393Sniklas 
266*b725ae77Skettenis #ifdef PROTOTYPES
call2i(char c1,float f1,char c2,char c3,double d1,char c4,char c5,char c6,float f2,short s,char c7,double d2)267*b725ae77Skettenis void call2i (char c1, float f1, char c2, char c3, double d1, char c4, char c5, char c6, float f2, short s, char c7, double d2)
268*b725ae77Skettenis #else
269e93f7393Sniklas call2i (c1, f1, c2, c3, d1, c4, c5, c6, f2, s, c7, d2)
270e93f7393Sniklas char c1; float f1; char c2; char c3; double d1; char c4; char c5; char c6;
271e93f7393Sniklas float f2; short s; char c7; double d2;
272*b725ae77Skettenis #endif
273e93f7393Sniklas {
274e93f7393Sniklas   c1 = 'a'; f1 = 0.0; c2 = 5; d1 = 0.0; c3 = 6; f2 = 0.1; c4 = 7; d2 = 0.2;
275e93f7393Sniklas   c5 = 's'; c6 = 'f'; c7 = 'z'; s = 77;
276e93f7393Sniklas }
277e93f7393Sniklas 
278e93f7393Sniklas 
279e93f7393Sniklas /* Test pointers to various integral and floating types. */
280e93f7393Sniklas 
281e93f7393Sniklas 
282*b725ae77Skettenis #ifdef PROTOTYPES
call3a(char * cp,short * sp,int * ip,long * lp)283*b725ae77Skettenis void call3a (char *cp, short *sp, int *ip, long *lp)
284*b725ae77Skettenis #else
285e93f7393Sniklas call3a (cp, sp, ip, lp)
286e93f7393Sniklas char *cp; short *sp; int *ip; long *lp;
287*b725ae77Skettenis #endif
288e93f7393Sniklas {
289e93f7393Sniklas   cp = 0; sp = 0; ip = 0; lp = 0;
290e93f7393Sniklas }
291e93f7393Sniklas 
292*b725ae77Skettenis #ifdef PROTOTYPES
call3b(unsigned char * ucp,unsigned short * usp,unsigned int * uip,unsigned long * ulp)293*b725ae77Skettenis void call3b (unsigned char *ucp, unsigned short *usp, unsigned int *uip, unsigned long *ulp)
294*b725ae77Skettenis #else
295e93f7393Sniklas call3b (ucp, usp, uip, ulp)
296e93f7393Sniklas unsigned char *ucp; unsigned short *usp; unsigned int *uip;
297e93f7393Sniklas unsigned long *ulp;
298*b725ae77Skettenis #endif
299e93f7393Sniklas {
300e93f7393Sniklas   ucp = 0; usp = 0; uip = 0; ulp = 0;
301e93f7393Sniklas }
302e93f7393Sniklas 
303*b725ae77Skettenis #ifdef PROTOTYPES
call3c(float * fp,double * dp)304*b725ae77Skettenis void call3c (float *fp, double *dp)
305*b725ae77Skettenis #else
306e93f7393Sniklas call3c (fp, dp)
307e93f7393Sniklas float *fp; double *dp;
308*b725ae77Skettenis #endif
309e93f7393Sniklas {
310e93f7393Sniklas   fp = 0; dp = 0;
311e93f7393Sniklas }
312e93f7393Sniklas 
313e93f7393Sniklas 
314e93f7393Sniklas /* Test passing structures and unions by reference. */
315e93f7393Sniklas 
316e93f7393Sniklas 
317*b725ae77Skettenis #ifdef PROTOTYPES
call4a(struct stag * stp)318*b725ae77Skettenis void call4a (struct stag *stp)
319*b725ae77Skettenis #else
320e93f7393Sniklas call4a (stp)
321*b725ae77Skettenis struct stag *stp;
322*b725ae77Skettenis #endif
323*b725ae77Skettenis {stp = 0;}
324e93f7393Sniklas 
325*b725ae77Skettenis #ifdef PROTOTYPES
call4b(union utag * unp)326*b725ae77Skettenis void call4b (union utag *unp)
327*b725ae77Skettenis #else
328e93f7393Sniklas call4b (unp)
329e93f7393Sniklas union utag *unp;
330*b725ae77Skettenis #endif
331e93f7393Sniklas {
332e93f7393Sniklas   unp = 0;
333e93f7393Sniklas }
334e93f7393Sniklas 
335e93f7393Sniklas 
336e93f7393Sniklas /* Test passing structures and unions by value. */
337e93f7393Sniklas 
338e93f7393Sniklas 
339*b725ae77Skettenis #ifdef PROTOTYPES
call5a(struct stag st)340*b725ae77Skettenis void call5a (struct stag st)
341*b725ae77Skettenis #else
342e93f7393Sniklas call5a (st)
343*b725ae77Skettenis struct stag st;
344*b725ae77Skettenis #endif
345*b725ae77Skettenis {st.s1 = 5;}
346e93f7393Sniklas 
347*b725ae77Skettenis #ifdef PROTOTYPES
call5b(union utag un)348*b725ae77Skettenis void call5b (union utag un)
349*b725ae77Skettenis #else
350e93f7393Sniklas call5b (un)
351*b725ae77Skettenis union utag un;
352*b725ae77Skettenis #endif
353*b725ae77Skettenis {un.u1 = 7;}
354e93f7393Sniklas 
355e93f7393Sniklas 
356e93f7393Sniklas /* Test shuffling of args */
357e93f7393Sniklas 
358e93f7393Sniklas 
call6k()359*b725ae77Skettenis void call6k ()
360e93f7393Sniklas {
361e93f7393Sniklas }
362e93f7393Sniklas 
363*b725ae77Skettenis #ifdef PROTOTYPES
call6j(unsigned long ul)364*b725ae77Skettenis void call6j (unsigned long ul)
365*b725ae77Skettenis #else
366e93f7393Sniklas call6j (ul)
367e93f7393Sniklas unsigned long ul;
368*b725ae77Skettenis #endif
369e93f7393Sniklas {
370e93f7393Sniklas   ul = ul;
371e93f7393Sniklas     call6k ();
372e93f7393Sniklas }
373e93f7393Sniklas 
374*b725ae77Skettenis #ifdef PROTOTYPES
call6i(unsigned int ui,unsigned long ul)375*b725ae77Skettenis void call6i (unsigned int ui, unsigned long ul)
376*b725ae77Skettenis #else
377*b725ae77Skettenis call6i (ui, ul)
378*b725ae77Skettenis unsigned int ui; unsigned long ul;
379*b725ae77Skettenis #endif
380e93f7393Sniklas {
381*b725ae77Skettenis   ui = ui;
382*b725ae77Skettenis     call6j (ul);
383e93f7393Sniklas }
384e93f7393Sniklas 
385*b725ae77Skettenis #ifdef PROTOTYPES
call6h(unsigned short us,unsigned int ui,unsigned long ul)386*b725ae77Skettenis void call6h (unsigned short us, unsigned int ui, unsigned long ul)
387*b725ae77Skettenis #else
388*b725ae77Skettenis call6h (us, ui, ul)
389*b725ae77Skettenis unsigned short us; unsigned int ui; unsigned long ul;
390*b725ae77Skettenis #endif
391*b725ae77Skettenis {
392*b725ae77Skettenis   us = us;
393*b725ae77Skettenis     call6i (ui, ul);
394*b725ae77Skettenis }
395*b725ae77Skettenis 
396*b725ae77Skettenis #ifdef PROTOTYPES
call6g(unsigned char uc,unsigned short us,unsigned int ui,unsigned long ul)397*b725ae77Skettenis void call6g (unsigned char uc, unsigned short us, unsigned int ui, unsigned long ul)
398*b725ae77Skettenis #else
399*b725ae77Skettenis call6g (uc, us, ui, ul)
400*b725ae77Skettenis unsigned char uc; unsigned short us; unsigned int ui; unsigned long ul;
401*b725ae77Skettenis #endif
402*b725ae77Skettenis {
403*b725ae77Skettenis   uc = uc;
404*b725ae77Skettenis     call6h (us, ui, ul);
405*b725ae77Skettenis }
406*b725ae77Skettenis 
407*b725ae77Skettenis #ifdef PROTOTYPES
call6f(double d,unsigned char uc,unsigned short us,unsigned int ui,unsigned long ul)408*b725ae77Skettenis void call6f (double d, unsigned char uc, unsigned short us, unsigned int ui, unsigned long ul)
409*b725ae77Skettenis #else
410*b725ae77Skettenis call6f (d, uc, us, ui, ul)
411*b725ae77Skettenis double d;
412*b725ae77Skettenis unsigned char uc; unsigned short us; unsigned int ui; unsigned long ul;
413*b725ae77Skettenis #endif
414*b725ae77Skettenis {
415*b725ae77Skettenis   d = d;
416*b725ae77Skettenis     call6g (uc, us, ui, ul);
417*b725ae77Skettenis }
418*b725ae77Skettenis 
419*b725ae77Skettenis #ifdef PROTOTYPES
call6e(float f,double d,unsigned char uc,unsigned short us,unsigned int ui,unsigned long ul)420*b725ae77Skettenis void call6e (float f, double d, unsigned char uc, unsigned short us, unsigned int ui, unsigned long ul)
421*b725ae77Skettenis #else
422*b725ae77Skettenis call6e (f, d, uc, us, ui, ul)
423*b725ae77Skettenis float f; double d;
424*b725ae77Skettenis unsigned char uc; unsigned short us; unsigned int ui; unsigned long ul;
425*b725ae77Skettenis #endif
426*b725ae77Skettenis {
427*b725ae77Skettenis   f = f;
428*b725ae77Skettenis     call6f (d, uc, us, ui, ul);
429*b725ae77Skettenis }
430*b725ae77Skettenis 
431*b725ae77Skettenis #ifdef PROTOTYPES
call6d(long l,float f,double d,unsigned char uc,unsigned short us,unsigned int ui,unsigned long ul)432*b725ae77Skettenis void call6d (long l, float f, double d, unsigned char uc, unsigned short us, unsigned int ui, unsigned long ul)
433*b725ae77Skettenis #else
434*b725ae77Skettenis call6d (l, f, d, uc, us, ui, ul)
435*b725ae77Skettenis long l; float f; double d;
436*b725ae77Skettenis unsigned char uc; unsigned short us; unsigned int ui; unsigned long ul;
437*b725ae77Skettenis #endif
438*b725ae77Skettenis {
439*b725ae77Skettenis   l = l;
440*b725ae77Skettenis     call6e (f, d, uc, us, ui, ul);
441*b725ae77Skettenis }
442*b725ae77Skettenis 
443*b725ae77Skettenis #ifdef PROTOTYPES
call6c(int i,long l,float f,double d,unsigned char uc,unsigned short us,unsigned int ui,unsigned long ul)444*b725ae77Skettenis void call6c (int i, long l, float f, double d, unsigned char uc, unsigned short us, unsigned int ui, unsigned long ul)
445*b725ae77Skettenis #else
446*b725ae77Skettenis call6c (i, l, f, d, uc, us, ui, ul)
447*b725ae77Skettenis int i; long l; float f; double d;
448*b725ae77Skettenis unsigned char uc; unsigned short us; unsigned int ui; unsigned long ul;
449*b725ae77Skettenis #endif
450*b725ae77Skettenis {
451*b725ae77Skettenis   i = i;
452*b725ae77Skettenis     call6d (l, f, d, uc, us, ui, ul);
453*b725ae77Skettenis }
454*b725ae77Skettenis 
455*b725ae77Skettenis #ifdef PROTOTYPES
call6b(short s,int i,long l,float f,double d,unsigned char uc,unsigned short us,unsigned int ui,unsigned long ul)456*b725ae77Skettenis void call6b (short s, int i, long l, float f, double d, unsigned char uc, unsigned short us, unsigned int ui, unsigned long ul)
457*b725ae77Skettenis #else
458*b725ae77Skettenis call6b (s, i, l, f, d, uc, us, ui, ul)
459*b725ae77Skettenis short s; int i; long l; float f; double d;
460*b725ae77Skettenis unsigned char uc; unsigned short us; unsigned int ui; unsigned long ul;
461*b725ae77Skettenis #endif
462*b725ae77Skettenis {
463*b725ae77Skettenis   s = s;
464*b725ae77Skettenis     call6c (i, l, f, d, uc, us, ui, ul);
465*b725ae77Skettenis }
466*b725ae77Skettenis 
467*b725ae77Skettenis #ifdef PROTOTYPES
call6a(char c,short s,int i,long l,float f,double d,unsigned char uc,unsigned short us,unsigned int ui,unsigned long ul)468*b725ae77Skettenis void call6a (char c, short s, int i, long l, float f, double d, unsigned char uc, unsigned short us, unsigned int ui, unsigned long ul)
469*b725ae77Skettenis #else
470*b725ae77Skettenis call6a (c, s, i, l, f, d, uc, us, ui, ul)
471*b725ae77Skettenis char c; short s; int i; long l; float f; double d;
472*b725ae77Skettenis unsigned char uc; unsigned short us; unsigned int ui; unsigned long ul;
473*b725ae77Skettenis #endif
474*b725ae77Skettenis {
475*b725ae77Skettenis   c = c;
476*b725ae77Skettenis     call6b (s, i, l, f, d, uc, us, ui, ul);
477*b725ae77Skettenis }
478e93f7393Sniklas 
479e93f7393Sniklas /*  Test shuffling of args, round robin */
480e93f7393Sniklas 
481e93f7393Sniklas 
482*b725ae77Skettenis #ifdef PROTOTYPES
call7k(char c,int i,short s,long l,float f,unsigned char uc,double d,unsigned short us,unsigned long ul,unsigned int ui)483*b725ae77Skettenis void call7k (char c, int i, short s, long l, float f, unsigned char uc, double d, unsigned short us, unsigned long ul, unsigned int ui)
484*b725ae77Skettenis #else
485*b725ae77Skettenis call7k (c, i, s, l, f, uc, d, us, ul, ui)
486e93f7393Sniklas char c; int i; short s; long l; float f; unsigned char uc; double d; unsigned short us; unsigned long ul; unsigned int ui;
487*b725ae77Skettenis #endif
488e93f7393Sniklas {
489*b725ae77Skettenis   c = 'a'; i = 7; s = 8; l = 7; f = 0.3; uc = 44; d = 0.44; us = 77;
490*b725ae77Skettenis   ul = 43; ui = 33;
491e93f7393Sniklas }
492e93f7393Sniklas 
493*b725ae77Skettenis #ifdef PROTOTYPES
call7j(unsigned int ui,char c,int i,short s,long l,float f,unsigned char uc,double d,unsigned short us,unsigned long ul)494*b725ae77Skettenis void call7j (unsigned int ui, char c, int i, short s, long l, float f, unsigned char uc, double d, unsigned short us, unsigned long ul)
495*b725ae77Skettenis #else
496e93f7393Sniklas call7j (ui, c, i, s, l, f, uc, d, us, ul)
497e93f7393Sniklas unsigned int ui; char c; int i; short s; long l; float f; unsigned char uc; double d; unsigned short us; unsigned long ul;
498*b725ae77Skettenis #endif
499e93f7393Sniklas {
500e93f7393Sniklas     call7k (c, i, s, l, f, uc, d, us, ul, ui);
501e93f7393Sniklas }
502e93f7393Sniklas 
503*b725ae77Skettenis #ifdef PROTOTYPES
call7i(unsigned long ul,unsigned int ui,char c,int i,short s,long l,float f,unsigned char uc,double d,unsigned short us)504*b725ae77Skettenis void call7i (unsigned long ul, unsigned int ui, char c, int i, short s, long l, float f, unsigned char uc, double d, unsigned short us)
505*b725ae77Skettenis #else
506*b725ae77Skettenis call7i (ul, ui, c, i, s, l, f, uc, d, us)
507*b725ae77Skettenis unsigned long ul; unsigned int ui; char c; int i; short s; long l; float f; unsigned char uc; double d; unsigned short us;
508*b725ae77Skettenis #endif
509e93f7393Sniklas {
510*b725ae77Skettenis     call7j (ui, c, i, s, l, f, uc, d, us, ul);
511*b725ae77Skettenis }
512*b725ae77Skettenis 
513*b725ae77Skettenis #ifdef PROTOTYPES
call7h(unsigned short us,unsigned long ul,unsigned int ui,char c,int i,short s,long l,float f,unsigned char uc,double d)514*b725ae77Skettenis void call7h (unsigned short us, unsigned long ul, unsigned int ui, char c, int i, short s, long l, float f, unsigned char uc, double d)
515*b725ae77Skettenis #else
516*b725ae77Skettenis call7h (us, ul, ui, c, i, s, l, f, uc, d)
517*b725ae77Skettenis unsigned short us; unsigned long ul; unsigned int ui; char c; int i; short s; long l; float f; unsigned char uc; double d;
518*b725ae77Skettenis #endif
519*b725ae77Skettenis {
520*b725ae77Skettenis     call7i (ul, ui, c, i, s, l, f, uc, d, us);
521*b725ae77Skettenis }
522*b725ae77Skettenis 
523*b725ae77Skettenis #ifdef PROTOTYPES
call7g(double d,unsigned short us,unsigned long ul,unsigned int ui,char c,int i,short s,long l,float f,unsigned char uc)524*b725ae77Skettenis void call7g (double d, unsigned short us, unsigned long ul, unsigned int ui, char c, int i, short s, long l, float f, unsigned char uc)
525*b725ae77Skettenis #else
526*b725ae77Skettenis call7g (d, us, ul, ui, c, i, s, l, f, uc)
527*b725ae77Skettenis double d; unsigned short us; unsigned long ul; unsigned int ui; char c; int i; short s; long l; float f; unsigned char uc;
528*b725ae77Skettenis #endif
529*b725ae77Skettenis {
530*b725ae77Skettenis     call7h (us, ul, ui, c, i, s, l, f, uc, d);
531*b725ae77Skettenis }
532*b725ae77Skettenis 
533*b725ae77Skettenis #ifdef PROTOTYPES
call7f(unsigned char uc,double d,unsigned short us,unsigned long ul,unsigned int ui,char c,int i,short s,long l,float f)534*b725ae77Skettenis void call7f (unsigned char uc, double d, unsigned short us, unsigned long ul, unsigned int ui, char c, int i, short s, long l, float f)
535*b725ae77Skettenis #else
536*b725ae77Skettenis call7f (uc, d, us, ul, ui, c, i, s, l, f)
537*b725ae77Skettenis unsigned char uc; double d; unsigned short us; unsigned long ul; unsigned int ui; char c; int i; short s; long l; float f;
538*b725ae77Skettenis #endif
539*b725ae77Skettenis {
540*b725ae77Skettenis     call7g (d, us, ul, ui, c, i, s, l, f, uc);
541*b725ae77Skettenis }
542*b725ae77Skettenis 
543*b725ae77Skettenis #ifdef PROTOTYPES
call7e(float f,unsigned char uc,double d,unsigned short us,unsigned long ul,unsigned int ui,char c,int i,short s,long l)544*b725ae77Skettenis void call7e (float f, unsigned char uc, double d, unsigned short us, unsigned long ul, unsigned int ui, char c, int i, short s, long l)
545*b725ae77Skettenis #else
546*b725ae77Skettenis call7e (f, uc, d, us, ul, ui, c, i, s, l)
547*b725ae77Skettenis float f; unsigned char uc; double d; unsigned short us; unsigned long ul; unsigned int ui; char c; int i; short s; long l;
548*b725ae77Skettenis #endif
549*b725ae77Skettenis {
550*b725ae77Skettenis     call7f (uc, d, us, ul, ui, c, i, s, l, f);
551*b725ae77Skettenis }
552*b725ae77Skettenis 
553*b725ae77Skettenis #ifdef PROTOTYPES
call7d(long l,float f,unsigned char uc,double d,unsigned short us,unsigned long ul,unsigned int ui,char c,int i,short s)554*b725ae77Skettenis void call7d (long l, float f, unsigned char uc, double d, unsigned short us, unsigned long ul, unsigned int ui, char c, int i, short s)
555*b725ae77Skettenis #else
556*b725ae77Skettenis call7d (l, f, uc, d, us, ul, ui, c, i, s)
557*b725ae77Skettenis long l; float f; unsigned char uc; double d; unsigned short us; unsigned long ul; unsigned int ui; char c; int i; short s;
558*b725ae77Skettenis #endif
559*b725ae77Skettenis {
560*b725ae77Skettenis     call7e (f, uc, d, us, ul, ui, c, i, s, l);
561*b725ae77Skettenis }
562*b725ae77Skettenis 
563*b725ae77Skettenis #ifdef PROTOTYPES
call7c(short s,long l,float f,unsigned char uc,double d,unsigned short us,unsigned long ul,unsigned int ui,char c,int i)564*b725ae77Skettenis void call7c (short s, long l, float f, unsigned char uc, double d, unsigned short us, unsigned long ul, unsigned int ui, char c, int i)
565*b725ae77Skettenis #else
566*b725ae77Skettenis call7c (s, l, f, uc, d, us, ul, ui, c, i)
567*b725ae77Skettenis short s; long l; float f; unsigned char uc; double d; unsigned short us; unsigned long ul; unsigned int ui; char c; int i;
568*b725ae77Skettenis #endif
569*b725ae77Skettenis {
570*b725ae77Skettenis     call7d (l, f, uc, d, us, ul, ui, c, i, s);
571*b725ae77Skettenis }
572*b725ae77Skettenis 
573*b725ae77Skettenis #ifdef PROTOTYPES
call7b(int i,short s,long l,float f,unsigned char uc,double d,unsigned short us,unsigned long ul,unsigned int ui,char c)574*b725ae77Skettenis void call7b (int i, short s, long l, float f, unsigned char uc, double d, unsigned short us, unsigned long ul, unsigned int ui, char c)
575*b725ae77Skettenis #else
576*b725ae77Skettenis call7b (i, s, l, f, uc, d, us, ul, ui, c)
577*b725ae77Skettenis int i; short s; long l; float f; unsigned char uc; double d; unsigned short us; unsigned long ul; unsigned int ui; char c;
578*b725ae77Skettenis #endif
579*b725ae77Skettenis {
580*b725ae77Skettenis     call7c (s, l, f, uc, d, us, ul, ui, c, i);
581*b725ae77Skettenis }
582*b725ae77Skettenis 
583*b725ae77Skettenis #ifdef PROTOTYPES
call7a(char c,int i,short s,long l,float f,unsigned char uc,double d,unsigned short us,unsigned long ul,unsigned int ui)584*b725ae77Skettenis void call7a (char c, int i, short s, long l, float f, unsigned char uc, double d, unsigned short us, unsigned long ul, unsigned int ui)
585*b725ae77Skettenis #else
586*b725ae77Skettenis call7a (c, i, s, l, f, uc, d, us, ul, ui)
587*b725ae77Skettenis char c; int i; short s; long l; float f; unsigned char uc; double d; unsigned short us; unsigned long ul; unsigned int ui;
588*b725ae77Skettenis #endif
589*b725ae77Skettenis {
590*b725ae77Skettenis     call7b (i, s, l, f, uc, d, us, ul, ui, c);
591e93f7393Sniklas }
592e93f7393Sniklas 
593e93f7393Sniklas 
594e93f7393Sniklas /*  Test printing of structures passed as arguments to recursive functions. */
595e93f7393Sniklas 
596e93f7393Sniklas 
597e93f7393Sniklas typedef struct s
598e93f7393Sniklas {
599e93f7393Sniklas   short s;
600e93f7393Sniklas   int i;
601e93f7393Sniklas   long l;
602e93f7393Sniklas } SVAL;
603e93f7393Sniklas 
hitbottom()604*b725ae77Skettenis void hitbottom ()
605e93f7393Sniklas {
606e93f7393Sniklas }
607e93f7393Sniklas 
608*b725ae77Skettenis #ifdef PROTOTYPES
recurse(SVAL a,int depth)609*b725ae77Skettenis void recurse (SVAL a, int depth)
610*b725ae77Skettenis #else
611e93f7393Sniklas void recurse (a, depth)
612e93f7393Sniklas SVAL a;
613e93f7393Sniklas int depth;
614*b725ae77Skettenis #endif
615e93f7393Sniklas {
616e93f7393Sniklas   a.s = a.i = a.l = --depth;
617e93f7393Sniklas   if (depth == 0)
618e93f7393Sniklas     hitbottom ();
619e93f7393Sniklas   else
620e93f7393Sniklas     recurse (a, depth);
621e93f7393Sniklas }
622e93f7393Sniklas 
test_struct_args()623*b725ae77Skettenis void test_struct_args ()
624e93f7393Sniklas {
625e93f7393Sniklas   SVAL s; s.s = 5; s.i = 5; s.l = 5;
626e93f7393Sniklas 
627e93f7393Sniklas   recurse (s, 5);
628e93f7393Sniklas }
629e93f7393Sniklas 
630e93f7393Sniklas /* On various machines (pa, 29k, and rs/6000, at least), a function which
631e93f7393Sniklas    calls alloca may do things differently with respect to frames.  So give
632e93f7393Sniklas    it a try.  */
633e93f7393Sniklas 
634*b725ae77Skettenis #ifdef PROTOTYPES
localvars_after_alloca(char c,short s,int i,long l)635*b725ae77Skettenis void localvars_after_alloca (char c, short s, int i, long l)
636*b725ae77Skettenis #else
637*b725ae77Skettenis void
638e93f7393Sniklas localvars_after_alloca (c, s, i, l)
639e93f7393Sniklas      char c;
640e93f7393Sniklas      short s;
641e93f7393Sniklas      int i;
642e93f7393Sniklas      long l;
643*b725ae77Skettenis #endif
644e93f7393Sniklas {
645e93f7393Sniklas #ifdef HAVE_STACK_ALLOCA
646e93f7393Sniklas   /* No need to use the alloca.c alloca-on-top-of-malloc; it doesn't
647e93f7393Sniklas      test what we are looking for, so if we don't have an alloca which
648e93f7393Sniklas      allocates on the stack, just don't bother to call alloca at all.  */
649e93f7393Sniklas 
650e93f7393Sniklas   char *z = alloca (s + 50);
651e93f7393Sniklas #endif
652e93f7393Sniklas   c = 'a';
653e93f7393Sniklas   s = 5;
654e93f7393Sniklas   i = 6;
655e93f7393Sniklas   l = 7;
656e93f7393Sniklas }
657e93f7393Sniklas 
658*b725ae77Skettenis #ifdef PROTOTYPES
call_after_alloca_subr(char c,short s,int i,long l,unsigned char uc,unsigned short us,unsigned int ui,unsigned long ul)659*b725ae77Skettenis void call_after_alloca_subr (char c, short s, int i, long l, unsigned char uc, unsigned short us, unsigned int ui, unsigned long ul)
660*b725ae77Skettenis #else
661e93f7393Sniklas void
662e93f7393Sniklas call_after_alloca_subr (c, s, i, l, uc, us, ui, ul)
663e93f7393Sniklas char c; int i; short s; long l; unsigned char uc; unsigned short us; unsigned long ul; unsigned int ui;
664*b725ae77Skettenis #endif
665e93f7393Sniklas {
666e93f7393Sniklas   c = 'a';
667e93f7393Sniklas   i = 7; s = 8; l = 7; uc = 44; us = 77;
668e93f7393Sniklas   ul = 43; ui = 33;
669e93f7393Sniklas }
670e93f7393Sniklas 
671*b725ae77Skettenis #ifdef PROTOTYPES
call_after_alloca(char c,short s,int i,long l)672*b725ae77Skettenis void call_after_alloca (char c, short s, int i, long l)
673*b725ae77Skettenis #else
674*b725ae77Skettenis void
675e93f7393Sniklas call_after_alloca (c, s, i, l)
676e93f7393Sniklas      char c;
677e93f7393Sniklas      short s;
678e93f7393Sniklas      int i;
679e93f7393Sniklas      long l;
680*b725ae77Skettenis #endif
681e93f7393Sniklas {
682e93f7393Sniklas #ifdef HAVE_STACK_ALLOCA
683e93f7393Sniklas   /* No need to use the alloca.c alloca-on-top-of-malloc; it doesn't
684e93f7393Sniklas      test what we are looking for, so if we don't have an alloca which
685e93f7393Sniklas      allocates on the stack, just don't bother to call alloca at all.  */
686e93f7393Sniklas 
687e93f7393Sniklas   char *z = alloca (s + 50);
688e93f7393Sniklas #endif
689e93f7393Sniklas   call_after_alloca_subr (c, s, i, l, 'b', 11, 12, (unsigned long)13);
690e93f7393Sniklas }
691e93f7393Sniklas 
692e93f7393Sniklas 
693e93f7393Sniklas 
694e93f7393Sniklas /* The point behind this test is the PA will call this indirectly
695e93f7393Sniklas    through dyncall.  Unlike the indirect calls to call0a, this test
696e93f7393Sniklas    will require a trampoline between dyncall and this function on the
697e93f7393Sniklas    call path, then another trampoline on between this function and main
698e93f7393Sniklas    on the return path.  */
699*b725ae77Skettenis #ifdef PROTOTYPES
call_with_trampolines(double d1)700*b725ae77Skettenis double call_with_trampolines (double d1)
701*b725ae77Skettenis #else
702e93f7393Sniklas double
703e93f7393Sniklas call_with_trampolines (d1)
704e93f7393Sniklas double d1;
705*b725ae77Skettenis #endif
706e93f7393Sniklas {
707e93f7393Sniklas   return d1;
708e93f7393Sniklas } /* End of call_with_trampolines, this comment is needed by funcargs.exp */
709e93f7393Sniklas 
710e93f7393Sniklas /* Dummy functions which the testsuite can use to run to, etc.  */
711e93f7393Sniklas 
712e93f7393Sniklas void
marker_indirect_call()713e93f7393Sniklas marker_indirect_call () {}
714e93f7393Sniklas 
715e93f7393Sniklas void
marker_call_with_trampolines()716e93f7393Sniklas marker_call_with_trampolines () {}
717e93f7393Sniklas 
main()718*b725ae77Skettenis int main ()
719e93f7393Sniklas {
720*b725ae77Skettenis   void (*pointer_to_call0a) (char, short, int, long) = (void (*)(char, short, int, long))call0a;
721*b725ae77Skettenis   double (*pointer_to_call_with_trampolines) (double) = call_with_trampolines;
722e93f7393Sniklas 
723e93f7393Sniklas #ifdef usestubs
724e93f7393Sniklas   set_debug_traps();
725e93f7393Sniklas   breakpoint();
726e93f7393Sniklas #endif
727e93f7393Sniklas   /* Test calling with basic integer types */
728e93f7393Sniklas   call0a (c, s, i, l);
729e93f7393Sniklas   call0b (s, i, l, c);
730e93f7393Sniklas   call0c (i, l, c, s);
731e93f7393Sniklas   call0d (l, c, s, i);
732e93f7393Sniklas   call0e (c, l, c, i, c, s, c, c);
733e93f7393Sniklas 
734e93f7393Sniklas   /* Test calling with unsigned integer types */
735e93f7393Sniklas   call1a (uc, us, ui, ul);
736e93f7393Sniklas   call1b (us, ui, ul, uc);
737e93f7393Sniklas   call1c (ui, ul, uc, us);
738e93f7393Sniklas   call1d (ul, uc, us, ui);
739e93f7393Sniklas   call1e (uc, ul, uc, ui, uc, us, uc, uc);
740e93f7393Sniklas 
741e93f7393Sniklas   /* Test calling with integral types mixed with floating point types */
742e93f7393Sniklas   call2a (c, f, s, d, i, f, l, d);
743e93f7393Sniklas   call2b (f, s, d, i, f, l, d, c);
744e93f7393Sniklas   call2c (s, d, i, f, l, d, c, f);
745e93f7393Sniklas   call2d (d, i, f, l, d, c, f, s);
746e93f7393Sniklas   call2e (i, f, l, d, c, f, s, d);
747e93f7393Sniklas   call2f (f, l, d, c, f, s, d, i);
748e93f7393Sniklas   call2g (l, d, c, f, s, d, i, f);
749e93f7393Sniklas   call2h (d, c, f, s, d, i, f, l);
750*b725ae77Skettenis   call2i (c, f, c, c, d, c, c, c, f, s, c, d);
751e93f7393Sniklas 
752e93f7393Sniklas   /* Test dereferencing pointers to various integral and floating types */
753e93f7393Sniklas 
754e93f7393Sniklas   call3a (cp, sp, ip, lp);
755e93f7393Sniklas   call3b (ucp, usp, uip, ulp);
756e93f7393Sniklas   call3c (fp, dp);
757e93f7393Sniklas 
758e93f7393Sniklas   /* Test dereferencing pointers to structs and unions */
759e93f7393Sniklas 
760e93f7393Sniklas   call4a (stp);
761e93f7393Sniklas   un.u1 = 1;
762e93f7393Sniklas   call4b (unp);
763e93f7393Sniklas 
764e93f7393Sniklas   /* Test calling with structures and unions. */
765e93f7393Sniklas 
766e93f7393Sniklas   call5a (st);
767e93f7393Sniklas   un.u1 = 2;
768e93f7393Sniklas   call5b (un);
769e93f7393Sniklas 
770e93f7393Sniklas   /* Test shuffling of args */
771e93f7393Sniklas 
772e93f7393Sniklas   call6a (c, s, i, l, f, d, uc, us, ui, ul);
773e93f7393Sniklas   call7a (c, i, s, l, f, uc, d, us, ul, ui);
774e93f7393Sniklas 
775e93f7393Sniklas   /* Test passing structures recursively. */
776e93f7393Sniklas 
777e93f7393Sniklas   test_struct_args ();
778e93f7393Sniklas 
779e93f7393Sniklas   localvars_after_alloca (c, s, i, l);
780e93f7393Sniklas 
781e93f7393Sniklas   call_after_alloca (c, s, i, l);
782e93f7393Sniklas 
783e93f7393Sniklas   /* This is for localvars_in_indirect_call.  */
784e93f7393Sniklas   marker_indirect_call ();
785e93f7393Sniklas   /* The comment on the following two lines is used by funcargs.exp,
786e93f7393Sniklas      don't change it.  */
787e93f7393Sniklas   (*pointer_to_call0a) (c, s, i, l);	/* First step into call0a.  */
788e93f7393Sniklas   (*pointer_to_call0a) (c, s, i, l);	/* Second step into call0a.  */
789e93f7393Sniklas   marker_call_with_trampolines ();
790e93f7393Sniklas   (*pointer_to_call_with_trampolines) (d); /* Test multiple trampolines.  */
791*b725ae77Skettenis   return 0;
792e93f7393Sniklas }
793