| ! { dg-do run } |
| ! PR71764 |
| program p |
| use iso_c_binding, only: c_ptr, c_null_ptr, c_ptr, c_associated, c_loc |
| logical, target :: rls |
| real, target :: t = 3.14 |
| type(c_ptr) :: nullptr,c |
| real, pointer :: k |
| nullptr = c_null_ptr |
| c = nullptr |
| rls = c_associated(c) |
| if (rls) STOP 1 |
| if (c_associated(c)) STOP 2 |
| c = c_loc(rls) |
| if (.not. c_associated(c)) STOP 3 |
| c = nullptr |
| if (c_associated(c)) STOP 4 |
| c = c_loc(t) |
| k => t |
| call association_test(k, c) |
| contains |
| subroutine association_test(a,b) |
| use iso_c_binding, only: c_associated, c_loc, c_ptr |
| implicit none |
| real, pointer :: a |
| type(c_ptr) :: b |
| if(c_associated(b, c_loc(a))) then |
| return |
| else |
| STOP 5 |
| end if |
| end subroutine association_test |
| end |
| |