From: Thomas Koenig Date: Sun, 10 Mar 2019 09:34:46 +0000 (+0000) Subject: re PR fortran/87734 (ICE in is_illegal_recursion check for character len= parameter) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2263c69edc270c1e762c88e771d12dd5d09b052d;p=gcc.git re PR fortran/87734 (ICE in is_illegal_recursion check for character len= parameter) 2019-03-10 Thomas Koenig PR fortran/87734 * symbol.c (gfc_add_procedure): Only throw an error if the procedure has not been declared either PUBLIC or PRIVATE. 2019-03-10 Thomas Koenig PR fortran/87734 * gfortran.dg/public_private_module_10.f90: New test. From-SVN: r269547 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 785c7313eda..d8f5abb1c5d 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2019-03-10 Thomas Koenig + + PR fortran/87734 + * symbol.c (gfc_add_procedure): Only throw an error if the + procedure has not been declared either PUBLIC or PRIVATE. + 2019-03-09 Thomas Koenig PR fortran/71544 diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c index 0eb413084d1..4dfa836dddf 100644 --- a/gcc/fortran/symbol.c +++ b/gcc/fortran/symbol.c @@ -1805,7 +1805,8 @@ gfc_add_procedure (symbol_attribute *attr, procedure_type t, if (where == NULL) where = &gfc_current_locus; - if (attr->proc != PROC_UNKNOWN && !attr->module_procedure) + if (attr->proc != PROC_UNKNOWN && !attr->module_procedure + && attr->access == ACCESS_UNKNOWN) { if (attr->proc == PROC_ST_FUNCTION && t == PROC_INTERNAL && !gfc_notification_std (GFC_STD_F2008)) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 917d1719f71..05be0994120 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-03-10 Thomas Koenig + + PR fortran/87734 + * gfortran.dg/public_private_module_10.f90: New test. + 2019-03-09 John David Anglin PR c++/70349 diff --git a/gcc/testsuite/gfortran.dg/public_private_module_10.f90 b/gcc/testsuite/gfortran.dg/public_private_module_10.f90 new file mode 100644 index 00000000000..ddc1f8800e0 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/public_private_module_10.f90 @@ -0,0 +1,16 @@ +! PR 87734 +module m_vstring + implicit none + + public :: vstring_length + +contains + + subroutine vstring_cast() + character ( len = vstring_length() ) :: char_string + end subroutine + + pure integer function vstring_length () + end function + +end module