! 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: This construct requires a perfect nest of depth 3, but the associated nest is a perfect nest of depth 1 !BECAUSE: COLLAPSE clause was specified with argument 3 !$omp do collapse(3) do i = 0, 10 !BECAUSE: The nest contains code that prevents it from being canonical at this nesting level !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: This construct requires a perfect nest of depth 3, but the associated nest is a perfect nest of depth 2 !BECAUSE: COLLAPSE clause was specified with argument 3 !$omp do collapse(3) do i = 0, 10 do j = 0, 10 !BECAUSE: The nest contains code that prevents it from being canonical at this nesting level !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: This construct requires a perfect nest of depth 2, but the associated nest is a perfect nest of depth 1 !BECAUSE: COLLAPSE clause was specified with argument 2 !$omp do collapse(2) do i = 0, 10 !BECAUSE: The nest contains code that prevents it from being canonical at this nesting level !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: This construct requires a perfect nest of depth 2, but the associated nest is a perfect nest of depth 1 !BECAUSE: COLLAPSE clause was specified with argument 2 !$omp do collapse(2) foo: do i = 0, 10 !BECAUSE: The nest contains code that prevents it from being canonical at this nesting level !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: This construct requires a perfect nest of depth 3, but the associated nest is a perfect nest of depth 2 !BECAUSE: COLLAPSE clause was specified with argument 3 !$omp do collapse(3) do 60 i=1,10 do j=1,10 !BECAUSE: The nest contains code that prevents it from being canonical at this nesting level !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: This construct requires a perfect nest of depth 3, but the associated nest is a perfect nest of depth 2 !BECAUSE: ORDERED clause was specified with argument 3 !$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