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


-- 
           Summary: Bogus BIND(C) error message
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Keywords: rejects-valid
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: burnus at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38829

Reply via email to