blob: 8c8b4a713a4e9e2a5b630f7de7d7db51dcf6b018 [file] [log] [blame]
! { dg-do compile }
!
! A function returning a pointer cannot be interoperable
! and cannot be used as FPTR argument to C_F_POINTER.
subroutine s ()
use, intrinsic :: iso_c_binding
implicit none
type(c_ptr) :: cPtr
call c_f_pointer (cPtr, p0) ! { dg-error "function returning a pointer" }
call c_f_pointer (cPtr, p1, shape=[2]) ! { dg-error "function returning a pointer" }
contains
function p0 ()
integer, pointer :: p0
nullify (p0)
end
function p1 ()
integer, pointer :: p1(:)
nullify (p1)
end
function fp0 ()
integer, pointer :: fp0
call c_f_pointer (cPtr, fp0) ! valid here
end
function fp1 ()
integer, pointer :: fp1(:)
call c_f_pointer (cPtr, fp1, shape=[2]) ! valid here
end
function ffp0 () result (fp0)
integer, pointer :: fp0
call c_f_pointer (cPtr, fp0) ! valid here
end
function ffp1 () result (fp1)
integer, pointer :: fp1(:)
call c_f_pointer (cPtr, fp1, shape=[2]) ! valid here
end
end