2003-12-26 Guilhem Lavaux <guilhem@kaffe.org>
[official-gcc.git] / gcc / testsuite / gcc.dg / compat / struct-return-3_x.c
blobe8b18850b1f37136e21335e818c03158131d98b8
1 #include "compat-common.h"
3 /* Turn off checking for variable arguments with -DSKIPVA. */
4 #ifdef SKIPVA
5 const int test_va = 0;
6 #else
7 const int test_va = 1;
8 #endif
10 #define T(TYPE) \
11 TYPE g01##TYPE, g02##TYPE, g03##TYPE, g04##TYPE; \
12 TYPE g05##TYPE, g06##TYPE, g07##TYPE, g08##TYPE; \
13 TYPE g09##TYPE, g10##TYPE, g11##TYPE, g12##TYPE; \
14 TYPE g13##TYPE, g14##TYPE, g15##TYPE, g16##TYPE; \
16 extern void init##TYPE (TYPE *p, int i); \
17 extern void checkg##TYPE (void); \
18 extern TYPE test0##TYPE (void); \
19 extern TYPE test1##TYPE (TYPE); \
20 extern TYPE testva##TYPE (int n, ...); \
22 void \
23 testit##TYPE (void) \
24 { \
25 TYPE rslt; \
26 DEBUG_FPUTS (#TYPE); \
27 DEBUG_FPUTS (" init: "); \
28 init##TYPE (&g01##TYPE, 1); \
29 init##TYPE (&g02##TYPE, 2); \
30 init##TYPE (&g03##TYPE, 3); \
31 init##TYPE (&g04##TYPE, 4); \
32 init##TYPE (&g05##TYPE, 5); \
33 init##TYPE (&g06##TYPE, 6); \
34 init##TYPE (&g07##TYPE, 7); \
35 init##TYPE (&g08##TYPE, 8); \
36 init##TYPE (&g09##TYPE, 9); \
37 init##TYPE (&g10##TYPE, 10); \
38 init##TYPE (&g11##TYPE, 11); \
39 init##TYPE (&g12##TYPE, 12); \
40 init##TYPE (&g13##TYPE, 13); \
41 init##TYPE (&g14##TYPE, 14); \
42 init##TYPE (&g15##TYPE, 15); \
43 init##TYPE (&g16##TYPE, 16); \
44 checkg##TYPE (); \
45 DEBUG_NL; \
46 DEBUG_FPUTS (#TYPE); \
47 DEBUG_FPUTS (" test0: "); \
48 rslt = test0##TYPE (); \
49 check##TYPE (rslt, 1); \
50 DEBUG_NL; \
51 DEBUG_FPUTS (#TYPE); \
52 DEBUG_FPUTS (" test1: "); \
53 rslt = test1##TYPE (g01##TYPE); \
54 check##TYPE (rslt, 1); \
55 if (test_va) \
56 { \
57 DEBUG_NL; \
58 DEBUG_FPUTS (#TYPE); \
59 DEBUG_FPUTS (" testva: "); \
60 rslt = testva##TYPE (1, g01##TYPE); \
61 check##TYPE (rslt, 1); \
62 rslt = testva##TYPE (5, g01##TYPE, g02##TYPE, \
63 g03##TYPE, g04##TYPE, \
64 g05##TYPE); \
65 check##TYPE (rslt, 5); \
66 rslt = testva##TYPE (9, g01##TYPE, g02##TYPE, \
67 g03##TYPE, g04##TYPE, \
68 g05##TYPE, g06##TYPE, \
69 g07##TYPE, g08##TYPE, \
70 g09##TYPE); \
71 check##TYPE (rslt, 9); \
72 rslt = testva##TYPE (16, g01##TYPE, g02##TYPE, \
73 g03##TYPE, g04##TYPE, \
74 g05##TYPE, g06##TYPE, \
75 g07##TYPE, g08##TYPE, \
76 g09##TYPE, g10##TYPE, \
77 g11##TYPE, g12##TYPE, \
78 g13##TYPE, g14##TYPE, \
79 g15##TYPE, g16##TYPE); \
80 check##TYPE (rslt, 16); \
81 } \
82 DEBUG_NL; \
85 #include "small-struct-defs.h"
86 #include "small-struct-check.h"
88 T(Sc)
89 T(Ss)
90 T(Si)
91 T(Scs)
92 T(Ssc)
93 T(Sic)
94 T(Sci)
95 T(Ssi)
96 T(Sis)
97 T(Scsi)
98 T(Scis)
99 T(Ssci)
100 T(Ssic)
101 T(Sisc)
102 T(Sics)
104 #undef T
106 void
107 struct_return_3_x ()
109 DEBUG_INIT
111 #define T(TYPE) testit##TYPE ();
113 T(Sc)
114 T(Ss)
115 T(Si)
116 T(Scs)
117 T(Ssc)
118 T(Sic)
119 T(Sci)
120 T(Ssi)
121 T(Sis)
122 T(Scsi)
123 T(Scis)
124 T(Ssci)
125 T(Ssic)
126 T(Sisc)
127 T(Sics)
129 DEBUG_FINI
131 if (fails != 0)
132 abort ();
134 #undef T