! { dg-do run } ! PR 71544 - this failed with some optimization options due to a ! pointer not being marked as escaping. module store_cptr use, intrinsic :: iso_c_binding implicit none public type(c_ptr), save :: cptr end module store_cptr subroutine init() use, intrinsic :: iso_c_binding implicit none integer(c_int), pointer :: a allocate(a) call save_cptr(c_loc(a)) a = 100 end subroutine init subroutine save_cptr(cptr_in) use store_cptr implicit none type(c_ptr), intent(in) :: cptr_in cptr = cptr_in end subroutine save_cptr program init_fails use store_cptr implicit none integer(c_int), pointer :: val call init() call c_f_pointer(cptr,val) if (val /= 100) stop 1 end program init_fails