blob: 93304a6e149ebbddeeddd5864ad80cce1c9c352d [file] [log] [blame]
! The following definitions are in omp_lib, which cannot be included
! in gcc/testsuite/
module m
use iso_c_binding
implicit none (type, external)
integer, parameter :: omp_interop_kind = c_intptr_t
integer, parameter :: omp_interop_none = 0_omp_interop_kind
interface
subroutine repl1(); end
subroutine base1()
!$omp declare variant(repl1) match(construct={dispatch})
end
end interface
contains
subroutine test (obj1)
integer(omp_interop_kind), intent(in) :: obj1
integer(omp_interop_kind) :: obj2(2)
integer(omp_interop_kind), parameter :: obj3 = omp_interop_none
integer(1) :: x
!$omp dispatch interop ( obj1, obj2, obj1 ) device(2) ! { dg-error "'obj2' at .1. in 'INTEROP' clause must be a scalar integer variable of 'omp_interop_kind' kind" }
call base1 ()
!$omp dispatch interop ( obj1, obj1, obj1 ) device(2) ! OK
call base1 ()
!$omp dispatch interop ( obj3 ) ! { dg-error "Object 'obj3' is not a variable at .1." }
call base1 ()
! { dg-error "'obj3' at .1. in 'INTEROP' clause must be a scalar integer variable of 'omp_interop_kind' kind" "" { target *-*-* } .-2 }
!$omp dispatch interop ( obj1 )
call base1 ()
!$omp dispatch interop ( obj2 ) ! { dg-error "'obj2' at .1. in 'INTEROP' clause must be a scalar integer variable of 'omp_interop_kind' kind" }
call base1 ()
!$omp dispatch interop ( x ) ! { dg-error "'x' at .1. in 'INTEROP' clause must be a scalar integer variable of 'omp_interop_kind' kind" }
call base1 ()
!$omp dispatch interop ( obj1) device(2) interop (obj1 ) ! { dg-error "Duplicated 'interop' clause" }
call base1 ()
end
end module