modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/va-arg-14.c (about)

     1  #include <stdarg.h>
     2  
     3  va_list global;
     4  
     5  void vat(va_list param, ...)
     6  {
     7    va_list local;
     8  
     9    va_start (local, param);
    10    va_copy (global, local);
    11    va_copy (param, local);
    12    if (va_arg (local, int) != 1)
    13      abort();
    14    va_end (local);
    15    if (va_arg (global, int) != 1)
    16      abort();
    17    va_end (global);
    18    if (va_arg (param, int) != 1)
    19      abort();
    20    va_end (param);
    21  
    22    va_start (param, param);
    23    va_start (global, param);
    24    va_copy (local, param);
    25    if (va_arg (local, int) != 1)
    26      abort();
    27    va_end (local);
    28    va_copy (local, global);
    29    if (va_arg (local, int) != 1)
    30      abort();
    31    va_end (local);
    32    if (va_arg (global, int) != 1)
    33      abort();
    34    va_end (global);
    35    if (va_arg (param, int) != 1)
    36      abort();
    37    va_end (param);
    38  }
    39  
    40  int main(void) 
    41  {
    42    va_list t;
    43    vat (t, 1);
    44    exit (0);
    45  }