1/* { dg-do run } */ 2/* { dg-require-effective-target lp64 } */ 3/* { dg-options "-O2" } */ 4 5#include <stdarg.h> 6#include <assert.h> 7 8int n1 = 30; 9double n2 = 324; 10double n3 = 39494.94; 11double n4 = 407; 12double n5 = 32.304; 13double n6 = 394.14; 14double n7 = 4.07; 15double n8 = 32.4; 16double n9 = 314.194; 17double n10 = 0.1407; 18 19int e1; 20double e2; 21double e3; 22double e4; 23double e5; 24double e6; 25double e7; 26double e8; 27double e9; 28double e10; 29 30static void 31__attribute__((noinline)) 32foo (va_list va_arglist) 33{ 34 e2 = va_arg (va_arglist, double); 35 e3 = va_arg (va_arglist, double); 36 e4 = va_arg (va_arglist, double); 37 e5 = va_arg (va_arglist, double); 38 e6 = va_arg (va_arglist, double); 39 e7 = va_arg (va_arglist, double); 40 e8 = va_arg (va_arglist, double); 41 e9 = va_arg (va_arglist, double); 42 e10 = va_arg (va_arglist, double); 43} 44 45static void 46__attribute__((noinline)) 47test (int a1, ...) 48{ 49 va_list va_arglist; 50 e1 = a1; 51 va_start (va_arglist, a1); 52 foo (va_arglist); 53 va_end (va_arglist); 54} 55 56int 57main () 58{ 59 test (n1, n2, n3, n4, n5, n6, n7, n8, n9, n10); 60 assert (n1 == e1); 61 assert (n2 == e2); 62 assert (n3 == e3); 63 assert (n4 == e4); 64 assert (n5 == e5); 65 assert (n6 == e6); 66 assert (n7 == e7); 67 assert (n8 == e8); 68 assert (n9 == e9); 69 assert (n10 == e10); 70 return 0; 71} 72