blob: 50fd57aeebf731aa2b9f2a09376caadb051fe436 [file] [log] [blame]
! { dg-do run }
!
! Test the fix for PR69739 in which the statement
! R = operate(A, X) caused an ICE.
!
! Contributed by John <jwmwalrus@gmail.com>
!
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