1! { dg-additional-options "-std=f2008" } 2! See also loop-3-2.f95. 3 4subroutine test1 5 implicit none 6 integer :: i, j 7 8 ! !$acc end loop not required by spec 9 !$acc loop 10 do i = 1,5 11 enddo 12 !$acc end loop ! { dg-warning "Redundant" } 13 14 !$acc loop 15 do i = 1,5 16 enddo 17 j = 1 18 !$acc end loop ! { dg-error "Unexpected" } 19 20 !$acc parallel 21 !$acc loop 22 do i = 1,5 23 enddo 24 !$acc end parallel 25 !$acc end loop ! { dg-error "Unexpected" } 26 27 ! OpenACC does not support Fortran 2008 do concurrent statement 28 !$acc loop 29 do concurrent (i = 1:5) ! { dg-error "ACC LOOP cannot be a DO CONCURRENT loop" } 30 end do 31 32 !$acc loop 33 outer_loop: do i = 1, 5 34 inner_loop: do j = 1,5 35 if (i .eq. j) cycle outer_loop 36 if (i .ne. j) exit outer_loop ! { dg-error "EXIT statement" } 37 end do inner_loop 38 end do outer_loop 39 40 outer_loop1: do i = 1, 5 41 !$acc loop 42 inner_loop1: do j = 1,5 43 if (i .eq. j) cycle outer_loop1 ! { dg-error "CYCLE statement" } 44 end do inner_loop1 45 end do outer_loop1 46 47 !$acc loop collapse(2) 48 outer_loop2: do i = 1, 5 49 inner_loop2: do j = 1,5 50 if (i .eq. j) cycle outer_loop2 ! { dg-error "CYCLE statement" } 51 if (i .ne. j) exit outer_loop2 ! { dg-error "EXIT statement" } 52 end do inner_loop2 53 end do outer_loop2 54end subroutine test1 55