https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67562
Bug ID: 67562 Summary: Bad result from sourced allocation with class(*) arrays Product: gcc Version: 5.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: neil.n.carlson at gmail dot com Target Milestone: --- The following example produces incorrect results from the sourced allocation involving class(*) arrays. Perhaps the same as 64692, but that is reported as fixed. Expected output: source= 1 2 copy= 1 2 (expect same as source) But getting this: source= 1 2 copy= 2 0 (expect same as source) module any_vector_type type :: any_vector class(*), allocatable :: x(:) end type interface any_vector procedure any_vector_init end interface contains function any_vector_init (x) result (this) class(*), intent(in) :: x(:) type(any_vector) :: this call fubar (this, x) end function subroutine fubar (this, x) class(any_vector), intent(out) :: this class(*), intent(in) :: x(:) allocate(this%x(lbound(x,1):ubound(x,1)), source=x) select type (x) type is (integer) print *, 'source=', x end select select type (y => this%x) type is (integer) print *, 'copy= ', y, '(expect same as source)' end select end subroutine end module program main use any_vector_type type(any_vector) :: a a = any_vector([1,2]) end program