OSDN Git Service

* gcc.dg/dfp/func-array.c: Support -DDBG to report individual failures.
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / dfp / func-scalar.c
1 /* { dg-options "-std=gnu99" } */
2
3 /* C99 6.5.2.2 Function calls.
4    Test scalar passing and return values involving decimal floating
5    point types.  */
6
7 extern void abort (void);
8 static int failcnt;
9
10 /* Support compiling the test to report individual failures; default is
11    to abort as soon as a check fails.  */
12 #ifdef DBG
13 #include <stdio.h>
14 #define FAILURE { printf ("failed at line %d\n", __LINE__); failcnt++; }
15 #else
16 #define FAILURE abort ();
17 #endif
18
19 /* A handful of functions that return their Nth _Decimal32
20    argument.  */
21
22 _Decimal32
23 arg0_32 (_Decimal32 arg0, _Decimal32 arg1, _Decimal32 arg2,
24          _Decimal32 arg3, _Decimal32 arg4, _Decimal32 arg5)
25 {
26   return arg0;
27 }
28
29 _Decimal32
30 arg1_32 (_Decimal32 arg0, _Decimal32 arg1, _Decimal32 arg2,
31          _Decimal32 arg3, _Decimal32 arg4, _Decimal32 arg5)
32 {
33   return arg1;
34 }
35         
36 _Decimal32
37 arg2_32 (_Decimal32 arg0, _Decimal32 arg1, _Decimal32 arg2,
38          _Decimal32 arg3, _Decimal32 arg4, _Decimal32 arg5)
39 {
40   return arg2;
41 }
42         
43 _Decimal32
44 arg3_32 (_Decimal32 arg0, _Decimal32 arg1, _Decimal32 arg2,
45          _Decimal32 arg3, _Decimal32 arg4, _Decimal32 arg5)
46 {
47   return arg3;
48 }
49         
50 _Decimal32
51 arg4_32 (_Decimal32 arg0, _Decimal32 arg1, _Decimal32 arg2,
52          _Decimal32 arg3, _Decimal32 arg4, _Decimal32 arg5)
53 {
54   return arg4;
55 }
56         
57 _Decimal32
58 arg5_32 (_Decimal32 arg0, _Decimal32 arg1, _Decimal32 arg2,
59          _Decimal32 arg3, _Decimal32 arg4, _Decimal32 arg5)
60 {
61   return arg5;
62 }
63         
64 \f
65 /* A handful of functions that return their Nth _Decimal64
66    argument.  */
67
68 _Decimal64
69 arg0_64 (_Decimal64 arg0, _Decimal64 arg1, _Decimal64 arg2,
70          _Decimal64 arg3, _Decimal64 arg4, _Decimal64 arg5)
71 {
72   return arg0;
73 }
74         
75 _Decimal64
76 arg1_64 (_Decimal64 arg0, _Decimal64 arg1, _Decimal64 arg2,
77          _Decimal64 arg3, _Decimal64 arg4, _Decimal64 arg5)
78 {
79   return arg1;
80 }
81         
82 _Decimal64
83 arg2_64 (_Decimal64 arg0, _Decimal64 arg1, _Decimal64 arg2,
84          _Decimal64 arg3, _Decimal64 arg4, _Decimal64 arg5)
85 {
86   return arg2;
87 }
88         
89 _Decimal64
90 arg3_64 (_Decimal64 arg0, _Decimal64 arg1, _Decimal64 arg2,
91          _Decimal64 arg3, _Decimal64 arg4, _Decimal64 arg5)
92 {
93   return arg3;
94 }
95         
96 _Decimal64
97 arg4_64 (_Decimal64 arg0, _Decimal64 arg1, _Decimal64 arg2,
98          _Decimal64 arg3, _Decimal64 arg4, _Decimal64 arg5)
99 {
100   return arg4;
101 }
102         
103 _Decimal64
104 arg5_64 (_Decimal64 arg0, _Decimal64 arg1, _Decimal64 arg2,
105          _Decimal64 arg3, _Decimal64 arg4, _Decimal64 arg5)
106 {
107   return arg5;
108 }
109         
110 \f
111 /* A handful of functions that return their Nth _Decimal128
112    argument.  */
113
114 _Decimal128
115 arg0_128 (_Decimal128 arg0, _Decimal128 arg1, _Decimal128 arg2,
116          _Decimal128 arg3, _Decimal128 arg4, _Decimal128 arg5)
117 {
118   return arg0;
119 }
120         
121 _Decimal128
122 arg1_128 (_Decimal128 arg0, _Decimal128 arg1, _Decimal128 arg2,
123          _Decimal128 arg3, _Decimal128 arg4, _Decimal128 arg5)
124 {
125   return arg1;
126 }
127         
128 _Decimal128
129 arg2_128 (_Decimal128 arg0, _Decimal128 arg1, _Decimal128 arg2,
130          _Decimal128 arg3, _Decimal128 arg4, _Decimal128 arg5)
131 {
132   return arg2;
133 }
134         
135 _Decimal128
136 arg3_128 (_Decimal128 arg0, _Decimal128 arg1, _Decimal128 arg2,
137          _Decimal128 arg3, _Decimal128 arg4, _Decimal128 arg5)
138 {
139   return arg3;
140 }
141         
142 _Decimal128
143 arg4_128 (_Decimal128 arg0, _Decimal128 arg1, _Decimal128 arg2,
144          _Decimal128 arg3, _Decimal128 arg4, _Decimal128 arg5)
145 {
146   return arg4;
147 }
148         
149 _Decimal128
150 arg5_128 (_Decimal128 arg0, _Decimal128 arg1, _Decimal128 arg2,
151          _Decimal128 arg3, _Decimal128 arg4, _Decimal128 arg5)
152 {
153   return arg5;
154 }
155
156
157 \f
158 int
159 main ()
160 {
161   /* _Decimal32 variants.  */
162   if (arg0_32 (0.0df, 1.0df, 2.0df, 3.0df, 4.0df, 5.0df) != 0.0df)
163     FAILURE
164   if (arg1_32 (0.0df, 1.0df, 2.0df, 3.0df, 4.0df, 5.0df) != 1.0df)
165     FAILURE
166   if (arg2_32 (0.0df, 1.0df, 2.0df, 3.0df, 4.0df, 5.0df) != 2.0df)
167     FAILURE
168   if (arg3_32 (0.0df, 1.0df, 2.0df, 3.0df, 4.0df, 5.0df) != 3.0df)
169     FAILURE
170   if (arg4_32 (0.0df, 1.0df, 2.0df, 3.0df, 4.0df, 5.0df) != 4.0df)
171     FAILURE
172   if (arg5_32 (0.0df, 1.0df, 2.0df, 3.0df, 4.0df, 5.0df) != 5.0df)
173     FAILURE
174
175   /* _Decimal64 variants.  */
176   if (arg0_64 (0.0dd, 1.0dd, 2.0dd, 3.0dd, 4.0dd, 5.0dd) != 0.0dd)
177     FAILURE
178   if (arg1_64 (0.0dd, 1.0dd, 2.0dd, 3.0dd, 4.0dd, 5.0dd) != 1.0dd)
179     FAILURE
180   if (arg2_64 (0.0dd, 1.0dd, 2.0dd, 3.0dd, 4.0dd, 5.0dd) != 2.0dd)
181     FAILURE
182   if (arg3_64 (0.0dd, 1.0dd, 2.0dd, 3.0dd, 4.0dd, 5.0dd) != 3.0dd)
183     FAILURE
184   if (arg4_64 (0.0dd, 1.0dd, 2.0dd, 3.0dd, 4.0dd, 5.0dd) != 4.0dd)
185     FAILURE
186   if (arg5_64 (0.0dd, 1.0dd, 2.0dd, 3.0dd, 4.0dd, 5.0dd) != 5.0dd)
187     FAILURE
188
189   /* _Decimal128 variants.  */
190   if (arg0_128 (0.0dl, 1.0dl, 2.0dl, 3.0dl, 4.0dl, 5.0dl) != 0.0dl)
191     FAILURE
192   if (arg1_128 (0.0dl, 1.0dl, 2.0dl, 3.0dl, 4.0dl, 5.0dl) != 1.0dl)
193     FAILURE
194   if (arg2_128 (0.0dl, 1.0dl, 2.0dl, 3.0dl, 4.0dl, 5.0dl) != 2.0dl)
195     FAILURE
196   if (arg3_128 (0.0dl, 1.0dl, 2.0dl, 3.0dl, 4.0dl, 5.0dl) != 3.0dl)
197     FAILURE
198   if (arg4_128 (0.0dl, 1.0dl, 2.0dl, 3.0dl, 4.0dl, 5.0dl) != 4.0dl)
199     FAILURE
200   if (arg5_128 (0.0dl, 1.0dl, 2.0dl, 3.0dl, 4.0dl, 5.0dl) != 5.0dl)
201     FAILURE
202
203   if (failcnt != 0)
204     abort ();
205
206   return 0;
207 }