On the attached (Fortran) source, the following version of gfortran
draws an ICE:
$ gfortran -v
Using built-in specs.
COLLECT_GCC=gfortran
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/6/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 6.2.1-5'
--with-bugurl=file:///usr/share/doc/gcc-6/README.Bugs
--enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++
--prefix=/usr --program-suffix=-6 --program-prefix=x86_64-linux-gnu-
--enable-shared --enable-linker-build-id --libexecdir=/usr/lib
--without-included-gettext --enable-threads=posix --libdir=/usr/lib
--enable-nls --with-sysroot=/ --enable-clocale=gnu
--enable-libstdcxx-debug --enable-libstdcxx-time=yes
--with-default-libstdcxx-abi=new --enable-gnu-unique-object
--disable-vtable-verify --enable-libmpx --enable-plugin
--enable-default-pie --with-system-zlib --disable-browser-plugin
--enable-java-awt=gtk --enable-gtk-cairo
--with-java-home=/usr/lib/jvm/java-1.5.0-gcj-6-amd64/jre
--enable-java-home
--with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-6-amd64
--with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-6-amd64
--with-arch-directory=amd64
--with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc=auto
--enable-multiarch --with-arch-32=i686 --with-abi=m64
--with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic
--enable-checking=release --build=x86_64-linux-gnu
--host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 6.2.1 20161124 (Debian 6.2.1-5)
using the following command line arguments:
gfortran -S -g -Ofast -fprotect-parens -fbacktrace -march=native
-mtune=native -floop-nest-optimize corr_to_spec_2D.F
The error message is:
corr_to_spec_2D.F:3:0:
subroutine corr_to_spec_2D(nx_local,ny_local,
internal compiler error: in create_pw_aff_from_tree, at
graphite-sese-to-poly.c:445
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-6/README.Bugs> for instructions.
I will retry this with trunk gfortran as soon as my automatic builds
have constructed that compiler.
In the mean time - anyone has a clue ?
Thanks,
--
Toon Moene - e-mail: t...@moene.org - phone: +31 346 214290
Saturnushof 14, 3738 XG Maartensdijk, The Netherlands
At home: http://moene.org/~toon/; weather: http://moene.org/~hirlam/
Progress of GNU Fortran: http://gcc.gnu.org/wiki/GFortran#news
c Library: hljb $Id: corr_to_spec_2D.F 8416 2010-09-08 08:52:33Z ovignes $
c
subroutine corr_to_spec_2D(nx_local,ny_local,
x ny_global,
x nxl_global,nyl_global,
x kmax_local,
x kmax_global,lmax_global,
x mype,nproc,nydim,kdim,
x lmaxe,
x jmin_list,ny_list,
x kmin_list,kmax_list,
x levmin_list,levmax_list,
x gridsize,lscale,
x spec_dens_2D, corr_index)
c
implicit none
c
c-------------------------------------------------------------------------------
c
integer nx_local,ny_local,
x ny_global,
x nxl_global,nyl_global,
x kmax_local,
x kmax_global,lmax_global,
x mype,nproc,nydim,kdim,
x lmaxe(0:kmax_local),
x jmin_list(nproc),ny_list(nproc),
x kmin_list(nproc),kmax_list(nproc),
x levmin_list(0:kdim,nproc),
x levmax_list(0:kdim,nproc)
real gridsize,lscale
real
x spec_dens_2D(-lmax_global:lmax_global,0:kmax_local)
integer corr_index
c
c-------------------------------------------------------------------------------
c
c Local work space
c
integer nextended,kextended,i,j,j_global,jlev,k,l,kwave
real dist,dx,dy, sum_spec
real, allocatable :: corr_extended(:,:,:)
complex, allocatable :: spec_corr(:,:)
c
complex spec_dens_cmpx(-lmax_global:lmax_global,0:kmax_local)
real phys_corr_appr(nx_local,ny_local)
real phys_corr_orig(nx_local,ny_local)
c
real spec_eps
parameter (spec_eps = 0.000001)
c
c-------------------------------------------------------------------------------
c
c Allocate space for correlation in physical space
c including extension zone and in spectral space
c
nextended = nyl_global/ny_global+1
if (mype.eq.1) write(6,*)' nextended=',nextended
allocate(corr_extended(nxl_global,ny_local,nextended))
allocate(spec_corr(-lmax_global:lmax_global,0:kmax_local))
c
c-------------------------------------------------------------------------------
c
c Construct correlation in physical space
call corr_ext( nextended, nxl_global,
x ny_local,ny_global,nyl_global,
x gridsize, lscale,
x corr_extended, corr_index,
x mype,nproc,jmin_list )
c
if (mype.eq.1) write(6,*)' CORRELATION FUNCTION DONE'
c-------------------------------------------------------------------------------
c
c Construct spectral density by direct FFT of correlation
c
c
call extended_to_sp(corr_extended,spec_corr,nextended,1,
1 mype,lmaxe,kmax_local,ny_local,
x lmax_global,nxl_global,nyl_global,
x kmax_global,nproc,kdim,ny_global,nydim,
x ny_global+1,jmin_list,kmin_list,ny_list,
x kmax_list,levmin_list,levmax_list)
c
c
do k=0,kmax_local
if (levmin_list(k,mype).eq.1) then
do l=-lmaxe(k),lmaxe(k)
spec_dens_2D(l,k) = real(spec_corr(l,k))
if (spec_dens_2D(l,k).lt.spec_eps)
x spec_dens_2D(l,k) = spec_eps
end do
endif
end do
c
c-------------------------------------------------------------------------------
c
c Normalize the derived correlation spectrum
c in the form needed for the variational assimilation
c
sum_spec = 0.
c
do k=0,kmax_local
if (levmin_list(k,mype).eq.1) then
do l=-lmaxe(k),lmaxe(k)
kwave = kmin_list(mype) + k
if (kwave.eq.0) then
sum_spec = sum_spec +
x spec_dens_2D(l,k)
else
sum_spec = sum_spec +
x 2*spec_dens_2D(l,k)
endif
end do
endif
end do
c
call sum_cov(nproc,mype,sum_spec,1)
c
do k=0,kmax_local
if (levmin_list(k,mype).eq.1) then
do l=-lmaxe(k),lmaxe(k)
spec_dens_2D(l,k) = spec_dens_2D(l,k)
c x / ( sum_spec/sqrt(float(nxl_global*nyl_global)) )
x / ( sum_spec/float(nxl_global*nyl_global) )
end do
endif
end do
c
spec_dens_cmpx(:,:) = (0.,0.)
do k=0,kmax_local
if (levmin_list(k,mype).eq.1) then
do l=-lmaxe(k),lmaxe(k)
spec_dens_cmpx(l,k) = cmplx(spec_dens_2D(l,k),0.)
end do
endif
end do
call fft_inv(spec_dens_cmpx,
x phys_corr_appr,
x 1,mype,kmax_local,lmaxe,ny_local,
x nx_local,kmax_global,lmax_global,
x nproc,kdim,nydim,
x nxl_global,nyl_global,
x jmin_list,kmin_list,ny_list,kmax_list,
x levmin_list,levmax_list)
call corr_ext( 1, nx_local,
x ny_local,ny_global,ny_global,
x gridsize, lscale,
x phys_corr_orig, 2,
x mype,nproc,jmin_list )
c
return
c
end