! { dg-do run } ! PR fortran/66089 - used to ICE and, after that ICE was fixed, ! gave wrong results. type :: t integer :: c end type t class(t), dimension(:), allocatable :: b,c allocate (b(5), source=t(7)) allocate(c(5), source=t(13)) c = plus(c(1), b) if (any(c%c /= 20)) stop 1 c = t(13) c = plus(b, c(1)) if (any(c%c /= 20)) stop 2 contains elemental function plus(lhs, rhs) class(t), intent(in) :: lhs, rhs type(t) :: plus plus%c = lhs%c + rhs%c end function plus end