1! { dg-do compile } 2! Verify that initialization of c_ptr components works. 3module fgsl 4 use, intrinsic :: iso_c_binding 5 implicit none 6 type, public :: fgsl_matrix 7 private 8 type(c_ptr) :: gsl_matrix = c_null_ptr 9 end type fgsl_matrix 10 type, public :: fgsl_multifit_fdfsolver 11 private 12 type(c_ptr) :: gsl_multifit_fdfsolver = c_null_ptr 13 end type fgsl_multifit_fdfsolver 14interface 15 function gsl_multifit_fdfsolver_jac(s) bind(c) 16 import :: c_ptr 17 type(c_ptr), value :: s 18 type(c_ptr) :: gsl_multifit_fdfsolver_jac 19 end function gsl_multifit_fdfsolver_jac 20end interface 21contains 22 function fgsl_multifit_fdfsolver_jac(s) 23 type(fgsl_multifit_fdfsolver), intent(in) :: s 24 type(fgsl_matrix) :: fgsl_multifit_fdfsolver_jac 25 fgsl_multifit_fdfsolver_jac%gsl_matrix = & 26 gsl_multifit_fdfsolver_jac(s%gsl_multifit_fdfsolver) 27 end function fgsl_multifit_fdfsolver_jac 28end module fgsl 29 30module m 31 use, intrinsic :: iso_c_binding, only: c_ptr, c_null_ptr 32 implicit none 33 type t 34 type(c_ptr) :: matrix = c_null_ptr 35 end type t 36contains 37 subroutine func(a) 38 type(t), intent(out) :: a 39 end subroutine func 40end module m 41