1! { dg-do compile } 2! { dg-options "-O0 -fdump-tree-original" } 3! 4! PR fortran/49074 5! ICE on defined assignment with class arrays. 6 7 module foo 8 type bar 9 integer :: i 10 11 contains 12 13 generic :: assignment (=) => assgn_bar 14 procedure, private :: assgn_bar 15 end type bar 16 17 contains 18 19 elemental subroutine assgn_bar (a, b) 20 class (bar), intent (inout) :: a 21 class (bar), intent (in) :: b 22 23 select type (b) 24 type is (bar) 25 a%i = b%i 26 end select 27 28 return 29 end subroutine assgn_bar 30 end module foo 31 32 program main 33 use foo 34 35 type (bar), allocatable :: foobar(:) 36 37 allocate (foobar(2)) 38 foobar = [bar(1), bar(2)] 39 if (any(foobar%i /= [1, 2])) STOP 1 40 end program 41 42! { dg-final { scan-tree-dump-not "_gfortran_internal_pack" "original" } } 43! { dg-final { scan-tree-dump-not "_gfortran_internal_unpack" "original" } } 44