variadic_05_double.c (407B)
1 /* Variadic double args — exercises the AAPCS64 FP save area (v0..v7) 2 * and the va_arg FP path (16-byte stride into the FP region). */ 3 double sum_d(int n, ...) { 4 __builtin_va_list ap; 5 __builtin_va_start(ap, n); 6 double s = 0.0; 7 for (int i = 0; i < n; i++) s = s + __builtin_va_arg(ap, double); 8 __builtin_va_end(ap); 9 return s; 10 } 11 12 int test_main(void) { return (int)sum_d(3, 10.0, 20.0, 12.0); }