OSDN Git Service

2004-05-20 H.J. Lu <hongjiu.lu@intel.com>
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / compat / struct-return-19_y.c
1 #include <stdarg.h>
2
3 #include "compat-common.h"
4
5 #include "mixed-struct-defs.h"
6 #include "mixed-struct-init.h"
7
8 #define T(TYPE)                                                 \
9 extern TYPE g01##TYPE, g02##TYPE, g03##TYPE, g04##TYPE;         \
10 extern TYPE g05##TYPE, g06##TYPE, g07##TYPE, g08##TYPE;         \
11 extern TYPE g09##TYPE, g10##TYPE, g11##TYPE, g12##TYPE;         \
12 extern TYPE g13##TYPE, g14##TYPE, g15##TYPE, g16##TYPE;         \
13                                                                 \
14 extern void check##TYPE (TYPE x, int i);                        \
15                                                                 \
16 void                                                            \
17 checkg##TYPE (void)                                             \
18 {                                                               \
19   check##TYPE (g01##TYPE,  1);                                  \
20   check##TYPE (g02##TYPE,  2);                                  \
21   check##TYPE (g03##TYPE,  3);                                  \
22   check##TYPE (g04##TYPE,  4);                                  \
23   check##TYPE (g05##TYPE,  5);                                  \
24   check##TYPE (g06##TYPE,  6);                                  \
25   check##TYPE (g07##TYPE,  7);                                  \
26   check##TYPE (g08##TYPE,  8);                                  \
27   check##TYPE (g09##TYPE,  9);                                  \
28   check##TYPE (g10##TYPE, 10);                                  \
29   check##TYPE (g11##TYPE, 11);                                  \
30   check##TYPE (g12##TYPE, 12);                                  \
31   check##TYPE (g13##TYPE, 13);                                  \
32   check##TYPE (g14##TYPE, 14);                                  \
33   check##TYPE (g15##TYPE, 15);                                  \
34   check##TYPE (g16##TYPE, 16);                                  \
35 }                                                               \
36                                                                 \
37 TYPE                                                            \
38 test0##TYPE (void)                                              \
39 {                                                               \
40   return g01##TYPE;                                             \
41 }                                                               \
42                                                                 \
43 TYPE                                                            \
44 test1##TYPE (TYPE x01)                                          \
45 {                                                               \
46   return x01;                                                   \
47 }                                                               \
48                                                                 \
49 TYPE                                                            \
50 testva##TYPE (int n, ...)                                       \
51 {                                                               \
52   int i;                                                        \
53   TYPE rslt;                                                    \
54   va_list ap;                                                   \
55   va_start (ap, n);                                             \
56   for (i = 0; i < n; i++)                                       \
57       rslt = va_arg (ap, TYPE);                                 \
58   va_end (ap);                                                  \
59   return rslt;                                                  \
60 }
61
62 T(Scdc)
63 T(Sd)
64 T(Sdi)
65 T(Scsdsc)
66 T(Scsdis)
67 T(Scsdisc)
68 T(Ssds)
69 T(Ssdsc)
70 T(Scssdssc)