OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.dg/] [qual-component-1.c] - Blame information for rev 689

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 689 jeremybenn
/* Test qualification of components of qualified structures or unions:
2
   should have qualifiers from both the component and the structure or
3
   union.  Bug 27697 from Frank Victor Fischer.  */
4
/* Origin: Joseph Myers <joseph@codesourcery.com> */
5
/* { dg-do compile } */
6
/* { dg-options "" } */
7
 
8
struct s {
9
  int a;
10
  int b[1];
11
  int c[2][3];
12
  const int d;
13
  const int e[1];
14
  const int f[2][3];
15
};
16
 
17
union u {
18
  int a;
19
  int b[1];
20
  int c[2][3];
21
  const int d;
22
  const int e[1];
23
  const int f[2][3];
24
};
25
 
26
struct cs {
27
  const struct s x;
28
};
29
 
30
struct s v1;
31
union u *v2;
32
const struct s *v3;
33
const union u v4;
34
struct cs v5;
35
 
36
void
37
f (void)
38
{
39
  v1.a = 0;
40
  v1.b[0] = 0;
41
  *v1.b = 0;
42
  v1.c[0][0] = 0;
43
  *v1.c[0] = 0;
44
  **v1.c = 0;
45
  v1.d = 0; /* { dg-error "assignment of read-only" } */
46
  v1.e[0] = 0; /* { dg-error "assignment of read-only" } */
47
  *v1.e = 0; /* { dg-error "assignment of read-only" } */
48
  v1.f[0][0] = 0; /* { dg-error "assignment of read-only" } */
49
  *v1.f[0] = 0; /* { dg-error "assignment of read-only" } */
50
  **v1.f = 0; /* { dg-error "assignment of read-only" } */
51
 
52
  v2->a = 0;
53
  v2->b[0] = 0;
54
  *v2->b = 0;
55
  v2->c[0][0] = 0;
56
  *v2->c[0] = 0;
57
  **v2->c = 0;
58
  v2->d = 0; /* { dg-error "assignment of read-only" } */
59
  v2->e[0] = 0; /* { dg-error "assignment of read-only" } */
60
  *v2->e = 0; /* { dg-error "assignment of read-only" } */
61
  v2->f[0][0] = 0; /* { dg-error "assignment of read-only" } */
62
  *v2->f[0] = 0; /* { dg-error "assignment of read-only" } */
63
  **v2->f = 0; /* { dg-error "assignment of read-only" } */
64
 
65
  v3->a = 0; /* { dg-error "assignment of member" } */
66
  v3->b[0] = 0; /* { dg-error "assignment of read-only" } */
67
  *v3->b = 0; /* { dg-error "assignment of read-only" } */
68
  v3->c[0][0] = 0; /* { dg-error "assignment of read-only" } */
69
  *v3->c[0] = 0; /* { dg-error "assignment of read-only" } */
70
  **v3->c = 0; /* { dg-error "assignment of read-only" } */
71
  v3->d = 0; /* { dg-error "assignment of member" } */
72
  v3->e[0] = 0; /* { dg-error "assignment of read-only" } */
73
  *v3->e = 0; /* { dg-error "assignment of read-only" } */
74
  v3->f[0][0] = 0; /* { dg-error "assignment of read-only" } */
75
  *v3->f[0] = 0; /* { dg-error "assignment of read-only" } */
76
  **v3->f = 0; /* { dg-error "assignment of read-only" } */
77
 
78
  v4.a = 0; /* { dg-error "assignment of member" } */
79
  v4.b[0] = 0; /* { dg-error "assignment of read-only" } */
80
  *v4.b = 0; /* { dg-error "assignment of read-only" } */
81
  v4.c[0][0] = 0; /* { dg-error "assignment of read-only" } */
82
  *v4.c[0] = 0; /* { dg-error "assignment of read-only" } */
83
  **v4.c = 0; /* { dg-error "assignment of read-only" } */
84
  v4.d = 0; /* { dg-error "assignment of member" } */
85
  v4.e[0] = 0; /* { dg-error "assignment of read-only" } */
86
  *v4.e = 0; /* { dg-error "assignment of read-only" } */
87
  v4.f[0][0] = 0; /* { dg-error "assignment of read-only" } */
88
  *v4.f[0] = 0; /* { dg-error "assignment of read-only" } */
89
  **v4.f = 0; /* { dg-error "assignment of read-only" } */
90
 
91
  v5.x.a = 0; /* { dg-error "assignment of member" } */
92
  v5.x.b[0] = 0; /* { dg-error "assignment of read-only" } */
93
  *v5.x.b = 0; /* { dg-error "assignment of read-only" } */
94
  v5.x.c[0][0] = 0; /* { dg-error "assignment of read-only" } */
95
  *v5.x.c[0] = 0; /* { dg-error "assignment of read-only" } */
96
  **v5.x.c = 0; /* { dg-error "assignment of read-only" } */
97
  v5.x.d = 0; /* { dg-error "assignment of member" } */
98
  v5.x.e[0] = 0; /* { dg-error "assignment of read-only" } */
99
  *v5.x.e = 0; /* { dg-error "assignment of read-only" } */
100
  v5.x.f[0][0] = 0; /* { dg-error "assignment of read-only" } */
101
  *v5.x.f[0] = 0; /* { dg-error "assignment of read-only" } */
102
  **v5.x.f = 0; /* { dg-error "assignment of read-only" } */
103
}
104
 
