diff mbox series

[committed] PR fortran/82620 -- fix detection of syntax error

Message ID 20171028011119.GA18135@troutmask.apl.washington.edu
State New
Headers show
Series [committed] PR fortran/82620 -- fix detection of syntax error | expand

Commit Message

Steve Kargl Oct. 28, 2017, 1:11 a.m. UTC
I've committed the following patch to fix a problem
where gfortran ICEs after detection of a syntax 
error in an allocate statement.  The patch was
regression tested on x86_64-*-freebsd.

                === gfortran Summary ===

# of expected passes            46027
# of expected failures          97
# of unsupported tests          82
/mnt/sgk/gcc/obj/gcc/gfortran  version 8.0.0 20171028 (experimental) (GCC) 


2017-10-27  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/82620
	* match.c (gfc_match_allocate): Exit early on syntax error.

2017-10-27  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/82620
	* gfortran.dg/allocate_error_7.f90: new test.
diff mbox series

Patch

Index: gcc/fortran/match.c
===================================================================
--- gcc/fortran/match.c	(revision 254192)
+++ gcc/fortran/match.c	(working copy)
@@ -3968,7 +3968,10 @@  gfc_match_allocate (void)
   saw_stat = saw_errmsg = saw_source = saw_mold = saw_deferred = false;
 
   if (gfc_match_char ('(') != MATCH_YES)
-    goto syntax;
+    {
+      gfc_syntax_error (ST_ALLOCATE);
+      return MATCH_ERROR;
+    }
 
   /* Match an optional type-spec.  */
   old_locus = gfc_current_locus;
Index: gcc/testsuite/gfortran.dg/allocate_error_7.f90
===================================================================
--- gcc/testsuite/gfortran.dg/allocate_error_7.f90	(nonexistent)
+++ gcc/testsuite/gfortran.dg/allocate_error_7.f90	(working copy)
@@ -0,0 +1,12 @@ 
+! { dg-do compile }
+!
+! Code contributed by Gerhard Steinmetz
+!
+program pr82620
+   type t(a)
+      integer, len :: a
+   end type
+   type(t(:)), allocatable :: x, y
+   allocate(t(4) :: x)
+   allocate)t(7) :: y)     ! { dg-error "Syntax error in ALLOCATE" }
+end program pr82620