1 int bar (int);
2 int baz (int *);
3
4 void
f1(int x)5 f1 (int x)
6 {
7 int i = 0, j = 0;
8 #pragma omp for
9 for (i = 0; i < 16; i++)
10 ;
11 #pragma omp for
12 for (i = 0; 16 > i; i++)
13 ;
14 #pragma omp for
15 for (i = 0; i < 16; i = i + 2)
16 ;
17 #pragma omp for
18 for (i = 0; i < 16; i = 2 + i)
19 ;
20 #pragma omp for /* { dg-error "initializer expression refers to iteration variable" } */
21 for (i = i; i < 16; i++)
22 ;
23 #pragma omp for
24 for (i = 2 * (i & x); i < 16; i++) /* { dg-error "initializer expression refers to iteration variable" } */
25 ;
26 #pragma omp for
27 for (i = bar (i); i < 16; i++) /* { dg-error "initializer expression refers to iteration variable" } */
28 ;
29 #pragma omp for
30 for (i = baz (&i); i < 16; i++) /* { dg-error "initializer expression refers to iteration variable" } */
31 ;
32 #pragma omp for
33 for (i = 5; i < 2 * i + 17; i++) /* { dg-error "condition expression refers to iteration variable" } */
34 ;
35 #pragma omp for
36 for (i = 5; 2 * i + 17 > i; i++) /* { dg-error "condition expression refers to iteration variable" } */
37 ;
38 #pragma omp for
39 for (i = 5; bar (i) > i; i++) /* { dg-error "condition expression refers to iteration variable" } */
40 ;
41 #pragma omp for
42 for (i = 5; i <= baz (&i); i++) /* { dg-error "condition expression refers to iteration variable" } */
43 ;
44 #pragma omp for
45 for (i = 5; i <= i; i++) /* { dg-error "invalid controlling predicate|condition expression refers to iteration variable" } */
46 ;
47 #pragma omp for /* { dg-error "increment expression refers to iteration variable" "" { xfail *-*-* } } */
48 for (i = 5; i < 16; i += i) /* { dg-bogus "invalid increment expression" "" { xfail *-*-* } } */
49 ;
50 #pragma omp for
51 for (i = 5; i < 16; i = i + 2 * i) /* { dg-error "invalid increment expression|increment expression refers to iteration variable" } */
52 ;
53 #pragma omp for /* { dg-error "increment expression refers to iteration variable" "" { xfail *-*-* } } */
54 for (i = 5; i < 16; i = i + i) /* { dg-bogus "invalid increment expression" "" { xfail *-*-* } } */
55 ;
56 #pragma omp for
57 for (i = 5; i < 16; i = i + bar (i)) /* { dg-error "increment expression refers to iteration variable" } */
58 ;
59 #pragma omp for
60 for (i = 5; i < 16; i = baz (&i) + i) /* { dg-error "increment expression refers to iteration variable" } */
61 ;
62 #pragma omp for
63 for (i = 5; i < 16; i += bar (i)) /* { dg-error "increment expression refers to iteration variable" } */
64 ;
65 #pragma omp for
66 for (i = 5; i < 16; i += baz (&i)) /* { dg-error "increment expression refers to iteration variable" } */
67 ;
68 #pragma omp for collapse(2)
69 for (i = 0; i < 16; i = i + 2)
70 for (j = 0; j < 16; j += 2)
71 ;
72 #pragma omp for collapse(2) /* { dg-error "initializer expression refers to iteration variable" } */
73 for (i = j; i < 16; i = i + 2)
74 for (j = 0; j < 16; j++)
75 ;
76 #pragma omp for collapse(2) /* { dg-error "initializer expression refers to iteration variable" } */
77 for (i = 0; i < 16; i = i + 2)
78 for (j = i; j < 16; j += 2)
79 ;
80 #pragma omp for collapse(2)
81 for (i = 0; i < 16; i = i + 2)
82 for (j = i + 3; j < 16; j += 2) /* { dg-error "initializer expression refers to iteration variable" } */
83 ;
84 #pragma omp for collapse(2)
85 for (i = 0; i < 16; i++)
86 for (j = baz (&i); j < 16; j += 2) /* { dg-error "initializer expression refers to iteration variable" } */
87 ;
88 #pragma omp for collapse(2)
89 for (i = 0; i < 16; i++)
90 for (j = 16; j > (i & x); j--) /* { dg-error "condition expression refers to iteration variable" } */
91 ;
92 #pragma omp for collapse(2)
93 for (i = 0; i < 16; i++)
94 for (j = 0; j < i; j++) /* { dg-error "condition expression refers to iteration variable" } */
95 ;
96 #pragma omp for collapse(2)
97 for (i = 0; i < 16; i++)
98 for (j = 0; j < i + 4; j++) /* { dg-error "condition expression refers to iteration variable" } */
99 ;
100 #pragma omp for collapse(2)
101 for (i = 0; i < j + 4; i++) /* { dg-error "condition expression refers to iteration variable" } */
102 for (j = 0; j < 16; j++)
103 ;
104 #pragma omp for collapse(2)
105 for (i = 0; i < j; i++) /* { dg-error "condition expression refers to iteration variable" } */
106 for (j = 0; j < 16; j++)
107 ;
108 #pragma omp for collapse(2)
109 for (i = 0; i < bar (j); i++) /* { dg-error "condition expression refers to iteration variable" } */
110 for (j = 0; j < 16; j++)
111 ;
112 #pragma omp for collapse(2)
113 for (i = 0; i < 16; i++)
114 for (j = 0; j < baz (&i); j++) /* { dg-error "condition expression refers to iteration variable" } */
115 ;
116 #pragma omp for collapse(2) /* { dg-error "increment expression refers to iteration variable" } */
117 for (i = 0; i < 16; i += j)
118 for (j = 0; j < 16; j++)
119 ;
120 #pragma omp for collapse(2) /* { dg-error "increment expression refers to iteration variable" } */
121 for (i = 0; i < 16; i++)
122 for (j = 0; j < 16; j += i)
123 ;
124 #pragma omp for collapse(2) /* { dg-error "increment expression refers to iteration variable" } */
125 for (i = 0; i < 16; i = j + i)
126 for (j = 0; j < 16; j++)
127 ;
128 #pragma omp for collapse(2) /* { dg-error "increment expression refers to iteration variable" } */
129 for (i = 0; i < 16; i++)
130 for (j = 0; j < 16; j = j + i)
131 ;
132 #pragma omp for collapse(2)
133 for (i = 0; i < 16; i = bar (j) + i) /* { dg-error "increment expression refers to iteration variable" } */
134 for (j = 0; j < 16; j++)
135 ;
136 #pragma omp for collapse(2)
137 for (i = 0; i < 16; i++)
138 for (j = 0; j < 16; j = j + baz (&i)) /* { dg-error "increment expression refers to iteration variable" } */
139 ;
140 }
141
142 void
f2(int x)143 f2 (int x)
144 {
145 #pragma omp for
146 for (int i = 0; i < 16; i++)
147 ;
148 #pragma omp for
149 for (int i = 0; 16 > i; i++)
150 ;
151 #pragma omp for
152 for (int i = 0; i < 16; i = i + 2)
153 ;
154 #pragma omp for
155 for (int i = 0; i < 16; i = 2 + i)
156 ;
157 #pragma omp for /* { dg-error "initializer expression refers to iteration variable" } */
158 for (int i = i; i < 16; i++)
159 ;
160 #pragma omp for
161 for (int i = 2 * (i & x); i < 16; i++) /* { dg-error "initializer expression refers to iteration variable" } */
162 ;
163 #pragma omp for
164 for (int i = bar (i); i < 16; i++) /* { dg-error "initializer expression refers to iteration variable" } */
165 ;
166 #pragma omp for
167 for (int i = baz (&i); i < 16; i++) /* { dg-error "initializer expression refers to iteration variable" } */
168 ;
169 #pragma omp for
170 for (int i = 5; i < 2 * i + 17; i++) /* { dg-error "condition expression refers to iteration variable" } */
171 ;
172 #pragma omp for
173 for (int i = 5; 2 * i + 17 > i; i++) /* { dg-error "condition expression refers to iteration variable" } */
174 ;
175 #pragma omp for
176 for (int i = 5; bar (i) > i; i++) /* { dg-error "condition expression refers to iteration variable" } */
177 ;
178 #pragma omp for
179 for (int i = 5; i <= baz (&i); i++) /* { dg-error "condition expression refers to iteration variable" } */
180 ;
181 #pragma omp for
182 for (int i = 5; i <= i; i++) /* { dg-error "invalid controlling predicate|condition expression refers to iteration variable" } */
183 ;
184 #pragma omp for /* { dg-error "increment expression refers to iteration variable" "" { xfail *-*-* } } */
185 for (int i = 5; i < 16; i += i) /* { dg-bogus "invalid increment expression" "" { xfail *-*-* } } */
186 ;
187 #pragma omp for
188 for (int i = 5; i < 16; i = i + 2 * i) /* { dg-error "invalid increment expression|increment expression refers to iteration variable" } */
189 ;
190 #pragma omp for /* { dg-error "increment expression refers to iteration variable" "" { xfail *-*-* } } */
191 for (int i = 5; i < 16; i = i + i) /* { dg-bogus "invalid increment expression" "" { xfail *-*-* } } */
192 ;
193 #pragma omp for
194 for (int i = 5; i < 16; i = i + bar (i)) /* { dg-error "increment expression refers to iteration variable" } */
195 ;
196 #pragma omp for
197 for (int i = 5; i < 16; i = baz (&i) + i) /* { dg-error "increment expression refers to iteration variable" } */
198 ;
199 #pragma omp for
200 for (int i = 5; i < 16; i += bar (i)) /* { dg-error "increment expression refers to iteration variable" } */
201 ;
202 #pragma omp for
203 for (int i = 5; i < 16; i += baz (&i)) /* { dg-error "increment expression refers to iteration variable" } */
204 ;
205 #pragma omp for collapse(2)
206 for (int i = 0; i < 16; i = i + 2)
207 for (int j = 0; j < 16; j += 2)
208 ;
209 #pragma omp for collapse(2) /* { dg-error "initializer expression refers to iteration variable" } */
210 for (int i = 0; i < 16; i = i + 2)
211 for (int j = i; j < 16; j += 2)
212 ;
213 #pragma omp for collapse(2)
214 for (int i = 0; i < 16; i = i + 2)
215 for (int j = i + 3; j < 16; j += 2) /* { dg-error "initializer expression refers to iteration variable" } */
216 ;
217 #pragma omp for collapse(2)
218 for (int i = 0; i < 16; i++)
219 for (int j = baz (&i); j < 16; j += 2) /* { dg-error "initializer expression refers to iteration variable" } */
220 ;
221 #pragma omp for collapse(2)
222 for (int i = 0; i < 16; i++)
223 for (int j = 16; j > (i & x); j--) /* { dg-error "condition expression refers to iteration variable" } */
224 ;
225 #pragma omp for collapse(2)
226 for (int i = 0; i < 16; i++)
227 for (int j = 0; j < i; j++) /* { dg-error "condition expression refers to iteration variable" } */
228 ;
229 #pragma omp for collapse(2)
230 for (int i = 0; i < 16; i++)
231 for (int j = 0; j < i + 4; j++) /* { dg-error "condition expression refers to iteration variable" } */
232 ;
233 #pragma omp for collapse(2)
234 for (int i = 0; i < 16; i++)
235 for (int j = 0; j < baz (&i); j++) /* { dg-error "condition expression refers to iteration variable" } */
236 ;
237 #pragma omp for collapse(2) /* { dg-error "increment expression refers to iteration variable" } */
238 for (int i = 0; i < 16; i++)
239 for (int j = 0; j < 16; j += i)
240 ;
241 #pragma omp for collapse(2) /* { dg-error "increment expression refers to iteration variable" } */
242 for (int i = 0; i < 16; i++)
243 for (int j = 0; j < 16; j = j + i)
244 ;
245 #pragma omp for collapse(2)
246 for (int i = 0; i < 16; i++)
247 for (int j = 0; j < 16; j = j + baz (&i)) /* { dg-error "increment expression refers to iteration variable" } */
248 ;
249 }
250
251 void
f3(void)252 f3 (void)
253 {
254 int j = 0;
255 #pragma omp for collapse(2)
256 for (int i = j; i < 16; i = i + 2)
257 for (int j = 0; j < 16; j++)
258 ;
259 #pragma omp for collapse(2)
260 for (int i = 0; i < j + 4; i++)
261 for (int j = 0; j < 16; j++)
262 ;
263 #pragma omp for collapse(2)
264 for (int i = 0; i < j; i++)
265 for (int j = 0; j < 16; j++)
266 ;
267 #pragma omp for collapse(2)
268 for (int i = 0; i < bar (j); i++)
269 for (int j = 0; j < 16; j++)
270 ;
271 #pragma omp for collapse(2)
272 for (int i = 0; i < 16; i += j)
273 for (int j = 0; j < 16; j++)
274 ;
275 #pragma omp for collapse(2)
276 for (int i = 0; i < 16; i = j + i)
277 for (int j = 0; j < 16; j++)
278 ;
279 #pragma omp for collapse(2)
280 for (int i = 0; i < 16; i = bar (j) + i)
281 for (int j = 0; j < 16; j++)
282 ;
283 }
284