105
void
106
g (void)
107
{
108
  {
109
    int *a = &v1.a;
110
    int (*b)[1] = &v1.b;
111
    int (*c)[2][3] = &v1.c;
112
    int (*cc)[3] = v1.c;
113
    const int (*ff)[3] = v1.c; /* { dg-warning "initialization from incompatible pointer type" } */
114
    a = &v1.a;
115
    b = &v1.b;
116
    c = &v1.c;
117
    cc = v1.c;
118
    ff = v1.c; /* { dg-warning "assignment from incompatible pointer type" } */
119
  }
120
  {
121
    const int *d = &v1.d;
122
    const int (*e)[1] = &v1.e;
123
    const int (*f)[2][3] = &v1.f;
124
    const int (*ff)[3] = v1.f;
125
    int (*cc)[3] = v1.f; /* { dg-warning "initialization from incompatible pointer type" } */
126
    d = &v1.d;
127
    e = &v1.e;
128
    f = &v1.f;
129
    ff = v1.f;
130
    cc = v1.f; /* { dg-warning "assignment from incompatible pointer type" } */
131
  }
132
 
133
  {
134
    int *a = &v2->a;
135
    int (*b)[1] = &v2->b;
136
    int (*c)[2][3] = &v2->c;
137
    int (*cc)[3] = v2->c;
138
    const int (*ff)[3] = v2->c; /* { dg-warning "initialization from incompatible pointer type" } */
139
    a = &v2->a;
140
    b = &v2->b;
141
    c = &v2->c;
142
    cc = v2->c;
143
    ff = v2->c; /* { dg-warning "assignment from incompatible pointer type" } */
144
  }
145
  {
146
    const int *d = &v2->d;
147
    const int (*e)[1] = &v2->e;
148
    const int (*f)[2][3] = &v2->f;
149
    const int (*ff)[3] = v2->f;
150
    int (*cc)[3] = v2->f; /* { dg-warning "initialization from incompatible pointer type" } */
151
    d = &v2->d;
152
    e = &v2->e;
153
    f = &v2->f;
154
    ff = v2->f;
155
    cc = v2->f; /* { dg-warning "assignment from incompatible pointer type" } */
156
  }
157
 
158
  {
159
    const int *d = &v3->a;
160
    const int (*e)[1] = &v3->b;
161
    const int (*f)[2][3] = &v3->c;
162
    const int (*ff)[3] = v3->c;
163
    int (*cc)[3] = v3->c; /* { dg-warning "initialization from incompatible pointer type" } */
164
    d = &v3->a;
165
    e = &v3->b;
166
    f = &v3->c;
167
    ff = v3->c;
168
    cc = v3->c; /* { dg-warning "assignment from incompatible pointer type" } */
169
  }
170
  {
171
    const int *d = &v3->d;
172
    const int (*e)[1] = &v3->e;
173
    const int (*f)[2][3] = &v3->f;
174
    const int (*ff)[3] = v3->f;
175
    int (*cc)[3] = v3->f; /* { dg-warning "initialization from incompatible pointer type" } */
176
    d = &v3->d;
177
    e = &v3->e;
178
    f = &v3->f;
179
    ff = v3->f;
180
    cc = v3->f; /* { dg-warning "assignment from incompatible pointer type" } */
181
  }
182
 
183
  {
184
    const int *d = &v4.a;
185
    const int (*e)[1] = &v4.b;
186
    const int (*f)[2][3] = &v4.c;
187
    const int (*ff)[3] = v4.c;
188
    int (*cc)[3] = v4.c; /* { dg-warning "initialization from incompatible pointer type" } */
189
    d = &v4.a;
190
    e = &v4.b;
191
    f = &v4.c;
192
    ff = v4.c;
193
    cc = v4.c; /* { dg-warning "assignment from incompatible pointer type" } */
194
  }
195
  {
196
    const int *d = &v4.d;
197
    const int (*e)[1] = &v4.e;
198
    const int (*f)[2][3] = &v4.f;
199
    const int (*ff)[3] = v4.f;
200
    int (*cc)[3] = v4.f; /* { dg-warning "initialization from incompatible pointer type" } */
201
    d = &v4.d;
202
    e = &v4.e;
203
    f = &v4.f;
204
    ff = v4.f;
205
    cc = v4.f; /* { dg-warning "assignment from incompatible pointer type" } */
206
  }
207
 
208
  {
209
    const int *d = &v5.x.a;
210
    const int (*e)[1] = &v5.x.b;
211
    const int (*f)[2][3] = &v5.x.c;
212
    const int (*ff)[3] = v5.x.c;
213
    int (*cc)[3] = v5.x.c; /* { dg-warning "initialization from incompatible pointer type" } */
214
    d = &v5.x.a;
215
    e = &v5.x.b;
216
    f = &v5.x.c;
217
    ff = v5.x.c;
218
    cc = v5.x.c; /* { dg-warning "assignment from incompatible pointer type" } */
219
  }
220
  {
221
    const int *d = &v5.x.d;
222
    const int (*e)[1] = &v5.x.e;
223
    const int (*f)[2][3] = &v5.x.f;
224
    const int (*ff)[3] = v5.x.f;
225
    int (*cc)[3] = v5.x.f; /* { dg-warning "initialization from incompatible pointer type" } */
226
    d = &v5.x.d;
227
    e = &v5.x.e;
228
    f = &v5.x.f;
229
    ff = v5.x.f;
230
    cc = v5.x.f; /* { dg-warning "assignment from incompatible pointer type" } */
231
  }
232
}

powered by: WebSVN 2.1.0

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