mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			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
 |