1! { dg-do run } 2! { dg-options "-std=legacy" } 3! 4! PR 17244 5! verifies that functions returning derived type work 6module m 7 type t 8 integer i 9 real x 10 character*5 c 11 integer arr(5,5) 12 end type t 13end module m 14 15use m 16type(t) :: r 17integer arr(5,5), vect(25), vect2(25) 18do i=1,25 19 vect = 0 20 vect(i) = i 21 arr = reshape (vect, shape(arr)) 22 r = f(i,real(i),"HALLO",arr) 23 24 if (r%i .ne. i) STOP 1 25 if (r%x .ne. real(i)) STOP 2 26 if (r%c .ne. "HALLO") STOP 3 27 vect2 = reshape (r%arr, shape(vect2)) 28 if (any(vect2.ne.vect)) STOP 4 29end do 30contains 31 32function f(i,x,c,arr) 33 type(t) :: f 34 character*5 c 35 integer arr(5,5) 36 37 f = t(i,x,c,arr) 38end function f 39 40end 41