! { dg-do compile } ! { dg-additional-options "-std=f2008 -fcoarray=single" } module test implicit none contains elemental subroutine test1 !$acc parallel ! { dg-error "may not appear in PURE procedures" } end subroutine test1 pure subroutine test2 !$acc parallel ! { dg-error "may not appear in PURE procedures" } end subroutine test2 ! Implicit pure elemental real function test3(x) real, intent(in) :: x !$acc parallel ! { dg-error "may not appear in PURE procedures" } test3 = x*x end function test3 pure real function test4(x) real, intent(in) :: x !$acc parallel ! { dg-error "may not appear in PURE procedures" } test4 = x end function test4 subroutine test5 real :: x = 0.0 integer :: i !$acc parallel loop collapse(1) reduction(+:x) do i = 1,10 x = x + 0.3 enddo print *, x end subroutine test5 real function test6(x) real :: x integer :: i !$acc parallel loop collapse(1) reduction(+:x) do i = 1,10 x = x + 0.3 enddo test6 = x end function test6 impure elemental real function test7(x) real, intent(in) :: x !$acc parallel test7 = x !$acc end parallel end function test7 subroutine test8 real :: x = 0.0 integer :: i !$acc parallel loop collapse(1) reduction(+:x) do i = 1,10 critical ! { dg-error "CRITICAL block inside of" } x = x + 0.3 end critical enddo print *, x end subroutine test8 real function test9(n) integer, value :: n BLOCK integer i real sum !$acc loop reduction(+:sum) do i=1, n sum = sum + sin(real(i)) end do END BLOCK end function test9 end module test