| ! { dg-do run } |
| ! PR fortran/21177 |
| module mymod |
| interface tt |
| module procedure tt_i, tt_r, tt_l, tt_c4, tt_c8 |
| end interface tt |
| contains |
| function tt_l(x) result(y) |
| integer :: y |
| logical, pointer :: x |
| y = 0 |
| end function |
| function tt_i(x) result(y) |
| integer :: y |
| integer, pointer :: x |
| y = 1 |
| end function |
| function tt_r(x) result(y) |
| integer :: y |
| real, pointer :: x |
| y = 2 |
| end function |
| function tt_c4(x) result(y) |
| integer :: y |
| complex(4), pointer :: x |
| y = 3 |
| end function |
| function tt_c8(x) result(y) |
| integer :: y |
| complex(8), pointer :: x |
| y = 4 |
| end function |
| end module mymod |
| |
| program test |
| use mymod |
| logical, pointer :: l |
| integer, pointer :: i |
| real, pointer :: r |
| complex(4), pointer :: c4 |
| complex(8), pointer :: c8 |
| |
| if (tt(l) /= 0) call abort() |
| if (tt(i) /= 1) call abort() |
| if (tt(r) /= 2) call abort() |
| if (tt(c4) /= 3) call abort() |
| if (tt(c8) /= 4) call abort() |
| if (tt(null(l)) /= 0) call abort() |
| if (tt(null(i)) /= 1) call abort() |
| if (tt(null(r)) /= 2) call abort() |
| if (tt(null(c4)) /= 3) call abort() |
| if (tt(null(c8)) /= 4) call abort() |
| end program test |
| |
| ! { dg-final { cleanup-modules "mymod" } } |