Compiling the following program gives the error: Error: Type 'y_c' at (1) is a parameter to the BIND(C) procedure 'wrapper' but is not C interoperable because derived type 'ty_c' is not C interoperable It works if one moves the TYPE declaration up. It also works with the SUBROUTINE is not BIND(C). TODO: - Move check from decl.c to resolve.c - Change "parameter" to (dummy/formal) "argument" as otherwise it can be confused with the PARAMETER attribute. Found at: http://groups.google.com/group/comp.lang.fortran/browse_thread/thread/5392e4c270d4f3c7 Where it was reported by Steven Correll. MODULE mExample CONTAINS SUBROUTINE wrapper(y_c) bind(c) USE iso_c_binding type, bind(c) :: ty_c type(c_ptr) :: y_cptr Integer(c_int) ny end type type(ty_c) :: y_c END SUBROUTINE END MODULE
This was fixed in gfortran 4.6 and later.
Author: fxcoudert Date: Sun Jun 8 15:28:59 2014 New Revision: 211354 URL: http://gcc.gnu.org/viewcvs?rev=211354&root=gcc&view=rev Log: PR fortran/38829 * gfortran.dg/bind_c_usage_29.f90: New file. Added: trunk/gcc/testsuite/gfortran.dg/bind_c_usage_29.f90 Modified: trunk/gcc/testsuite/ChangeLog