! { dg-do compile } ! Test Fortran-specific compilation failures. module main implicit none interface base_gen subroutine base_gen_int (x) integer :: x end subroutine subroutine base_gen_real (x) real :: x end subroutine end interface interface subroutine base_p () end subroutine end interface procedure (base_p), pointer :: base_proc_ptr !$omp declare variant (base_entry: variant) match (construct={parallel}) ! { dg-error "The base name at .1. must not be an entry name" } !$omp declare variant (base_proc_ptr: variant) match (construct={parallel}) ! { dg-error "The base name at .1. must not be a procedure pointer" } !$omp declare variant (base_gen: variant2) match (construct={parallel}) ! { dg-error "The base name at .1. must not be a generic name" } !$omp declare variant (variant) match (construct={parallel}) ! { dg-error "The base name for 'declare variant' must be specified at .1." } contains subroutine base () entry base_entry end subroutine subroutine base2 () !$omp declare variant (variant2) match (construct={parallel}) ! { dg-error "variant .variant2. and base .base2. at .1. have incompatible types: .variant2. has the wrong number of arguments" } end subroutine subroutine base3 () !$omp declare variant (base: variant2) match (construct={parallel}) ! { dg-error "The base name at .1. does not match the name of the current procedure" } end subroutine subroutine variant () end subroutine subroutine variant2 (x) integer :: x end subroutine end module