module main implicit none contains function f1 (x, y, z) real (kind = 8) :: f1 integer, intent(in) :: x integer (kind = 8), intent(in) :: y real :: z f1 = 0.0 end function function f2 (x, y, z) real (kind = 8) :: f2 integer, intent(in) :: x integer (kind = 8), intent(in) :: y real :: z f2 = 0.0 end function function f3 (x, y, z) real (kind = 8) :: f3 integer, intent(in) :: x integer (kind = 8), intent(in) :: y real :: z !$omp declare variant (f1) match (user={condition(0)},construct={parallel}) f3 = 0.0 end function function f4 (x, y, z) real (kind = 8) :: f4 integer, intent(in) :: x integer (kind = 8), intent(in) :: y real :: z !$omp declare variant (f1) match (construct={parallel},user={condition(score(1):1)}) f4 = 0.0 end function function f5 (x, y, z) real (kind = 8) :: f5 integer, intent(in) :: x integer (kind = 8), intent(in) :: y real :: z f5 = 0.0 end function function f6 (x, y, z) real (kind = 8) :: f6 integer, intent(in) :: x integer (kind = 8), intent(in) :: y real :: z !$omp declare variant (f5) match (user={condition(0)}) ! { dg-error "'f5' used as a variant with incompatible 'construct' selector sets" } f6 = 0.0 end function function f7 (x, y, z) real (kind = 8) :: f7 integer, intent(in) :: x integer (kind = 8), intent(in) :: y real :: z !$omp declare variant (f5) match (construct={parallel},user={condition(score(1):1)}) f7 = 0.0 end function function f8 (x, y, z) real (kind = 8) :: f8 integer, intent(in) :: x integer (kind = 8), intent(in) :: y real :: z f8 = 0.0 end function function f9 (x, y, z) real (kind = 8) :: f9 integer, intent(in) :: x integer (kind = 8), intent(in) :: y real :: z !$omp declare variant (f8) match (user={condition(0)},construct={do}) ! { dg-error "'f8' used as a variant with incompatible 'construct' selector sets" } f9 = 0.0 end function function f10 (x, y, z) real (kind = 8) :: f10 integer, intent(in) :: x integer (kind = 8), intent(in) :: y real :: z !$omp declare variant (f8) match (user={condition(1)}) f10 = 0.0 end function function f11 (x, y, z) real (kind = 8) :: f11 integer, intent(in) :: x integer (kind = 8), intent(in) :: y real :: z f11 = 0.0 end function function f12 (x, y, z) real (kind = 8) :: f12 integer, intent(in) :: x integer (kind = 8), intent(in) :: y real :: z !$omp declare variant (f11) match (construct={target,teams,parallel,do}) ! { dg-error "'f11' used as a variant with incompatible 'construct' selector sets" } f12 = 0.0 end function function f13 (x, y, z) real (kind = 8) :: f13 integer, intent(in) :: x integer (kind = 8), intent(in) :: y real :: z !$omp declare variant (f11) match (user={condition(score(1):1)},construct={target,teams,parallel,do}) ! { dg-error "'f11' used as a variant with incompatible 'construct' selector sets" } f13 = 0.0 end function function f14 (x, y, z) real (kind = 8) :: f14 integer, intent(in) :: x integer (kind = 8), intent(in) :: y real :: z !$omp declare variant (f11) match (implementation={vendor(gnu)},construct={target,teams,parallel}) ! { dg-error "'f11' used as a variant with incompatible 'construct' selector sets" } f14 = 0.0 end function function f15 (x, y, z) real (kind = 8) :: f15 integer, intent(in) :: x integer (kind = 8), intent(in) :: y real :: z !$omp declare variant (f11) match (device={kind(any)},construct={teams,parallel}) f15 = 0.0 end function function f16 (x, y, z) real (kind = 8) :: f16 integer, intent(in) :: x integer (kind = 8), intent(in) :: y real :: z f16 = 0.0 end function function f17 (x, y, z) real (kind = 8) :: f17 integer, intent(in) :: x integer (kind = 8), intent(in) :: y real :: z !$omp declare variant (f16) match (construct={teams,parallel}) ! { dg-error "'f16' used as a variant with incompatible 'construct' selector sets" } f17 = 0.0 end function function f18 (x, y, z) real (kind = 8) :: f18 integer, intent(in) :: x integer (kind = 8), intent(in) :: y real :: z !$omp declare variant (f16) match(construct={teams,parallel,do}) f18 = 0.0 end function function f19 (x, y, z) real (kind = 8) :: f19 integer, intent(in) :: x integer (kind = 8), intent(in) :: y real :: z f19 = 0.0 end function function f20 (x, y, z) real (kind = 8) :: f20 integer, intent(in) :: x integer (kind = 8), intent(in) :: y real :: z !$omp declare variant (f19) match (construct={parallel}) ! { dg-error "'f19' used as a variant with incompatible 'construct' selector sets" } f20 = 0.0 end function function f21 (x, y, z) real (kind = 8) :: f21 integer, intent(in) :: x integer (kind = 8), intent(in) :: y real :: z !$omp declare variant (f19) match (construct={do},implementation={vendor(gnu,llvm)}) f21 = 0.0 end function end module