The attached obvious patch fixes a NULL pointer dereference.
Testcase derived from report.  Changelogs below.

Regtested on i686-pc-linux-gnu.

Whoever reviews this, please feel free to commit.

Thanks,
Harald


2018-03-21  Harald Anlauf  <anl...@gmx.de>

        PR fortran/84957
        * trans-types.c (gfc_sym_type): Do not dereference NULL pointer.


2018-03-21  Harald Anlauf  <anl...@gmx.de>

        PR fortran/84957
        * gfortran.dg/pr84957.f90: New test.

Index: gcc/fortran/trans-types.c
===================================================================
--- gcc/fortran/trans-types.c   (revision 258740)
+++ gcc/fortran/trans-types.c   (working copy)
@@ -2252,6 +2252,7 @@
       && sym->ts.type == BT_CHARACTER
       && sym->ts.u.cl->backend_decl == NULL_TREE
       && sym->ns->proc_name
+      && sym->ns->proc_name->ts.u.cl
       && sym->ns->proc_name->ts.u.cl->backend_decl != NULL_TREE)
     sym->ts.u.cl->backend_decl = sym->ns->proc_name->ts.u.cl->backend_decl;
 
Index: gcc/testsuite/gfortran.dg/pr84957.f90
===================================================================
--- gcc/testsuite/gfortran.dg/pr84957.f90       (revision 0)
+++ gcc/testsuite/gfortran.dg/pr84957.f90       (revision 0)
@@ -0,0 +1,17 @@
+! { dg-do compile }
+! PR 84957
+!
+! Testcase derived from PR by G. Steinmetz  <gs...@t-online.de>
+!
+function f() result(u)
+  entry g() result(v)
+contains
+  function v(x) result(z)
+    character :: x(2)
+    character(sum(len_trim(x))) :: z
+  end function v
+  function u(x) result(z)
+    character :: x(2)
+    character(sum(len_trim(x))) :: z
+  end function u
+end function f

Reply via email to