From ba3721c1c20ccd158a3631af7518e6d1d2662514 Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Sun, 15 Aug 2010 18:20:56 +0200 Subject: re PR fortran/45211 (C interoperable error when compiling BIND(C) function in a module.) 2010-08-15 Tobias Burnus PR fortran/45211 * decl.c (verify_c_interop_param): Remove superfluous space (" "). (verify_c_interop): Handle unresolved DT with bind(C). 2010-08-15 Tobias Burnus PR fortran/45211 * gfortran.dg/bind_c_usage_21.f90: New. * gfortran.dg/bind_c_dts_3.f03: Update dg-error. From-SVN: r163264 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/decl.c | 5 +++-- 2 files changed, 9 insertions(+), 2 deletions(-) (limited to 'gcc/fortran') diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 4bddcb4..b88d9c9 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,5 +1,11 @@ 2010-08-15 Tobias Burnus + PR fortran/45211 + * decl.c (verify_c_interop_param): Remove superfluous space (" "). + (verify_c_interop): Handle unresolved DT with bind(C). + +2010-08-15 Tobias Burnus + * trans-expr.c (gfc_conv_expr_present): Regard nullified pointer arrays as absent. (gfc_conv_procedure_call): Handle EXPR_NULL for non-pointer diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index be41af8..5baa400 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -991,7 +991,7 @@ verify_c_interop_param (gfc_symbol *sym) /* Make personalized messages to give better feedback. */ if (sym->ts.type == BT_DERIVED) gfc_error ("Type '%s' at %L is a parameter to the BIND(C) " - " procedure '%s' but is not C interoperable " + "procedure '%s' but is not C interoperable " "because derived type '%s' is not C interoperable", sym->name, &(sym->declared_at), sym->ns->proc_name->name, @@ -3612,7 +3612,8 @@ gfc_try verify_c_interop (gfc_typespec *ts) { if (ts->type == BT_DERIVED && ts->u.derived != NULL) - return (ts->u.derived->ts.is_c_interop ? SUCCESS : FAILURE); + return (ts->u.derived->ts.is_c_interop || ts->u.derived->attr.is_bind_c) + ? SUCCESS : FAILURE; else if (ts->is_c_interop != 1) return FAILURE; -- cgit v1.1