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