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 7static _Decimal32 8vararg32 (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 21static _Decimal64 22vararg64 (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 35static _Decimal128 36vararg128 (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 50int 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} 96