diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 4fd033a33d5..8062a076824 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2017-06-05 Janus Weil + + Backport from trunk + PR fortran/80766 + * resolve.c (resolve_fl_derived): Make sure that vtype symbols are + properly resolved. + 2017-06-02 Thomas Koenig PR fortran/80904 diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 2323bf543fa..85988c9ab82 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -13835,6 +13835,8 @@ resolve_fl_derived (gfc_symbol *sym) gfc_symbol *vtab = gfc_find_derived_vtab (data->ts.u.derived); gcc_assert (vtab); vptr->ts.u.derived = vtab->ts.u.derived; + if (!resolve_fl_derived0 (vptr->ts.u.derived)) + return false; } } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index db805b4b27b..5250a6d934b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2017-06-05 Janus Weil + + Backport from trunk + PR fortran/80766 + * gfortran.dg/typebound_call_28.f90: New test. + 2017-06-02 Thomas Koenig PR fortran/80904 diff --git a/gcc/testsuite/gfortran.dg/typebound_call_28.f90 b/gcc/testsuite/gfortran.dg/typebound_call_28.f90 new file mode 100644 index 00000000000..376c4c4f9ce --- /dev/null +++ b/gcc/testsuite/gfortran.dg/typebound_call_28.f90 @@ -0,0 +1,37 @@ +! { dg-do compile } +! +! PR 80766: [7/8 Regression] [OOP] ICE with type-bound procedure returning an array +! +! Contributed by Vladimir Fuka + +module m1 + + type :: base + contains + procedure :: fun + end type + + type, extends(base) :: child + end type + +contains + + function fun(o) result(res) + real :: res(3) + class(base) :: o + res = 0 + end function +end module + + +module m2 +contains + + subroutine sub(o) + use m1 + class(child) :: o + real :: res(3) + + res = o%fun() + end subroutine +end module