! { 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" } }