diff options
author | Steven G. Kargl <kargl@gcc.gnu.org> | 2016-07-30 20:05:10 +0000 |
---|---|---|
committer | Steven G. Kargl <kargl@gcc.gnu.org> | 2016-07-30 20:05:10 +0000 |
commit | e4f7a5dffe280edf9dcc57f50005fac5f71fcccb (patch) | |
tree | ca41ac30737daa6543bf8287ca147f63b3faef9a /gcc/fortran/decl.c | |
parent | b441ae1d89410e8f95a4c3317db0f52831bfaf0e (diff) | |
download | gcc-e4f7a5dffe280edf9dcc57f50005fac5f71fcccb.zip gcc-e4f7a5dffe280edf9dcc57f50005fac5f71fcccb.tar.gz gcc-e4f7a5dffe280edf9dcc57f50005fac5f71fcccb.tar.bz2 |
re PR fortran/69867 (ICE on initializing character in type with array of incompatible data)
2016-07-30 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/69867
* decl.c (build_struct): Ensure that pointers point to something.
2016-07-30 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/69867
* gfortran.dg/pr69867.f90: New test.
From-SVN: r238907
Diffstat (limited to 'gcc/fortran/decl.c')
-rw-r--r-- | gcc/fortran/decl.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index ae68c09f..818e7d4 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -1926,8 +1926,10 @@ build_struct (const char *name, gfc_charlen *cl, gfc_expr **init, if (c->initializer->expr_type == EXPR_CONSTANT) gfc_set_constant_character_len (len, c->initializer, -1); - else if (mpz_cmp (c->ts.u.cl->length->value.integer, - c->initializer->ts.u.cl->length->value.integer)) + else if (c->initializer + && c->initializer->ts.u.cl + && mpz_cmp (c->ts.u.cl->length->value.integer, + c->initializer->ts.u.cl->length->value.integer)) { gfc_constructor *ctor; ctor = gfc_constructor_first (c->initializer->value.constructor); |