! { dg-do run } ! { dg-additional-sources "fc-descriptor-4-c.c dump-descriptors.c" } ! { dg-additional-options "-g" } ! ! This program tests that pointer and allocatable array arguments are ! correctly passed by descriptor from Fortran code into C. program testit use iso_c_binding implicit none type, bind (c) :: m real(C_DOUBLE) :: a(3, 3) end type interface subroutine ctest (a, b, initp) bind (c) use iso_c_binding import m type(m), allocatable :: a(:) type(m), pointer :: b(:) integer(C_INT), value :: initp end subroutine end interface type (m), allocatable, target :: aa(:) type (m), pointer :: bb(:) ! Test both before and after allocation/pointer initialization. bb => NULL () call ctest (aa, bb, 0) allocate (aa(3:7)) bb => aa call ctest (aa, bb, 1) end program