1! { dg-do run } 2! { dg-additional-sources proc_ptr_8.c } 3! 4! PR fortran/32580 5! Original test case 6! 7! Contributed by Joost VandeVondele <jv244@cam.ac.uk> 8 9MODULE X 10 11 USE ISO_C_BINDING 12 INTERFACE 13 INTEGER(KIND=C_INT) FUNCTION mytype( a ) BIND(C) 14 USE ISO_C_BINDING 15 INTEGER(KIND=C_INT), VALUE :: a 16 END FUNCTION 17 SUBROUTINE init() BIND(C,name="init") 18 END SUBROUTINE 19 END INTERFACE 20 21 TYPE(C_FUNPTR), BIND(C,name="funpointer") :: funpointer 22 23END MODULE X 24 25USE X 26PROCEDURE(mytype), POINTER :: ptype,ptype2 27 28CALL init() 29CALL C_F_PROCPOINTER(funpointer,ptype) 30if (ptype(3_c_int) /= 9) STOP 1 31 32! the stuff below was added with PR 42072 33call setpointer(ptype2) 34if (ptype2(4_c_int) /= 12) STOP 2 35 36contains 37 38 subroutine setpointer (p) 39 PROCEDURE(mytype), POINTER :: p 40 CALL C_F_PROCPOINTER(funpointer,p) 41 end subroutine 42 43END 44