aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorHarald Anlauf <anlauf@gmx.de>2018-01-18 07:54:17 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2018-01-18 07:54:17 +0000
commitfcf7923742d34c0cb7270594d4cdab4ea1199672 (patch)
treeca20843180e214fa4753562588c090a5efbf2c67 /gcc
parent3c1f3bf69dce25e86a5302d7767c6fc4c2ce418b (diff)
downloadgcc-fcf7923742d34c0cb7270594d4cdab4ea1199672.zip
gcc-fcf7923742d34c0cb7270594d4cdab4ea1199672.tar.gz
gcc-fcf7923742d34c0cb7270594d4cdab4ea1199672.tar.bz2
re PR fortran/83864 (ICE in gfc_apply_init, at fortran/expr.c:4271)
2018-01-17 Harald Anlauf <anlauf@gmx.de> PR fortran/83864 * expr.c (add_init_expr_to_sym): Do not dereference NULL pointer. 2018-01-17 Harald Anlauf <anlauf@gmx.de> PR fortran/83864 * gfortran.dg/pr83864.f90: New test. From-SVN: r256837
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/expr.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr83864.f9013
4 files changed, 24 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 3052533..3fd3bf8 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,5 +1,10 @@
2018-01-17 Harald Anlauf <anlauf@gmx.de>
+ PR fortran/83864
+ * expr.c (add_init_expr_to_sym): Do not dereference NULL pointer.
+
+2018-01-17 Harald Anlauf <anlauf@gmx.de>
+
PR fortran/83874
* decl.c (add_init_expr_to_sym): Do not dereference NULL pointer.
diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c
index 45ccc18..936b6b6 100644
--- a/gcc/fortran/expr.c
+++ b/gcc/fortran/expr.c
@@ -4267,7 +4267,7 @@ gfc_apply_init (gfc_typespec *ts, symbol_attribute *attr, gfc_expr *init)
gfc_set_constant_character_len (len, init, -1);
else if (init
&& init->ts.type == BT_CHARACTER
- && init->ts.u.cl
+ && init->ts.u.cl && init->ts.u.cl->length
&& mpz_cmp (ts->u.cl->length->value.integer,
init->ts.u.cl->length->value.integer))
{
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 492c650..e166d03 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2018-01-17 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/83864
+ * gfortran.dg/pr83864.f90: New test.
+
2018-01-17 Jeff Law <law@redhat.com>
PR testsuite/83883
diff --git a/gcc/testsuite/gfortran.dg/pr83864.f90 b/gcc/testsuite/gfortran.dg/pr83864.f90
new file mode 100644
index 0000000..3bf568a
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr83864.f90
@@ -0,0 +1,13 @@
+! { dg-do run }
+! PR fortran/83864
+!
+! Derived from PR by Contributed by Gerhard Steinmetz <gscfq@t-online.de>
+!
+program p
+ implicit none
+ type t
+ character :: c(3) = transfer('abc','z',3)
+ end type t
+ type(t) :: x
+ if (any (x%c /= ["a", "b", "c"])) call abort ()
+end