void test1 (void) { int i, j, k, l; #pragma omp for collapse(4) private (i, j, k, l) /* { dg-error "the same loop iteration variables 'i' used in multiple associated loops" "" { target c } } */ for (i = 0; i < 1024; ++i) /* { dg-error "the same loop iteration variables 'i' used in multiple associated loops" "" { target c++ } } */ #pragma omp tile sizes (2, 2, 2) for (j = 0; j < 1024; ++j) #pragma omp tile sizes (3, 3) for (k = 0; k < 1024; ++k) #pragma omp tile sizes (4) for (i = 0; i < 1024; ++i) ; } void test2 (void) { long long i; int j, k, l; #pragma omp for collapse(4) private (i, j, k, l) /* { dg-error "outer iteration variable 'i' used in initializer expression has type other than 'int'" "" { target c } } */ for (i = 0; i < 1024; ++i) /* { dg-error "outer iteration variable 'i' used in initializer expression has type other than 'int'" "" { target c++ } } */ #pragma omp tile sizes (2, 2, 2) for (j = 0; j < 1024; ++j) #pragma omp tile sizes (3, 3) for (k = 0; k < 1024; ++k) #pragma omp tile sizes (4) for (l = i; l < 1024; ++l) ; } void test3 (void) { int i, j, k, l; #pragma omp for collapse(4) private (i, j, k, l) for (i = 0; i < 1024; ++i) #pragma omp tile sizes (2, 2, 2) for (j = 0; j < 1024; ++j) #pragma omp tile sizes (3, 3) for (k = 0; k < 1024; ++k) #pragma omp tile sizes (4) for (l = 0; l < 7 * i * i; ++l) /* { dg-error "condition expression refers to iteration variable 'i'" } */ ; } void test4 (void) { int i, j, k, l; #pragma omp for collapse(4) private (i, j, k, l) for (i = 0; i < 1024; ++i) #pragma omp tile sizes (2, 2, 2) for (j = 0; j < 1024; ++j) #pragma omp tile sizes (3, 3) for (k = 0; k < 1024; ++k) #pragma omp tile sizes (4) for (l = i * i; l < 1024; ++l) /* { dg-error "initializer expression refers to iteration variable 'i'" } */ ; } void test5 (void) { int i, j, k, l; #pragma omp for collapse(4) private (i, j, k, l) for (i = 0; i < 1024; ++i) #pragma omp tile sizes (2, 2, 2) /* { dg-error "increment expression refers to iteration variable 'j'" "" { target c } } */ for (j = 0; j < 1024; ++j) /* { dg-error "increment expression refers to iteration variable 'j'" "" { target c++ } } */ #pragma omp tile sizes (3, 3) for (k = 0; k < 1024; ++k) #pragma omp tile sizes (4) for (l = 0; l < 1024; l += j) ; } void test6 (void) { int i, j, k, l; #pragma omp for collapse(4) private (i, j, k, l) for (i = 0; i < 1024; ++i) #pragma omp tile sizes (2, 2, 2) for (j = 0; j < 1024; ++j) #pragma omp tile sizes (3, 3) for (k = 0; k < 1024; ++k) #pragma omp tile sizes (4) for (l = 0; l < i - 2; ++l) /* { dg-message "non-rectangular loops from generated loops unsupported" } */ ; }