Merge from mainline
[official-gcc.git] / gcc / testsuite / gcc.dg / gomp / for-11.c
blob8c747cdb981d616aa6fb70e5b48a81edb0abb3b1
1 /* { dg-do compile } */
2 /* { dg-options "-std=c99 -fopenmp" } */
4 extern void baz (int);
6 void foo (int j, int k)
8 int i;
10 /* Valid loops. */
11 #pragma omp for
12 for (i = 0; i < 10; i++)
13 baz (i);
15 #pragma omp for
16 for (i = j; i <= 10; i+=4)
17 baz (i);
19 #pragma omp for
20 for (i = j; i > 0; i = i - 1)
21 baz (j);
23 #pragma omp for
24 for (i = j; i >= k; i--)
25 baz (i);
27 #pragma omp for
28 for (int l = j; l < 10; l++)
29 baz (l);
31 /* Malformed parallel loops. */
32 #pragma omp for
33 i = 0; /* { dg-error "for statement expected" } */
34 for ( ; i < 10; )
36 baz (i);
37 i++;
40 #pragma omp for
41 for (i = 0; ; i--) /* { dg-error "missing controlling predicate" } */
43 if (i >= 10)
44 break; /* { dg-error "break" } */
45 baz (i);
48 #pragma omp for
49 for (i = 0;
50 i < 10 && j > 4; /* { dg-error "invalid controlling predicate" } */
51 i-=3)
52 baz (i);
54 #pragma omp for
55 for (i = 0;
56 i < 10;
57 i-=3, j+=2) /* { dg-error "invalid increment expression" } */
58 baz (i);
60 int m = 0;
61 #pragma omp for
62 for (; m < 10; m++) /* { dg-error "expected" } */
63 baz (m);
65 m = 0;
66 #pragma omp for
67 for (int n = 0; m < 10; m++) /* { dg-error "invalid controlling predicate|invalid increment expression" } */
68 baz (m);
70 #pragma omp for
71 for (m = 0; m < 10; i++) /* { dg-error "invalid increment expression" } */
72 baz (m);