aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorThomas Koenig <tkoenig@gcc.gnu.org>2019-03-10 09:34:46 +0000
committerThomas Koenig <tkoenig@gcc.gnu.org>2019-03-10 09:34:46 +0000
commit2263c69edc270c1e762c88e771d12dd5d09b052d (patch)
tree31cddd2643e2e922910fe62e270042ae23b5d3d0 /gcc
parentc02a57a0bb0238915929b267f275ee3d4832185f (diff)
downloadgcc-2263c69edc270c1e762c88e771d12dd5d09b052d.zip
gcc-2263c69edc270c1e762c88e771d12dd5d09b052d.tar.gz
gcc-2263c69edc270c1e762c88e771d12dd5d09b052d.tar.bz2
re PR fortran/87734 (ICE in is_illegal_recursion check for character len= parameter)
2019-03-10 Thomas Koenig <tkoenig@gcc.gnu.org> 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 <tkoenig@gcc.gnu.org> PR fortran/87734 * gfortran.dg/public_private_module_10.f90: New test. From-SVN: r269547
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/symbol.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/public_private_module_10.f9016
4 files changed, 29 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 785c731..d8f5abb 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2019-03-10 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ 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 <tkoenig@gcc.gnu.org>
PR fortran/71544
diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c
index 0eb4130..4dfa836 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 917d171..05be099 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2019-03-10 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/87734
+ * gfortran.dg/public_private_module_10.f90: New test.
+
2019-03-09 John David Anglin <dave.anglin@bell.net>
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 0000000..ddc1f88
--- /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