! { dg-do compile } ! ! TS 29113 ! 8.1 Removed restrictions on ISO_C_BINDING module procedures ! ! The subroutine C_F_POINTER from the intrinsic module ISO_C_BINDING has ! the restriction in ISO/IEC 1539- 1:2010 that if FPTR is an array, it ! shall be of interoperable type. ! ! [...] ! ! These restrictions are removed. module m use ISO_C_BINDING implicit none ! An obvious example of a type that isn't interoperable is a ! derived type without a bind(c) clause. integer :: buflen parameter (buflen=256) type :: packet integer :: size integer(1) :: buf(buflen) end type contains subroutine test (ptr, n, packets) type(C_PTR), intent(in) :: ptr integer, intent(in) :: n type(packet), pointer, intent(out) :: packets(:) integer :: s(1) s(1) = n call c_f_pointer (ptr, packets, s) end subroutine end module