re PR fortran/68676 (ICE in gfc_match_formal_arglist when compiling gfortran.dg/submo...
authorPaul Thomas <pault@gcc.gnu.org>
Sat, 5 Dec 2015 17:10:33 +0000 (17:10 +0000)
committerPaul Thomas <pault@gcc.gnu.org>
Sat, 5 Dec 2015 17:10:33 +0000 (17:10 +0000)
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

gcc/fortran/ChangeLog
gcc/fortran/decl.c

index 7617a1adf7cb471de0fcff0b82324c2bcbcada49..ba176a1e469a958312fc7ea259911599570901bd 100644 (file)
@@ -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>
 
index 10a08e0591be64e91c7be490ee00fb5408665667..bff23e1f2078b0cd1216c283eb2b8d581cda0bd6 100644 (file)
@@ -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)