! RUN: %python %S/../test_errors.py %s %flang -fopenacc
! Check OpenACC clause validity for the following construct and directive:
! 2.15.1 routine
module openacc_routine_validity
implicit none
!$acc routine(sub3) seq
!$acc routine(fct2) vector
!$acc routine(sub3)
!ERROR: ROUTINE directive without name must appear within the specification part of a subroutine or function definition, or within an interface body for a subroutine or function in an interface block
!$acc routine seq
!$acc routine(dummy) seq
contains
subroutine sub1(a)
real :: a(:)
!$acc routine
end subroutine sub1
subroutine sub2(a)
real :: a(:)
!ERROR: Clause NOHOST is not allowed after clause DEVICE_TYPE on the ROUTINE directive
!$acc routine seq device_type(*) nohost
end subroutine sub2
subroutine sub3(a)
real :: a(:)
end subroutine sub3
subroutine sub4(a)
real :: a(:)
!$acc routine seq
end subroutine sub4
subroutine sub5(a)
real :: a(:)
!$acc routine(sub5) seq
end subroutine sub5
function fct1(a)
integer :: fct1
real :: a(:)
!$acc routine vector nohost
end function fct1
function fct2(a)
integer :: fct2
real :: a(:)
end function fct2
function fct3(a)
integer :: fct3
real :: a(:)
!$acc routine seq bind(fct2)
end function fct3
function fct4(a)
integer :: fct4
real :: a(:)
!$acc routine seq bind("_fct4")
end function fct4
subroutine sub6(a)
real :: a(:)
!$acc routine seq bind(dummy_sub)
end subroutine sub6
subroutine sub7(a)
real :: a(:)
!ERROR: SHORTLOOP clause is not allowed on the KERNELS directive
!$acc kernels shortloop
!$acc end kernels
end subroutine sub7
end module openacc_routine_validity