1! { dg-do run } 2! 3! PR fortran/49324 4! 5! Check that with array constructors a deep copy is done 6! 7implicit none 8type t 9 integer, allocatable :: A(:) 10end type t 11 12type(t) :: x, y 13type(t), allocatable :: z(:), z2(:) 14 15allocate (x%A(2)) 16allocate (y%A(1)) 17x%A(:) = 11 18y%A(:) = 22 19 20allocate (z(2)) 21 22z = [ x, y ] 23!print *, z(1)%a, z(2)%a, x%A, y%A 24if (any (z(1)%a /= 11) .or. z(2)%a(1) /= 22 .or. any (x%A /= 11) & 25 .or. y%A(1) /= 22) & 26 call abort() 27 28x%A(:) = 444 29y%A(:) = 555 30 31!print *, z(1)%a, z(2)%a, x%A, y%A 32if (any (z(1)%a /= 11) .or. z(2)%a(1) /= 22 .or. any (x%A /= 444) & 33 .or. y%A(1) /= 555) & 34 call abort() 35 36z(:) = [ x, y ] 37!print *, z(1)%a, z(2)%a, x%A, y%A 38if (any (z(1)%a /= 444) .or. z(2)%a(1) /= 555 .or. any (x%A /= 444) & 39 .or. y%A(1) /= 555) & 40 call abort() 41end 42