blob: d51849df22ca1ac64823736953fe28635f263e6b [file] [edit]
! RUN: %python %S/../test_errors.py %s %flang -fopenmp
! 2.15.3 Data-Sharing Attribute Clauses
! 2.15.3.1 default Clause
subroutine default_none()
integer a(3)
integer, parameter :: D=10
A = 1
B = 2
!$omp parallel default(none) private(c)
!ERROR: The DEFAULT(NONE) clause requires that 'a' must be listed in a data-sharing attribute clause
A(1:2) = 3
!ERROR: The DEFAULT(NONE) clause requires that 'b' must be listed in a data-sharing attribute clause
B = 4
C = 5 + D
!$omp end parallel
end subroutine default_none
! Test that indices of sequential loops are privatised and hence do not error
! for DEFAULT(NONE)
subroutine default_none_seq_loop
integer :: i
!$omp parallel do default(none)
do i = 1, 10
do j = 1, 20
enddo
enddo
end subroutine
! Test that DEFAULT(NONE) error check sees implicit references
subroutine default_none_nested()
integer :: a
!$omp parallel default(none)
!$omp task
!ERROR: The DEFAULT(NONE) clause requires that 'a' must be listed in a data-sharing attribute clause
a = 1
!$omp end task
!$omp end parallel
end subroutine default_none_nested
! Test that we do not error for an explicitly privatized variable
subroutine default_none_private()
integer :: a
!$omp parallel default(none)
!$omp task private(a)
a = 1
!$omp end task
!$omp end parallel
end subroutine
program mm
call default_none()
call default_none_seq_loop()
call default_none_nested()
call default_none_private()
!TODO: private, firstprivate, shared
end