mirror of
https://github.com/autc04/Retro68.git
synced 2024-06-28 11:30:19 +00:00
40 lines
809 B
Fortran
40 lines
809 B
Fortran
! { 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
|