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