! { dg-do compile } ! { dg-additional-options "-cpp -fdump-tree-gimple" } ! { dg-additional-options "-mno-sse3" { target { i?86-*-* x86_64-*-* } } } program main implicit none contains subroutine f01 () end subroutine subroutine f02 () !$omp declare variant (f01) match (device={isa("avx512f",avx512bw)}) end subroutine subroutine f05 () end subroutine subroutine f06 () !$omp declare variant (f05) match (device={kind(gpu)}) end subroutine subroutine f07 () end subroutine subroutine f08 () !$omp declare variant (f07) match (device={kind("cpu")}) end subroutine subroutine f09 () end subroutine subroutine f10 () !$omp declare variant (f09) match (device={isa(sm_35)}) end subroutine subroutine f11 () end subroutine subroutine f12 () !$omp declare variant (f11) match (device={arch(nvptx)}) end subroutine subroutine f13 () end subroutine subroutine f14 () !$omp declare variant (f13) match (device={arch("i386"),isa(sse4)}) end subroutine subroutine f17 () end subroutine subroutine f18 () !$omp declare variant (f17) match (device={kind("any","fpga")}) end subroutine subroutine test1 () integer :: i; call f02 () ! { dg-final { scan-tree-dump-times "f02 \\\(\\\);" 1 "gimple" } } call f14 () ! { dg-final { scan-tree-dump-times "f14 \\\(\\\);" 1 "gimple" } } call f18 () ! { dg-final { scan-tree-dump-times "f18 \\\(\\\);" 1 "gimple" } } end subroutine subroutine test3 () call f06 () ! { dg-final { scan-tree-dump-times "f06 \\\(\\\);" 1 "gimple" { target { ! { nvptx*-*-* amdgcn*-*-* } } } } } call f08 () ! { dg-final { scan-tree-dump-times "f07 \\\(\\\);" 1 "gimple" { target { ! { nvptx*-*-* amdgcn*-*-* } } } } } call f10 () ! { dg-final { scan-tree-dump-times "f10 \\\(\\\);" 1 "gimple" { target { ! { nvptx*-*-* amdgcn*-*-* } } } } } call f12 () ! { dg-final { scan-tree-dump-times "f12 \\\(\\\);" 1 "gimple" { target { ! { nvptx*-*-* } } } } } ! { dg-final { scan-tree-dump-times "f11 \\\(\\\);" 1 "gimple" { target { nvptx*-*-* } } } } end subroutine end program