https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61627
Bug ID: 61627 Summary: specification expression ICE with version 4.7.1 and 4.8.2, incorrect output with 4.4.7 and 4.9.0 Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: harper at msor dot vuw.ac.nz This 4-line Fortran program character(len('xyz')):: head1(2) = (/'a','b'/) character(3) :: head2(2) = (/'x','y'/) write(*,*) head1,head2 end program gives an ICE with gfortran 4.7.1 or 4.8.2. It compiles and runs with gfortran 4.4.7 or 4.9.0 but gives what I believe to be wrong output: those compiler versions treated head1 as being declared with length 1. G95 version 0.94, ifort version 14.0.0 and Sun Fortran 8.6 all get it right, declaring head1 with length 3. With version 4.8.2 (same ICE message with 4.7.1 except for varasm.c:4821): cayley[~/Jfh] % gfortran -v Using built-in specs. COLLECT_GCC=gfortran COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-unknown-linux-gnu/4.8.2/lto-wrapper Target: x86_64-unknown-linux-gnu Configured with: /build/gcc/src/gcc-4.8-20131219/configure --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-shared --enable-threads=posix --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch --disable-libssp --enable-gnu-unique-object --enable-linker-build-id --enable-cloog-backend=isl --disable-cloog-version-check --enable-lto --enable-plugin --enable-install-libiberty --with-linker-hash-style=gnu --disable-multilib --disable-werror --enable-checking=release Thread model: posix gcc version 4.8.2 20131219 (prerelease) (GCC) cayley[~/Jfh] % gfortran gfbug.f90 gfbug.f90:4:0: internal compiler error: in output_constructor_regular_field, at varasm.c:4813 end program ^ Please submit a full bug report, with preprocessed source if appropriate. See <https://bugs.archlinux.org/> for instructions. cayley[~/Jfh] % With 4.9.0 (same result with 4.4.7): cayley[~/Jfh] % gf gfbug.f90 cayley[~/Jfh] % ./a.out abx y cayley[~/Jfh] % It seems that head1 was declared with length 1 instead of len('xyz') which is 3; I believe the 4.9.0 output should have been a b x y which is what g95, Intel and Sun all gave.