This is GCC Bugzilla
This is GCC Bugzilla Version 2.20+
View Bug Activity | Format For Printing | Clone This Bug
This snippet of code is a f95-ification of old legacy code that generates an ICE/segmentation fault on this particular kind of internal write. Other compilers accept it. troogle> gfortran -c -v !$ gfortran -c -v n15.f95 Reading specs from /OPT/32/gcc-2004-06-09/lib/gcc/hppa2.0w-hp-hpux11.11/3.5. 0/specs Configured with: ../configure --enable-languages=c,f95 --prefix=/opt32/gcc-2004-06-09 --with-gmp=/opt32/gmp --with-gnu-as --with-as=/opt32/binutils/bin/as --enable-threads --disable-shared --disable-nls Thread model: posix gcc version 3.5.0 20040611 (experimental) /OPT/32/gcc-2004-06-09/libexec/gcc/hppa2.0w-hp-hpux11.11/3.5.0/f951 n15.f95 -quiet -dumpbase n15.f95 -auxbase n15 -version -o /var/tmp//cc5B5831.s GNU F95 version 3.5.0 20040611 (experimental) (hppa2.0w-hp-hpux11.11) compiled by GNU C version 3.5.0 20040611 (experimental). GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 n15.f95: In function `a': n15.f95:7: internal compiler error: Segmentation fault subroutine a() implicit none integer :: i character(100) :: r(1) write(r,*) I end subroutine a
Confirmed, here is the backtrace: #0 0x080a40e0 in gfc_conv_scalarized_array_ref (se=0xbffebfe0, ar=0x85a9884) at /home/gates/ pinskia/src/gnu/gcc/src/gcc/fortran/trans-array.c:1417 #1 0x080a418d in gfc_conv_array_ref (se=0xbffebfe0, ar=0x85a9884) at /home/gates/pinskia/src/ gnu/gcc/src/gcc/fortran/trans-array.c:1465 #2 0x08096bfc in gfc_conv_expr (se=0xbffebfe0, expr=0x85a9820) at /home/gates/pinskia/src/gnu/ gcc/src/gcc/fortran/trans-expr.c:327 #3 0x080a0ae7 in set_string (block=0xbffec058, postblock=0xbffec050, var=0x400ef414, var_len=0x400ef488, e=0x85a9820) at /home/gates/pinskia/src/gnu/gcc/src/gcc/fortran/trans-io.c:387 #4 0x080a1cf3 in build_dt (function=0x84f4ea0, code=Variable "code" is not available. ) at /home/gates/pinskia/src/gnu/gcc/src/gcc/fortran/trans-io.c:865 #5 0x0808d65d in gfc_trans_code (code=0x85a9b20) at /home/gates/pinskia/src/gnu/gcc/src/gcc/ fortran/trans.c:574 #6 0x08091a3d in gfc_generate_function_code (ns=0x85a8ec0) at /home/gates/pinskia/src/gnu/gcc/ src/gcc/fortran/trans-decl.c:2046 #7 0x0808d853 in gfc_generate_code (ns=0x85a8ec0) at /home/gates/pinskia/src/gnu/gcc/src/gcc/ fortran/trans.c:651 #8 0x080735a7 in gfc_parse_file () at /home/gates/pinskia/src/gnu/gcc/src/gcc/fortran/parse.c:2477 #9 0x0808a06c in gfc_be_parse_file (set_yydebug=0) at /home/gates/pinskia/src/gnu/gcc/src/gcc/ fortran/f95-lang.c:266 #10 0x0838c4a8 in toplev_main (argc=0, argv=0xbffec304) at /home/gates/pinskia/src/gnu/gcc/src/ gcc/toplev.c:1666 #11 0x420174d9 in __libc_start_main () from /lib/i686/libc.so.6 #12 0x0804b071 in _start ()
*** Bug 16535 has been marked as a duplicate of this bug. ***
*** Bug 16124 has been marked as a duplicate of this bug. ***
*** Bug 18834 has been marked as a duplicate of this bug. ***
Note that this compiles and runs OK subroutine a() implicit none integer :: i character(100) :: r !! eliminate dimension => works write(r,*) I end subroutine a
*** Bug 20057 has been marked as a duplicate of this bug. ***
*** Bug 20990 has been marked as a duplicate of this bug. ***
Same thing happens with read: integer i character*4 c(1) read (c,fmt='(A4)') i end Program received signal SIGSEGV, Segmentation fault. 0x080a760b in gfc_conv_scalarized_array_ref (se=0xbffff740, ar=0x87b48bc) at ../../../gcc/gcc/fortran/trans-array.c:1578 1576 info = &se->ss->data.info; 1577 if (ar) 1578 n = se->loop->order[0]; 1579 else 1580 n = 0; Seeing the number of duplicates for this one, I'm sure we want to get it on our Ten Most Wanted list.
*** Bug 18781 has been marked as a duplicate of this bug. ***
*** Bug 21406 has been marked as a duplicate of this bug. ***
*** Bug 22021 has been marked as a duplicate of this bug. ***
*** Bug 21902 has been marked as a duplicate of this bug. ***
Well, this one should be so difficult. I think the tweak should be in io.c: /* Resolve everything in a gfc_dt structure. */ try gfc_resolve_dt (gfc_dt * dt) There is some code called "Sanity checks on data transfer statements", where we might check for the case where the io_unit is a character array, and then substitute the code for its lower element. Since, I'm really not used to the guts of the front-end, I can't do more than that (and I'm not sure this analysis is correct), but this doesn't seem so difficult...
*** Bug 20843 has been marked as a duplicate of this bug. ***
*** Bug 22160 has been marked as a duplicate of this bug. ***
Subject: Bug 15966 CVSROOT: /cvs/gcc Module name: gcc Changes by: fengwang@gcc.gnu.org 2005-07-07 07:55:00 Modified files: libgfortran : ChangeLog gcc/fortran : ChangeLog arith.c expr.c intrinsic.c io.c misc.c primary.c simplify.c trans-const.c trans-io.c arith.h gfortran.h gcc/testsuite : ChangeLog libgfortran/io : transfer.c Added files: gcc/testsuite/gfortran.dg: hollerith.f90 hollerith2.f90 hollerith3.f90 hollerith4.f90 hollerith_f95.f90 hollerith_legacy.f90 gcc/testsuite/gfortran.dg/g77: cpp4.F Log message: For the 60th anniversary of Chinese people¡¯s Anti-Japan war victory. 2005-07-07 Feng Wang <fengwang@nudt.edu.cn> PR fortran/16531 PR fortran/15966 PR fortran/18781 * arith.c (gfc_hollerith2int, gfc_hollerith2real, gfc_hollerith2complex, gfc_hollerith2character, gfc_hollerith2logical): New functions. (eval_intrinsic): Don't evaluate if Hollerith constant arguments exist. * arith.h (gfc_hollerith2int, gfc_hollerith2real, gfc_hollerith2complex, gfc_hollerith2character, gfc_hollerith2logical): Add prototypes. * expr.c (free_expr0): Free memery allocated for Hollerith constant. (gfc_copy_expr): Allocate and copy string if Expr is from Hollerith. (gfc_check_assign): Enable conversion from Hollerith to other. * gfortran.h (bt): Add BT_HOLLERITH. (gfc_expr): Add from_H flag. * intrinsic.c (gfc_type_letter): Return 'h' for BT_HOLLERITH. (add_conversions): Add conversions from Hollerith constant to other. (do_simplify): Don't simplify if Hollerith constant arguments exist. * io.c (resolve_tag): Enable array in FORMAT tag under GFC_STD_GNU. * misc.c (gfc_basetype_name): Return "HOLLERITH" for BT_HOLLERITH. (gfc_type_name): Print "HOLLERITH" for BT_HOLLERITH. * primary.c (match_hollerith_constant): New function. (gfc_match_literal_constant): Add match Hollerith before Integer. * simplify.c (gfc_convert_constant): Add conversion from Hollerith to other. * trans-const.c (gfc_conv_constant_to_tree): Use VIEW_CONVERT_EXPR to convert Hollerith constant to tree. * trans-io.c (gfc_convert_array_to_string): Get array's address and length to set string expr. (set_string): Deal with array assigned Hollerith constant and character array. * gfortran.texi: Document Hollerith constants as extention support. 2005-07-07 Feng Wang <fengwang@nudt.edu.cn> PR fortran/16531 PR fortran/15966 PR fortran/18781 * gfortran.dg/hollerith.f90: New. * gfortran.dg/hollerith2.f90: New. * gfortran.dg/hollerith3.f90: New. * gfortran.dg/hollerith4.f90: New. * gfortran.dg/hollerith_f95.f90: New. * gfortran.dg/hollerith_legacy.f90: New. * gfortran.dg/g77/cpp4.F: New. Port from g77. 2005-07-07 Feng Wang <fengwang@nudt.edu.cn> PR fortran/16531 * io/transfer.c (formatted_transfer): Enable FMT_A on other types to support Hollerith constants. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/ChangeLog.diff?cvsroot=gcc&r1=1.255&r2=1.256 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/ChangeLog.diff?cvsroot=gcc&r1=1.485&r2=1.486 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/arith.c.diff?cvsroot=gcc&r1=1.29&r2=1.30 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/expr.c.diff?cvsroot=gcc&r1=1.26&r2=1.27 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/intrinsic.c.diff?cvsroot=gcc&r1=1.51&r2=1.52 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/io.c.diff?cvsroot=gcc&r1=1.27&r2=1.28 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/misc.c.diff?cvsroot=gcc&r1=1.9&r2=1.10 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/primary.c.diff?cvsroot=gcc&r1=1.28&r2=1.29 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/simplify.c.diff?cvsroot=gcc&r1=1.29&r2=1.30 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/trans-const.c.diff?cvsroot=gcc&r1=1.28&r2=1.29 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/trans-io.c.diff?cvsroot=gcc&r1=1.37&r2=1.38 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/arith.h.diff?cvsroot=gcc&r1=1.6&r2=1.7 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/gfortran.h.diff?cvsroot=gcc&r1=1.74&r2=1.75 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.5732&r2=1.5733 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/io/transfer.c.diff?cvsroot=gcc&r1=1.46&r2=1.47 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/hollerith.f90.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/hollerith2.f90.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/hollerith3.f90.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/hollerith4.f90.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/hollerith_f95.f90.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/hollerith_legacy.f90.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/g77/cpp4.F.diff?cvsroot=gcc&r1=NONE&r2=1.1
*** Bug 22342 has been marked as a duplicate of this bug. ***
Subject: Bug 15966 CVSROOT: /cvs/gcc Module name: gcc Branch: gcc-4_0-branch Changes by: fengwang@gcc.gnu.org 2005-07-12 01:50:48 Modified files: libgfortran : ChangeLog libgfortran/intrinsics: etime.c getcwd.c stat.c unlink.c libgfortran/io : transfer.c unit.c libgfortran/runtime: string.c gcc/testsuite : ChangeLog gcc/fortran : ChangeLog arith.c arith.h expr.c gfortran.h gfortran.texi intrinsic.c io.c misc.c primary.c simplify.c trans-const.c trans-io.c Added files: gcc/testsuite/gfortran.dg: hollerith.f90 hollerith2.f90 hollerith3.f90 hollerith4.f90 hollerith_f95.f90 hollerith_legacy.f90 gcc/testsuite/gfortran.dg/g77: cpp4.F Log message: 2005-07-12 Feng Wang <fengwang@nudt.edu.cn> Backport from the mainline: 2005-03-05 Tobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de> * trans-const.c (gfc_conv_constant_to_tree): Use correct tree type for COMPLEX constants. 2005-07-07 Feng Wang <fengwang@nudt.edu.cn> PR fortran/16531 PR fortran/15966 PR fortran/18781 * arith.c (gfc_hollerith2int, gfc_hollerith2real, gfc_hollerith2complex, gfc_hollerith2character, gfc_hollerith2logical): New functions. (eval_intrinsic): Don't evaluate if Hollerith constant arguments exist. * arith.h (gfc_hollerith2int, gfc_hollerith2real, gfc_hollerith2complex, gfc_hollerith2character, gfc_hollerith2logical): Add prototypes. * expr.c (free_expr0): Free memery allocated for Hollerith constant. (gfc_copy_expr): Allocate and copy string if Expr is from Hollerith. (gfc_check_assign): Enable conversion from Hollerith to other. * gfortran.h (bt): Add BT_HOLLERITH. (gfc_expr): Add from_H flag. * intrinsic.c (gfc_type_letter): Return 'h' for BT_HOLLERITH. (add_conversions): Add conversions from Hollerith constant to other. (do_simplify): Don't simplify if Hollerith constant arguments exist. * io.c (resolve_tag): Enable array in FORMAT tag under GFC_STD_GNU. * misc.c (gfc_basetype_name): Return "HOLLERITH" for BT_HOLLERITH. (gfc_type_name): Print "HOLLERITH" for BT_HOLLERITH. * primary.c (match_hollerith_constant): New function. (gfc_match_literal_constant): Add match Hollerith before Integer. * simplify.c (gfc_convert_constant): Add conversion from Hollerith to other. * trans-const.c (gfc_conv_constant_to_tree): Use VIEW_CONVERT_EXPR to convert Hollerith constant to tree. * trans-io.c (gfc_convert_array_to_string): Get array's address and length to set string expr. (set_string): Deal with array assigned Hollerith constant and character array. * gfortran.texi: Document Hollerith constants as extention support. 2005-07-12 Feng Wang <fengwang@nudt.edu.cn> Backport from the mainline: 2005-07-07 Feng Wang <fengwang@nudt.edu.cn> PR fortran/16531 PR fortran/15966 PR fortran/18781 * gfortran.dg/hollerith.f90: New. * gfortran.dg/hollerith2.f90: New. * gfortran.dg/hollerith3.f90: New. * gfortran.dg/hollerith4.f90: New. * gfortran.dg/hollerith_f95.f90: New. * gfortran.dg/hollerith_legacy.f90: New. * gfortran.dg/g77/cpp4.F: New. Port from g77. 2005-07-12 Feng Wang <fengwang@nudt.edu.cn> * runtime/string.c (compare0): Remove unused variable. * intrinsics/etime.c (etime_sub): Ditto. * intrinsics/getcwd.c (getcwd_i4_sub): Ditto. * intrinsics/stat.c (stat_i4_sub stat_i8_sub fstat_i4_sub fstat_i8_sub): Ditto. * intrinsics/unlink.c (unlink_i4_sub): Ditto. * io/unit.c (init_units): Ditto. Backport from mainline. 2005-07-07 Feng Wang <fengwang@nudt.edu.cn> PR fortran/16531 * io/transfer.c (formatted_transfer): Enable FMT_A on other types to support Hollerith constants. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/hollerith.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/hollerith2.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/hollerith3.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/hollerith4.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/hollerith_f95.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/hollerith_legacy.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/g77/cpp4.F.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.163.2.58&r2=1.163.2.59 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/intrinsics/etime.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.5&r2=1.5.12.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/intrinsics/getcwd.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.3&r2=1.3.12.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/intrinsics/stat.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.4.14.1&r2=1.4.14.2 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/intrinsics/unlink.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.4&r2=1.4.12.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/io/transfer.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.32.2.7&r2=1.32.2.8 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/io/unit.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.8.10.1&r2=1.8.10.2 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/runtime/string.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.4.12.1&r2=1.4.12.2 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.5084.2.267&r2=1.5084.2.268 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.335.2.86&r2=1.335.2.87 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/arith.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.22.2.2&r2=1.22.2.3 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/arith.h.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.4.36.1&r2=1.4.36.2 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/expr.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.23.2.2&r2=1.23.2.3 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/gfortran.h.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.58.2.9&r2=1.58.2.10 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/gfortran.texi.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.10.8.5&r2=1.10.8.6 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/intrinsic.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.44.2.5&r2=1.44.2.6 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/io.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.19.10.5&r2=1.19.10.6 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/misc.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.8&r2=1.8.10.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/primary.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.22.2.6&r2=1.22.2.7 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/simplify.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.19.2.4&r2=1.19.2.5 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/trans-const.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.21.10.1&r2=1.21.10.2 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/trans-io.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.33.2.3&r2=1.33.2.4
Fixed in 4.0.2 and above.
(In reply to comment #19) > Fixed in 4.0.2 and above. Strictly speaking, pr15966 is fixed. However, writing to array internal files is still broken because no record length (aka character length) is being transmitted. This is a bug that comes up in a number of NIST tests (eg. fm909.for tests 6, 7, 8, 10 & 22, 23, 25, 26.). Jerry DeLisle and I are onto it. With: implicit none integer :: i(10),j character(12) :: r(12) i = (/(j,j=1,10)/) write(r,'(5(2x,i4/)/5(3x,i6/))') i write(6,'(a12)') r end Intel and g95 do this [root@localhost mytests]# ./a.out 1 2 3 4 5 6 7 8 9 10 whilst gfortran does.... well, something else [root@localhost mytests]# ./a.out 1 2 3 4 5 6 7 8 9 1 0