I plan to commit the attach patch on Saturday unless someone objects.
2018-05-09 Steven G. Kargl <[email protected]>
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 <[email protected]>
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