1! RUN: %S/test_errors.sh %s %t %flang_fc1
2! REQUIRES: shell
3! C1167 -- An exit-stmt shall not appear within a DO CONCURRENT construct if
4! it belongs to that construct or an outer construct.
5
6subroutine do_concurrent_test1(n)
7  implicit none
8  integer :: n
9  integer :: j,k
10  mydoc: do concurrent(j=1:n)
11  mydo:    do k=1,n
12!ERROR: EXIT must not leave a DO CONCURRENT statement
13             if (k==5) exit mydoc
14             if (j==10) exit mydo
15           end do mydo
16         end do mydoc
17end subroutine do_concurrent_test1
18
19subroutine do_concurrent_test2(n)
20  implicit none
21  integer :: j,k,n
22  mydoc: do concurrent(j=1:n)
23!ERROR: EXIT must not leave a DO CONCURRENT statement
24           if (k==5) exit
25         end do mydoc
26end subroutine do_concurrent_test2
27
28subroutine do_concurrent_test3(n)
29  implicit none
30  integer :: j,k,n
31  mytest3: if (n>0) then
32  mydoc:    do concurrent(j=1:n)
33              do k=1,n
34!ERROR: EXIT must not leave a DO CONCURRENT statement
35                if (j==10) exit mytest3
36              end do
37            end do mydoc
38          end if mytest3
39end subroutine do_concurrent_test3
40
41subroutine do_concurrent_test4(n)
42  implicit none
43  integer :: j,k,n
44  mytest4: if (n>0) then
45  mydoc:    do concurrent(j=1:n)
46              do concurrent(k=1:n)
47!ERROR: EXIT must not leave a DO CONCURRENT statement
48                if (k==5) exit
49!ERROR: EXIT must not leave a DO CONCURRENT statement
50!ERROR: EXIT must not leave a DO CONCURRENT statement
51                if (j==10) exit mytest4
52              end do
53            end do mydoc
54          end if mytest4
55end subroutine do_concurrent_test4
56