! { dg-do compile } ! ! PR fortran/106566 ! subroutine add_one2(p) implicit none procedure(add_one2) :: ext1 !$omp declare simd(ext1) linear(p: ref) simdlen(8) ! { dg-error "OMP DECLARE SIMD should refer to containing procedure 'add_one2'" } integer :: p p = p + 1 end subroutine subroutine linear_add_one2(p) implicit none procedure(linear_add_one2) :: ext2 !$omp declare simd(ext2) linear(p: ref, step(2)) simdlen(8) ! { dg-error "OMP DECLARE SIMD should refer to containing procedure 'linear_add_one2'" } integer :: p p = p + 1 end subroutine module m integer, parameter :: NN = 1023 integer :: a(NN) contains subroutine some_proc(r) integer :: r end subroutine subroutine module_add_one2(q) implicit none !$omp declare simd(some_proc) linear(q: ref) simdlen(8) ! { dg-error "OMP DECLARE SIMD should refer to containing procedure 'module_add_one2'" } integer :: q q = q + 1 end subroutine subroutine module_linear_add_one2(q) implicit none interface subroutine other_proc(r) integer :: r end subroutine end interface !$omp declare simd(other_proc) linear(q: ref, step(2)) simdlen(8) ! { dg-error "OMP DECLARE SIMD should refer to containing procedure 'module_linear_add_one2'" } integer :: q q = q + 1 end subroutine end module