OSDN Git Service

* gcc.dg/uninit-H.c: Define ASM for Xtensa targets.
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / compat / struct-by-value-22_x.c
1 #ifndef T
2 #include "compat-common.h"
3 #include "mixed-struct-defs.h"
4 #include "mixed-struct-init.h"
5
6 #define T(NAME, FIELDS, TYPE, FIELDINIT, FIELDTEST)                     \
7 extern void testva##NAME (int n, ...);                                  \
8                                                                         \
9 void                                                                    \
10 testit##NAME (int n)                                                    \
11 {                                                                       \
12   struct S { FIELDS TYPE a[n]; } s;                                     \
13   int i;                                                                \
14   FIELDINIT;                                                            \
15   for (i = 0; i < n; ++i)                                               \
16     s.a[i] = 12 + n - i;                                                \
17   testva##NAME (n, s, n, s);                                            \
18 }
19
20 #include "struct-by-value-22_x.c"
21
22 #undef T
23
24 void
25 struct_by_value_22_x ()
26 {
27   int n;
28 DEBUG_INIT
29
30 #define T(NAME, FIELDS, TYPE, FIELDINIT, FIELDTEST) testit##NAME (n);
31
32   for (n = 0; n < 16; ++n)
33     {
34 #include "struct-by-value-22_x.c"
35       DEBUG_NL;
36     }
37   for (; n < 110; n += 13)
38     {
39 #include "struct-by-value-22_x.c"
40       DEBUG_NL;
41     }
42
43 DEBUG_FINI
44
45 if (fails != 0)
46   abort ();
47 }
48
49 #else
50
51 #define S(NAME, FIELDS, FIELDINIT, FIELDTEST)                           \
52   T(c##NAME, FIELDS, char, FIELDINIT, FIELDTEST)                        \
53   T(s##NAME, FIELDS, short, FIELDINIT, FIELDTEST)                       \
54   T(u##NAME, FIELDS, unsigned, FIELDINIT, FIELDTEST)                    \
55   T(d##NAME, FIELDS, double, FIELDINIT, FIELDTEST)
56 S(E, , do {} while (0), DEBUG_DOT)
57 S(n, int n;, s.n = n, if (s.n != n) DEBUG_CHECK)
58 #define U(TYPE)                                                         \
59 S(TYPE, TYPE s;, init##TYPE (&s.s, n), check##TYPE (s.s, n))
60 U(Scd)
61 U(Scdc)
62 U(Sd)
63 U(Sdi)
64 U(Scsds)
65 U(Scsdsc)
66 U(Scsdis)
67 U(Scsdisc)
68 U(Ssds)
69 U(Ssdsc)
70 U(Scssdss)
71 U(Scssdssc)
72 U(Sfi)
73 U(Sfii)
74 U(Sfifi)
75 U(Sfiifii)
76 #undef S
77 #undef U
78
79 #endif