aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2018-12-12 00:53:08 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2018-12-12 00:53:08 +0000
commit2f00fb3d0ba1174dee21c33162a5fdc4e583a061 (patch)
tree98c1295e1c7a1c4c700f59c22e0955fe9d750858 /gcc
parent85c223fa128516d2f428f85cb0599d464f9ddc1b (diff)
downloadgcc-2f00fb3d0ba1174dee21c33162a5fdc4e583a061.zip
gcc-2f00fb3d0ba1174dee21c33162a5fdc4e583a061.tar.gz
gcc-2f00fb3d0ba1174dee21c33162a5fdc4e583a061.tar.bz2
re PR fortran/88155 (ICE in gfc_format_decoder, at fortran/error.c:947)
2018-12-11 Steven G. Kargl <kargl@gcc.gnu.org> 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 <kargl@gcc.gnu.org> PR fortran/88155 * gfortran.dg/pr70870_1.f90: Update testcase to use -std=gnu. * gfortran.dg/pr88155.f90: New test. From-SVN: r267041
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/primary.c1
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gfortran.dg/pr70870_1.f901
-rw-r--r--gcc/testsuite/gfortran.dg/pr88155.f909
5 files changed, 23 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 945bb23..78fe19a 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,5 +1,11 @@
2018-12-11 Steven G. Kargl <kargl@gcc.gnu.org>
+ 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 <kargl@gcc.gnu.org>
+
PR fortran/88249
* gfortran.h: Update prototype for gfc_resolve_filepos().
* io.c (gfc_resolve_filepos): Check for UNIT number if ERR= is present.
diff --git a/gcc/fortran/primary.c b/gcc/fortran/primary.c
index d94a5c4..52cc2f1 100644
--- a/gcc/fortran/primary.c
+++ b/gcc/fortran/primary.c
@@ -3212,6 +3212,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 8c04149..bfe527a 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,11 @@
2018-12-11 Steven G. Kargl <kargl@gcc.gnu.org>
+ 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 <kargl@gcc.gnu.org>
+
PR fortran/88249
* gfortran.dg/pr88249.f90: New test.
diff --git a/gcc/testsuite/gfortran.dg/pr70870_1.f90 b/gcc/testsuite/gfortran.dg/pr70870_1.f90
index 0f9584a..eeec921 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 <zeccav at gmail dot com >
type t
diff --git a/gcc/testsuite/gfortran.dg/pr88155.f90 b/gcc/testsuite/gfortran.dg/pr88155.f90
new file mode 100644
index 0000000..e10eaca
--- /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