]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/86110 (ICE in gfc_resolve_character_array_constructor, at fortran/array...
authorSteven G. Kargl <kargl@gcc.gnu.org>
Wed, 13 Jun 2018 22:40:46 +0000 (22:40 +0000)
committerSteven G. Kargl <kargl@gcc.gnu.org>
Wed, 13 Jun 2018 22:40:46 +0000 (22:40 +0000)
2018-06-13  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/86110
* array.c (gfc_resolve_character_array_constructor): Avoid NULL
pointer dereference.

2018-06-13  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/86110
* gfortran.dg/pr86110.f90: New test.

From-SVN: r261575

gcc/fortran/ChangeLog
gcc/fortran/array.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/pr86110.f90 [new file with mode: 0644]

index 36fa112491be19fecb4860c73bab130468266a43..6541331e05e181d9bd23b871392a5da4d932856b 100644 (file)
@@ -1,3 +1,9 @@
+2018-06-13  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+       PR fortran/86110
+       * array.c (gfc_resolve_character_array_constructor): Avoid NULL 
+       pointer dereference.
+
 2018-06-12  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        PR fortran/44491
index e35c67abd5d78d1c9f9688fdd02415f4374e35d7..17b3c7d44e87f703ff4904fc81740babbe992def 100644 (file)
@@ -2007,7 +2007,9 @@ got_charlen:
          gfc_ref *ref;
          for (ref = p->expr->ref; ref; ref = ref->next)
            if (ref->type == REF_SUBSTRING
+               && ref->u.ss.start
                && ref->u.ss.start->expr_type == EXPR_CONSTANT
+               && ref->u.ss.end
                && ref->u.ss.end->expr_type == EXPR_CONSTANT)
              break;
 
index aed39d9624408cba03011729c5b29075438aa67d..2803fe4067d92d6ef5f5f47d3132c657044f2969 100644 (file)
@@ -1,3 +1,8 @@
+2018-06-13  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+       PR fortran/86110
+       * gfortran.dg/pr86110.f90: New test.
+
 2018-06-12  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        PR fortran/44491
diff --git a/gcc/testsuite/gfortran.dg/pr86110.f90 b/gcc/testsuite/gfortran.dg/pr86110.f90
new file mode 100644 (file)
index 0000000..890670f
--- /dev/null
@@ -0,0 +1,7 @@
+! { dg-do compile }
+! PR fortran/86110
+program p
+   character(:), allocatable :: x, y
+   x = 'abc'
+   y = [x(:)]  ! { dg-error "Incompatible ranks 0 and 1" }
+end