! { dg-do run } ! ! Test the fix for PR69739 in which the statement ! R = operate(A, X) caused an ICE. ! ! Contributed by John ! module test implicit none type, public :: sometype real :: a = 0. end type contains function dosomething(A) result(r) type(sometype), intent(IN) :: A(:,:,:) integer :: N real, allocatable :: R(:), X(:) N = PRODUCT(UBOUND(A)) allocate (R(N),X(N)) X = [(real(N), N = 1, size(X, 1))] R = operate(A, X) end function function operate(A, X) type(sometype), intent(IN) :: A(:,:,:) real, intent(IN) :: X(:) real :: operate(1:PRODUCT(UBOUND(A))) operate = x end function end module test use test type(sometype) :: a(2, 2, 2) if (any(int (dosomething(a)) .ne. [1,2,3,4,5,6])) STOP 1 end