blob: e8c3a3513656f7e462d507eb0c20789704c41052 [file] [log] [blame]
! { dg-do compile }
! { dg-additional-options "-fdump-tree-gimple" }
! Check that, when the novariants or nocontext clauses cannot be evaluated at
! compile time, both variants are emitted.
module main
use iso_c_binding, only: c_ptr
implicit none
interface
integer function f0 ()
end function
integer function f1 ()
end function
integer function f2 ()
!$omp declare variant (f0) match (construct={dispatch})
!$omp declare variant (f1) match (implementation={vendor(gnu)})
end function
end interface
contains
subroutine test ()
integer :: a, n
!$omp dispatch novariants(n < 1024) nocontext(n > 1024)
a = f2 ()
end subroutine
end module
! { dg-final { scan-tree-dump-times "D\.\[0-9]+ = n <= 1023;" 1 "gimple" } }
! { dg-final { scan-tree-dump-times "D\.\[0-9]+ = n > 1024;" 1 "gimple" } }
! { dg-final { scan-tree-dump-times "#pragma omp dispatch novariants\\(0\\) nocontext\\(0\\)" 1 "gimple" } }
! { dg-final { scan-tree-dump-times "a = f2 \\\(\\\);" 1 "gimple" } }
! { dg-final { scan-tree-dump-times "a = f1 \\\(\\\);" 1 "gimple" } }
! { dg-final { scan-tree-dump-times "a = f0 \\\(\\\);" 1 "gimple" } }