blob: 5fc42054882f03bed5e3ba3f911d24e99dee00c2 [file] [edit]
! RUN: %flang_fc1 -fdebug-dump-symbols -fopenmp -fopenmp-version=50 %s | FileCheck %s
module m1
interface operator(.fluffy.)
!CHECK: .fluffy., PUBLIC (Function): Generic DefinedOp procs: my_mul
procedure my_mul
end interface
type t1
integer :: val = 1
end type
!$omp declare reduction(.fluffy.:t1:omp_out=omp_out.fluffy.omp_in)
!CHECK: op.fluffy., PUBLIC: UserReductionDetails TYPE(t1)
!CHECK: t1, PUBLIC: DerivedType components: val
!CHECK: OtherConstruct scope: size=8 alignment=4 sourceRange=0 bytes
!CHECK: omp_in size=4 offset=0: ObjectEntity type: TYPE(t1)
!CHECK: omp_out size=4 offset=4: ObjectEntity type: TYPE(t1)
contains
function my_mul(x, y)
type (t1), intent (in) :: x, y
type (t1) :: my_mul
my_mul%val = x%val * y%val
end function my_mul
subroutine subr(a, r)
implicit none
type(t1), intent(in), dimension(10) :: a
type(t1), intent(out) :: r
integer :: i
!$omp parallel do reduction(.fluffy.:r)
do i=1,10
r = r .fluffy. a(i)
end do
end subroutine subr
end module m1