From: Steven G. Kargl Date: Sat, 28 Oct 2017 01:06:18 +0000 (+0000) Subject: re PR fortran/82620 ([PDT] ICE: free_expr0(): Bad expr type (at fortran/expr.c:497)) X-Git-Tag: upstream/12.2.0~36005 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fdfcd5ecc51dc8e7252af21115f10946d490c55b;p=platform%2Fupstream%2Fgcc.git 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 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 295704a..a871fc2 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 624fdf5..dcabe26 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 7a90a8d..e4e6ee1 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 0000000..f1c8bc3 --- /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