| 1 | // RUN: %libomp-compile-and-run |
| 2 | |
| 3 | // Non-rectangular loop collapsing. |
| 4 | // |
| 5 | // Nested loops conform to OpenMP 5.2 standard, |
| 6 | // inner loops bounds may depend on outer loops induction variables. |
| 7 | |
| 8 | #define LOOP_TYPES int |
| 9 | #define LOOP \ |
| 10 | for (i = iLB; i <= iUB; i += iStep) \ |
| 11 | for (j = i + jA0; j <= i + jB0; j += jStep) \ |
| 12 | for (k = j + kA0; k <= j + kB0; k += kStep) |
| 13 | |
| 14 | #include "collapse_test.inc" |
| 15 | |
| 16 | int main() { |
| 17 | int fail; |
| 18 | iLB = -2; |
| 19 | iUB = 3; |
| 20 | jA0 = -7; |
| 21 | jB0 = 13; |
| 22 | kA0 = -20; |
| 23 | kB0 = 111; |
| 24 | iStep = 5; |
| 25 | jStep = 9; |
| 26 | kStep = 10; |
| 27 | PRINTF("\nOne off iLB=%d; iUB=%d; jA0=%d; jB0=%d; kA0=%d; kB0=%d; iStep=%d; " |
| 28 | "jStep=%d; kStep=%d;\n" , |
| 29 | iLB, iUB, jA0, jB0, kA0, kB0, iStep, jStep, kStep); |
| 30 | fail = (test() == 0); |
| 31 | return fail; |
| 32 | } |
| 33 | |