OSDN Git Service

5add1f7fd383eba2840075e8f9350f6df581ff0e
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / c-c++-common / dfp / func-vararg-dfp.c
1 /* C99 6.5.2.2 Function calls.
2    Test passing varargs of the decimal float types.  */
3
4 #include <stdarg.h>
5 #include "dfp-dbg.h"
6
7 static _Decimal32
8 vararg32 (unsigned arg, ...)
9 {
10   int i;
11   va_list ap;
12   _Decimal32 result;
13
14   va_start (ap, arg);
15   for (i = 0; i <= arg; i++)
16     result = va_arg (ap, _Decimal32);
17   va_end (ap);
18   return result;
19 }
20
21 static _Decimal64
22 vararg64 (unsigned arg, ...)
23 {
24   int i;
25   va_list ap;
26   _Decimal64 result;
27
28   va_start (ap, arg);
29   for (i = 0; i <= arg; i++)
30     result = va_arg (ap, _Decimal64);
31   va_end (ap);
32   return result;
33 }
34
35 static _Decimal128
36 vararg128 (unsigned arg, ...)
37 {
38   int i;
39   va_list ap;
40   _Decimal128 result;
41
42   va_start (ap, arg);
43   for (i = 0; i <= arg; i++)
44     result = va_arg (ap, _Decimal128);
45   va_end (ap);
46   return result;
47 }
48
49 \f
50 int main()
51 {
52   /* _Decimal32 variants.  */
53   if (vararg32 (0, 0.0df, 1.0df, 2.0df, 3.0df, 4.0df, 5.0df) != 0.0df)
54     FAILURE
55   if (vararg32 (1, 0.0df, 1.0df, 2.0df, 3.0df, 4.0df, 5.0df) != 1.0df)
56     FAILURE
57   if (vararg32 (2, 0.0df, 1.0df, 2.0df, 3.0df, 4.0df, 5.0df) != 2.0df)
58     FAILURE
59   if (vararg32 (3, 0.0df, 1.0df, 2.0df, 3.0df, 4.0df, 5.0df) != 3.0df)
60     FAILURE
61   if (vararg32 (4, 0.0df, 1.0df, 2.0df, 3.0df, 4.0df, 5.0df) != 4.0df)
62     FAILURE
63   if (vararg32 (5, 0.0df, 1.0df, 2.0df, 3.0df, 4.0df, 5.0df) != 5.0df)
64     FAILURE
65
66   /* _Decimal64 variants.  */
67   if (vararg64 (0, 0.0dd, 1.0dd, 2.0dd, 3.0dd, 4.0dd, 5.0dd) != 0.0dd)
68     FAILURE
69   if (vararg64 (1, 0.0dd, 1.0dd, 2.0dd, 3.0dd, 4.0dd, 5.0dd) != 1.0dd)
70     FAILURE
71   if (vararg64 (2, 0.0dd, 1.0dd, 2.0dd, 3.0dd, 4.0dd, 5.0dd) != 2.0dd)
72     FAILURE
73   if (vararg64 (3, 0.0dd, 1.0dd, 2.0dd, 3.0dd, 4.0dd, 5.0dd) != 3.0dd)
74     FAILURE
75   if (vararg64 (4, 0.0dd, 1.0dd, 2.0dd, 3.0dd, 4.0dd, 5.0dd) != 4.0dd)
76     FAILURE
77   if (vararg64 (5, 0.0dd, 1.0dd, 2.0dd, 3.0dd, 4.0dd, 5.0dd) != 5.0dd)
78     FAILURE
79
80   /* _Decimal128 variants.  */
81   if (vararg128 (0, 0.0dl, 1.0dl, 2.0dl, 3.0dl, 4.0dl, 5.0dl) != 0.0dl)
82     FAILURE
83   if (vararg128 (1, 0.0dl, 1.0dl, 2.0dl, 3.0dl, 4.0dl, 5.0dl) != 1.0dl)
84     FAILURE
85   if (vararg128 (2, 0.0dl, 1.0dl, 2.0dl, 3.0dl, 4.0dl, 5.0dl) != 2.0dl)
86     FAILURE
87   if (vararg128 (3, 0.0dl, 1.0dl, 2.0dl, 3.0dl, 4.0dl, 5.0dl) != 3.0dl)
88     FAILURE
89   if (vararg128 (4, 0.0dl, 1.0dl, 2.0dl, 3.0dl, 4.0dl, 5.0dl) != 4.0dl)
90     FAILURE
91   if (vararg128 (5, 0.0dl, 1.0dl, 2.0dl, 3.0dl, 4.0dl, 5.0dl) != 5.0dl)
92     FAILURE
93
94   FINISH
95 }