Fortran 77 permits and g77 supports non-integral DO loop variables. This is a "Deleted feature" in Fortran 90/95. However, gfortran will need to support the following: program cc real x, dx dx = 0.1e0 do x = 0.e0, 1.e0, dx print*, x end do end Environment: System: FreeBSD c-67-168-59-70.client.comcast.net 5.2-CURRENT FreeBSD 5.2-CURRENT #2: Sat Apr 24 10:33:08 PDT 2004 kargl@c-67-168-59-70.client.comcast.net:/usr/obj/usr/src/sys/HOTRATS i386 host: i386-unknown-freebsd5.2 build: i386-unknown-freebsd5.2 target: i386-unknown-freebsd5.2 configured with: ../gcc/configure --prefix=/home/kargl/gcc/work --disable-libmudflap --enable-languages=c,f95 How-To-Repeat: kargl[217] gfortran -o cc cc.f In file cc.f:4 do x = 0.e0, 1.e0, dx 1 Error: Loop variable at (1) must be a scalar INTEGER
Fix: Don't know, yet.
Confirmed, it is only obsolescent in Fortran 90 but deleted in Fortran 95.
It's deleted in Fortran 95, so an extension - mark it such.
See http://gcc.gnu.org/ml/fortran/2004-11/msg00224.html for a fix.
This is a better patch. http://gcc.gnu.org/ml/fortran/2004-12/msg00026.html
Subject: Bug 16222 CVSROOT: /cvs/gcc Module name: gcc Changes by: pbrook@gcc.gnu.org 2004-12-12 20:27:02 Modified files: gcc/fortran : ChangeLog array.c gfortran.h resolve.c trans-stmt.c gcc/testsuite : ChangeLog Added files: gcc/testsuite/gfortran.dg: real_do_1.f90 Log message: 2004-12-12 Steven G. Kargl <kargls@comcast.net> Paul Brook <paul@codesourcery.com> PR fortran/16222 * resolve.c (gfc_resolve_iterator_expr): New function. (gfc_resolve_iterator): Use it. Add real_ok argument. Convert start, end and stride to correct type. (resolve_code): Pass extra argument. * array.c (resolve_array_list): Pass extra argument. * gfortran.h (gfc_resolve): Add prototype. * trans-stmt.c (gfc_trans_do): Remove redundant type conversions. Handle real type iterators. testsuite/ * gfortran.dg/real_do_1.f90: New test. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/ChangeLog.diff?cvsroot=gcc&r1=1.268&r2=1.269 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/array.c.diff?cvsroot=gcc&r1=1.9&r2=1.10 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/gfortran.h.diff?cvsroot=gcc&r1=1.45&r2=1.46 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/resolve.c.diff?cvsroot=gcc&r1=1.22&r2=1.23 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/trans-stmt.c.diff?cvsroot=gcc&r1=1.18&r2=1.19 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.4740&r2=1.4741 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/real_do_1.f90.diff?cvsroot=gcc&r1=NONE&r2=1.1
Fixed.