I intend to commit the following patch and close the
PR in approximate 6.283 hours.

2016-07-22  Steven G. Kargl  <ka...@gcc.gnu.org>

        PR fortran/71862
        * class.c: Remove assert.  Iterate over component only if non-null.

 
2016-07-22  Steven G. Kargl  <ka...@gcc.gnu.org>

        PR fortran/71862
        * gfortran.dg/pr71862.f90: New test.

Index: gcc/fortran/class.c
===================================================================
--- gcc/fortran/class.c (revision 238665)
+++ gcc/fortran/class.c (working copy)
@@ -238,12 +238,14 @@ gfc_add_component_ref (gfc_expr *e, cons
     /* Avoid losing memory.  */
     gfc_free_ref_list (*tail);
   c = gfc_find_component (derived, name, true, true, tail);
-  gcc_assert (c);
-  for (ref = *tail; ref->next; ref = ref->next)
-    ;
-  ref->next = next;
-  if (!next)
-    e->ts = c->ts;
+
+  if (c) {
+    for (ref = *tail; ref->next; ref = ref->next)
+      ;
+    ref->next = next;
+    if (!next)
+      e->ts = c->ts;
+  }
 }
 
 
Index: gcc/testsuite/gfortran.dg/pr71862.f90
===================================================================
--- gcc/testsuite/gfortran.dg/pr71862.f90       (nonexistent)
+++ gcc/testsuite/gfortran.dg/pr71862.f90       (working copy)
@@ -0,0 +1,16 @@
+! { dg-do compile }
+program p
+   type t
+      integer :: n = 0
+      integer, pointer :: q => null()
+   end type
+   type(t) :: x
+   print *, associated(x%q)
+   x = f()
+   print *, associated(x%q)
+contains
+   function f() result (z)    ! { dg-error "must be dummy, allocatable or 
pointer" }
+      class(t) :: z
+      print *, associated(z%q)
+   end
+end

-- 
Steve

Reply via email to