1! { dg-do compile } 2! { dg-options "-fopenmp -std=gnu" } 3subroutine foo 4 integer :: i, j 5 integer, dimension (30) :: a 6 double precision :: d 7 i = 0 8!$omp do private (i) 9 do 100 ! { dg-error "cannot be a DO WHILE or DO without loop control" } 10 if (i .gt. 0) exit ! { dg-error "EXIT statement" } 11100 i = i + 1 12 i = 0 13!$omp do private (i) 14 do ! { dg-error "cannot be a DO WHILE or DO without loop control" } 15 if (i .gt. 0) exit ! { dg-error "EXIT statement" } 16 i = i + 1 17 end do 18 i = 0 19!$omp do private (i) 20 do 200 while (i .lt. 4) ! { dg-error "cannot be a DO WHILE or DO without loop control" } 21200 i = i + 1 22!$omp do private (i) 23 do while (i .lt. 8) ! { dg-error "cannot be a DO WHILE or DO without loop control" } 24 i = i + 1 25 end do 26!$omp do 27 do 300 d = 1, 30, 6 ! { dg-warning "Deleted feature: Loop variable" } 28 i = d 29300 a(i) = 1 30!$omp do 31 do d = 1, 30, 5 ! { dg-warning "Deleted feature: Loop variable" } 32 i = d 33 a(i) = 2 34 end do 35!$omp do 36 do i = 1, 30 37 if (i .eq. 16) exit ! { dg-error "EXIT statement" } 38 end do 39!$omp do 40outer: do i = 1, 30 41 do j = 5, 10 42 if (i .eq. 6 .and. j .eq. 7) exit outer ! { dg-error "EXIT statement" } 43 end do 44 end do outer 45last: do i = 1, 30 46!$omp parallel 47 if (i .eq. 21) exit last ! { dg-error "leaving OpenMP structured block" } 48!$omp end parallel 49 end do last 50!$omp parallel do shared (i) 51 do i = 1, 30, 2 ! { dg-error "iteration variable present on clause" } 52 a(i) = 5 53 end do 54!$omp end parallel do 55end subroutine 56! { dg-error "iteration variable must be of type integer" "" { target *-*-* } 27 } 57! { dg-error "iteration variable must be of type integer" "" { target *-*-* } 31 } 58