1 /* { dg-options "-std=gnu99" } */
3 /* C99 6.5.2.2 Function calls.
4 Test passing varargs of the decimal float types. */
8 extern void abort (void);
11 vararg32 (unsigned arg
, ...)
18 for (i
= 0; i
<= arg
; i
++)
19 result
= va_arg (ap
, _Decimal32
);
25 vararg64 (unsigned arg
, ...)
32 for (i
= 0; i
<= arg
; i
++)
33 result
= va_arg (ap
, _Decimal64
);
39 vararg128 (unsigned arg
, ...)
46 for (i
= 0; i
<= arg
; i
++)
47 result
= va_arg (ap
, _Decimal128
);
55 /* _Decimal32 variants. */
56 if (vararg32 (0, 0.0df
, 1.0df
, 2.0df
, 3.0df
, 4.0df
, 5.0df
) != 0.0df
)
58 if (vararg32 (1, 0.0df
, 1.0df
, 2.0df
, 3.0df
, 4.0df
, 5.0df
) != 1.0df
)
60 if (vararg32 (2, 0.0df
, 1.0df
, 2.0df
, 3.0df
, 4.0df
, 5.0df
) != 2.0df
)
62 if (vararg32 (3, 0.0df
, 1.0df
, 2.0df
, 3.0df
, 4.0df
, 5.0df
) != 3.0df
)
64 if (vararg32 (4, 0.0df
, 1.0df
, 2.0df
, 3.0df
, 4.0df
, 5.0df
) != 4.0df
)
66 if (vararg32 (5, 0.0df
, 1.0df
, 2.0df
, 3.0df
, 4.0df
, 5.0df
) != 5.0df
)
69 /* _Decimal64 variants. */
70 if (vararg64 (0, 0.0dd
, 1.0dd
, 2.0dd
, 3.0dd
, 4.0dd
, 5.0dd
) != 0.0dd
)
72 if (vararg64 (1, 0.0dd
, 1.0dd
, 2.0dd
, 3.0dd
, 4.0dd
, 5.0dd
) != 1.0dd
)
74 if (vararg64 (2, 0.0dd
, 1.0dd
, 2.0dd
, 3.0dd
, 4.0dd
, 5.0dd
) != 2.0dd
)
76 if (vararg64 (3, 0.0dd
, 1.0dd
, 2.0dd
, 3.0dd
, 4.0dd
, 5.0dd
) != 3.0dd
)
78 if (vararg64 (4, 0.0dd
, 1.0dd
, 2.0dd
, 3.0dd
, 4.0dd
, 5.0dd
) != 4.0dd
)
80 if (vararg64 (5, 0.0dd
, 1.0dd
, 2.0dd
, 3.0dd
, 4.0dd
, 5.0dd
) != 5.0dd
)
83 /* _Decimal128 variants. */
84 if (vararg128 (0, 0.0dl
, 1.0dl
, 2.0dl
, 3.0dl
, 4.0dl
, 5.0dl
) != 0.0dl
)
86 if (vararg128 (1, 0.0dl
, 1.0dl
, 2.0dl
, 3.0dl
, 4.0dl
, 5.0dl
) != 1.0dl
)
88 if (vararg128 (2, 0.0dl
, 1.0dl
, 2.0dl
, 3.0dl
, 4.0dl
, 5.0dl
) != 2.0dl
)
90 if (vararg128 (3, 0.0dl
, 1.0dl
, 2.0dl
, 3.0dl
, 4.0dl
, 5.0dl
) != 3.0dl
)
92 if (vararg128 (4, 0.0dl
, 1.0dl
, 2.0dl
, 3.0dl
, 4.0dl
, 5.0dl
) != 4.0dl
)
94 if (vararg128 (5, 0.0dl
, 1.0dl
, 2.0dl
, 3.0dl
, 4.0dl
, 5.0dl
) != 5.0dl
)