1! This checks that the "z = y" assignment is not considered copyable, as the
2! array is of a derived type containing allocatable components.  Hence, we
3! we should expand the scalarized loop, which contains *two* memcpy calls.
4! { dg-do compile }
5! { dg-options "-O2 -fdump-tree-original" }
6
7  type :: a
8    integer, allocatable :: i(:)
9  end type a
10
11  type :: b
12    type (a), allocatable :: at(:)
13  end type b
14
15  type(b) :: y(2), z(2)
16
17  z = y
18end
19! { dg-final { scan-tree-dump-times "memcpy" 2 "original" } }
20! { dg-final { cleanup-tree-dump "original" } }
21