extern void dummy (int); void test (void) { #pragma omp for #pragma omp tile sizes(1, 2) /* { dg-error "non-rectangular 'tile'" "" { target c } } */ for (int i = 0; i < 100; ++i) /* { dg-error "non-rectangular 'tile'" "" { target c++ } } */ for (int j = i; j < 100; ++j) dummy (i); #pragma omp for #pragma omp tile sizes(1, 2) /* { dg-error "non-rectangular 'tile'" "" { target c } } */ for (int i = 0; i < 100; ++i) /* { dg-error "non-rectangular 'tile'" "" { target c++ } } */ for (int j = 0; j < i; ++j) dummy (i); #pragma omp for collapse(2) #pragma omp tile sizes(1) /* { dg-error "'tile' construct generates 1 loops with canonical form but 2 loops are needed" } */ for (int i = 0; i < 100; ++i) for (int j = 0; j < 100; ++j) dummy (i); #pragma omp for collapse(3) #pragma omp tile sizes(1, 2) /* { dg-error "'tile' construct generates 2 loops with canonical form but 3 loops are needed" } */ for (int i = 0; i < 100; ++i) for (int j = 0; j < 100; ++j) dummy (i); #pragma omp for collapse(2) #pragma omp tile sizes(1, 2) #pragma omp tile sizes(1) /* { dg-error "'tile' construct generates 1 loops with canonical form but 2 loops are needed" } */ for (int i = 0; i < 100; ++i) dummy (i); #pragma omp for collapse(2) #pragma omp tile sizes(1, 2) #pragma omp tile sizes(1, 2) for (int i = 0; i < 100; ++i) /* { dg-error "not enough nested loops" } */ dummy (i); #pragma omp for collapse(2) #pragma omp tile sizes(5, 6) #pragma omp tile sizes(1, 2, 3) for (int i = 0; i < 100; ++i) /* { dg-error "not enough nested loops" } */ dummy (i); #pragma omp for collapse(2) #pragma omp tile sizes(1, 2) #pragma omp tile sizes(1) /* { dg-error "'tile' construct generates 1 loops with canonical form but 2 loops are needed" } */ for (int i = 0; i < 100; ++i) for (int j = 0; j < 100; ++j) dummy (i); #pragma omp for collapse(3) #pragma omp tile sizes(1, 2) /* { dg-error "'tile' construct generates 2 loops with canonical form but 3 loops are needed" } */ #pragma omp tile sizes(1, 2) for (int i = 0; i < 100; ++i) for (int j = 0; j < 100; ++j) dummy (i); #pragma omp for collapse(3) #pragma omp tile sizes(5, 6) /* { dg-error "'tile' construct generates 2 loops with canonical form but 3 loops are needed" } */ #pragma omp tile sizes(1, 2, 3) for (int i = 0; i < 100; ++i) for (int j = 0; j < 100; ++j) for (int k = 0; k < 100; ++k) dummy (i); }