1! { dg-do run }
2! PR fortran/21177
3module mymod
4  interface tt
5    module procedure tt_i, tt_r, tt_l, tt_c4, tt_c8
6  end interface tt
7contains
8  function tt_l(x) result(y)
9    integer :: y
10    logical, pointer :: x
11    y = 0
12  end function
13  function tt_i(x) result(y)
14    integer :: y
15    integer, pointer :: x
16    y = 1
17  end function
18  function tt_r(x) result(y)
19    integer :: y
20    real, pointer :: x
21    y = 2
22  end function
23  function tt_c4(x) result(y)
24    integer :: y
25    complex(4), pointer :: x
26    y = 3
27  end function
28  function tt_c8(x) result(y)
29    integer :: y
30    complex(8), pointer :: x
31    y = 4
32  end function
33end module mymod
34
35program test
36  use mymod
37  logical, pointer :: l
38  integer, pointer :: i
39  real, pointer :: r
40  complex(4), pointer :: c4
41  complex(8), pointer :: c8
42
43  if (tt(l) /= 0) call abort()
44  if (tt(i) /= 1) call abort()
45  if (tt(r) /= 2) call abort()
46  if (tt(c4) /= 3) call abort()
47  if (tt(c8) /= 4) call abort()
48  if (tt(null(l)) /= 0) call abort()
49  if (tt(null(i)) /= 1) call abort()
50  if (tt(null(r)) /= 2) call abort()
51  if (tt(null(c4)) /= 3) call abort()
52  if (tt(null(c8)) /= 4) call abort()
53end program test
54