/* { dg-options "-std=gnu99" } */

#include <stdarg.h>

extern void abort (void);

struct S1
{
  _Decimal64 a[0];
};

struct S2
{
  struct
  {
    _Decimal64 e;
  } b[0];
};

struct S3
{
  union
  {
    _Decimal64 c;
  } a[0];
};

struct S4
{
  int a[0];
  _Decimal64 b[0];
};

struct S5
{
  union
  {
    _Decimal64 c[0];
  } a;
};

static int failcnt = 0;

/* Support compiling the test to report individual failures; default is
   to abort as soon as a check fails.  */
#ifdef DBG
#include <stdio.h>
#define FAILURE do                             \
{ printf ("failed at line %d\n", __LINE__);    \
  failcnt++;                                   \
}while(0)
#else
#define FAILURE abort ()
#endif

int check_var (int z, ...)
{
  long long result;
  va_list ap;
  va_start (ap, z);
  va_arg (ap, struct S1);
  result = va_arg (ap, long long);
  va_end (ap);

  return (result == 2LL);
}

int main ()
{
  struct S1 s1;
  struct S2 s2;
  struct S3 s3;
  struct S4 s4;
  struct S5 s5;

  if (check_var (2, s1, 2LL) == 0)
    FAILURE;
  if (check_var (2, s2, 2LL) == 0)
    FAILURE;
  if (check_var (2, s3, 2LL) == 0)
    FAILURE;
  if (check_var (2, s4, 2LL) == 0)
    FAILURE;
  if (check_var (2, s5, 2LL) == 0)
    FAILURE;

  if (failcnt)
    abort ();

  return 0;
}
