mirror of
https://github.com/autc04/Retro68.git
synced 2024-11-30 19:53:46 +00:00
34 lines
924 B
Fortran
34 lines
924 B
Fortran
|
! { dg-do run }
|
||
|
! { dg-require-effective-target tls_runtime }
|
||
|
|
||
|
PROGRAM A22_7_GOOD
|
||
|
INTEGER, ALLOCATABLE, SAVE :: A(:)
|
||
|
INTEGER, POINTER, SAVE :: PTR
|
||
|
INTEGER, SAVE :: I
|
||
|
INTEGER, TARGET :: TARG
|
||
|
LOGICAL :: FIRSTIN = .TRUE.
|
||
|
!$OMP THREADPRIVATE(A, I, PTR)
|
||
|
ALLOCATE (A(3))
|
||
|
A = (/1,2,3/)
|
||
|
PTR => TARG
|
||
|
I=5
|
||
|
!$OMP PARALLEL COPYIN(I, PTR)
|
||
|
!$OMP CRITICAL
|
||
|
IF (FIRSTIN) THEN
|
||
|
TARG = 4 ! Update target of ptr
|
||
|
I = I + 10
|
||
|
IF (ALLOCATED(A)) A = A + 10
|
||
|
FIRSTIN = .FALSE.
|
||
|
END IF
|
||
|
IF (ALLOCATED(A)) THEN
|
||
|
PRINT *, "a = ", A
|
||
|
ELSE
|
||
|
PRINT *, "A is not allocated"
|
||
|
END IF
|
||
|
PRINT *, "ptr = ", PTR
|
||
|
PRINT *, "i = ", I
|
||
|
PRINT *
|
||
|
!$OMP END CRITICAL
|
||
|
!$OMP END PARALLEL
|
||
|
END PROGRAM A22_7_GOOD
|