aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/data.c
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2018-05-10 22:43:00 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2018-05-10 22:43:00 +0000
commit7b24db31a41695cfd4adcee73f5edd73ae001517 (patch)
tree1a21c3b863bc802042c52c160243d7f27d3d7f5c /gcc/fortran/data.c
parentb0aed64bdef6a581650576edbfbb6e6721cc9a9a (diff)
downloadgcc-7b24db31a41695cfd4adcee73f5edd73ae001517.zip
gcc-7b24db31a41695cfd4adcee73f5edd73ae001517.tar.gz
gcc-7b24db31a41695cfd4adcee73f5edd73ae001517.tar.bz2
re PR fortran/70870 (Segmentation violation in gfc_assign_data_value)
2018-05-10 Steven G. Kargl <kargl@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-10 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/70870 * gfortran.dg/pr70870_1.f90: New test. From-SVN: r260138
Diffstat (limited to 'gcc/fortran/data.c')
-rw-r--r--gcc/fortran/data.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/fortran/data.c b/gcc/fortran/data.c
index fdd7052..780a5ad 100644
--- a/gcc/fortran/data.c
+++ b/gcc/fortran/data.c
@@ -491,6 +491,15 @@ gfc_assign_data_value (gfc_expr *lvalue, gfc_expr *rvalue, mpz_t index,
}
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)