OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc4/] [libgomp/] [testsuite/] [libgomp.fortran/] [appendix-a/] [a.19.1.f90] - Diff between revs 273 and 519

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 273 Rev 519
! { dg-do run }
! { dg-do run }
        SUBROUTINE F1(Q)
        SUBROUTINE F1(Q)
        COMMON /DATA/ P, X
        COMMON /DATA/ P, X
        INTEGER, TARGET :: X
        INTEGER, TARGET :: X
        INTEGER, POINTER :: P
        INTEGER, POINTER :: P
        INTEGER Q
        INTEGER Q
        Q=1
        Q=1
!$OMP FLUSH
!$OMP FLUSH
        ! X, P and Q are flushed
        ! X, P and Q are flushed
        ! because they are shared and accessible
        ! because they are shared and accessible
      END SUBROUTINE F1
      END SUBROUTINE F1
      SUBROUTINE F2(Q)
      SUBROUTINE F2(Q)
        COMMON /DATA/ P, X
        COMMON /DATA/ P, X
        INTEGER, TARGET :: X
        INTEGER, TARGET :: X
        INTEGER, POINTER :: P
        INTEGER, POINTER :: P
        INTEGER Q
        INTEGER Q
!$OMP BARRIER
!$OMP BARRIER
          Q=2
          Q=2
!$OMP BARRIER
!$OMP BARRIER
          ! a barrier implies a flush
          ! a barrier implies a flush
          ! X, P and Q are flushed
          ! X, P and Q are flushed
          ! because they are shared and accessible
          ! because they are shared and accessible
        END SUBROUTINE F2
        END SUBROUTINE F2
      INTEGER FUNCTION G(N)
      INTEGER FUNCTION G(N)
          COMMON /DATA/ P, X
          COMMON /DATA/ P, X
          INTEGER, TARGET :: X
          INTEGER, TARGET :: X
          INTEGER, POINTER :: P
          INTEGER, POINTER :: P
          INTEGER N
          INTEGER N
          INTEGER I, J, SUM
          INTEGER I, J, SUM
          I=1
          I=1
          SUM = 0
          SUM = 0
          P=1
          P=1
!$OMP PARALLEL REDUCTION(+: SUM) NUM_THREADS(2)
!$OMP PARALLEL REDUCTION(+: SUM) NUM_THREADS(2)
          CALL F1(J)
          CALL F1(J)
                ! I, N and SUM were not flushed
                ! I, N and SUM were not flushed
                !   because they were not accessible in F1
                !   because they were not accessible in F1
                ! J was flushed because it was accessible
                ! J was flushed because it was accessible
          SUM = SUM + J
          SUM = SUM + J
          CALL F2(J)
          CALL F2(J)
                ! I, N, and SUM were not flushed
                ! I, N, and SUM were not flushed
                ! because they were not accessible in f2
                ! because they were not accessible in f2
                ! J was flushed because it was accessible
                ! J was flushed because it was accessible
          SUM = SUM + I + J + P + N
          SUM = SUM + I + J + P + N
!$OMP END PARALLEL
!$OMP END PARALLEL
          G = SUM
          G = SUM
      END FUNCTION G
      END FUNCTION G
      PROGRAM A19
      PROGRAM A19
        COMMON /DATA/ P, X
        COMMON /DATA/ P, X
        INTEGER, TARGET :: X
        INTEGER, TARGET :: X
        INTEGER, POINTER :: P
        INTEGER, POINTER :: P
        INTEGER RESULT, G
        INTEGER RESULT, G
        P => X
        P => X
        RESULT = G(10)
        RESULT = G(10)
        PRINT *, RESULT
        PRINT *, RESULT
        IF (RESULT .NE. 30) THEN
        IF (RESULT .NE. 30) THEN
          CALL ABORT
          CALL ABORT
        ENDIF
        ENDIF
      END PROGRAM A19
      END PROGRAM A19
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.