#ifndef T
#include "compat-common.h"
#include "mixed-struct-defs.h"
#include "mixed-struct-init.h"

#define T(NAME, FIELDS, TYPE, FIELDINIT, FIELDTEST)			\
extern void testva##NAME (int n, ...);					\
									\
void									\
testit##NAME (int n)							\
{									\
  struct S { FIELDS TYPE a[n]; } s;					\
  int i;								\
  FIELDINIT;								\
  for (i = 0; i < n; ++i)						\
    s.a[i] = 12 + n - i;						\
  testva##NAME (n, s, n, s);						\
}

#include "struct-by-value-22_x.c"

#undef T

void
struct_by_value_22_x ()
{
  int n;
DEBUG_INIT

#define T(NAME, FIELDS, TYPE, FIELDINIT, FIELDTEST) testit##NAME (n);

  for (n = 0; n < 16; ++n)
    {
#include "struct-by-value-22_x.c"
      DEBUG_NL;
    }
  for (; n < 110; n += 13)
    {
#include "struct-by-value-22_x.c"
      DEBUG_NL;
    }

DEBUG_FINI

if (fails != 0)
  abort ();
}

#else

#define S(NAME, FIELDS, FIELDINIT, FIELDTEST)				\
  T(c##NAME, FIELDS, char, FIELDINIT, FIELDTEST)			\
  T(s##NAME, FIELDS, short, FIELDINIT, FIELDTEST)			\
  T(u##NAME, FIELDS, unsigned, FIELDINIT, FIELDTEST)			\
  T(d##NAME, FIELDS, double, FIELDINIT, FIELDTEST)
S(E, , do {} while (0), DEBUG_DOT)
S(n, int n;, s.n = n, if (s.n != n) DEBUG_CHECK)
#define U(TYPE)								\
S(TYPE, TYPE s;, init##TYPE (&s.s, n), check##TYPE (s.s, n))
U(Scd)
U(Scdc)
U(Sd)
U(Sdi)
U(Scsds)
U(Scsdsc)
U(Scsdis)
U(Scsdisc)
U(Ssds)
U(Ssdsc)
U(Scssdss)
U(Scssdssc)
U(Sfi)
U(Sfii)
U(Sfifi)
U(Sfiifii)
#undef S
#undef U

#endif
