1! { dg-do compile} 2! 3! TS 29113 4! 8.1 Removed restrictions on ISO_C_BINDING module procedures 5! 6! The function C_LOC from the intrinsic module ISO_C_BINDING has the 7! restriction in ISO/IEC 1539-1:2010 that if X is an array, it shall 8! be of interoperable type. 9! 10! [...] 11! 12! These restrictions are removed. 13 14module m 15 use ISO_C_BINDING 16 implicit none 17 18 ! An obvious example of a type that isn't interoperable is a 19 ! derived type without a bind(c) clause. 20 21 integer :: buflen 22 parameter (buflen=256) 23 24 type :: packet 25 integer :: size 26 integer(1) :: buf(buflen) 27 end type 28 29contains 30 31 subroutine test (packets, ptr) 32 type(packet), pointer, intent(in) :: packets(:) 33 type(C_PTR), intent(out) :: ptr 34 35 ptr = c_loc (packets) 36 end subroutine 37end module 38