2003-12-26 Guilhem Lavaux <guilhem@kaffe.org>
[official-gcc.git] / gcc / testsuite / gcc.dg / compat / struct-return-10_y.c
blob2cd9c604c06b7bc6a4961b3db33ef52ac4208931
1 #include <stdarg.h>
3 #include "compat-common.h"
5 /* Turn off checking for variable arguments with -DSKIPVA. */
6 #ifdef SKIPVA
7 const int test_va = 0;
8 #else
9 const int test_va = 1;
10 #endif
12 #include "fp2-struct-defs.h"
13 #include "fp2-struct-init.h"
15 #define T(TYPE) \
16 extern TYPE g01##TYPE, g02##TYPE, g03##TYPE, g04##TYPE; \
17 extern TYPE g05##TYPE, g06##TYPE, g07##TYPE, g08##TYPE; \
18 extern TYPE g09##TYPE, g10##TYPE, g11##TYPE, g12##TYPE; \
19 extern TYPE g13##TYPE, g14##TYPE, g15##TYPE, g16##TYPE; \
21 extern void check##TYPE (TYPE x, double y); \
23 void \
24 checkg##TYPE (void) \
25 { \
26 check##TYPE (g01##TYPE, 1.0); \
27 check##TYPE (g02##TYPE, 2.0); \
28 check##TYPE (g03##TYPE, 3.0); \
29 check##TYPE (g04##TYPE, 4.0); \
30 check##TYPE (g05##TYPE, 5.0); \
31 check##TYPE (g06##TYPE, 6.0); \
32 check##TYPE (g07##TYPE, 7.0); \
33 check##TYPE (g08##TYPE, 8.0); \
34 check##TYPE (g09##TYPE, 9.0); \
35 check##TYPE (g10##TYPE, 10.0); \
36 check##TYPE (g11##TYPE, 11.0); \
37 check##TYPE (g12##TYPE, 12.0); \
38 check##TYPE (g13##TYPE, 13.0); \
39 check##TYPE (g14##TYPE, 14.0); \
40 check##TYPE (g15##TYPE, 15.0); \
41 check##TYPE (g16##TYPE, 16.0); \
42 } \
44 TYPE \
45 test0##TYPE (void) \
46 { \
47 return g01##TYPE; \
48 } \
50 TYPE \
51 test1##TYPE (TYPE x01) \
52 { \
53 return x01; \
54 } \
56 TYPE \
57 testva##TYPE (int n, ...) \
58 { \
59 int i; \
60 TYPE rslt; \
61 va_list ap; \
62 if (test_va) \
63 { \
64 va_start (ap, n); \
65 for (i = 0; i < n; i++) \
66 { \
67 rslt = va_arg (ap, TYPE); \
68 } \
69 va_end (ap); \
70 } \
71 return rslt; \
74 T(Sfd)
75 T(Sfl)
76 T(Sdf)
77 T(Sdl)
78 T(Slf)
79 T(Sld)
80 T(Sfdl)
81 T(Sfld)
82 T(Sdfl)
83 T(Sdlf)
84 T(Slfd)
85 T(Sldf)