1! RUN: %S/test_errors.sh %s %t %flang -fopenmp
2! REQUIRES: shell
3! OpenMP Version 4.5
4! Check for cycle statements leaving an OpenMP structured block
5
6program omp_do
7  integer i, j, k
8
9  !$omp parallel
10  foo: do i = 0, 10
11    !$omp do
12    bar: do j = 0, 10
13           !ERROR: CYCLE to construct 'foo' outside of DO construct is not allowed
14           cycle foo
15         end do bar
16    !$omp end do
17  end do foo
18  !$omp end parallel
19
20  foo1: do i = 0, 10
21    !$omp parallel
22    foo2: do k = 0, 10
23      !$omp do
24      foo3: do j = 0, 10
25             !ERROR: CYCLE to construct 'foo1' outside of PARALLEL construct is not allowed
26             !ERROR: CYCLE to construct 'foo1' outside of DO construct is not allowed
27             cycle foo1
28           end do foo3
29      !$omp end do
30      end do foo2
31    !$omp end parallel
32    end do foo1
33
34  bar1: do i = 0, 10
35    !$omp parallel
36    bar2: do k = 0, 10
37      bar3: do j = 0, 10
38             !ERROR: CYCLE to construct 'bar1' outside of PARALLEL construct is not allowed
39             cycle bar1
40           end do bar3
41      end do bar2
42    !$omp end parallel
43    end do bar1
44
45end program omp_do
46