xref: /llvm-project/flang/test/Semantics/OpenMP/copying.f90 (revision 0ee6646d6fb3b0b9a3655b14bd1cbc18a4e99600)
11c91d9bdSPeter Klausler! RUN: %python %S/../test_errors.py %s %flang -fopenmp -Werror -pedantic
23323a4bdSKiran Chandramohan! OpenMP Version 5.0
33323a4bdSKiran Chandramohan! 2.19.4.4 firstprivate Clause
43323a4bdSKiran Chandramohan! 2.19.4.5 lastprivate Clause
53323a4bdSKiran Chandramohan! 2.19.6.1 copyin Clause
63323a4bdSKiran Chandramohan! 2.19.6.2 copyprivate Clause
73323a4bdSKiran Chandramohan! If the list item is a polymorphic variable with the allocatable attribute,
83323a4bdSKiran Chandramohan! the behavior is unspecified.
93323a4bdSKiran Chandramohan
103323a4bdSKiran Chandramohansubroutine firstprivate()
113323a4bdSKiran Chandramohan  class(*), allocatable, save :: x
123323a4bdSKiran Chandramohan
133323a4bdSKiran Chandramohan  !PORTABILITY: If a polymorphic variable with allocatable attribute 'x' is in FIRSTPRIVATE clause, the behavior is unspecified
143323a4bdSKiran Chandramohan  !$omp parallel firstprivate(x)
153323a4bdSKiran Chandramohan    call sub()
163323a4bdSKiran Chandramohan  !$omp end parallel
173323a4bdSKiran Chandramohan
183323a4bdSKiran Chandramohanend
193323a4bdSKiran Chandramohan
203323a4bdSKiran Chandramohansubroutine lastprivate()
213323a4bdSKiran Chandramohan  class(*), allocatable, save :: x
223323a4bdSKiran Chandramohan
233323a4bdSKiran Chandramohan  !PORTABILITY: If a polymorphic variable with allocatable attribute 'x' is in LASTPRIVATE clause, the behavior is unspecified
243323a4bdSKiran Chandramohan  !$omp do lastprivate(x)
253323a4bdSKiran Chandramohan  do i = 1, 10
263323a4bdSKiran Chandramohan    call sub()
273323a4bdSKiran Chandramohan  enddo
283323a4bdSKiran Chandramohan  !$omp end do
293323a4bdSKiran Chandramohan
303323a4bdSKiran Chandramohanend
313323a4bdSKiran Chandramohan
323323a4bdSKiran Chandramohansubroutine copyin()
333323a4bdSKiran Chandramohan  class(*), allocatable, save :: x
343323a4bdSKiran Chandramohan  !$omp threadprivate(x)
353323a4bdSKiran Chandramohan
363323a4bdSKiran Chandramohan  !PORTABILITY: If a polymorphic variable with allocatable attribute 'x' is in COPYIN clause, the behavior is unspecified
373323a4bdSKiran Chandramohan  !$omp parallel copyin(x)
383323a4bdSKiran Chandramohan    call sub()
393323a4bdSKiran Chandramohan  !$omp end parallel
403323a4bdSKiran Chandramohan
413323a4bdSKiran Chandramohanend
423323a4bdSKiran Chandramohan
433323a4bdSKiran Chandramohansubroutine copyprivate()
443323a4bdSKiran Chandramohan  class(*), allocatable, save :: x
453323a4bdSKiran Chandramohan  !$omp threadprivate(x)
463323a4bdSKiran Chandramohan
47*666a6197SKiran Kumar T P  !$omp single
483323a4bdSKiran Chandramohan    call sub()
49*666a6197SKiran Kumar T P  !PORTABILITY: If a polymorphic variable with allocatable attribute 'x' is in COPYPRIVATE clause, the behavior is unspecified
50*666a6197SKiran Kumar T P  !$omp end single copyprivate(x)
513323a4bdSKiran Chandramohan
523323a4bdSKiran Chandramohanend
53