[Bug fortran/48821] New: IMPORT :: dummy_arg is rejected, while "IMPORT" imports it
burnus at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Apr 29 13:10:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48821
Summary: IMPORT :: dummy_arg is rejected, while "IMPORT"
imports it
Product: gcc
Version: 4.7.0
Status: UNCONFIRMED
Keywords: rejects-valid
Severity: normal
Priority: P3
Component: fortran
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: burnus@gcc.gnu.org
>From the tread at
http://groups.google.com/group/comp.lang.fortran/browse_thread/thread/468cd06becef7494
The following program compiles with Open64 and PathScale 3.2.99, but it fails
with ifort 11.1 ("error #6485: Dummy args may not be used as IMPORT_name
entities [Y]") and with gfortran:
import :: Y
1
Error: Cannot IMPORT 'y' from host scoping unit at (1) - does not exist.
A simple "IMPORT" works.
>From F2008's "12.4.3.3 IMPORT statement": "The name of an entity made
accessible by an IMPORT statement shall not appear in any of the contexts
described in 16.5.1.4 that cause the host entity of that name to be
inaccessible."
I have not yet fully understood 16.5.1.4, but I am rather sure that the code is
valid -- however, one should check ...
Program by Daniel Carrera:
module types
integer, parameter :: pref = kind(0.0)
end module
use types
contains
pure subroutine rk4_vec(t, Y, dY, h)
real(pref), intent(inout) :: t, Y(:)
real(pref), intent(in) :: h
real(pref), dimension(size(Y)) :: k1, k2, k3, k4
interface
pure function dY(t0, y0)
use types
import :: Y
real(pref), intent(in) :: t0, y0(size(Y))
real(pref) :: dY(size(y0))
end function
end interface
k1 = dY(t, Y)
k2 = dY(t + h/2, Y + k1*h/2)
k3 = dY(t + h/2, Y + k2*h/2)
k4 = dY(t + h , Y + k3*h)
Y = Y + (k1 + 2*k2 + 2*k3 + k4) * h/6
t = t + h
end subroutine
end
More information about the Gcc-bugs
mailing list