| ! { dg-do compile } |
| ! { dg-options "-fopenmp -std=gnu" } |
| subroutine foo |
| integer :: i, j |
| integer, dimension (30) :: a |
| double precision :: d |
| i = 0 |
| !$omp do private (i) |
| do 100 ! { dg-error "cannot be a DO WHILE or DO without loop control" } |
| if (i .gt. 0) exit ! { dg-error "EXIT statement" } |
| 100 i = i + 1 |
| i = 0 |
| !$omp do private (i) |
| do ! { dg-error "cannot be a DO WHILE or DO without loop control" } |
| if (i .gt. 0) exit ! { dg-error "EXIT statement" } |
| i = i + 1 |
| end do |
| i = 0 |
| !$omp do private (i) |
| do 200 while (i .lt. 4) ! { dg-error "cannot be a DO WHILE or DO without loop control" } |
| 200 i = i + 1 |
| !$omp do private (i) |
| do while (i .lt. 8) ! { dg-error "cannot be a DO WHILE or DO without loop control" } |
| i = i + 1 |
| end do |
| !$omp do |
| do 300 d = 1, 30, 6 ! { dg-warning "Obsolete: REAL DO loop iterator" } |
| i = d |
| 300 a(i) = 1 |
| !$omp do |
| do d = 1, 30, 5 ! { dg-warning "Obsolete: REAL DO loop iterator" } |
| i = d |
| a(i) = 2 |
| end do |
| !$omp do |
| do i = 1, 30 |
| if (i .eq. 16) exit ! { dg-error "EXIT statement" } |
| end do |
| !$omp do |
| outer: do i = 1, 30 |
| do j = 5, 10 |
| if (i .eq. 6 .and. j .eq. 7) exit outer ! { dg-error "EXIT statement" } |
| end do |
| end do outer |
| last: do i = 1, 30 |
| !$omp parallel |
| if (i .eq. 21) exit last ! { dg-error "leaving OpenMP structured block" } |
| !$omp end parallel |
| end do last |
| !$omp parallel do shared (i) |
| do i = 1, 30, 2 ! { dg-error "iteration variable present on clause" } |
| a(i) = 5 |
| end do |
| !$omp end parallel do |
| end subroutine |
| ! { dg-error "iteration variable must be of type integer" "" { target *-*-* } 27 } |
| ! { dg-error "iteration variable must be of type integer" "" { target *-*-* } 31 } |