1 #include "compat-common.h"
2 
3 #include "fp2-struct-defs.h"
4 #include "fp2-struct-check.h"
5 
6 #define TEST(TYPE)						\
7 TYPE g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE;		\
8 TYPE g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE;		\
9 TYPE g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE;		\
10 TYPE g13s##TYPE, g14s##TYPE, g15s##TYPE, g16s##TYPE;		\
11 								\
12 extern void init##TYPE (TYPE *p, double x);			\
13 extern void checkg##TYPE (void);				\
14 extern void							\
15 test##TYPE (TYPE s1, TYPE s2, TYPE s3, TYPE s4,			\
16 	    TYPE s5, TYPE s6, TYPE s7, TYPE s8,			\
17 	    TYPE s9, TYPE s10, TYPE s11, TYPE s12,		\
18 	    TYPE s13, TYPE s14, TYPE s15, TYPE s16);		\
19 extern void testva##TYPE (int n, ...);				\
20 								\
21 void								\
22 test2_##TYPE (TYPE s1, TYPE s2, TYPE s3, TYPE s4,		\
23 	      TYPE s5, TYPE s6, TYPE s7, TYPE s8)		\
24 {								\
25   test##TYPE (s1, g2s##TYPE, s2, g4s##TYPE,			\
26 	      s3, g6s##TYPE, s4, g8s##TYPE,			\
27 	      s5, g10s##TYPE, s6, g12s##TYPE,			\
28 	      s7, g14s##TYPE, s8, g16s##TYPE);			\
29 }								\
30 								\
31 void								\
32 testit##TYPE (void)						\
33 {								\
34   DEBUG_FPUTS (#TYPE);						\
35   DEBUG_FPUTS (" init: ");					\
36   init##TYPE  ( &g1s##TYPE,  (double)1);			\
37   init##TYPE  ( &g2s##TYPE,  (double)2);			\
38   init##TYPE  ( &g3s##TYPE,  (double)3);			\
39   init##TYPE  ( &g4s##TYPE,  (double)4);			\
40   init##TYPE  ( &g5s##TYPE,  (double)5);			\
41   init##TYPE  ( &g6s##TYPE,  (double)6);			\
42   init##TYPE  ( &g7s##TYPE,  (double)7);			\
43   init##TYPE  ( &g8s##TYPE,  (double)8);			\
44   init##TYPE  ( &g9s##TYPE,  (double)9);			\
45   init##TYPE  (&g10s##TYPE, (double)10);			\
46   init##TYPE  (&g11s##TYPE, (double)11);			\
47   init##TYPE  (&g12s##TYPE, (double)12);			\
48   init##TYPE  (&g13s##TYPE, (double)13);			\
49   init##TYPE  (&g14s##TYPE, (double)14);			\
50   init##TYPE  (&g15s##TYPE, (double)15);			\
51   init##TYPE  (&g16s##TYPE, (double)16);			\
52   checkg##TYPE ();						\
53   DEBUG_NL;							\
54   DEBUG_FPUTS (#TYPE);						\
55   DEBUG_FPUTS (" test: ");					\
56   test##TYPE (g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE,	\
57 	      g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE,	\
58 	      g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE,	\
59 	      g13s##TYPE, g14s##TYPE, g15s##TYPE, g16s##TYPE);	\
60   DEBUG_NL;							\
61   DEBUG_FPUTS (#TYPE);						\
62   DEBUG_FPUTS (" testva:");					\
63   DEBUG_NL;							\
64   testva##TYPE (1,						\
65 		g1s##TYPE);					\
66   DEBUG_NL;							\
67   testva##TYPE (2,						\
68 		g1s##TYPE, g2s##TYPE);				\
69   DEBUG_NL;							\
70   testva##TYPE (3,						\
71 		g1s##TYPE, g2s##TYPE, g3s##TYPE);		\
72   DEBUG_NL;							\
73   testva##TYPE (4,						\
74 		g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE);	\
75   DEBUG_NL;							\
76   testva##TYPE (5,						\
77 		g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE,	\
78 		g5s##TYPE);					\
79   DEBUG_NL;							\
80   testva##TYPE (6,						\
81 		g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE,	\
82 		g5s##TYPE, g6s##TYPE);				\
83   DEBUG_NL;							\
84   testva##TYPE (7,						\
85 		g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE,	\
86 		g5s##TYPE, g6s##TYPE, g7s##TYPE);		\
87   DEBUG_NL;							\
88   testva##TYPE (8,						\
89 		g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE,	\
90 		g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE);	\
91   DEBUG_NL;							\
92   testva##TYPE (9,						\
93 		g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE,	\
94 		g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE,	\
95 		g9s##TYPE);					\
96   DEBUG_NL;							\
97   testva##TYPE (10,						\
98 		g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE,	\
99 		g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE,	\
100 		g9s##TYPE, g10s##TYPE);				\
101   DEBUG_NL;							\
102   testva##TYPE (11,						\
103 		g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE,	\
104 		g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE,	\
105 		g9s##TYPE, g10s##TYPE, g11s##TYPE);		\
106   DEBUG_NL;							\
107   testva##TYPE (12,						\
108 		g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE,	\
109 		g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE,	\
110 		g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE);	\
111   DEBUG_NL;							\
112   testva##TYPE (13,						\
113 		g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE,	\
114 		g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE,	\
115 		g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE,	\
116 		g13s##TYPE);					\
117   DEBUG_NL;							\
118   testva##TYPE (14,						\
119 		g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE,	\
120 		g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE,	\
121 		g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE,	\
122 		g13s##TYPE, g14s##TYPE);			\
123   DEBUG_NL;							\
124   testva##TYPE (15,						\
125 		g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE,	\
126 		g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE,	\
127 		g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE,	\
128 		g13s##TYPE, g14s##TYPE, g15s##TYPE);		\
129   DEBUG_NL;							\
130   testva##TYPE (16,						\
131 		g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE,	\
132 		g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE,	\
133 		g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE,	\
134 		g13s##TYPE, g14s##TYPE, g15s##TYPE, g16s##TYPE); \
135   DEBUG_NL;							\
136   DEBUG_FPUTS (#TYPE);						\
137   DEBUG_FPUTS (" test2: ");					\
138   test2_##TYPE (g1s##TYPE, g3s##TYPE, g5s##TYPE, g7s##TYPE,	\
139 		g9s##TYPE, g11s##TYPE, g13s##TYPE, g15s##TYPE);	\
140   DEBUG_NL;							\
141 }
142 
143 TEST(Sfd)
TEST(Sfl)144 TEST(Sfl)
145 TEST(Sdf)
146 TEST(Sdl)
147 TEST(Slf)
148 TEST(Sld)
149 TEST(Sfdl)
150 TEST(Sfld)
151 TEST(Sdfl)
152 TEST(Sdlf)
153 TEST(Slfd)
154 TEST(Sldf)
155 
156 #undef T
157 
158 void
159 struct_by_value_10_x ()
160 {
161 DEBUG_INIT
162 
163 #define T(TYPE) testit##TYPE ();
164 
165 T(Sfd)
166 T(Sfl)
167 T(Sdf)
168 T(Sdl)
169 T(Slf)
170 T(Sld)
171 T(Sfdl)
172 T(Sfld)
173 T(Sdfl)
174 T(Sdlf)
175 T(Slfd)
176 T(Sldf)
177 
178 DEBUG_FINI
179 
180 if (fails != 0)
181   abort ();
182 
183 #undef T
184 }
185