re PR fortran/88155 (ICE in gfc_format_decoder, at fortran/error.c:947)
authorSteven G. Kargl <kargl@gcc.gnu.org>
Wed, 12 Dec 2018 00:53:08 +0000 (00:53 +0000)
committerSteven G. Kargl <kargl@gcc.gnu.org>
Wed, 12 Dec 2018 00:53:08 +0000 (00:53 +0000)
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

gcc/fortran/ChangeLog
gcc/fortran/primary.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/pr70870_1.f90
gcc/testsuite/gfortran.dg/pr88155.f90 [new file with mode: 0644]

index 945bb23e369ba443cc1a32ce1ca21e44903fed23..78fe19a6736a0e3c15d2d4ce509d8b89ca008fda 100644 (file)
@@ -1,3 +1,9 @@
+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
index d94a5c48adfe30790ef5b761821e0490c33513f9..52cc2f17cd4d0bc87561af312557e43e41af370c 100644 (file)
@@ -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);
index 8c04149484cee36889fa8c77b73f3435c23f3446..bfe527a7ad7a2ed3f785fcab3963f457aeb29a34 100644 (file)
@@ -1,3 +1,9 @@
+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
index 0f9584a36dbfb2d63e9b3373a785b6b53dcdf7ce..eeec92143f43b873d33c76f15c0a958ad011f2aa 100644 (file)
@@ -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 (file)
index 0000000..e10eaca
--- /dev/null
@@ -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