blob: 359224de50c9e896639d39dffc901ab9ce67b949 [file] [log] [blame]
! { dg-do run }
!
! Tests the fix for a bug that was found in the course of fixing PR87566.
!
! Contributed by Paul Thomas <pault@gcc.gnu.org>
!
call AddArray
contains
subroutine AddArray()
type Object_array_pointer
class(*), pointer :: p(:) => null()
end type Object_array_pointer
type (Object_array_pointer) :: obj
character(3), target :: tgt1(2) = ['one','two']
character(5), target :: tgt2(2) = ['three','four ']
real, target :: tgt3(3) = [1.0,2.0,3.0]
obj%p => tgt1
associate (point => obj%p)
select type (point) ! Used to ICE here.
type is (character(*))
if (any (point .ne. tgt1)) stop 1
end select
point => tgt2
end associate
select type (z => obj%p)
type is (character(*))
if (any (z .ne. tgt2)) stop 2
end select
obj%p => tgt3
associate (point => obj%p)
select type (point)
type is (real)
if (any (point .ne. tgt3)) stop 3
end select
end associate
end subroutine AddArray
end