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

Reply via email to