#ifndef T
|
#ifndef T
|
#include "compat-common.h"
|
#include "compat-common.h"
|
#include "mixed-struct-defs.h"
|
#include "mixed-struct-defs.h"
|
#include "mixed-struct-init.h"
|
#include "mixed-struct-init.h"
|
|
|
#define T(NAME, FIELDS, TYPE, FIELDINIT, FIELDTEST) \
|
#define T(NAME, FIELDS, TYPE, FIELDINIT, FIELDTEST) \
|
extern void testva##NAME (int n, ...); \
|
extern void testva##NAME (int n, ...); \
|
\
|
\
|
void \
|
void \
|
testit##NAME (int n) \
|
testit##NAME (int n) \
|
{ \
|
{ \
|
struct S { FIELDS TYPE a[n]; } s; \
|
struct S { FIELDS TYPE a[n]; } s; \
|
int i; \
|
int i; \
|
FIELDINIT; \
|
FIELDINIT; \
|
for (i = 0; i < n; ++i) \
|
for (i = 0; i < n; ++i) \
|
s.a[i] = 12 + n - i; \
|
s.a[i] = 12 + n - i; \
|
testva##NAME (n, s, n, s); \
|
testva##NAME (n, s, n, s); \
|
}
|
}
|
|
|
#include "struct-by-value-22_x.c"
|
#include "struct-by-value-22_x.c"
|
|
|
#undef T
|
#undef T
|
|
|
void
|
void
|
struct_by_value_22_x ()
|
struct_by_value_22_x ()
|
{
|
{
|
int n;
|
int n;
|
DEBUG_INIT
|
DEBUG_INIT
|
|
|
#define T(NAME, FIELDS, TYPE, FIELDINIT, FIELDTEST) testit##NAME (n);
|
#define T(NAME, FIELDS, TYPE, FIELDINIT, FIELDTEST) testit##NAME (n);
|
|
|
for (n = 0; n < 16; ++n)
|
for (n = 0; n < 16; ++n)
|
{
|
{
|
#include "struct-by-value-22_x.c"
|
#include "struct-by-value-22_x.c"
|
DEBUG_NL;
|
DEBUG_NL;
|
}
|
}
|
for (; n < 110; n += 13)
|
for (; n < 110; n += 13)
|
{
|
{
|
#include "struct-by-value-22_x.c"
|
#include "struct-by-value-22_x.c"
|
DEBUG_NL;
|
DEBUG_NL;
|
}
|
}
|
|
|
DEBUG_FINI
|
DEBUG_FINI
|
|
|
if (fails != 0)
|
if (fails != 0)
|
abort ();
|
abort ();
|
}
|
}
|
|
|
#else
|
#else
|
|
|
#define S(NAME, FIELDS, FIELDINIT, FIELDTEST) \
|
#define S(NAME, FIELDS, FIELDINIT, FIELDTEST) \
|
T(c##NAME, FIELDS, char, FIELDINIT, FIELDTEST) \
|
T(c##NAME, FIELDS, char, FIELDINIT, FIELDTEST) \
|
T(s##NAME, FIELDS, short, FIELDINIT, FIELDTEST) \
|
T(s##NAME, FIELDS, short, FIELDINIT, FIELDTEST) \
|
T(u##NAME, FIELDS, unsigned, FIELDINIT, FIELDTEST) \
|
T(u##NAME, FIELDS, unsigned, FIELDINIT, FIELDTEST) \
|
T(d##NAME, FIELDS, double, FIELDINIT, FIELDTEST)
|
T(d##NAME, FIELDS, double, FIELDINIT, FIELDTEST)
|
S(E, , do {} while (0), DEBUG_DOT)
|
S(E, , do {} while (0), DEBUG_DOT)
|
S(n, int n;, s.n = n, if (s.n != n) DEBUG_CHECK)
|
S(n, int n;, s.n = n, if (s.n != n) DEBUG_CHECK)
|
#define U(TYPE) \
|
#define U(TYPE) \
|
S(TYPE, TYPE s;, init##TYPE (&s.s, n), check##TYPE (s.s, n))
|
S(TYPE, TYPE s;, init##TYPE (&s.s, n), check##TYPE (s.s, n))
|
U(Scd)
|
U(Scd)
|
U(Scdc)
|
U(Scdc)
|
U(Sd)
|
U(Sd)
|
U(Sdi)
|
U(Sdi)
|
U(Scsds)
|
U(Scsds)
|
U(Scsdsc)
|
U(Scsdsc)
|
U(Scsdis)
|
U(Scsdis)
|
U(Scsdisc)
|
U(Scsdisc)
|
U(Ssds)
|
U(Ssds)
|
U(Ssdsc)
|
U(Ssdsc)
|
U(Scssdss)
|
U(Scssdss)
|
U(Scssdssc)
|
U(Scssdssc)
|
U(Sfi)
|
U(Sfi)
|
U(Sfii)
|
U(Sfii)
|
U(Sfifi)
|
U(Sfifi)
|
U(Sfiifii)
|
U(Sfiifii)
|
#undef S
|
#undef S
|
#undef U
|
#undef U
|
|
|
#endif
|
#endif
|
|
|