Bug 16222 - non-integral DO loop variables are unsupported.
Summary: non-integral DO loop variables are unsupported.
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: fortran (show other bugs)
Version: 4.0.0
: P3 enhancement
Target Milestone: 4.0.0
Assignee: Not yet assigned to anyone
URL:
Keywords: rejects-valid
Depends on:
Blocks:
 
Reported: 2004-06-26 21:59 UTC by kargl@c-67-168-59-70.client.comcast.net
Modified: 2004-12-12 20:30 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build: i386-unknown-freebsd5.2
Known to work:
Known to fail:
Last reconfirmed: 2004-11-11 05:30:07


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description kargl@c-67-168-59-70.client.comcast.net 2004-06-26 21:59:27 UTC

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
Comment 1 kargl@c-67-168-59-70.client.comcast.net 2004-06-26 21:59:27 UTC
Fix:
	Don't know, yet.
Comment 2 Andrew Pinski 2004-06-26 22:08:17 UTC
Confirmed, it is only obsolescent in Fortran 90 but deleted in Fortran 95.
Comment 3 Toon Moene 2004-09-08 19:23:41 UTC
It's deleted in Fortran 95, so an extension - mark it such.
Comment 4 Steve Kargl 2004-11-28 00:56:35 UTC
See

http://gcc.gnu.org/ml/fortran/2004-11/msg00224.html

for a fix.
Comment 5 Steve Kargl 2004-12-10 02:30:11 UTC
This is a better patch.

http://gcc.gnu.org/ml/fortran/2004-12/msg00026.html
Comment 6 GCC Commits 2004-12-12 20:27:10 UTC
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

Comment 7 Paul Brook 2004-12-12 20:27:51 UTC
Fixed.