The following code, when compiled with /64 /opt, causes an internal compiler error. When the lines containing L1 are removed, the ICE does not occur.
subroutine revprt()
implicit none
integer ia,ib,idx,j,kpagen
character*170 crec
logical*1 :: l1
!
kpagen = 0
do idx = kpagen,1,-1
do j = 1,42
ia = 1 + 4*(j-1)
ib = ia + 3
crec(ia:ib) = ' '
end do
do ia = 168,1,-1
if(crec(ia:ia) .ne. ' ') exit
end do
l1 = .false.
do j = 14,1,-1
if(crec(j:j) .ne. ' ' .and. .not.l1) l1 = .true.
if(l1 .and. crec(j:j) .eq. ' ') exit
end do
kpagen = kpagen + 1
if(idx .eq. 1) exit
end do
return
end
P.S.: If the type of variable L1 is changed from LOGICAL*1 to just LOGICAL, the ICE goes away.