c++: prvalue of array type [PR111286]
[official-gcc.git] / gcc / testsuite / c-c++-common / gomp / imperfect-invalid-scope.c
blob5c24aae07ccaa72ed9ed691b7bd7df827152d923
1 /* { dg-do compile } */
3 /* Check that various cases of invalid references to variables bound
4 in an intervening code scope are diagnosed and do not ICE. This test
5 is expected to produce errors. */
7 extern void foo (int, int);
9 void f1 (void)
11 #pragma omp for collapse (2)
12 for (int i = 0; i < 64; i++)
14 int v = (i + 4) * 2;
15 for (int j = v; j < 64; j++) /* { dg-error "initializer is bound in intervening code" } */
16 foo (i, j);
20 void f2 (void)
22 #pragma omp for collapse (2)
23 for (int i = 0; i < 64; i++)
25 int v = (i + 4) * 2;
26 for (int j = 0; j < v; j++) /* { dg-error "end test is bound in intervening code" } */
27 foo (i, j);
31 void f3 (void)
33 #pragma omp for collapse (2)
34 for (int i = 0; i < 64; i++)
36 int v = (i + 4) * 2;
37 for (int j = 0; j < 64; j = j + v) /* { dg-error "increment expression is bound in intervening code" } */
38 foo (i, j);
42 void f4 (void)
44 #pragma omp for collapse (2)
45 for (int i = 0; i < 64; i++)
47 int v = 8;
48 for (int j = v; j < 64; j++) /* { dg-error "initializer is bound in intervening code" } */
49 foo (i, j);
53 void f5 (void)
55 #pragma omp for collapse (2)
56 for (int i = 0; i < 64; i++)
58 int j;
59 for (j = 0; j < 64; j++) /* { dg-error "loop variable is bound in intervening code" } */
60 foo (i, j);
64 void f6 (void)
66 #pragma omp for collapse (2)
67 for (int i = 0; i < 64; i++)
69 int j;
71 int v = 8;
72 for (j = v; j < 64; j++) /* { dg-error "loop variable is bound in intervening code" } */
73 /* { dg-error "initializer is bound in intervening code" "" { target *-*-* } .-1 } */
74 foo (i, j);