| ! { dg-do link } |
| ! |
| ! PR fortran/52729 |
| ! |
| ! Based on a contribution of Andrew Benson |
| ! |
| module testMod |
| type testType |
| end type testType |
| contains |
| subroutine testSub() |
| implicit none |
| procedure(double precision ), pointer :: r |
| class (testType ), pointer :: testObject |
| double precision :: testVal |
| |
| ! Failed as testFunc was BT_UNKNOWN |
| select type (testObject) |
| class is (testType) |
| testVal=testFunc() |
| r => testFunc |
| end select |
| return |
| end subroutine testSub |
| |
| double precision function testFunc() |
| implicit none |
| return |
| end function testFunc |
| end module testMod |
| |
| module testMod2 |
| implicit none |
| contains |
| subroutine testSub() |
| procedure(double precision ), pointer :: r |
| double precision :: testVal |
| ! Failed as testFunc was BT_UNKNOWN |
| block |
| r => testFunc |
| testVal=testFunc() |
| end block |
| end subroutine testSub |
| |
| double precision function testFunc() |
| end function testFunc |
| end module testMod2 |
| |
| module m3 |
| implicit none |
| contains |
| subroutine my_test() |
| procedure(sub), pointer :: ptr |
| ! Before the fix, one had the link error |
| ! "undefined reference to `sub.1909'" |
| block |
| ptr => sub |
| call sub() |
| end block |
| end subroutine my_test |
| subroutine sub(a) |
| integer, optional :: a |
| end subroutine sub |
| end module m3 |
| |
| end |