OSDN Git Service

c5d9650c1e2e9dcc0a6daec0e40f7774c7d8d057
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / dfp / func-mixed.c
1 /* { dg-do run } */
2 /* { dg-options "-std=gnu99 -Wall" } */
3
4 /* C99 6.5.2.2 Function calls.
5    Test scalar passing and return values involving decimal floating
6    point types.  */
7
8 extern void abort (void);
9
10 /* A handful of functions that return their Nth _Decimal32
11    argument with mixed types in parameter list.  */
12
13 _Decimal32
14 arg0_32 (_Decimal32 arg0, int arg1, unsigned int arg2,
15        float arg3, double  arg4, long double arg5)
16 {
17   return arg0;
18 }
19
20 _Decimal32
21 arg1_32 (int arg0, _Decimal32 arg1, unsigned int arg2,
22        float arg3, double arg4, long double arg5)
23 {
24   return arg1;
25 }
26
27 _Decimal32
28 arg2_32 (int arg0, unsigned int arg1, _Decimal32 arg2,
29        float arg3, double arg4, long double arg5)
30 {
31   return arg2;
32 }
33
34
35 _Decimal32
36 arg3_32 (int arg0, unsigned int arg1, float arg2,
37        _Decimal32 arg3, double arg4, long double arg5)
38 {
39   return arg3;
40 }
41
42 _Decimal32
43 arg4_32 (int arg0, unsigned int arg1, float arg2,
44        double arg3, _Decimal32 arg4, long double arg5)
45 {
46   return arg4;
47 }
48
49 _Decimal32
50 arg5_32 (int arg0, unsigned int arg1, float arg2,
51        double arg3, long double arg4, _Decimal32 arg5)
52 {
53   return arg5;
54 }
55
56 /* A handful of functions that return their Nth _Decimal64
57    argument with mixed types in parameter list.  */
58
59 _Decimal64
60 arg0_64 (_Decimal64 arg0, int arg1, unsigned int arg2,
61          float arg3, double  arg4, long double arg5)
62 {
63   return arg0;
64 }
65
66 _Decimal64
67 arg1_64 (int arg0, _Decimal64 arg1, unsigned int arg2,
68          float arg3, double arg4, long double arg5)
69 {
70   return arg1;
71 }
72
73 _Decimal64
74 arg2_64 (int arg0, unsigned int arg1, _Decimal64 arg2,
75          float arg3, double arg4, long double arg5)
76 {
77   return arg2;
78 }
79
80 _Decimal64
81 arg3_64 (int arg0, unsigned int arg1, float arg2,
82          _Decimal64 arg3, double arg4, long double arg5)
83 {
84   return arg3;
85 }
86
87 _Decimal64
88 arg4_64 (int arg0, unsigned int arg1, float arg2,
89          float arg3, _Decimal64 arg4, long double arg5)
90 {
91   return arg4;
92 }
93
94 _Decimal64
95 arg5_64 (int arg0, unsigned int arg1, float arg2,
96          double arg3, long double arg4, _Decimal64 arg5)
97 {
98   return arg5;
99 }
100
101 /* A handful of functions that return their Nth _Decimal128
102    argument with mixed types in parameter list.  */
103
104 _Decimal128
105 arg0_128 (_Decimal128 arg0, int arg1, unsigned int arg2,
106          float arg3, double  arg4, long double arg5)
107 {
108   return arg0;
109 }
110 _Decimal32
111 arg1_128 (int arg0, _Decimal128 arg1, unsigned int arg2,
112          float arg3, double arg4, long double arg5)
113 {
114   return arg1;
115 }
116
117 _Decimal128
118 arg2_128 (int arg0, unsigned int arg1, _Decimal128 arg2,
119          float arg3, double arg4, long double arg5)
120 {
121   return arg2;
122 }
123
124 _Decimal128
125 arg3_128 (int arg0, unsigned int arg1, float arg2,
126          _Decimal128 arg3, double arg4, long double arg5)
127 {
128   return arg3;
129 }
130
131 _Decimal128
132 arg4_128 (int arg0, unsigned int arg1, float arg2,
133          float arg3, _Decimal32 arg4, long double arg5)
134 {
135   return arg4;
136 }
137
138 _Decimal128
139 arg5_128 (int arg0, unsigned int arg1, float arg2,
140          double arg3, long double arg4, _Decimal128 arg5)
141 {
142   return arg5;
143 }
144
145
146
147 int
148 main ()
149 {
150   /* _Decimal32 variants.  */
151   if (arg0_32 (0.0df, -1, 2, 3.0f, 4.0, 5.0ld) != 0.0df) abort ();
152   if (arg1_32 (0, 1.0df, 2, 3.0f, 4.0, 5.0ld) != 1.0df) abort ();
153   if (arg2_32 (0, -1, 2.0df, 3.0f, 4.0, 5.0ld) != 2.0df) abort ();
154   if (arg3_32 (0, -1, 2.0f, 3.0df, 4.0, 5.0ld) != 3.0df) abort ();
155   if (arg4_32 (0, -1, 2.0f, 3.0, 4.0df, 5.0ld) != 4.0df) abort ();
156   if (arg5_32 (0, -1, 2.0f, 3.0, 4.0ld, 5.0df) != 5.0df) abort ();
157
158   /* _Decimal64 variants.  */
159   if (arg0_64 (0.0dd, -1, 2, 3.0f, 4.0, 5.0ld) != 0.0dd) abort ();
160   if (arg1_64 (0, 1.0dd, 2, 3.0f, 4.0, 5.0ld) != 1.0dd) abort ();
161   if (arg2_64 (0, -1, 2.0dd, 3.0f, 4.0, 5.0ld) != 2.0dd) abort ();
162   if (arg3_64 (0, -1, 2.0f, 3.0dd, 4.0, 5.0ld) != 3.0dd) abort ();
163   if (arg4_64 (0, -1, 2.0f, 3.0, 4.0dd, 5.0ld) != 4.0dd) abort ();
164   if (arg5_64 (0, -1, 2.0f, 3.0, 4.0ld, 5.0dd) != 5.0dd) abort ();
165
166   /* _Decimal128 variants.  */
167   if (arg0_128 (0.0dl, -1, 2, 3.0f, 4.0, 5.0ld) != 0.0dl) abort ();
168   if (arg1_128 (0, 1.0dl, 2, 3.0f, 4.0, 5.0ld) != 1.0dl) abort ();
169   if (arg2_128 (0, -1, 2.0dl, 3.0f, 4.0, 5.0ld) != 2.0dl) abort ();
170   if (arg3_128 (0, -1, 2.0f, 3.0dl, 4.0, 5.0ld) != 3.0dl) abort ();
171   if (arg4_128 (0, -1, 2.0f, 3.0, 4.0dl, 5.0ld) != 4.0dl) abort ();
172   if (arg5_128 (0, -1, 2.0f, 3.0, 4.0ld, 5.0dl) != 5.0dl) abort ();
173
174   return 0;
175 }