rt_gccstream/libgomp/testsuite/libgomp.fortran/appendix-a/a.28.5.f90

30 lines
947 B
Fortran

! { dg-do compile }
SUBROUTINE SUB1(X)
DIMENSION X(10)
! This use of X does not conform to the
! specification. It would be legal Fortran 90,
! but the OpenMP private directive allows the
! compiler to break the sequence association that
! A had with the rest of the common block.
FORALL (I = 1:10) X(I) = I
END SUBROUTINE SUB1
PROGRAM A28_5
COMMON /BLOCK5/ A
DIMENSION B(10)
EQUIVALENCE (A,B(1))
! the common block has to be at least 10 words
A=0
!$OMP PARALLEL PRIVATE(/BLOCK5/)
! Without the private clause,
! we would be passing a member of a sequence
! that is at least ten elements long.
! With the private clause, A may no longer be
! sequence-associated.
CALL SUB1(A)
!$OMP MASTER
PRINT *, A
!$OMP END MASTER
!$OMP END PARALLEL
END PROGRAM A28_5