aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Thomas <pault@gcc.gnu.org>2015-12-05 17:10:33 +0000
committerPaul Thomas <pault@gcc.gnu.org>2015-12-05 17:10:33 +0000
commite9d9b48ddbb7915c0ae141c1cb949a55d51ed737 (patch)
tree354d18c343f89c1e4122b7fc952cdcbcf5553b06
parenta5bdd742c70ccd13a77fa48059ec7ed5a2c7b98e (diff)
downloadgcc-e9d9b48ddbb7915c0ae141c1cb949a55d51ed737.zip
gcc-e9d9b48ddbb7915c0ae141c1cb949a55d51ed737.tar.gz
gcc-e9d9b48ddbb7915c0ae141c1cb949a55d51ed737.tar.bz2
re PR fortran/68676 (ICE in gfc_match_formal_arglist when compiling gfortran.dg/submodule_10.f08)
2015-12-05 Paul Thomas <pault@gcc.gnu.org> PR fortran/68676 * decl.c (gfc_match_formal_arglist): Correct error, where 'sym' was used instead of 'progname'. From-SVN: r231319
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/decl.c5
2 files changed, 10 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 7617a1a..ba176a1 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2015-12-05 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/68676
+ * decl.c (gfc_match_formal_arglist): Correct error, where 'sym'
+ was used instead of 'progname'.
+
2015-12-02 Tobias Burnus <burnus@net-b.de>
Alessandro Fanfarillo <fanfarillo.gcc@gmail.com>
diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c
index 10a08e0..bff23e1 100644
--- a/gcc/fortran/decl.c
+++ b/gcc/fortran/decl.c
@@ -4817,6 +4817,9 @@ ok:
goto cleanup;
}
+ /* gfc_error_now used in following and return with MATCH_YES because
+ doing otherwise results in a cascade of extraneous errors and in
+ some cases an ICE in symbol.c(gfc_release_symbol). */
if (progname->attr.module_procedure && progname->attr.host_assoc)
{
bool arg_count_mismatch = false;
@@ -4826,7 +4829,7 @@ ok:
/* Abbreviated module procedure declaration is not meant to have any
formal arguments! */
- if (!sym->abr_modproc_decl && formal && !head)
+ if (!progname->abr_modproc_decl && formal && !head)
arg_count_mismatch = true;
for (p = formal, q = head; p && q; p = p->next, q = q->next)