44 lines
923 B
Fortran
44 lines
923 B
Fortran
! { dg-do run }
|
|
! Tests the fix for the bug PR30746, in which the reference to 'x'
|
|
! in 'inner' wrongly host-associated with the variable 'x' rather
|
|
! than the function.
|
|
!
|
|
! Testcase is due to Malcolm Cohen, NAG.
|
|
!
|
|
real function z (i)
|
|
integer :: i
|
|
z = real (i)**i
|
|
end function
|
|
|
|
MODULE m
|
|
REAL :: x(3) = (/ 1.5, 2.5, 3.5 /)
|
|
interface
|
|
real function z (i)
|
|
integer :: i
|
|
end function
|
|
end interface
|
|
CONTAINS
|
|
SUBROUTINE s
|
|
if (x(2, 3) .ne. real (2)**3) call abort ()
|
|
if (z(3, 3) .ne. real (3)**3) call abort ()
|
|
CALL inner
|
|
CONTAINS
|
|
SUBROUTINE inner
|
|
i = 7
|
|
if (x(i, 7) .ne. real (7)**7) call abort ()
|
|
if (z(i, 7) .ne. real (7)**7) call abort ()
|
|
END SUBROUTINE
|
|
FUNCTION x(n, m)
|
|
x = REAL(n)**m
|
|
END FUNCTION
|
|
FUNCTION z(n, m)
|
|
z = REAL(n)**m
|
|
END FUNCTION
|
|
|
|
END SUBROUTINE
|
|
END MODULE
|
|
use m
|
|
call s()
|
|
end
|
|
! { dg-final { cleanup-modules "m" } }
|