OSDN Git Service

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