From 5e07497c1d981a2e4a0033f9663b70dc4741a6fd Mon Sep 17 00:00:00 2001 From: kargl Date: Tue, 26 Jul 2016 22:42:49 +0000 Subject: [PATCH] 2016-07-22 Steven G. Kargl PR fortran/71862 * class.c: Remove assert. Iterate over component only if non-null. 2016-07-22 Steven G. Kargl PR fortran/71862 * gfortran.dg/pr71862.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238774 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 5 +++++ gcc/fortran/class.c | 14 ++++++++------ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/pr71862.f90 | 16 ++++++++++++++++ 4 files changed, 34 insertions(+), 6 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/pr71862.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index b056e0e86e87..0847e64fc5f0 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2016-07-26 Steven G. Kargl + + PR fortran/71862 + * class.c: Remove assert. Iterate over component only if non-null. + 2016-07-22 Steven G. Kargl PR fortran/71935 diff --git a/gcc/fortran/class.c b/gcc/fortran/class.c index a627448529e3..6d324a612426 100644 --- a/gcc/fortran/class.c +++ b/gcc/fortran/class.c @@ -238,12 +238,14 @@ gfc_add_component_ref (gfc_expr *e, const char *name) /* 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; + } } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 23a30625ccf2..3c335c6eb424 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-07-26 Steven G. Kargl + + PR fortran/71862 + * gfortran.dg/pr71862.f90: New test. + 2016-07-26 Martin Sebor * gcc.dg/atomic/pr71675.c: Replace the unsupported c11 target diff --git a/gcc/testsuite/gfortran.dg/pr71862.f90 b/gcc/testsuite/gfortran.dg/pr71862.f90 new file mode 100644 index 000000000000..411bfc27848c --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr71862.f90 @@ -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 -- 2.47.3