/* { dg-do run } */ /* { dg-options "-O0 -fopenmp-simd" } */ #include #define ASSERT_EQ(var, val) \ do \ { \ if ((var) != (val)) \ { \ fprintf (stderr, "%s:%d: Unexpected value %d, expected %d\n", \ __FILE__, __LINE__, (var), (val)); \ __builtin_abort (); \ } \ } \ while (0) int main () { int iter_j = 0, iter_k = 0; unsigned i, j, k; #pragma omp tile sizes(3,5,8) for (i = 0; i < 2; i=i+2) for (j = 0; j < 3; j=j+1) for (k = 0; k < 5; k=k+3) { /* fprintf (stderr, "i=%d j=%d k=%d\n", i, j, k); fprintf (stderr, "iter_j=%d iter_k=%d\n", iter_j, iter_k); */ ASSERT_EQ (i, 0); if (k == 0) { ASSERT_EQ (j, iter_j); iter_k = 0; } ASSERT_EQ (k, iter_k); iter_k = iter_k + 3; if (k == 3) iter_j++; } ASSERT_EQ (i, 2); ASSERT_EQ (j, 3); ASSERT_EQ (k, 6); return 0; }