1 // RUN: %clang_cc1 -fsyntax-only -fopenmp -verify %s
3 // expected-error@+1 {{unexpected OpenMP directive '#pragma omp simd'}}
6 // expected-error@+1 {{unexpected OpenMP directive '#pragma omp simd'}}
9 // expected-error@+1 {{unexpected OpenMP directive '#pragma omp simd'}}
10 #pragma omp simd safelen(4)
12 void test_no_clause() {
15 for (i = 0; i < 16; ++i)
18 // expected-error@+2 {{statement after '#pragma omp simd' must be a for loop}}
23 void test_branch_protected_scope() {
31 for (i = 0; i < 16; ++i) {
33 goto L1; // expected-error {{use of undeclared label 'L1'}}
35 return; // expected-error {{cannot return from OpenMP region}}
45 goto L2; // expected-error {{use of undeclared label 'L2'}}
50 void test_invalid_clause() {
52 // expected-warning@+1 {{extra tokens at the end of '#pragma omp simd' are ignored}}
53 #pragma omp simd foo bar
54 for (i = 0; i < 16; ++i)
58 void test_non_identifiers() {
61 // expected-warning@+1 {{extra tokens at the end of '#pragma omp simd' are ignored}}
63 for (i = 0; i < 16; ++i)
65 // expected-error@+2 {{unexpected OpenMP clause 'firstprivate' in directive '#pragma omp simd'}}
66 // expected-warning@+1 {{extra tokens at the end of '#pragma omp simd' are ignored}}
67 #pragma omp simd firstprivate(x);
68 for (i = 0; i < 16; ++i)
71 // expected-warning@+1 {{extra tokens at the end of '#pragma omp simd' are ignored}}
72 #pragma omp simd private(x);
73 for (i = 0; i < 16; ++i)
76 // expected-warning@+1 {{extra tokens at the end of '#pragma omp simd' are ignored}}
77 #pragma omp simd, private(x);
78 for (i = 0; i < 16; ++i)
85 // expected-error@+1 {{expected '('}}
86 #pragma omp simd safelen
87 for (i = 0; i < 16; ++i)
89 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
90 #pragma omp simd safelen(
91 for (i = 0; i < 16; ++i)
93 // expected-error@+1 {{expected expression}}
94 #pragma omp simd safelen()
95 for (i = 0; i < 16; ++i)
97 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
98 #pragma omp simd safelen(,
99 for (i = 0; i < 16; ++i)
101 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
102 #pragma omp simd safelen(, )
103 for (i = 0; i < 16; ++i)
105 // expected-warning@+2 {{extra tokens at the end of '#pragma omp simd' are ignored}}
106 // expected-error@+1 {{expected '('}}
107 #pragma omp simd safelen 4)
108 for (i = 0; i < 16; ++i)
110 // expected-error@+2 {{expected ')'}}
111 // expected-note@+1 {{to match this '('}}
112 #pragma omp simd safelen(4
113 for (i = 0; i < 16; ++i)
115 // expected-error@+2 {{expected ')'}}
116 // expected-note@+1 {{to match this '('}}
117 #pragma omp simd safelen(4,
118 for (i = 0; i < 16; ++i)
120 // expected-error@+2 {{expected ')'}}
121 // expected-note@+1 {{to match this '('}}
122 #pragma omp simd safelen(4, )
123 for (i = 0; i < 16; ++i)
125 // xxpected-error@+1 {{expected expression}}
126 #pragma omp simd safelen(4)
127 for (i = 0; i < 16; ++i)
129 // expected-error@+2 {{expected ')'}}
130 // expected-note@+1 {{to match this '('}}
131 #pragma omp simd safelen(4 4)
132 for (i = 0; i < 16; ++i)
134 // expected-error@+2 {{expected ')'}}
135 // expected-note@+1 {{to match this '('}}
136 #pragma omp simd safelen(4, , 4)
137 for (i = 0; i < 16; ++i)
139 #pragma omp simd safelen(4)
140 for (i = 0; i < 16; ++i)
142 // expected-error@+2 {{expected ')'}}
143 // expected-note@+1 {{to match this '('}}
144 #pragma omp simd safelen(4, 8)
145 for (i = 0; i < 16; ++i)
147 // expected-error@+1 {{expression is not an integer constant expression}}
148 #pragma omp simd safelen(2.5)
149 for (i = 0; i < 16; ++i)
151 // expected-error@+1 {{expression is not an integer constant expression}}
152 #pragma omp simd safelen(foo())
153 for (i = 0; i < 16; ++i)
155 // expected-error@+1 {{argument to 'safelen' clause must be a positive integer value}}
156 #pragma omp simd safelen(-5)
157 for (i = 0; i < 16; ++i)
159 // expected-error@+1 {{argument to 'safelen' clause must be a positive integer value}}
160 #pragma omp simd safelen(0)
161 for (i = 0; i < 16; ++i)
163 // expected-error@+1 {{argument to 'safelen' clause must be a positive integer value}}
164 #pragma omp simd safelen(5 - 5)
165 for (i = 0; i < 16; ++i)
169 void test_collapse() {
171 // expected-error@+1 {{expected '('}}
172 #pragma omp simd collapse
173 for (i = 0; i < 16; ++i)
175 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
176 #pragma omp simd collapse(
177 for (i = 0; i < 16; ++i)
179 // expected-error@+1 {{expected expression}}
180 #pragma omp simd collapse()
181 for (i = 0; i < 16; ++i)
183 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
184 #pragma omp simd collapse(,
185 for (i = 0; i < 16; ++i)
187 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
188 #pragma omp simd collapse(, )
189 for (i = 0; i < 16; ++i)
191 // expected-warning@+2 {{extra tokens at the end of '#pragma omp simd' are ignored}}
192 // expected-error@+1 {{expected '('}}
193 #pragma omp simd collapse 4)
194 for (i = 0; i < 16; ++i)
196 // expected-error@+2 {{expected ')'}}
197 // expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}
198 #pragma omp simd collapse(4
199 for (i = 0; i < 16; ++i)
200 ; // expected-error {{expected 4 for loops after '#pragma omp simd', but found only 1}}
201 // expected-error@+2 {{expected ')'}}
202 // expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}
203 #pragma omp simd collapse(4,
204 for (i = 0; i < 16; ++i)
205 ; // expected-error {{expected 4 for loops after '#pragma omp simd', but found only 1}}
206 // expected-error@+2 {{expected ')'}}
207 // expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}
208 #pragma omp simd collapse(4, )
209 for (i = 0; i < 16; ++i)
210 ; // expected-error {{expected 4 for loops after '#pragma omp simd', but found only 1}}
211 // xxpected-error@+1 {{expected expression}} expected-note@+1 {{as specified in 'collapse' clause}}
212 #pragma omp simd collapse(4)
213 for (i = 0; i < 16; ++i)
214 ; // expected-error {{expected 4 for loops after '#pragma omp simd', but found only 1}}
215 // expected-error@+2 {{expected ')'}}
216 // expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}
217 #pragma omp simd collapse(4 4)
218 for (i = 0; i < 16; ++i)
219 ; // expected-error {{expected 4 for loops after '#pragma omp simd', but found only 1}}
220 // expected-error@+2 {{expected ')'}}
221 // expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}
222 #pragma omp simd collapse(4, , 4)
223 for (i = 0; i < 16; ++i)
224 ; // expected-error {{expected 4 for loops after '#pragma omp simd', but found only 1}}
225 #pragma omp simd collapse(4)
226 for (int i1 = 0; i1 < 16; ++i1)
227 for (int i2 = 0; i2 < 16; ++i2)
228 for (int i3 = 0; i3 < 16; ++i3)
229 for (int i4 = 0; i4 < 16; ++i4)
231 // expected-error@+2 {{expected ')'}}
232 // expected-note@+1 {{to match this '('}} expected-note@+1 {{as specified in 'collapse' clause}}
233 #pragma omp simd collapse(4, 8)
234 for (i = 0; i < 16; ++i)
235 ; // expected-error {{expected 4 for loops after '#pragma omp simd', but found only 1}}
236 // expected-error@+1 {{expression is not an integer constant expression}}
237 #pragma omp simd collapse(2.5)
238 for (i = 0; i < 16; ++i)
240 // expected-error@+1 {{expression is not an integer constant expression}}
241 #pragma omp simd collapse(foo())
242 for (i = 0; i < 16; ++i)
244 // expected-error@+1 {{argument to 'collapse' clause must be a positive integer value}}
245 #pragma omp simd collapse(-5)
246 for (i = 0; i < 16; ++i)
248 // expected-error@+1 {{argument to 'collapse' clause must be a positive integer value}}
249 #pragma omp simd collapse(0)
250 for (i = 0; i < 16; ++i)
252 // expected-error@+1 {{argument to 'collapse' clause must be a positive integer value}}
253 #pragma omp simd collapse(5 - 5)
254 for (i = 0; i < 16; ++i)
256 // expected-note@+2 {{defined as reduction}}
258 #pragma omp simd collapse(2) reduction(+ : i)
259 for (i = 0; i < 16; ++i)
260 // expected-note@+1 {{variable with automatic storage duration is predetermined as private; perhaps you forget to enclose 'omp for' directive into a parallel or another task region?}}
261 for (int j = 0; j < 16; ++j)
262 // expected-error@+3 {{reduction variable must be shared}}
263 // expected-error@+2 {{private variable cannot be reduction}}
264 // expected-error@+1 {{OpenMP constructs may not be nested inside a simd region}}
265 #pragma omp for reduction(+ : i, j)
266 for (int k = 0; k < 16; ++k)
272 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
273 #pragma omp simd linear(
274 for (i = 0; i < 16; ++i)
276 // expected-error@+2 {{expected expression}}
277 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
278 #pragma omp simd linear(,
279 for (i = 0; i < 16; ++i)
281 // expected-error@+2 {{expected expression}}
282 // expected-error@+1 {{expected expression}}
283 #pragma omp simd linear(, )
284 for (i = 0; i < 16; ++i)
286 // expected-error@+1 {{expected expression}}
287 #pragma omp simd linear()
288 for (i = 0; i < 16; ++i)
290 // expected-error@+1 {{expected expression}}
291 #pragma omp simd linear(int)
292 for (i = 0; i < 16; ++i)
294 // expected-error@+1 {{expected variable name}}
295 #pragma omp simd linear(0)
296 for (i = 0; i < 16; ++i)
298 // expected-error@+1 {{use of undeclared identifier 'x'}}
299 #pragma omp simd linear(x)
300 for (i = 0; i < 16; ++i)
302 // expected-error@+2 {{use of undeclared identifier 'x'}}
303 // expected-error@+1 {{use of undeclared identifier 'y'}}
304 #pragma omp simd linear(x, y)
305 for (i = 0; i < 16; ++i)
307 // expected-error@+3 {{use of undeclared identifier 'x'}}
308 // expected-error@+2 {{use of undeclared identifier 'y'}}
309 // expected-error@+1 {{use of undeclared identifier 'z'}}
310 #pragma omp simd linear(x, y, z)
311 for (i = 0; i < 16; ++i)
315 // expected-error@+1 {{expected expression}}
316 #pragma omp simd linear(x :)
317 for (i = 0; i < 16; ++i)
319 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
320 #pragma omp simd linear(x :, )
321 for (i = 0; i < 16; ++i)
323 #pragma omp simd linear(x : 1)
324 for (i = 0; i < 16; ++i)
326 #pragma omp simd linear(x : 2 * 2)
327 for (i = 0; i < 16; ++i)
329 // expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
330 #pragma omp simd linear(x : 1, y)
331 for (i = 0; i < 16; ++i)
333 // expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
334 #pragma omp simd linear(x : 1, y, z : 1)
335 for (i = 0; i < 16; ++i)
338 // expected-note@+2 {{defined as linear}}
339 // expected-error@+1 {{linear variable cannot be linear}}
340 #pragma omp simd linear(x) linear(x)
341 for (i = 0; i < 16; ++i)
344 // expected-note@+2 {{defined as private}}
345 // expected-error@+1 {{private variable cannot be linear}}
346 #pragma omp simd private(x) linear(x)
347 for (i = 0; i < 16; ++i)
350 // expected-note@+2 {{defined as linear}}
351 // expected-error@+1 {{linear variable cannot be private}}
352 #pragma omp simd linear(x) private(x)
353 for (i = 0; i < 16; ++i)
356 // expected-warning@+1 {{zero linear step (x and other variables in clause should probably be const)}}
357 #pragma omp simd linear(x, y : 0)
358 for (i = 0; i < 16; ++i)
361 // expected-note@+2 {{defined as linear}}
362 // expected-error@+1 {{linear variable cannot be lastprivate}}
363 #pragma omp simd linear(x) lastprivate(x)
364 for (i = 0; i < 16; ++i)
367 // expected-note@+2 {{defined as lastprivate}}
368 // expected-error@+1 {{lastprivate variable cannot be linear}}
369 #pragma omp simd lastprivate(x) linear(x)
370 for (i = 0; i < 16; ++i)
374 void test_aligned() {
376 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
377 #pragma omp simd aligned(
378 for (i = 0; i < 16; ++i)
380 // expected-error@+2 {{expected expression}}
381 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
382 #pragma omp simd aligned(,
383 for (i = 0; i < 16; ++i)
385 // expected-error@+2 {{expected expression}}
386 // expected-error@+1 {{expected expression}}
387 #pragma omp simd aligned(, )
388 for (i = 0; i < 16; ++i)
390 // expected-error@+1 {{expected expression}}
391 #pragma omp simd aligned()
392 for (i = 0; i < 16; ++i)
394 // expected-error@+1 {{expected expression}}
395 #pragma omp simd aligned(int)
396 for (i = 0; i < 16; ++i)
398 // expected-error@+1 {{expected variable name}}
399 #pragma omp simd aligned(0)
400 for (i = 0; i < 16; ++i)
402 // expected-error@+1 {{use of undeclared identifier 'x'}}
403 #pragma omp simd aligned(x)
404 for (i = 0; i < 16; ++i)
406 // expected-error@+2 {{use of undeclared identifier 'x'}}
407 // expected-error@+1 {{use of undeclared identifier 'y'}}
408 #pragma omp simd aligned(x, y)
409 for (i = 0; i < 16; ++i)
411 // expected-error@+3 {{use of undeclared identifier 'x'}}
412 // expected-error@+2 {{use of undeclared identifier 'y'}}
413 // expected-error@+1 {{use of undeclared identifier 'z'}}
414 #pragma omp simd aligned(x, y, z)
415 for (i = 0; i < 16; ++i)
418 int *x, y, z[25]; // expected-note 4 {{'y' defined here}}
419 #pragma omp simd aligned(x)
420 for (i = 0; i < 16; ++i)
422 #pragma omp simd aligned(z)
423 for (i = 0; i < 16; ++i)
425 // expected-error@+1 {{expected expression}}
426 #pragma omp simd aligned(x :)
427 for (i = 0; i < 16; ++i)
429 // expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
430 #pragma omp simd aligned(x :, )
431 for (i = 0; i < 16; ++i)
433 #pragma omp simd aligned(x : 1)
434 for (i = 0; i < 16; ++i)
436 #pragma omp simd aligned(x : 2 * 2)
437 for (i = 0; i < 16; ++i)
439 // expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
440 #pragma omp simd aligned(x : 1, y)
441 for (i = 0; i < 16; ++i)
443 // expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
444 #pragma omp simd aligned(x : 1, y, z : 1)
445 for (i = 0; i < 16; ++i)
448 // expected-error@+1 {{argument of aligned clause should be array or pointer, not 'int'}}
449 #pragma omp simd aligned(x, y)
450 for (i = 0; i < 16; ++i)
452 // expected-error@+1 {{argument of aligned clause should be array or pointer, not 'int'}}
453 #pragma omp simd aligned(x, y, z)
454 for (i = 0; i < 16; ++i)
457 // expected-note@+2 {{defined as aligned}}
458 // expected-error@+1 {{a variable cannot appear in more than one aligned clause}}
459 #pragma omp simd aligned(x) aligned(z, x)
460 for (i = 0; i < 16; ++i)
463 // expected-note@+3 {{defined as aligned}}
464 // expected-error@+2 {{a variable cannot appear in more than one aligned clause}}
465 // expected-error@+1 2 {{argument of aligned clause should be array or pointer, not 'int'}}
466 #pragma omp simd aligned(x, y, z) aligned(y, z)
467 for (i = 0; i < 16; ++i)
471 void test_private() {
473 // expected-error@+2 {{expected expression}}
474 // expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}}
475 #pragma omp simd private(
476 for (i = 0; i < 16; ++i)
478 // expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}
479 // expected-error@+1 2 {{expected expression}}
480 #pragma omp simd private(,
481 for (i = 0; i < 16; ++i)
483 // expected-error@+1 2 {{expected expression}}
484 #pragma omp simd private(, )
485 for (i = 0; i < 16; ++i)
487 // expected-error@+1 {{expected expression}}
488 #pragma omp simd private()
489 for (i = 0; i < 16; ++i)
491 // expected-error@+1 {{expected expression}}
492 #pragma omp simd private(int)
493 for (i = 0; i < 16; ++i)
495 // expected-error@+1 {{expected variable name}}
496 #pragma omp simd private(0)
497 for (i = 0; i < 16; ++i)
501 #pragma omp simd private(x)
502 for (i = 0; i < 16; ++i)
504 #pragma omp simd private(x, y)
505 for (i = 0; i < 16; ++i)
507 #pragma omp simd private(x, y, z)
508 for (i = 0; i < 16; ++i) {
513 void test_firstprivate() {
515 // expected-error@+3 {{expected ')'}} expected-note@+3 {{to match this '('}}
516 // expected-error@+2 {{unexpected OpenMP clause 'firstprivate' in directive '#pragma omp simd'}}
517 // expected-error@+1 {{expected expression}}
518 #pragma omp simd firstprivate(
519 for (i = 0; i < 16; ++i)
523 void test_lastprivate() {
525 // expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}
526 // expected-error@+1 {{expected expression}}
527 #pragma omp simd lastprivate(
528 for (i = 0; i < 16; ++i)
531 // expected-error@+2 {{expected ')'}} expected-note@+2 {{to match this '('}}
532 // expected-error@+1 2 {{expected expression}}
533 #pragma omp simd lastprivate(,
534 for (i = 0; i < 16; ++i)
536 // expected-error@+1 2 {{expected expression}}
537 #pragma omp simd lastprivate(, )
538 for (i = 0; i < 16; ++i)
540 // expected-error@+1 {{expected expression}}
541 #pragma omp simd lastprivate()
542 for (i = 0; i < 16; ++i)
544 // expected-error@+1 {{expected expression}}
545 #pragma omp simd lastprivate(int)
546 for (i = 0; i < 16; ++i)
548 // expected-error@+1 {{expected variable name}}
549 #pragma omp simd lastprivate(0)
550 for (i = 0; i < 16; ++i)
554 #pragma omp simd lastprivate(x)
555 for (i = 0; i < 16; ++i)
557 #pragma omp simd lastprivate(x, y)
558 for (i = 0; i < 16; ++i)
560 #pragma omp simd lastprivate(x, y, z)
561 for (i = 0; i < 16; ++i)
565 void test_reduction() {
567 // expected-error@+3 {{expected ')'}} expected-note@+3 {{to match this '('}}
568 // expected-error@+2 {{expected identifier}}
569 // expected-warning@+1 {{missing ':' after reduction identifier - ignoring}}
570 #pragma omp simd reduction(
571 for (i = 0; i < 16; ++i)
573 // expected-error@+2 {{expected identifier}}
574 // expected-warning@+1 {{missing ':' after reduction identifier - ignoring}}
575 #pragma omp simd reduction()
576 for (i = 0; i < 16; ++i)
578 // expected-error@+2 {{expected expression}}
579 // expected-warning@+1 {{missing ':' after reduction identifier - ignoring}}
580 #pragma omp simd reduction(x)
581 for (i = 0; i < 16; ++i)
583 // expected-error@+1 {{expected identifier}}
584 #pragma omp simd reduction( : x)
585 for (i = 0; i < 16; ++i)
587 // expected-error@+3 {{expected ')'}} expected-note@+3 {{to match this '('}}
588 // expected-error@+2 {{expected identifier}}
589 // expected-warning@+1 {{missing ':' after reduction identifier - ignoring}}
590 #pragma omp simd reduction(,
591 for (i = 0; i < 16; ++i)
593 // expected-error@+3 {{expected ')'}} expected-note@+3 {{to match this '('}}
594 // expected-error@+2 {{expected expression}}
595 // expected-warning@+1 {{missing ':' after reduction identifier - ignoring}}
596 #pragma omp simd reduction(+
597 for (i = 0; i < 16; ++i)
600 // expected-error@+3 {{expected ')'}} expected-note@+3 {{to match this '('}}
602 // expected-error@+1 {{expected expression}}
603 #pragma omp simd reduction(+:
604 for (i = 0; i < 16; ++i)
606 // expected-error@+1 {{expected expression}}
607 #pragma omp simd reduction(+ :)
608 for (i = 0; i < 16; ++i)
610 // expected-error@+1 {{expected expression}}
611 #pragma omp simd reduction(+ :, y)
612 for (i = 0; i < 16; ++i)
614 // expected-error@+1 {{expected expression}}
615 #pragma omp simd reduction(+ : x, + : y)
616 for (i = 0; i < 16; ++i)
618 // expected-error@+1 {{expected identifier}}
619 #pragma omp simd reduction(% : x)
620 for (i = 0; i < 16; ++i)
623 #pragma omp simd reduction(+ : x)
624 for (i = 0; i < 16; ++i)
626 #pragma omp simd reduction(* : x)
627 for (i = 0; i < 16; ++i)
629 #pragma omp simd reduction(- : x)
630 for (i = 0; i < 16; ++i)
632 #pragma omp simd reduction(& : x)
633 for (i = 0; i < 16; ++i)
635 #pragma omp simd reduction(| : x)
636 for (i = 0; i < 16; ++i)
638 #pragma omp simd reduction(^ : x)
639 for (i = 0; i < 16; ++i)
641 #pragma omp simd reduction(&& : x)
642 for (i = 0; i < 16; ++i)
644 #pragma omp simd reduction(|| : x)
645 for (i = 0; i < 16; ++i)
647 #pragma omp simd reduction(max : x)
648 for (i = 0; i < 16; ++i)
650 #pragma omp simd reduction(min : x)
651 for (i = 0; i < 16; ++i)
657 // expected-error@+1 {{expected variable name}}
658 #pragma omp simd reduction(+ : X.x)
659 for (i = 0; i < 16; ++i)
661 // expected-error@+1 {{expected variable name}}
662 #pragma omp simd reduction(+ : x + x)
663 for (i = 0; i < 16; ++i)
667 void test_loop_messages() {
668 float a[100], b[100], c[100];
669 // expected-error@+2 {{variable must be of integer or pointer type}}
671 for (float fi = 0; fi < 10.0; fi++) {
672 c[(int)fi] = a[(int)fi] + b[(int)fi];
674 // expected-error@+2 {{variable must be of integer or pointer type}}
676 for (double fi = 0; fi < 10.0; fi++) {
677 c[(int)fi] = a[(int)fi] + b[(int)fi];