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-mixed.c
1 /* { dg-options "-std=gnu99 -Wall" } */
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 with mixed types in parameter list.  */
21
22 _Decimal32
23 arg0_32 (_Decimal32 arg0, int arg1, unsigned int arg2,
24        float arg3, double  arg4, long double arg5)
25 {
26   return arg0;
27 }
28
29 _Decimal32
30 arg1_32 (int arg0, _Decimal32 arg1, unsigned int arg2,
31        float arg3, double arg4, long double arg5)
32 {
33   return arg1;
34 }
35
36 _Decimal32
37 arg2_32 (int arg0, unsigned int arg1, _Decimal32 arg2,
38        float arg3, double arg4, long double arg5)
39 {
40   return arg2;
41 }
42
43
44 _Decimal32
45 arg3_32 (int arg0, unsigned int arg1, float arg2,
46        _Decimal32 arg3, double arg4, long double arg5)
47 {
48   return arg3;
49 }
50
51 _Decimal32
52 arg4_32 (int arg0, unsigned int arg1, float arg2,
53        double arg3, _Decimal32 arg4, long double arg5)
54 {
55   return arg4;
56 }
57
58 _Decimal32
59 arg5_32 (int arg0, unsigned int arg1, float arg2,
60        double arg3, long double arg4, _Decimal32 arg5)
61 {
62   return arg5;
63 }
64
65 /* A handful of functions that return their Nth _Decimal64
66    argument with mixed types in parameter list.  */
67
68 _Decimal64
69 arg0_64 (_Decimal64 arg0, int arg1, unsigned int arg2,
70          float arg3, double  arg4, long double arg5)
71 {
72   return arg0;
73 }
74
75 _Decimal64
76 arg1_64 (int arg0, _Decimal64 arg1, unsigned int arg2,
77          float arg3, double arg4, long double arg5)
78 {
79   return arg1;
80 }
81
82 _Decimal64
83 arg2_64 (int arg0, unsigned int arg1, _Decimal64 arg2,
84          float arg3, double arg4, long double arg5)
85 {
86   return arg2;
87 }
88
89 _Decimal64
90 arg3_64 (int arg0, unsigned int arg1, float arg2,
91          _Decimal64 arg3, double arg4, long double arg5)
92 {
93   return arg3;
94 }
95
96 _Decimal64
97 arg4_64 (int arg0, unsigned int arg1, float arg2,
98          float arg3, _Decimal64 arg4, long double arg5)
99 {
100   return arg4;
101 }
102
103 _Decimal64
104 arg5_64 (int arg0, unsigned int arg1, float arg2,
105          double arg3, long double arg4, _Decimal64 arg5)
106 {
107   return arg5;
108 }
109
110 /* A handful of functions that return their Nth _Decimal128
111    argument with mixed types in parameter list.  */
112
113 _Decimal128
114 arg0_128 (_Decimal128 arg0, int arg1, unsigned int arg2,
115          float arg3, double  arg4, long double arg5)
116 {
117   return arg0;
118 }
119 _Decimal128
120 arg1_128 (int arg0, _Decimal128 arg1, unsigned int arg2,
121          float arg3, double arg4, long double arg5)
122 {
123   return arg1;
124 }
125
126 _Decimal128
127 arg2_128 (int arg0, unsigned int arg1, _Decimal128 arg2,
128          float arg3, double arg4, long double arg5)
129 {
130   return arg2;
131 }
132
133 _Decimal128
134 arg3_128 (int arg0, unsigned int arg1, float arg2,
135          _Decimal128 arg3, double arg4, long double arg5)
136 {
137   return arg3;
138 }
139
140 _Decimal128
141 arg4_128 (int arg0, unsigned int arg1, float arg2,
142          float arg3, _Decimal32 arg4, long double arg5)
143 {
144   return arg4;
145 }
146
147 _Decimal128
148 arg5_128 (int arg0, unsigned int arg1, float arg2,
149          double arg3, long double arg4, _Decimal128 arg5)
150 {
151   return arg5;
152 }
153
154
155
156 int
157 main ()
158 {
159   /* _Decimal32 variants.  */
160   if (arg0_32 (0.0df, -1, 2, 3.0f, 4.0, 5.0l) != 0.0df) FAILURE
161   if (arg1_32 (0, 1.0df, 2, 3.0f, 4.0, 5.0l) != 1.0df) FAILURE
162   if (arg2_32 (0, -1, 2.0df, 3.0f, 4.0, 5.0l) != 2.0df) FAILURE
163   if (arg3_32 (0, -1, 2.0f, 3.0df, 4.0, 5.0l) != 3.0df) FAILURE
164   if (arg4_32 (0, -1, 2.0f, 3.0, 4.0df, 5.0l) != 4.0df) FAILURE
165   if (arg5_32 (0, -1, 2.0f, 3.0, 4.0l, 5.0df) != 5.0df) FAILURE
166
167   /* _Decimal64 variants.  */
168   if (arg0_64 (0.0dd, -1, 2, 3.0f, 4.0, 5.0l) != 0.0dd) FAILURE
169   if (arg1_64 (0, 1.0dd, 2, 3.0f, 4.0, 5.0l) != 1.0dd) FAILURE
170   if (arg2_64 (0, -1, 2.0dd, 3.0f, 4.0, 5.0l) != 2.0dd) FAILURE
171   if (arg3_64 (0, -1, 2.0f, 3.0dd, 4.0, 5.0l) != 3.0dd) FAILURE
172   if (arg4_64 (0, -1, 2.0f, 3.0, 4.0dd, 5.0l) != 4.0dd) FAILURE
173   if (arg5_64 (0, -1, 2.0f, 3.0, 4.0l, 5.0dd) != 5.0dd) FAILURE
174
175   /* _Decimal128 variants.  */
176   if (arg0_128 (0.0dl, -1, 2, 3.0f, 4.0, 5.0l) != 0.0dl) FAILURE
177   if (arg1_128 (0, 1.0dl, 2, 3.0f, 4.0, 5.0l) != 1.0dl) FAILURE
178   if (arg2_128 (0, -1, 2.0dl, 3.0f, 4.0, 5.0l) != 2.0dl) FAILURE
179   if (arg3_128 (0, -1, 2.0f, 3.0dl, 4.0, 5.0l) != 3.0dl) FAILURE
180   if (arg4_128 (0, -1, 2.0f, 3.0, 4.0dl, 5.0l) != 4.0dl) FAILURE
181   if (arg5_128 (0, -1, 2.0f, 3.0, 4.0l, 5.0dl) != 5.0dl) FAILURE
182
183   if (failcnt != 0)
184     abort ();
185
186   return 0;
187 }