! { dg-do run }
!
! Test the fix for PR100245
!

program main_p

  implicit none

  type :: foo_t
    integer :: a
  end type foo_t

  integer, parameter :: a = 42

  class(foo_t), allocatable :: val
  class(foo_t), allocatable :: rs1
  type(foo_t),  allocatable :: rs2

  allocate(val, source=foo_t(42))
  if (val%a/=a) stop 1
  rs1 = val
  if (rs1%a/=a) stop 2
  rs2 = val
  if (rs2%a/=a) stop 3
  deallocate(val, rs1, rs2)

end program main_p