modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/va-arg-4.c (about) 1 /* On the i960 any arg bigger than 16 bytes causes all subsequent args 2 to be passed on the stack. We test this. */ 3 4 #include <stdarg.h> 5 6 typedef struct { 7 char a[32]; 8 } big; 9 10 void 11 f (big x, char *s, ...) 12 { 13 va_list ap; 14 15 if (x.a[0] != 'a' || x.a[1] != 'b' || x.a[2] != 'c') 16 abort (); 17 va_start (ap, s); 18 if (va_arg (ap, int) != 42) 19 abort (); 20 if (va_arg (ap, int) != 'x') 21 abort (); 22 if (va_arg (ap, int) != 0) 23 abort (); 24 va_end (ap); 25 } 26 27 main () 28 { 29 static big x = { "abc" }; 30 31 f (x, "", 42, 'x', 0); 32 exit (0); 33 }