blob: 23db74cc666da2458a22157381d25ca19466080b [file] [log] [blame]
! { dg-do compile }
module m
integer :: i
end module m
subroutine f1
type t
integer :: i
end type t
interface
integer function f3 (a, b)
!$omp declare simd (f3) uniform (a)
use m
import :: t
implicit none
type (t) :: a
integer :: b
end function f3
end interface
interface
integer function f4 (a, b)
use m
!$omp declare simd (f4) uniform (a)
import :: t
implicit none
type (t) :: a
integer :: b
end function f4
end interface
interface
integer function f5 (a, b)
use m
import :: t
!$omp declare simd (f5) uniform (a)
implicit none
type (t) :: a
integer :: b
end function f5
end interface
interface
integer function f6 (a, b)
use m
import :: t
implicit none
!$omp declare simd (f6) uniform (a)
type (t) :: a
integer :: b
end function f6
end interface
interface
integer function f7 (a, b)
use m
import :: t
implicit none
type (t) :: a
!$omp declare simd (f7) uniform (a)
integer :: b
end function f7
end interface
call f2
contains
subroutine f2
!$omp threadprivate (t1)
use m
!$omp threadprivate (t2)
implicit none
!$omp threadprivate (t3)
integer, save :: t1, t2, t3, t4
!$omp threadprivate (t4)
t1 = 1; t2 = 2; t3 = 3; t4 = 4
end subroutine f2
subroutine f8
!$omp declare reduction (f8_1:real:omp_out = omp_out + omp_in)
use m
!$omp declare reduction (f8_2:real:omp_out = omp_out + omp_in)
implicit none
!$omp declare reduction (f8_3:real:omp_out = omp_out + omp_in)
integer :: j
!$omp declare reduction (f8_4:real:omp_out = omp_out + omp_in)
end subroutine f8
subroutine f9
!$omp declare target (f9_1)
use m
!$omp declare target (f9_2)
implicit none
!$omp declare target (f9_3)
!$omp declare target
integer, save :: f9_1, f9_2, f9_3, f9_4
!$omp declare target (f9_4)
f9_1 = 1; f9_2 = 2; f9_3 = 3; f9_4 = 4
end subroutine f9
end subroutine f1