[Bug fortran/34228] New: -std=f* should diagnose used but later typed variables
burnus at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Sun Nov 25 20:14:00 GMT 2007
The following is frequently used and accepted by many compilers; thus it should
continue to work in -std=gnu, but - if feasible - one should reject it with
-std=f95/f2003.
subroutine y
data emname/'bar'/
character(len=3) :: emname
end subroutine y
Accepted by most compilers including the picky NAG f95. Rejected by g95:
Symbol 'emname' at (1) being given type CHARACTER(1) already has implicit
type REAL(4)
"5.2.5 DATA statement
[...] A variable that appears in a DATA statement and has not been typed
previously may appear in a subsequent type declaration only if that declaration
confirms the implicit typing. An array name, array section, or array element
that appears in a DATA statement shall have had its array properties
established by a previous specification statement."
The part about DIMENSION is taken into account.
* * *
subroutine y(A,n)
implicit none
real :: A(n)
integer :: n
end subroutine y
This is invalid as "n" is first used and then typed. NAG f95 rejects it with:
Error: Implicit type for N
Error: Symbol N has already been implicitly typed
as other compilers accept this, it frequently occurs and should be allowed for
-std=gnu.
See:
F2003, 7.1.6 (Specification expression), pg 126
F95, 7.1.6.2 (Specification expression), pg 96
"A variable in a specification expression shall have its type and type
parameters, if any, specified by a previous declaration in the scoping
unit, by the implicit typing rules in effect for the scoping unit, or by
host association. If a variable in a specification expression is typed
by the implicit typing rules, its appearance in any subsequent type
declaration statement shall confirm the implicit type and type
parameters".
--
Summary: -std=f* should diagnose used but later typed variables
Product: gcc
Version: 4.3.0
Status: UNCONFIRMED
Keywords: diagnostic
Severity: enhancement
Priority: P3
Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: burnus at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34228
More information about the Gcc-bugs
mailing list