https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81205

--- Comment #2 from Pasha <pasha.313 at hotmail dot com> ---
This is my main routine for example
.
.
.
!!$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(K,jL)
    DO k=1,nG3
       DO jL=1,nL2
          j = idx2start + jL
          IF(masque(j,k))THEN

             ! dudx
             CALL fvec (nG1,curC(1:nG1,jL,k), difles1C(1:nG1,jL,k))
             CALL tridgn (ff,s1,w1,difles1C(1:nG1,jL,k), nG1,1)
          ENDIF
       ENDDO
    ENDDO
!!$OMP END PARALLEL DO
.
.
.

This is one of those subroutine

SUBROUTINE fvec (n,y,q)
!
!    Multiplie le vecteur y par les coefs de la matrice
!    passee en common (param6) et le retourne dans q
    USE OMP_LIB
    IMPLICIT NONE

    INTEGER,    INTENT(IN) :: n
    REAL(prec), DIMENSION(n), INTENT(IN)  :: y
    REAL(prec), DIMENSION(n), INTENT(OUT) :: q

    INTEGER :: i,nm,nmm
    !
    nmm=n-2
    nm =n-1

    q(1) = af0*y(1)+bf0*y(2) +cf0*y(3)  +df0*y(4)  +ef0*y(5)
    q(2) = af1*y(3)-af1*y(1)
    q(nm)= af1*y(n)-af1*y(nmm)
    q(n) =-ag0*y(n)-bg0*y(nm)-cg0*y(nmm)-dg0*y(n-3)-eg0*y(n-4)
    !
    IF(bf2.EQ.ZERO)THEN
!!$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(I)
        DO i=3,nmm
          q(i)=af2*y(i+1)-af2*y(i-1)
        ENDDO
!!$OMP END PARALLEL DO
    ELSE
!!$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(I)
        DO i=3,nmm
          q(i)=af2*y(i+1)-af2*y(i-1)+bf2*y(i+2)-bf2*y(i-2)
        ENDDO
!!$OMP END PARALLEL DO
    ENDIF

  END SUBROUTINE fvec

please be aware that OMP commands works well in other subroutines except those
who has loops and calling from inside a main code.
So for running the program, I disabled all OMP commands in these subroutines
and some part of codes as you can see.

Reply via email to