]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/91715 (ICE in resolve_fntype, at fortran/resolve.c:16884)
authorSteven G. Kargl <kargl@gcc.gnu.org>
Fri, 11 Oct 2019 20:19:28 +0000 (20:19 +0000)
committerSteven G. Kargl <kargl@gcc.gnu.org>
Fri, 11 Oct 2019 20:19:28 +0000 (20:19 +0000)
2019-10-11  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/91715
* decl.c (gfc_match_prefix): If matching a type-spec returns an error,
it's an error so re-act correctly.

2019-10-11  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/91715
* gfortran.dg/function_kinds_5.f90: Prune run-on error.
* gfortran.dg/pr85543.f90: Ditto.
* gfortran.dg/pr91715.f90: New test.

From-SVN: r276905

gcc/fortran/ChangeLog
gcc/fortran/decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/function_kinds_5.f90
gcc/testsuite/gfortran.dg/pr85543.f90
gcc/testsuite/gfortran.dg/pr91715.f90 [new file with mode: 0644]

index dbdbdddc240a4e8ad6f1de4e64ed250b4948ef6d..2064cf1314b1117b9d847d71dcfb2e8c8b2cc1c1 100644 (file)
@@ -1,3 +1,9 @@
+2019-10-11  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+       PR fortran/91715
+       * decl.c (gfc_match_prefix): If matching a type-spec returns an error,
+       it's an error so re-act correctly.
+
 2019-10-11  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        PR fortran/91649
index 9beb4eef455293601ca022ab31be7974f8ae8313..7b87bb88a30e8db75faaaaf6e4dc313f0c2afaba 100644 (file)
@@ -6169,13 +6169,17 @@ gfc_match_prefix (gfc_typespec *ts)
          found_prefix = true;
        }
 
-      if (!seen_type && ts != NULL
-         && gfc_match_decl_type_spec (ts, 0) == MATCH_YES
-         && gfc_match_space () == MATCH_YES)
+      if (!seen_type && ts != NULL)
        {
-
-         seen_type = true;
-         found_prefix = true;
+         match m;
+         m = gfc_match_decl_type_spec (ts, 0);
+         if (m == MATCH_ERROR)
+           goto error;
+         if (m == MATCH_YES && gfc_match_space () == MATCH_YES)
+           {
+             seen_type = true;
+             found_prefix = true;
+           }
        }
 
       if (gfc_match ("elemental% ") == MATCH_YES)
index 8c59770df3eda8435a19f95b165a1b29926a48c0..c766d548c6e9974a8aba057415b936a5a610e9d9 100644 (file)
@@ -1,3 +1,10 @@
+2019-10-11  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+       PR fortran/91715
+       * gfortran.dg/function_kinds_5.f90: Prune run-on error.
+       * gfortran.dg/pr85543.f90: Ditto.
+       * gfortran.dg/pr91715.f90: New test.
+
 2019-10-11  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        PR fortran/91649
index e48484ec30dc212705fc023c18820ac2f9f22b3d..106431fe206c9b72a1758bfa4b580bdd3cf634d6 100644 (file)
@@ -8,3 +8,4 @@
 real (bad_kind(0d0)) function foo () ! { dg-error "must be an intrinsic function" }
   foo = real (kind (foo))
 end function
+! { dg-prune-output "Bad kind expression for function" }
index d3f83276a7f2d173fa8719871e1ef389687e3576..b0faa8d59276e22cdac33195f023e55ec6abfd3d 100644 (file)
@@ -6,3 +6,4 @@ contains
    real(z()) function f()  ! { dg-error "in initialization expression at" }
    end
 end
+! { dg-prune-output "Bad kind expression for function" }
diff --git a/gcc/testsuite/gfortran.dg/pr91715.f90 b/gcc/testsuite/gfortran.dg/pr91715.f90
new file mode 100644 (file)
index 0000000..a3d9b8d
--- /dev/null
@@ -0,0 +1,5 @@
+! { dg-do compile }
+! PR fortran/91715
+! Code contributed Gerhard Steinmetz
+character(1function f()  ! { dg-error "Syntax error in CHARACTER" }
+end