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