OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc2/] [gcc/] [testsuite/] [gcc.dg/] [compat/] [struct-by-value-9_x.c] - Blame information for rev 384

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 298 jeremybenn
#include "compat-common.h"
2
 
3
#define T(N, TYPE)                                              \
4
struct S##TYPE##N { TYPE i[N]; };                               \
5
                                                                \
6
struct S##TYPE##N g1s##TYPE##N, g2s##TYPE##N;                   \
7
struct S##TYPE##N g3s##TYPE##N, g4s##TYPE##N;                   \
8
struct S##TYPE##N g5s##TYPE##N, g6s##TYPE##N;                   \
9
struct S##TYPE##N g7s##TYPE##N, g8s##TYPE##N;                   \
10
struct S##TYPE##N g9s##TYPE##N, g10s##TYPE##N;                  \
11
struct S##TYPE##N g11s##TYPE##N, g12s##TYPE##N;                 \
12
struct S##TYPE##N g13s##TYPE##N, g14s##TYPE##N;                 \
13
struct S##TYPE##N g15s##TYPE##N, g16s##TYPE##N;                 \
14
                                                                \
15
extern void init##TYPE (TYPE *p, int i);                        \
16
extern void checkg##TYPE##N (void);                             \
17
extern void                                                     \
18
test##TYPE##N (struct S##TYPE##N s1, struct S##TYPE##N s2,      \
19
               struct S##TYPE##N s3, struct S##TYPE##N s4,      \
20
               struct S##TYPE##N s5, struct S##TYPE##N s6,      \
21
               struct S##TYPE##N s7, struct S##TYPE##N s8,      \
22
               struct S##TYPE##N s9, struct S##TYPE##N s10,     \
23
               struct S##TYPE##N s11, struct S##TYPE##N s12,    \
24
               struct S##TYPE##N s13, struct S##TYPE##N s14,    \
25
               struct S##TYPE##N s15, struct S##TYPE##N s16);   \
26
extern void testva##TYPE##N (int n, ...);                       \
27
                                                                \
28
                                                                \
29
void                                                            \
30
init##TYPE##N (struct S##TYPE##N *p, int i)                     \
31
{                                                               \
32
  int j;                                                        \
33
  for (j = 0; j < N; j++)                                        \
34
    init##TYPE(&p->i[j], i+j);                                  \
35
}                                                               \
36
                                                                \
37
void                                                            \
38
check##TYPE##N (struct S##TYPE##N *p, int i)                    \
39
{                                                               \
40
  int j;                                                        \
41
  for (j = 0; j < N; j++)                                        \
42
    check##TYPE(p->i[j], i+j);                                  \
43
}                                                               \
44
                                                                \
45
void                                                            \
46
test2_##TYPE##N (struct S##TYPE##N s1, struct S##TYPE##N s2,    \
47
                 struct S##TYPE##N s3, struct S##TYPE##N s4,    \
48
                 struct S##TYPE##N s5, struct S##TYPE##N s6,    \
49
                 struct S##TYPE##N s7, struct S##TYPE##N s8)    \
50
{                                                               \
51
  test##TYPE##N (s1, g2s##TYPE##N, s2, g4s##TYPE##N,            \
52
                 s3, g6s##TYPE##N, s4, g8s##TYPE##N,            \
53
                 s5, g10s##TYPE##N, s6, g12s##TYPE##N,          \
54
                 s7, g14s##TYPE##N, s8, g16s##TYPE##N);         \
55
}                                                               \
56
                                                                \
