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