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