From fdfcd5ecc51dc8e7252af21115f10946d490c55b Mon Sep 17 00:00:00 2001 From: "Steven G. Kargl" Date: Sat, 28 Oct 2017 01:06:18 +0000 Subject: [PATCH] re PR fortran/82620 ([PDT] ICE: free_expr0(): Bad expr type (at fortran/expr.c:497)) 2017-10-27 Steven G. Kargl PR fortran/82620 * match.c (gfc_match_allocate): Exit early on syntax error. 2017-10-27 Steven G. Kargl PR fortran/82620 * gfortran.dg/allocate_error_7.f90: new test. From-SVN: r254193 --- gcc/fortran/ChangeLog | 5 +++++ gcc/fortran/match.c | 5 ++++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/allocate_error_7.f90 | 12 ++++++++++++ 4 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/allocate_error_7.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 295704adc6e..a871fc28a4f 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2017-10-27 Steven G. Kargl + + PR fortran/82620 + * match.c (gfc_match_allocate): Exit early on syntax error. + 2017-10-27 Thomas Koenig PR fortran/56342 diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c index 624fdf55db1..dcabe269e61 100644 --- a/gcc/fortran/match.c +++ b/gcc/fortran/match.c @@ -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; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7a90a8d5af3..e4e6ee181e4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-10-27 Steven G. Kargl + + PR fortran/82620 + * gfortran.dg/allocate_error_7.f90: new test. + 2017-10-27 Paolo Carlini PR c++/82218 diff --git a/gcc/testsuite/gfortran.dg/allocate_error_7.f90 b/gcc/testsuite/gfortran.dg/allocate_error_7.f90 new file mode 100644 index 00000000000..f1c8bc3db64 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/allocate_error_7.f90 @@ -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 -- 2.30.2