! @@name: threadprivate.5f ! @@type: F-fixed ! @@compilable: yes ! @@linkable: yes ! @@expect: success PROGRAM INC_GOOD2 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 INC_GOOD2