annotate gcc/testsuite/gcc.dg/compat/struct-by-value-4_y.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 #include <stdarg.h>
kono
parents:
diff changeset
2
kono
parents:
diff changeset
3 #include "compat-common.h"
kono
parents:
diff changeset
4
kono
parents:
diff changeset
5 #ifdef SKIP_VA
kono
parents:
diff changeset
6 const int test_va = 0;
kono
parents:
diff changeset
7 #else
kono
parents:
diff changeset
8 const int test_va = 1;
kono
parents:
diff changeset
9 #endif
kono
parents:
diff changeset
10
kono
parents:
diff changeset
11 typedef struct { char c; } Sc;
kono
parents:
diff changeset
12 typedef struct { short s; } Ss;
kono
parents:
diff changeset
13 typedef struct { int i; } Si;
kono
parents:
diff changeset
14 typedef struct { short s; char c; } Ssc;
kono
parents:
diff changeset
15 typedef struct { int i; short s; } Sis;
kono
parents:
diff changeset
16 typedef struct { char c; short s; int i; } Scsi;
kono
parents:
diff changeset
17 typedef struct { char c; int i; short s; } Scis;
kono
parents:
diff changeset
18
kono
parents:
diff changeset
19 void initSc (Sc *p, int i) { p->c = i/16; }
kono
parents:
diff changeset
20 void initSs (Ss *p, int i) { p->s = i; }
kono
parents:
diff changeset
21 void initSi (Si *p, int i) { p->i = i; }
kono
parents:
diff changeset
22 void initSsc (Ssc *p, int i) { p->s = i; p->c = (i/16)+1; }
kono
parents:
diff changeset
23 void initSis (Sis *p, int i) { p->i = i; p->s = i+1; }
kono
parents:
diff changeset
24 void initScsi (Scsi *p, int i) { p->c = i/16; p->s = i+1; p->i = i+2; }
kono
parents:
diff changeset
25 void initScis (Scis *p, int i) { p->c = i/16; p->i = i+1; p->s = i+2; }
kono
parents:
diff changeset
26
kono
parents:
diff changeset
27 #define T(N, TYPE) \
kono
parents:
diff changeset
28 struct S##TYPE##N { TYPE i[N]; }; \
kono
parents:
diff changeset
29 \
kono
parents:
diff changeset
30 extern struct S##TYPE##N g1s##TYPE##N, g2s##TYPE##N; \
kono
parents:
diff changeset
31 extern struct S##TYPE##N g3s##TYPE##N, g4s##TYPE##N; \
kono
parents:
diff changeset
32 extern struct S##TYPE##N g5s##TYPE##N, g6s##TYPE##N; \
kono
parents:
diff changeset
33 extern struct S##TYPE##N g7s##TYPE##N, g8s##TYPE##N; \
kono
parents:
diff changeset
34 extern struct S##TYPE##N g9s##TYPE##N, g10s##TYPE##N; \
kono
parents:
diff changeset
35 extern struct S##TYPE##N g11s##TYPE##N, g12s##TYPE##N; \
kono
parents:
diff changeset
36 extern struct S##TYPE##N g13s##TYPE##N, g14s##TYPE##N; \
kono
parents:
diff changeset
37 extern struct S##TYPE##N g15s##TYPE##N, g16s##TYPE##N; \
kono
parents:
diff changeset
38 \
kono
parents:
diff changeset
39 extern void check##TYPE (TYPE x, int i); \
kono
parents:
diff changeset
40 extern void \
kono
parents:
diff changeset
41 check##TYPE##N (struct S##TYPE##N *p, int i); \
kono
parents:
diff changeset
42 \
kono
parents:
diff changeset
43 void \
kono
parents:
diff changeset
44 checkg##TYPE##N (void) \
kono
parents:
diff changeset
45 { \
kono
parents:
diff changeset
46 check##TYPE##N ( &g1s##TYPE##N, 1*16); \
kono
parents:
diff changeset
47 check##TYPE##N ( &g2s##TYPE##N, 2*16); \
kono
parents:
diff changeset
48 check##TYPE##N ( &g3s##TYPE##N, 3*16); \
kono
parents:
diff changeset
49 check##TYPE##N ( &g4s##TYPE##N, 4*16); \
kono
parents:
diff changeset
50 check##TYPE##N ( &g5s##TYPE##N, 5*16); \
kono
parents:
diff changeset
51 check##TYPE##N ( &g6s##TYPE##N, 6*16); \
kono
parents:
diff changeset
52 check##TYPE##N ( &g7s##TYPE##N, 7*16); \
kono
parents:
diff changeset
53 check##TYPE##N ( &g8s##TYPE##N, 8*16); \
kono
parents:
diff changeset
54 check##TYPE##N ( &g9s##TYPE##N, 9*16); \
kono
parents:
diff changeset
55 check##TYPE##N (&g10s##TYPE##N, 10*16); \
kono
parents:
diff changeset
56 check##TYPE##N (&g11s##TYPE##N, 11*16); \
kono
parents:
diff changeset
57 check##TYPE##N (&g12s##TYPE##N, 12*16); \
kono
parents:
diff changeset
58 check##TYPE##N (&g13s##TYPE##N, 13*16); \
kono
parents:
diff changeset
59 check##TYPE##N (&g14s##TYPE##N, 14*16); \
kono
parents:
diff changeset
60 check##TYPE##N (&g15s##TYPE##N, 15*16); \
kono
parents:
diff changeset
61 check##TYPE##N (&g16s##TYPE##N, 16*16); \
kono
parents:
diff changeset
62 } \
kono
parents:
diff changeset
63 \
kono
parents:
diff changeset
64 void \
kono
parents:
diff changeset
65 test##TYPE##N (struct S##TYPE##N s1, struct S##TYPE##N s2, \
kono
parents:
diff changeset
66 struct S##TYPE##N s3, struct S##TYPE##N s4, \
kono
parents:
diff changeset
67 struct S##TYPE##N s5, struct S##TYPE##N s6, \
kono
parents:
diff changeset
68 struct S##TYPE##N s7, struct S##TYPE##N s8, \
kono
parents:
diff changeset
69 struct S##TYPE##N s9, struct S##TYPE##N s10, \
kono
parents:
diff changeset
70 struct S##TYPE##N s11, struct S##TYPE##N s12, \
kono
parents:
diff changeset
71 struct S##TYPE##N s13, struct S##TYPE##N s14, \
kono
parents:
diff changeset
72 struct S##TYPE##N s15, struct S##TYPE##N s16) \
kono
parents:
diff changeset
73 { \
kono
parents:
diff changeset
74 check##TYPE##N (&s1, 1*16); \
kono
parents:
diff changeset
75 check##TYPE##N (&s2, 2*16); \
kono
parents:
diff changeset
76 check##TYPE##N (&s3, 3*16); \
kono
parents:
diff changeset
77 check##TYPE##N (&s4, 4*16); \
kono
parents:
diff changeset
78 check##TYPE##N (&s5, 5*16); \
kono
parents:
diff changeset
79 check##TYPE##N (&s6, 6*16); \
kono
parents:
diff changeset
80 check##TYPE##N (&s7, 7*16); \
kono
parents:
diff changeset
81 check##TYPE##N (&s8, 8*16); \
kono
parents:
diff changeset
82 check##TYPE##N (&s9, 9*16); \
kono
parents:
diff changeset
83 check##TYPE##N (&s10, 10*16); \
kono
parents:
diff changeset
84 check##TYPE##N (&s11, 11*16); \
kono
parents:
diff changeset
85 check##TYPE##N (&s12, 12*16); \
kono
parents:
diff changeset
86 check##TYPE##N (&s13, 13*16); \
kono
parents:
diff changeset
87 check##TYPE##N (&s14, 14*16); \
kono
parents:
diff changeset
88 check##TYPE##N (&s15, 15*16); \
kono
parents:
diff changeset
89 check##TYPE##N (&s16, 16*16); \
kono
parents:
diff changeset
90 } \
kono
parents:
diff changeset
91 \
kono
parents:
diff changeset
92 void \
kono
parents:
diff changeset
93 testva##TYPE##N (int n, ...) \
kono
parents:
diff changeset
94 { \
kono
parents:
diff changeset
95 int i; \
kono
parents:
diff changeset
96 va_list ap; \
kono
parents:
diff changeset
97 if (test_va) \
kono
parents:
diff changeset
98 { \
kono
parents:
diff changeset
99 va_start (ap, n); \
kono
parents:
diff changeset
100 for (i = 0; i < n; i++) \
kono
parents:
diff changeset
101 { \
kono
parents:
diff changeset
102 struct S##TYPE##N t = va_arg (ap, struct S##TYPE##N); \
kono
parents:
diff changeset
103 check##TYPE##N (&t, (i+1)*16); \
kono
parents:
diff changeset
104 } \
kono
parents:
diff changeset
105 va_end (ap); \
kono
parents:
diff changeset
106 } \
kono
parents:
diff changeset
107 }
kono
parents:
diff changeset
108
kono
parents:
diff changeset
109 #ifndef SKIP_ZERO_ARRAY
kono
parents:
diff changeset
110 T(0, Sc)
kono
parents:
diff changeset
111 #endif
kono
parents:
diff changeset
112 T(1, Sc)
kono
parents:
diff changeset
113 T(2, Sc)
kono
parents:
diff changeset
114 T(3, Sc)
kono
parents:
diff changeset
115 T(4, Sc)
kono
parents:
diff changeset
116 T(5, Sc)
kono
parents:
diff changeset
117 T(6, Sc)
kono
parents:
diff changeset
118 T(7, Sc)
kono
parents:
diff changeset
119 T(8, Sc)
kono
parents:
diff changeset
120 T(9, Sc)
kono
parents:
diff changeset
121 T(10, Sc)
kono
parents:
diff changeset
122 T(11, Sc)
kono
parents:
diff changeset
123 T(12, Sc)
kono
parents:
diff changeset
124 T(13, Sc)
kono
parents:
diff changeset
125 T(14, Sc)
kono
parents:
diff changeset
126 T(15, Sc)
kono
parents:
diff changeset
127 #ifndef SKIP_ZERO_ARRAY
kono
parents:
diff changeset
128 T(0, Ss)
kono
parents:
diff changeset
129 #endif
kono
parents:
diff changeset
130 T(1, Ss)
kono
parents:
diff changeset
131 T(2, Ss)
kono
parents:
diff changeset
132 T(3, Ss)
kono
parents:
diff changeset
133 T(4, Ss)
kono
parents:
diff changeset
134 T(5, Ss)
kono
parents:
diff changeset
135 T(6, Ss)
kono
parents:
diff changeset
136 T(7, Ss)
kono
parents:
diff changeset
137 T(8, Ss)
kono
parents:
diff changeset
138 T(9, Ss)
kono
parents:
diff changeset
139 T(10, Ss)
kono
parents:
diff changeset
140 T(11, Ss)
kono
parents:
diff changeset
141 T(12, Ss)
kono
parents:
diff changeset
142 T(13, Ss)
kono
parents:
diff changeset
143 T(14, Ss)
kono
parents:
diff changeset
144 T(15, Ss)
kono
parents:
diff changeset
145 #ifndef SKIP_ZERO_ARRAY
kono
parents:
diff changeset
146 T(0, Si)
kono
parents:
diff changeset
147 #endif
kono
parents:
diff changeset
148 T(1, Si)
kono
parents:
diff changeset
149 T(2, Si)
kono
parents:
diff changeset
150 T(3, Si)
kono
parents:
diff changeset
151 T(4, Si)
kono
parents:
diff changeset
152 T(5, Si)
kono
parents:
diff changeset
153 T(6, Si)
kono
parents:
diff changeset
154 T(7, Si)
kono
parents:
diff changeset
155 T(8, Si)
kono
parents:
diff changeset
156 T(9, Si)
kono
parents:
diff changeset
157 T(10, Si)
kono
parents:
diff changeset
158 T(11, Si)
kono
parents:
diff changeset
159 T(12, Si)
kono
parents:
diff changeset
160 T(13, Si)
kono
parents:
diff changeset
161 T(14, Si)
kono
parents:
diff changeset
162 T(15, Si)