From a9e88ec6fe9438c79b19601f9c20ef77bea4ef9e Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Thu, 3 Nov 2011 23:36:11 +0100 Subject: re PR fortran/50933 (Wrongly regards BIND(C) types as incompatible) 2011-11-03 Tobias Burnus PR fortran/50933 * interface.c (gfc_compare_derived_types): Fix check for * BIND(C). 2011-11-03 Tobias Burnus PR fortran/50933 * gfortran.dg/bind_c_dts_5.f90: New. From-SVN: r180879 --- gcc/fortran/ChangeLog | 5 +++++ gcc/fortran/interface.c | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-) (limited to 'gcc/fortran') diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index f29eab0..ac6e29b 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,5 +1,10 @@ 2011-11-03 Tobias Burnus + PR fortran/50933 + * interface.c (gfc_compare_derived_types): Fix check for BIND(C). + +2011-11-03 Tobias Burnus + PR fortran/50960 * trans-decl.c (gfc_finish_var_decl): Mark PARAMETER as TREE_READONLY. diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c index 5308513..19ede06 100644 --- a/gcc/fortran/interface.c +++ b/gcc/fortran/interface.c @@ -405,7 +405,7 @@ gfc_compare_derived_types (gfc_symbol *derived1, gfc_symbol *derived2) return 1; /* Compare type via the rules of the standard. Both types must have - the SEQUENCE attribute to be equal. */ + the SEQUENCE or BIND(C) attribute to be equal. */ if (strcmp (derived1->name, derived2->name)) return 0; @@ -414,7 +414,8 @@ gfc_compare_derived_types (gfc_symbol *derived1, gfc_symbol *derived2) || derived2->component_access == ACCESS_PRIVATE) return 0; - if (derived1->attr.sequence == 0 || derived2->attr.sequence == 0) + if (!(derived1->attr.sequence && derived2->attr.sequence) + && !(derived1->attr.is_bind_c && derived2->attr.is_bind_c)) return 0; dt1 = derived1->components; -- cgit v1.1