From: Steven G. Kargl Date: Wed, 12 Dec 2018 01:26:12 +0000 (+0000) Subject: re PR fortran/88155 (ICE in gfc_format_decoder, at fortran/error.c:947) X-Git-Tag: releases/gcc-7.5.0~729 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b66944b9344dcbeececedbccc72d87ce6b9dede7;p=thirdparty%2Fgcc.git re PR fortran/88155 (ICE in gfc_format_decoder, at fortran/error.c:947) 2018-12-11 Steven G. Kargl PR fortran/88155 * primary.c (gfc_match_structure_constructor): Set the locus of an expression to avoid a NULL pointer dereference. 2018-12-11 Steven G. Kargl PR fortran/88155 * gfortran.dg/pr70870_1.f90: Update testcase to use -std=gnu. * gfortran.dg/pr88155.f90: New test. From-SVN: r267043 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index f62f826acba7..12b348733ce2 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2018-12-11 Steven G. Kargl + + PR fortran/88155 + * primary.c (gfc_match_structure_constructor): Set the locus of + an expression to avoid a NULL pointer dereference. + 2018-12-11 Steven G. Kargl PR fortran/88249 diff --git a/gcc/fortran/primary.c b/gcc/fortran/primary.c index c0ab09e7f50e..7dc05881bf70 100644 --- a/gcc/fortran/primary.c +++ b/gcc/fortran/primary.c @@ -2980,6 +2980,7 @@ gfc_match_structure_constructor (gfc_symbol *sym, gfc_expr **result) e = gfc_get_expr (); e->symtree = symtree; e->expr_type = EXPR_FUNCTION; + e->where = gfc_current_locus; gcc_assert (gfc_fl_struct (sym->attr.flavor) && symtree->n.sym->attr.flavor == FL_PROCEDURE); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 200ff75476b1..a244a4ff8ae3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2018-12-11 Steven G. Kargl + + PR fortran/88155 + * gfortran.dg/pr70870_1.f90: Update testcase to use -std=gnu. + * gfortran.dg/pr88155.f90: New test. + 2018-12-11 Steven G. Kargl PR fortran/88249 diff --git a/gcc/testsuite/gfortran.dg/pr70870_1.f90 b/gcc/testsuite/gfortran.dg/pr70870_1.f90 index 0f9584a36dbf..eeec92143f43 100644 --- a/gcc/testsuite/gfortran.dg/pr70870_1.f90 +++ b/gcc/testsuite/gfortran.dg/pr70870_1.f90 @@ -1,4 +1,5 @@ ! { dg-do compile } +! { dg-options "-std=gnu" } ! PR fortran/70870 ! Contributed by Vittorio Zecca type t diff --git a/gcc/testsuite/gfortran.dg/pr88155.f90 b/gcc/testsuite/gfortran.dg/pr88155.f90 new file mode 100644 index 000000000000..e10eaca2ba67 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr88155.f90 @@ -0,0 +1,9 @@ +! { dg-do compile } +program p + type t + integer :: a + end type + type(t) :: x + data x /t()1/ ! { dg-error "No initializer for component" } + print *, x +end