Update concepts branch to revision 131834
[official-gcc.git] / gcc / testsuite / gcc.dg / compat / struct-return-10_y.c
blobdcc0b93c101bb5d07153e141d0d422f174ca29c8
1 #include <stdarg.h>
3 #include "compat-common.h"
6 #include "fp2-struct-defs.h"
7 #include "fp2-struct-init.h"
9 #define T(TYPE) \
10 extern TYPE g01##TYPE, g02##TYPE, g03##TYPE, g04##TYPE; \
11 extern TYPE g05##TYPE, g06##TYPE, g07##TYPE, g08##TYPE; \
12 extern TYPE g09##TYPE, g10##TYPE, g11##TYPE, g12##TYPE; \
13 extern TYPE g13##TYPE, g14##TYPE, g15##TYPE, g16##TYPE; \
15 extern void check##TYPE (TYPE x, double y); \
17 void \
18 checkg##TYPE (void) \
19 { \
20 check##TYPE (g01##TYPE, 1.0); \
21 check##TYPE (g02##TYPE, 2.0); \
22 check##TYPE (g03##TYPE, 3.0); \
23 check##TYPE (g04##TYPE, 4.0); \
24 check##TYPE (g05##TYPE, 5.0); \
25 check##TYPE (g06##TYPE, 6.0); \
26 check##TYPE (g07##TYPE, 7.0); \
27 check##TYPE (g08##TYPE, 8.0); \
28 check##TYPE (g09##TYPE, 9.0); \
29 check##TYPE (g10##TYPE, 10.0); \
30 check##TYPE (g11##TYPE, 11.0); \
31 check##TYPE (g12##TYPE, 12.0); \
32 check##TYPE (g13##TYPE, 13.0); \
33 check##TYPE (g14##TYPE, 14.0); \
34 check##TYPE (g15##TYPE, 15.0); \
35 check##TYPE (g16##TYPE, 16.0); \
36 } \
38 TYPE \
39 test0##TYPE (void) \
40 { \
41 return g01##TYPE; \
42 } \
44 TYPE \
45 test1##TYPE (TYPE x01) \
46 { \
47 return x01; \
48 } \
50 TYPE \
51 testva##TYPE (int n, ...) \
52 { \
53 int i; \
54 TYPE rslt; \
55 va_list ap; \
56 if (1) \
57 { \
58 va_start (ap, n); \
59 for (i = 0; i < n; i++) \
60 { \
61 rslt = va_arg (ap, TYPE); \
62 } \
63 va_end (ap); \
64 } \
65 return rslt; \
68 T(Sfd)
69 T(Sfl)
70 T(Sdf)
71 T(Sdl)
72 T(Slf)
73 T(Sld)
74 T(Sfdl)
75 T(Sfld)
76 T(Sdfl)
77 T(Sdlf)
78 T(Slfd)
79 T(Sldf)