! { 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 ! 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" } }