I plan to commit the attach patch on Saturday unless someone objects.

2018-05-09  Steven G. Kargl  <ka...@gcc.gnu.org>

        PR fortran/70870
        * data.c (gfc_assign_data_value): Check that a data object does
        not also have default initialization.

2018-05-09  Steven G. Kargl  <ka...@gcc.gnu.org>

        PR fortran/70870
        * gfortran.dg/pr70870_1.f90: New test.

-- 
Steve
Index: gcc/fortran/data.c
===================================================================
--- gcc/fortran/data.c	(revision 260000)
+++ gcc/fortran/data.c	(working copy)
@@ -491,6 +491,15 @@ gfc_assign_data_value (gfc_expr *lvalue, gfc_expr *rva
     }
   else
     {
+      if (lvalue->ts.type == BT_DERIVED
+	  && gfc_has_default_initializer (lvalue->ts.u.derived))
+	{
+	  gfc_error ("Nonpointer object %qs with default initialization "
+		     "shall not appear in a DATA statement at %L", 
+		     symbol->name, &lvalue->where);
+	  return false;
+	}
+
       /* Overwriting an existing initializer is non-standard but usually only
 	 provokes a warning from other compilers.  */
       if (init != NULL)
Index: gcc/testsuite/gfortran.dg/pr70870_1.f90
===================================================================
--- gcc/testsuite/gfortran.dg/pr70870_1.f90	(nonexistent)
+++ gcc/testsuite/gfortran.dg/pr70870_1.f90	(working copy)
@@ -0,0 +1,9 @@
+! { dg-do compile }
+! PR fortran/70870
+! Contributed by Vittorio Zecca <zeccav at gmail dot com >
+      type t
+       integer :: g=0   ! default initialization
+      end type
+      type(t) :: v2
+      data v2/t(2)/     ! { dg-error "default initialization shall not" }
+      end

Reply via email to