1  #include <stdarg.h>
       2  #include "dfp-dbg.h"
       3  
       4  struct S1
       5  {
       6    _Decimal64 a[0];
       7  };
       8  
       9  struct S2
      10  {
      11    struct
      12    {
      13      _Decimal64 e;
      14    } b[0];
      15  };
      16  
      17  struct S3
      18  {
      19    union
      20    {
      21      _Decimal64 c;
      22    } a[0];
      23  };
      24  
      25  struct S4
      26  {
      27    int a[0];
      28    _Decimal64 b[0];
      29  };
      30  
      31  struct S5
      32  {
      33    union
      34    {
      35      _Decimal64 c[0];
      36    } a;
      37  };
      38  
      39  int check_var (int z, ...)
      40  {
      41    long long result;
      42    va_list ap;
      43    va_start (ap, z);
      44    va_arg (ap, struct S1);
      45    result = va_arg (ap, long long);
      46    va_end (ap);
      47  
      48    return (result == 2LL);
      49  }
      50  
      51  int main ()
      52  {
      53    struct S1 s1;
      54    struct S2 s2;
      55    struct S3 s3;
      56    struct S4 s4;
      57    struct S5 s5;
      58  
      59    if (check_var (2, s1, 2LL) == 0)
      60      FAILURE;
      61    if (check_var (2, s2, 2LL) == 0)
      62      FAILURE;
      63    if (check_var (2, s3, 2LL) == 0)
      64      FAILURE;
      65    if (check_var (2, s4, 2LL) == 0)
      66      FAILURE;
      67    if (check_var (2, s5, 2LL) == 0)
      68      FAILURE;
      69  
      70    FINISH
      71  }