1*6c1ac141SIvan Zhechev! RUN: %python %S/test_errors.py %s %flang_fc1 264ab3302SCarolineConcatto! C1167 -- An exit-stmt shall not appear within a DO CONCURRENT construct if 364ab3302SCarolineConcatto! it belongs to that construct or an outer construct. 464ab3302SCarolineConcatto 564ab3302SCarolineConcattosubroutine do_concurrent_test1(n) 664ab3302SCarolineConcatto implicit none 764ab3302SCarolineConcatto integer :: i1,i2,i3,i4,i5,i6,n 864ab3302SCarolineConcatto mytest1: if (n>0) then 964ab3302SCarolineConcatto nc1: do concurrent(i1=1:n) 1064ab3302SCarolineConcatto nc2: do i2=1,n 1164ab3302SCarolineConcatto nc3: do concurrent(i3=1:n) 1264ab3302SCarolineConcatto nc4: do i4=1,n 1364ab3302SCarolineConcatto nc5: do concurrent(i5=1:n) 1464ab3302SCarolineConcatto nc6: do i6=1,n 1564ab3302SCarolineConcatto!ERROR: EXIT must not leave a DO CONCURRENT statement 1664ab3302SCarolineConcatto!ERROR: EXIT must not leave a DO CONCURRENT statement 1764ab3302SCarolineConcatto!ERROR: EXIT must not leave a DO CONCURRENT statement 1864ab3302SCarolineConcatto if (i6==10) exit mytest1 1964ab3302SCarolineConcatto end do nc6 2064ab3302SCarolineConcatto end do nc5 2164ab3302SCarolineConcatto end do nc4 2264ab3302SCarolineConcatto end do nc3 2364ab3302SCarolineConcatto end do nc2 2464ab3302SCarolineConcatto end do nc1 2564ab3302SCarolineConcatto end if mytest1 2664ab3302SCarolineConcattoend subroutine do_concurrent_test1 2764ab3302SCarolineConcatto 2864ab3302SCarolineConcattosubroutine do_concurrent_test2(n) 2964ab3302SCarolineConcatto implicit none 3064ab3302SCarolineConcatto integer :: i1,i2,i3,i4,i5,i6,n 3164ab3302SCarolineConcatto mytest2: if (n>0) then 3264ab3302SCarolineConcatto nc1: do concurrent(i1=1:n) 3364ab3302SCarolineConcatto nc2: do i2=1,n 3464ab3302SCarolineConcatto nc3: do concurrent(i3=1:n) 3564ab3302SCarolineConcatto nc4: do i4=1,n 3664ab3302SCarolineConcatto nc5: do concurrent(i5=1:n) 3764ab3302SCarolineConcatto nc6: do i6=1,n 3864ab3302SCarolineConcatto!ERROR: EXIT must not leave a DO CONCURRENT statement 3964ab3302SCarolineConcatto!ERROR: EXIT must not leave a DO CONCURRENT statement 4064ab3302SCarolineConcatto if (i6==10) exit nc3 4164ab3302SCarolineConcatto end do nc6 4264ab3302SCarolineConcatto end do nc5 4364ab3302SCarolineConcatto end do nc4 4464ab3302SCarolineConcatto end do nc3 4564ab3302SCarolineConcatto end do nc2 4664ab3302SCarolineConcatto end do nc1 4764ab3302SCarolineConcatto end if mytest2 4864ab3302SCarolineConcattoend subroutine do_concurrent_test2 4964ab3302SCarolineConcatto 5064ab3302SCarolineConcattosubroutine do_concurrent_test3(n) 5164ab3302SCarolineConcatto implicit none 5264ab3302SCarolineConcatto integer :: i1,i2,i3,i4,i5,i6,n 5364ab3302SCarolineConcatto mytest3: if (n>0) then 5464ab3302SCarolineConcatto nc1: do concurrent(i1=1:n) 5564ab3302SCarolineConcatto nc2: do i2=1,n 5664ab3302SCarolineConcatto nc3: do concurrent(i3=1:n) 5764ab3302SCarolineConcatto!ERROR: EXIT must not leave a DO CONCURRENT statement 5864ab3302SCarolineConcatto if (i3==4) exit nc2 5964ab3302SCarolineConcatto nc4: do i4=1,n 6064ab3302SCarolineConcatto nc5: do concurrent(i5=1:n) 6164ab3302SCarolineConcatto nc6: do i6=1,n 6264ab3302SCarolineConcatto if (i6==10) print *, "hello" 6364ab3302SCarolineConcatto end do nc6 6464ab3302SCarolineConcatto end do nc5 6564ab3302SCarolineConcatto end do nc4 6664ab3302SCarolineConcatto end do nc3 6764ab3302SCarolineConcatto end do nc2 6864ab3302SCarolineConcatto end do nc1 6964ab3302SCarolineConcatto end if mytest3 7064ab3302SCarolineConcattoend subroutine do_concurrent_test3 71