Open
Description
Please consider implementing better FIRSTPRIVATE/LASTPRIVATE diagnostics based on comments in #143764 (comment)
In case Fujitsu fixes the tests mentioned in the above issue, here are their sources that caused the issue to be filed in the first place:
0521_0030.f90:
INTEGER :: i
i=1
i0=1
i1=1
j=2
!$OMP PARALLEL default(firstprivate)
!$OMP SECTIONS
!$OMP parallel private(i)
i=100
!$OMP END parallel
!$OMP parallel firstprivate(i0)
i0=100
!$OMP END parallel
!$OMP parallel do lastprivate(i1)
do ii=1,1
i1=100
end do
!$OMP END parallel do
!$OMP parallel shared(j)
j=200
!$OMP END parallel
!$OMP END SECTIONS
!$OMP END PARALLEL
if (i.ne.1) print *,'err var i=',i
if (i0.ne.1) print *,'err var i0=',i0
if (i1.ne.100) print *,'err var i1=',i1
if (j.ne.2) print *,'err var j=',j
print *,'pass'
END
0686_0024.f90:
module mod0
integer::i,ii,iii,iiii
end module
module mod1
use mod0
integer::j,jj,jjj,jjjj
integer::k=0
end module
program ompv2
use mod1
common /com/ m,mm,mmm,mmmm
!$omp parallel num_threads(10)
!$omp do reduction(+:k),lastprivate(i,ii,iii,iiii),firstprivate(j,jj,jjj,jjjj)
do i=1,10
do ii=1,10
do iii=1,10
do iiii=1,10
k=k+1
enddo
enddo
enddo
enddo
!$omp do reduction(+:i,ii,iii),lastprivate(j,jj,jjj,jjjj),firstprivate(m,mm,mmm,mmmm)
do j=1,iiii-1
do jj=1,iiii-1
do jjj=1,iiii-1
do jjjj=1,iiii-1
i=i+1
ii=ii+1
iii=iii+1
enddo
enddo
enddo
enddo
!$omp do reduction(+:j,jj,jjj),lastprivate(m,mm,mmm,mmmm)
do m=1,jjjj-1
do mm=1,jjjj-1
do mmm=1,jjjj-1
do mmmm=1,jjjj-1
j=j+1
jj=jj+1
jjj=jjj+1
enddo
enddo
enddo
enddo
!$omp end parallel
if (k/=10000) print *,k
if (i/=10011.or.ii/=10011.or.iii/=10011.or.iiii/=11) print *,i,ii,iii,iiii
if (j/=10011.or.jj/=10011.or.jjj/=10011.or.jjjj/=11) print *,j,jj,jjj,jjjj
if (m/=11.or.mm/=11.or.mmm/=11.or.mmmm/=11) print *,m,mm,mmm,mmmm
print *,'pass'
end