1 /* __builtin_ms_va_list is only supported for -m64. */
2 /* { dg-do run { target lp64 } } */
3 /* { dg-require-effective-target lto } */
4 /* { dg-options "-flto" } */
5
6 #include <stdio.h>
7
8 int __attribute__((ms_abi))
foo(int n,...)9 foo (int n, ...)
10 {
11 __builtin_ms_va_list ap;
12 int sum = 0;
13
14 __builtin_ms_va_start (ap, n);
15
16 while (n--)
17 {
18 sum += __builtin_va_arg (ap, int);
19 printf ("sum = %d\n", sum);
20 }
21
22 __builtin_ms_va_end (ap);
23
24 return sum;
25 }
26
27 int
main(void)28 main (void)
29 {
30 int res = foo (10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
31
32 if (res != 55)
33 __builtin_abort ();
34
35 return 0;
36 }
37