! RUN: %python %S/../test_errors.py %s %flang_fc1 -fopenmp ! OpenMP Version 4.5 ! 2.7.1 Loop Construct program omp integer i, j, k !ERROR: The value of the parameter in the COLLAPSE or ORDERED clause must not be larger than the number of nested loops following the construct. !$omp do collapse(3) do i = 0, 10 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct cycle do j = 0, 10 do k = 0, 10 print *, i, j, k end do end do end do !$omp end do !ERROR: The value of the parameter in the COLLAPSE or ORDERED clause must not be larger than the number of nested loops following the construct. !$omp do collapse(3) do i = 0, 10 do j = 0, 10 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct cycle do k = 0, 10 print *, i, j, k end do end do end do !$omp end do !ERROR: The value of the parameter in the COLLAPSE or ORDERED clause must not be larger than the number of nested loops following the construct. !$omp do collapse(2) do i = 0, 10 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct cycle do j = 0, 10 do k = 0, 10 print *, i, j, k end do end do end do !$omp end do !ERROR: The value of the parameter in the COLLAPSE or ORDERED clause must not be larger than the number of nested loops following the construct. !$omp do collapse(2) foo: do i = 0, 10 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct cycle foo do j = 0, 10 do k = 0, 10 print *, i, j, k end do end do end do foo !$omp end do !ERROR: The value of the parameter in the COLLAPSE or ORDERED clause must not be larger than the number of nested loops following the construct. !$omp do collapse(3) do 60 i=1,10 do j=1,10 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct cycle do k=1,10 print *,i end do end do 60 continue !$omp end do !$omp do collapse(3) foo: do i = 0, 10 foo1: do j = 0, 10 foo2: do k = 0, 10 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct cycle foo print *, i, j, k end do foo2 end do foo1 end do foo !$omp end do !$omp do collapse(3) foo: do i = 0, 10 foo1: do j = 0, 10 foo2: do k = 0, 10 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct cycle foo1 print *, i, j, k end do foo2 end do foo1 end do foo !$omp end do !$omp do collapse(2) foo: do i = 0, 10 foo1: do j = 0, 10 foo2: do k = 0, 10 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct cycle foo print *, i, j, k end do foo2 end do foo1 end do foo !$omp end do !$omp do collapse(2) foo: do i = 0, 10 foo1: do j = 0, 10 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct cycle foo foo2: do k = 0, 10 print *, i, j, k end do foo2 end do foo1 end do foo !$omp end do !$omp do ordered(2) foo: do i = 0, 10 foo1: do j = 0, 10 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct cycle foo !ERROR: A worksharing region may not be closely nested inside a worksharing, explicit task, taskloop, critical, ordered, atomic, or master region !$omp do collapse(1) foo2: do k = 0, 10 print *, i, j, k end do foo2 !$omp end do end do foo1 end do foo !$omp end do !$omp parallel !$omp do collapse(2) foo: do i = 0, 10 foo1: do j = 0, 10 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct cycle foo !$omp parallel !$omp do collapse(2) foo2: do k = 0, 10 foo3: do l = 0, 10 print *, i, j, k, l !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct cycle foo2 end do foo3 end do foo2 !$omp end do !$omp end parallel end do foo1 end do foo !$omp end do !$omp end parallel !$omp parallel !ERROR: The value of the parameter in the COLLAPSE or ORDERED clause must not be larger than the number of nested loops following the construct. !$omp parallel do ordered(3) collapse(2) foo: do i = 0, 10 foo1: do j = 0, 10 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct cycle foo !$omp parallel !$omp parallel do collapse(2) foo2: do k = 0, 10 foo3: do l = 0, 10 print *, i, j, k, l !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct cycle foo2 end do foo3 end do foo2 !$omp end parallel do !$omp end parallel end do foo1 end do foo !$omp end parallel do !$omp end parallel end program omp