1! { dg-do run }
2! { dg-options "-ff2c" }
3! PR 34868
4
5function f(a) result(res)
6  implicit none
7  real(8), intent(in) :: a(:)
8  complex(8) :: res
9
10  res = cmplx(sum(a),product(a),8)
11end function f
12
13function g(a)
14  implicit none
15  real(8), intent(in) :: a(:)
16  complex(8) :: g
17
18  g = cmplx(sum(a),product(a),8)
19end function g
20
21program test
22  real(8) :: a(1,5)
23  complex(8) :: c
24  integer :: i
25
26  interface
27    complex(8) function f(a)
28      real(8), intent(in) :: a(:)
29    end function f
30    function g(a) result(res)
31      real(8), intent(in) :: a(:)
32      complex(8) :: res
33    end function g
34  end interface
35
36  do i = 1, 5
37    a(1,i) = sqrt(real(i,kind(a)))
38  end do
39
40  c = f(a(1,:))
41  call check (real(c), sum(a))
42  call check (imag(c), product(a))
43
44  c = g(a(1,:))
45  call check (real(c), sum(a))
46  call check (imag(c), product(a))
47contains
48  subroutine check (a, b)
49    real(8), intent(in) :: a, b
50    if (abs(a - b) > 1.e-10_8) call abort
51  end subroutine check
52end program test
53