1 #include <stdarg.h>
2 
3 #include "compat-common.h"
4 
5 #include "union-defs.h"
6 #include "union-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(Ucs)
63 T(Uci)
64 T(Ucl)
65 T(Ucll)
66 T(Usi)
67 T(Usl)
68 T(Usll)
69 T(Uil)
70 T(Uill)
71 T(Ulll)
72