blob: dcde963689eb0dd1b9bd35e95c6c840be05312f5 [file] [log] [blame] [edit]
! RUN: %flang -fsyntax-only -fopenmp %s 2>&1
! Check that OpenMP declarative directives can be used with objects that have
! an incomplete type.
subroutine test_decl
! OMPv5.2 5.2 threadprivate
! OMPv5.2 6.5 allocate
implicit none
save :: x1, y1
!$omp threadprivate(x1)
!$omp allocate(y1)
integer :: x1, y1
! OMPv5.2 7.7 declare-simd
external :: simd_func
!$omp declare simd(simd_func)
logical :: simd_func
! OMPv5.2 7.8.1 declare-target
allocatable :: j
!$omp declare target(j)
save :: j
real(kind=8) :: j(:)
! OMPv5.2 5.5.11 declare-reduction - crashes
!external :: my_add_red
!!$omp declare reduction(my_add_red : integer : my_add_red(omp_out, omp_in)) &
!!$omp& initializer(omp_priv=0)
!integer :: my_add_red
end subroutine
subroutine test_decl2
save x1, y1
!$omp threadprivate(x1)
!$omp allocate(y1)
integer :: x1, y1
! implicit decl
!$omp threadprivate(x2)
!$omp allocate(y2)
save x2, y2
end subroutine
module m1
! implicit decl
!$omp threadprivate(x, y, z)
integer :: y
real :: z
contains
subroutine sub
!$omp parallel copyin(x, y, z)
!$omp end parallel
end subroutine
end module