/* { dg-additional-options "-Wall -Wno-unknown-pragmas" } */ void test1 (void) { int sum = 0; for (int i = -3; i != 1; ++i) for (int j = -2; j < i * -1; ++j) sum++; if (sum != 14) __builtin_abort (); } void test2 (void) { int sum = 0; #pragma omp unroll partial for (int i = -3; i != 1; ++i) for (int j = -2; j < i * -1; ++j) sum++; if (sum != 14) __builtin_abort (); } void test3 (void) { int sum = 0; #pragma omp unroll partial for (int i = -3; i != 1; ++i) #pragma omp unroll partial for (int j = -2; j < i * -1; ++j) sum++; if (sum != 14) __builtin_abort (); } int sum; void test4 (void) { #pragma omp for reduction(+:sum) #pragma omp unroll partial(5) for (int i = -3; i != 1; ++i) #pragma omp unroll partial(2) for (int j = -2; j < i * -1; ++j) sum++; if (sum != 14) __builtin_abort (); } void test5 (void) { int sum = 0; #pragma omp parallel for reduction(+:sum) #pragma omp unroll partial(2) for (int i = -3; i != 1; ++i) #pragma omp unroll partial(2) for (int j = -2; j < i * -1; ++j) sum++; if (sum != 14) __builtin_abort (); } void test6 (void) { int sum = 0; #pragma omp target parallel for reduction(+:sum) #pragma omp unroll partial(7) for (int i = -3; i != 1; ++i) #pragma omp unroll partial(2) for (int j = -2; j < i * -1; ++j) sum++; if (sum != 14) __builtin_abort (); } void test7 (void) { int sum = 0; #pragma omp target teams distribute parallel for reduction(+:sum) #pragma omp unroll partial(7) for (int i = -3; i != 1; ++i) #pragma omp unroll partial(2) for (int j = -2; j < i * -1; ++j) sum++; if (sum != 14) __builtin_abort (); } int main () { test1 (); test2 (); test3 (); test4 (); test5 (); test6 (); test7 (); return 0; }