blob: 0f1af64002a4127130f16e054e65ecb698f8c006 [file] [log] [blame]
! { dg-do run }
! PR fortran/96896
call test1
call reshape_test
end
subroutine test1
implicit none
integer, target :: B
integer, pointer :: A(:)
allocate(A(5))
A = 1
B = 10
get_A() = get_B()
if (any (A /= 10)) stop 1
get_A() = get_A()
if (any (A /= 10)) stop 2
deallocate(A)
contains
function get_A()
integer, pointer :: get_A(:)
get_A => A
end
function get_B()
integer, pointer :: get_B
get_B => B
end
end
subroutine reshape_test
implicit none
real, target, dimension (1:9) :: b
integer :: i
b = 1.0
myshape(b) = 3.0
do i = 1, 3
myfunc (b,i,2) = b(i) + i
b(i) = b(i) + 2.0
end do
if (any (b /= [real::5,5,5,4,5,6,3,3,3])) stop 3
contains
function myfunc(b,i,j)
real, target, dimension (1:9) :: b
real, pointer :: myfunc
real, pointer :: p(:,:)
integer :: i,j
p => myshape(b)
myfunc => p(i,j)
end function myfunc
function myshape(b)
real, target, dimension (1:9) :: b
real, pointer :: myshape(:,:)
myshape(1:3,1:3) => b
end function myshape
end subroutine reshape_test