From: Janus Weil Date: Tue, 11 Sep 2018 17:44:04 +0000 (+0200) Subject: re PR fortran/87172 (Spurious "Derived type 'c_funptr' at (1) has not been declared... X-Git-Tag: basepoints/gcc-10~4316 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0e4cb16f565fa292328c7e57689b7ca0f09e0625;p=thirdparty%2Fgcc.git re PR fortran/87172 (Spurious "Derived type 'c_funptr' at (1) has not been declared" error after r263782) fix PR 87172 2018-09-11 Janus Weil PR fortran/87172 * resolve.c (resolve_fl_derived): If a type has the 'use_assoc' attribute, then it was declared in another module, so there should be no error that it has not been declared. 2018-09-11 Janus Weil PR fortran/87172 * gfortran.dg/iso_c_binding_only_2.f90: New test case. From-SVN: r264214 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index c02276f7537e..7ce93ab3f350 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2018-09-11 Janus Weil + + PR fortran/87172 + * resolve.c (resolve_fl_derived): If a type has the 'use_assoc' + attribute, then it was declared in another module, so there should be + no error that it has not been declared. + 2018-09-11 Paul Thomas PR fortran/87277 diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index ded276242833..ea0ce8007430 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -14245,7 +14245,7 @@ resolve_fl_derived (gfc_symbol *sym) &sym->declared_at)) return false; - if (sym->components == NULL && !sym->attr.zero_comp) + if (sym->components == NULL && !sym->attr.zero_comp && !sym->attr.use_assoc) { gfc_error ("Derived type %qs at %L has not been declared", sym->name, &sym->declared_at); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3e35910699bc..a429bc3d8b97 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-09-11 Janus Weil + + PR fortran/87172 + * gfortran.dg/iso_c_binding_only_2.f90: New test case. + 2018-09-11 Paul Thomas PR fortran/87277 diff --git a/gcc/testsuite/gfortran.dg/iso_c_binding_only_2.f90 b/gcc/testsuite/gfortran.dg/iso_c_binding_only_2.f90 new file mode 100644 index 000000000000..03fafe3f5cbb --- /dev/null +++ b/gcc/testsuite/gfortran.dg/iso_c_binding_only_2.f90 @@ -0,0 +1,14 @@ +! { dg-do compile } +! +! PR 87172: [9 Regression] Spurious "Derived type 'c_funptr' at (1) has not been declared" error after r263782 +! +! Contributed by Dominique d'Humieres + +module m1 + use iso_c_binding, only: c_funptr +end module + +module m2 + use m1 + use iso_c_binding +end module