57
void                                                            \
58
testit##TYPE##N (void)                                          \
59
{                                                               \
60
  DEBUG_FPUTS (#TYPE "[" #N "]");                               \
61
  DEBUG_FPUTS (" init: ");                                      \
62
  init##TYPE##N  ( &g1s##TYPE##N,  1*16);                       \
63
  init##TYPE##N  ( &g2s##TYPE##N,  2*16);                       \
64
  init##TYPE##N  ( &g3s##TYPE##N,  3*16);                       \
65
  init##TYPE##N  ( &g4s##TYPE##N,  4*16);                       \
66
  init##TYPE##N  ( &g5s##TYPE##N,  5*16);                       \
67
  init##TYPE##N  ( &g6s##TYPE##N,  6*16);                       \
68
  init##TYPE##N  ( &g7s##TYPE##N,  7*16);                       \
69
  init##TYPE##N  ( &g8s##TYPE##N,  8*16);                       \
70
  init##TYPE##N  ( &g9s##TYPE##N,  9*16);                       \
71
  init##TYPE##N  (&g10s##TYPE##N, 10*16);                       \
72
  init##TYPE##N  (&g11s##TYPE##N, 11*16);                       \
73
  init##TYPE##N  (&g12s##TYPE##N, 12*16);                       \
74
  init##TYPE##N  (&g13s##TYPE##N, 13*16);                       \
75
  init##TYPE##N  (&g14s##TYPE##N, 14*16);                       \
76
  init##TYPE##N  (&g15s##TYPE##N, 15*16);                       \
77
  init##TYPE##N  (&g16s##TYPE##N, 16*16);                       \
78
  checkg##TYPE##N ();                                           \
79
  DEBUG_NL;                                                     \
80
  DEBUG_FPUTS (#TYPE "[" #N "]");                               \
81
  DEBUG_FPUTS (" test: ");                                      \
82
  test##TYPE##N (g1s##TYPE##N, g2s##TYPE##N,                    \
83
                 g3s##TYPE##N, g4s##TYPE##N,                    \
84
                 g5s##TYPE##N, g6s##TYPE##N,                    \
85
                 g7s##TYPE##N, g8s##TYPE##N,                    \
86
                 g9s##TYPE##N, g10s##TYPE##N,                   \
87
                 g11s##TYPE##N, g12s##TYPE##N,                  \
88
                 g13s##TYPE##N, g14s##TYPE##N,                  \
89
                 g15s##TYPE##N, g16s##TYPE##N);                 \
90
  DEBUG_NL;                                                     \
91
  DEBUG_FPUTS (#TYPE "[" #N "]");                               \
92
  DEBUG_FPUTS (" testva:");                                     \
93
  DEBUG_NL;                                                     \
94
  testva##TYPE##N (16,                                          \
95
                   g1s##TYPE##N, g2s##TYPE##N,                  \
96
                   g3s##TYPE##N, g4s##TYPE##N,                  \
97
                   g5s##TYPE##N, g6s##TYPE##N,                  \
98
                   g7s##TYPE##N, g8s##TYPE##N,                  \
99
                   g9s##TYPE##N, g10s##TYPE##N,                 \
100
                   g11s##TYPE##N, g12s##TYPE##N,                \
101
                   g13s##TYPE##N, g14s##TYPE##N,                \
102
                   g15s##TYPE##N, g16s##TYPE##N);               \
103
  DEBUG_NL;                                                     \
104
  DEBUG_FPUTS (#TYPE "[" #N "]");                               \
105
  DEBUG_FPUTS (" test2: ");                                     \
106
  test2_##TYPE##N (g1s##TYPE##N, g3s##TYPE##N,                  \
107
                   g5s##TYPE##N, g7s##TYPE##N,                  \
108
                   g9s##TYPE##N, g11s##TYPE##N,                 \
109
                   g13s##TYPE##N, g15s##TYPE##N);               \
110
  DEBUG_NL;                                                     \
111
}
112
 
113
typedef struct { char c; } Sc;
114
typedef struct { short s; } Ss;
115
typedef struct { int i; } Si;
116
typedef struct { short s; char c; } Ssc;
117
typedef struct { int i; short s; } Sis;
118
typedef struct { char c; short s; int i; } Scsi;
119
typedef struct { char c; int i; short s; } Scis;
120
 
121
extern void abort (void);
122
 
123
void checkSc (Sc x, int i) { if (x.c != i/16) DEBUG_CHECK }
124
void checkSs (Ss x, int i) { if (x.s != i) DEBUG_CHECK }
125
void checkSi (Si x, int i) { if (x.i != i) DEBUG_CHECK }
126
void checkSsc (Ssc x, int i)
127
{ if (x.s != i || x.c != (i/16)+1) DEBUG_CHECK }
128
void checkSis (Sis x, int i)
129
{ if (x.i != i || x.s != i+1) DEBUG_CHECK }
130
void checkScsi (Scsi x, int i)
131
{ if (x.c != i/16 || x.s != i+1 || x.i != i+2) DEBUG_CHECK }
132
void checkScis (Scis x, int i)
133
{ if (x.c != i/16 || x.i != i+1 || x.s != i+2) DEBUG_CHECK }
134
 
135
#ifndef SKIP_ZERO_ARRAY
136
T(0, Scsi)
137
#endif
138
T(1, Scsi)
139
T(2, Scsi)
140
T(3, Scsi)
141
T(4, Scsi)
142
T(5, Scsi)
143
T(6, Scsi)
144
T(7, Scsi)
145
T(8, Scsi)
146
T(9, Scsi)
147
T(10, Scsi)
148
T(11, Scsi)
149
T(12, Scsi)
150
T(13, Scsi)
151
T(14, Scsi)
152
T(15, Scsi)
153
#ifndef SKIP_ZERO_ARRAY
154
T(0, Scis)
155
#endif
156
T(1, Scis)
157
T(2, Scis)
158
T(3, Scis)
159
T(4, Scis)
160
T(5, Scis)
161
T(6, Scis)
162
T(7, Scis)
163
T(8, Scis)
164
T(9, Scis)
165
T(10, Scis)
166
T(11, Scis)
167
T(12, Scis)
168
T(13, Scis)
169
T(14, Scis)
170
T(15, Scis)
171
 
172
#undef T
173
 
174
void
175
struct_by_value_9_x ()
176
{
177
DEBUG_INIT
178
 
179
#define T(N, TYPE) testit##TYPE##N ();
180
 
181
#ifndef SKIP_ZERO_ARRAY
182
T(0, Scsi)
183
#endif
184
T(1, Scsi)
185
T(2, Scsi)
186
T(3, Scsi)
187
T(4, Scsi)
188
T(5, Scsi)
189
T(6, Scsi)
190
T(7, Scsi)
191
T(8, Scsi)
192
T(9, Scsi)
193
T(10, Scsi)
194
T(11, Scsi)
195
T(12, Scsi)
196
T(13, Scsi)
197
T(14, Scsi)
198
T(15, Scsi)
199
#ifndef SKIP_ZERO_ARRAY
200
T(0, Scis)
201
#endif
202
T(1, Scis)
203
T(2, Scis)
204
T(3, Scis)
205
T(4, Scis)
206
T(5, Scis)
207
T(6, Scis)
208
T(7, Scis)
209
T(8, Scis)
210
T(9, Scis)
211
T(10, Scis)
212
T(11, Scis)
213
T(12, Scis)
214
T(13, Scis)
215
T(14, Scis)
216
T(15, Scis)
217
 
218
DEBUG_FINI
219
 
220
if (fails != 0)
221
  abort ();
222
 
223
#undef T
224
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.