! { dg-do run } ! PR 67539 - this used to give a segfault at runtime. ! Test case by "mrestelli". module m implicit none type :: t_a real, allocatable :: x end type t_a interface assignment(=) module procedure copy_t_a end interface contains elemental subroutine copy_t_a(y,x) type(t_a), intent(in) :: x type(t_a), intent(out) :: y allocate( y%x , source=x%x ) end subroutine copy_t_a elemental function new_t_a(x) result(res) real, intent(in) :: x type(t_a) :: res allocate( res%x ) res%x = x end function new_t_a end module m program p use m implicit none integer :: i type(t_a) :: tmp type(t_a), allocatable :: v(:) allocate( v(2) ) v = new_t_a(1.5) ! -> segmentation fault !tmp = new_t_a(1.5) ! -> OK !v = tmp !do i=1,size(v) ! -> also OK ! v(i) = new_t_a(1.5) !enddo do i=1,size(v) write(*,*) " i = ",i write(*,*) allocated(v(i)%x) write(*,*) v(i)%x enddo end program p