! { dg-do run } ! ! PR fortran/58771 ! ! Contributed by Vittorio Secca ! ! ICEd on the write statement with f() because the derived type backend ! declaration not built. ! module m type t integer(4) g end type end type(t) function f() result(ff) use m ff%g = 42 end use m character (20) :: line1, line2 type(t) f write (line1, *) f() write (line2, *) 42_4 if (line1 .ne. line2) call abort end