blob: 2ac9dea869c3bc5f99b6f874a5a8b5bc8b0aa7bf [file] [log] [blame]
! { dg-do run }
! This tests the "virtual fix" for PR19561, where functions returning
! pointers to derived types were not generating correct code. This
! testcase is based on a simplified example in the PR discussion.
!
! Submitted by Paul Thomas pault@gcc.gnu.org
! Slightly extended by Tobias SchlΓΌter
module mpoint
type :: mytype
integer :: i
end type mytype
contains
function get (a) result (b)
type (mytype), target :: a
type (mytype), pointer :: b
b => a
end function get
function get2 (a)
type (mytype), target :: a
type (mytype), pointer :: get2
get2 => a
end function get2
end module mpoint
program func_derived_2
use mpoint
type (mytype), target :: x
type (mytype), pointer :: y
x = mytype (42)
y => get (x)
if (y%i.ne.42) STOP 1
x = mytype (112)
y => get2 (x)
if (y%i.ne.112) STOP 2
end program func_derived_2