OSDN Git Service

2004-05-20 H.J. Lu <hongjiu.lu@intel.com>
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / compat / struct-by-value-21_x.c
1 #include "compat-common.h"
2
3 #define T(TYPE)                                                 \
4 TYPE g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE;                \
5 TYPE g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE;                \
6 TYPE g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE;             \
7 TYPE g13s##TYPE, g14s##TYPE, g15s##TYPE, g16s##TYPE;            \
8                                                                 \
9 extern void init##TYPE (TYPE *p, int i);                        \
10 extern void checkg##TYPE (void);                                \
11 extern void                                                     \
12 test##TYPE (TYPE s1, TYPE s2, TYPE s3, TYPE s4,                 \
13             TYPE s5, TYPE s6, TYPE s7, TYPE s8,                 \
14             TYPE s9, TYPE s10, TYPE s11, TYPE s12,              \
15             TYPE s13, TYPE s14, TYPE s15, TYPE s16);            \
16 extern void testva##TYPE (int n, ...);                          \
17                                                                 \
18 void                                                            \
19 test2_##TYPE (TYPE s1, TYPE s2, TYPE s3, TYPE s4,               \
20               TYPE s5, TYPE s6, TYPE s7, TYPE s8)               \
21 {                                                               \
22   test##TYPE (s1, g2s##TYPE, s2, g4s##TYPE,                     \
23               s3, g6s##TYPE, s4, g8s##TYPE,                     \
24               s5, g10s##TYPE, s6, g12s##TYPE,                   \
25               s7, g14s##TYPE, s8, g16s##TYPE);                  \
26 }                                                               \
27                                                                 \
28 void                                                            \
29 testit##TYPE (void)                                             \
30 {                                                               \
31   DEBUG_FPUTS (#TYPE);                                          \
32   DEBUG_FPUTS (" init: ");                                      \
33   init##TYPE  ( &g1s##TYPE,  1);                                \
34   init##TYPE  ( &g2s##TYPE,  2);                                \
35   init##TYPE  ( &g3s##TYPE,  3);                                \
36   init##TYPE  ( &g4s##TYPE,  4);                                \
37   init##TYPE  ( &g5s##TYPE,  5);                                \
38   init##TYPE  ( &g6s##TYPE,  6);                                \
39   init##TYPE  ( &g7s##TYPE,  7);                                \
40   init##TYPE  ( &g8s##TYPE,  8);                                \
41   init##TYPE  ( &g9s##TYPE,  9);                                \
42   init##TYPE  (&g10s##TYPE, 10);                                \
43   init##TYPE  (&g11s##TYPE, 11);                                \
44   init##TYPE  (&g12s##TYPE, 12);                                \
45   init##TYPE  (&g13s##TYPE, 13);                                \
46   init##TYPE  (&g14s##TYPE, 14);                                \
47   init##TYPE  (&g15s##TYPE, 15);                                \
48   init##TYPE  (&g16s##TYPE, 16);                                \
49   checkg##TYPE ();                                              \
50   DEBUG_NL;                                                     \
51   DEBUG_FPUTS (#TYPE);                                          \
52   DEBUG_FPUTS (" test: ");                                      \
53   test##TYPE (g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE,       \
54               g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE,       \
55               g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE,    \
56               g13s##TYPE, g14s##TYPE, g15s##TYPE, g16s##TYPE);  \
57   DEBUG_NL;                                                     \
58   DEBUG_FPUTS (#TYPE);                                          \
59   DEBUG_FPUTS (" testva:");                                     \
60   DEBUG_NL;                                                     \
61   testva##TYPE (1,                                              \
62                 g1s##TYPE);                                     \
63   DEBUG_NL;                                                     \
64   testva##TYPE (2,                                              \
65                 g1s##TYPE, g2s##TYPE);                          \
66   DEBUG_NL;                                                     \
67   testva##TYPE (3,                                              \
68                 g1s##TYPE, g2s##TYPE, g3s##TYPE);               \
69   DEBUG_NL;                                                     \
70   testva##TYPE (4,                                              \
71                 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE);    \
72   DEBUG_NL;                                                     \
73   testva##TYPE (5,                                              \
74                 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE,     \
75                 g5s##TYPE);                                     \
76   DEBUG_NL;                                                     \
77   testva##TYPE (6,                                              \
78                 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE,     \
79                 g5s##TYPE, g6s##TYPE);                          \
80   DEBUG_NL;                                                     \
81   testva##TYPE (7,                                              \
82                 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE,     \
83                 g5s##TYPE, g6s##TYPE, g7s##TYPE);               \
84   DEBUG_NL;                                                     \
85   testva##TYPE (8,                                              \
86                 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE,     \
87                 g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE);    \
88   DEBUG_NL;                                                     \
89   testva##TYPE (9,                                              \
90                 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE,     \
91                 g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE,     \
92                 g9s##TYPE);                                     \
93   DEBUG_NL;                                                     \
94   testva##TYPE (10,                                             \
95                 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE,     \
96                 g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE,     \
97                 g9s##TYPE, g10s##TYPE);                         \
98   DEBUG_NL;                                                     \
99   testva##TYPE (11,                                             \
100                 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE,     \
101                 g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE,     \
102                 g9s##TYPE, g10s##TYPE, g11s##TYPE);             \
103   DEBUG_NL;                                                     \
104   testva##TYPE (12,                                             \
105                 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE,     \
106                 g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE,     \
107                 g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE); \
108   DEBUG_NL;                                                     \
109   testva##TYPE (13,                                             \
110                 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE,     \
111                 g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE,     \
112                 g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE,  \
113                 g13s##TYPE);                                    \
114   DEBUG_NL;                                                     \
115   testva##TYPE (14,                                             \
116                 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE,     \
117                 g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE,     \
118                 g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE,  \
119                 g13s##TYPE, g14s##TYPE);                        \
120   DEBUG_NL;                                                     \
121   testva##TYPE (15,                                             \
122                 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE,     \
123                 g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE,     \
124                 g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE,  \
125                 g13s##TYPE, g14s##TYPE, g15s##TYPE);            \
126   DEBUG_NL;                                                     \
127   testva##TYPE (16,                                             \
128                 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE,     \
129                 g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE,     \
130                 g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE,  \
131                 g13s##TYPE, g14s##TYPE, g15s##TYPE, g16s##TYPE); \
132   DEBUG_NL;                                                     \
133   DEBUG_FPUTS (#TYPE);                                          \
134   DEBUG_FPUTS (" test2:");                                      \
135   test2_##TYPE (g1s##TYPE, g3s##TYPE, g5s##TYPE, g7s##TYPE,     \
136                 g9s##TYPE, g11s##TYPE, g13s##TYPE, g15s##TYPE); \
137   DEBUG_NL;                                                     \
138 }
139
140 #include "mixed-struct-defs.h"
141 #include "mixed-struct-check.h"
142
143 T(Sfi)
144 T(Sfii)
145 T(Sfifi)
146 T(Sfiifii)
147
148 #undef T
149
150 void
151 struct_by_value_21_x ()
152 {
153 DEBUG_INIT
154
155 #define T(TYPE) testit##TYPE ();
156
157 T(Sfi)
158 T(Sfii)
159 T(Sfifi)
160 T(Sfiifii)
161
162 DEBUG_FINI
163
164 if (fails != 0)
165   abort ();
166
167 #undef T
168 }