[prev in list] [next in list] [prev in thread] [next in thread]
List: gcc-bugs
Subject: [Bug fortran/85575] New: Acceptance of invalid code: ordering of declaration statements with implici
From: "juergen.reuter at desy dot de" <gcc-bugzilla () gcc ! gnu ! org>
Date: 2018-04-30 13:26:14
Message-ID: bug-85575-4 () http ! gcc ! gnu ! org/bugzilla/
[Download RAW message or body]
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85575
Bug ID: 85575
Summary: Acceptance of invalid code: ordering of declaration
statements with implicit typing
Product: gcc
Version: 8.0.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: juergen.reuter at desy dot de
Target Milestone: ---
I think I saw discussions on this topic already on c.l.f. I am having the
following subroutine (and the recursive attribute doesn't play a role)
1 recursive function constr_quark_loopline(ho,sho) result(cl)
2 integer, dimension(sho), intent(in) :: ho
3 integer, dimension(sho) :: hor
4 integer, intent(in) :: sho
5 [...]
6 end function constr_quark_loopline
Intel gives an error message error #6415: This name cannot be assigned this
data type because it conflicts with prior uses of the name. [SHO]
in the case this is an external procedure, or a module procedure with or
without 'implicit none' in the head of the module.
First of all, I would like to get it confirmed that this is really a
contradiction of the standard, and that the order of the declarations matters.
In case this is a module procedure without implicit none or an external
procedure, implicit typing rules apply and sho would be considered to be a
real, such that later specifying it as an integer is a contradiction. gfortran
and nagfor complain:
integer, intent(in) :: sho
1
Error: Symbol ‘sho' at (1) already has basic type of REAL
and
Error: rec.f90, line 8: Symbol SHO has already been implicitly typed
detected at SHO@<end-of-statement>
The strange thing (which seems a compiler bug to me) is that gfortran compiles
this code when it is a module procedure with 'implicit none'. This seems a
(gfortran) compiler bug to me to accept this code. I see this behavior with all
gfortran versions that I can get a hold on, 4.8, 4.9., 5.4, 6.3, 7.3, 8.0 and
9.0. That is the reason I filed this report. Comments are appreciated.
And yes, of course, I know that having the declaration of sho first solves all
the problems, but this is 3rd-party code.=
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic