// { dg-options "-fopenmp" } void bar (void *); __attribute__((noinline, noclone)) void foo (void *qx, void *rx, void *sx, int n) { unsigned short (*q)[n], (*r)[n], (*s)[n], (*p)[n]; q = (typeof (q)) qx; r = (typeof (r)) rx; s = (typeof (s)) sx; int t = 1; int o = -1; #pragma omp for for (p = q; p != r; p += t) /* { dg-error "increment is not constant 1 or -1" } */ bar (p); #pragma omp for for (p = s; p != r; p += o) /* { dg-error "increment is not constant 1 or -1" } */ bar (p); #pragma omp for for (p = q; p != r; p = p + t) /* { dg-error "increment is not constant 1 or -1" } */ bar (p); #pragma omp for for (p = s; p != r; p = p + o) /* { dg-error "increment is not constant 1 or -1" } */ bar (p); #pragma omp for for (p = q; p != r; p = t + p) /* { dg-error "increment is not constant 1 or -1" } */ bar (p); #pragma omp for for (p = s; p != r; p = o + p) /* { dg-error "increment is not constant 1 or -1" } */ bar (p); #pragma omp for for (p = q; p != r; p += 2) /* { dg-error "increment is not constant 1 or -1" } */ bar (p); #pragma omp for for (p = s; p != r; p -= 2) /* { dg-error "increment is not constant 1 or -1" } */ bar (p); #pragma omp for for (p = q; p != r; p = p + 3) /* { dg-error "increment is not constant 1 or -1" } */ bar (p); #pragma omp for for (p = s; p != r; p = p - 3) /* { dg-error "increment is not constant 1 or -1" } */ bar (p); #pragma omp for for (p = q; p != r; p = 4 + p) /* { dg-error "increment is not constant 1 or -1" } */ bar (p); #pragma omp for for (p = s; p != r; p = -5 + p) /* { dg-error "increment is not constant 1 or -1" } */ bar (p); }