42 lines
946 B
Fortran
42 lines
946 B
Fortran
! { dg-do compile }
|
|
! Tests the for PR30410, in which the reference to extfunc would
|
|
! be incorrectly made to the module namespace.
|
|
!
|
|
! Contributed by Harald Anlauf <anlauf@gmx.de>
|
|
!
|
|
module mod1
|
|
contains
|
|
function eval (func, x1)
|
|
real :: eval, func, x1
|
|
external :: func
|
|
eval = func (x1)
|
|
end function eval
|
|
end module mod1
|
|
!-------------------------------
|
|
module mod2
|
|
use mod1, only : eval
|
|
real, external :: extfunc ! This was referenced as __mod2__extfunc__
|
|
contains
|
|
|
|
subroutine foo (x0)
|
|
real :: x0, x1
|
|
x1 = 42
|
|
x0 = eval (extfunc, x1)
|
|
end subroutine foo
|
|
|
|
end module mod2
|
|
!-------------------------------
|
|
function extfunc (x)
|
|
real, intent(in) :: x
|
|
real :: extfunc
|
|
extfunc = x
|
|
end function extfunc
|
|
!-------------------------------
|
|
program gfcbug53
|
|
use mod2, only : foo
|
|
real :: x0 = 0
|
|
call foo (x0)
|
|
print *, x0
|
|
end program gfcbug53
|
|
! { dg-final { cleanup-modules "mod1 mod2" } }
|