re PR fortran/57562 ([OOP] ICE due to extended derived type with PARAMETER attribute)
2015-01-02 Janus Weil <janus@gcc.gnu.org> PR fortran/57562 * expr.c (find_component_ref): Deal with extended types. 2015-01-02 Janus Weil <janus@gcc.gnu.org> PR fortran/57562 * gfortran.dg/extends_16.f90: New. From-SVN: r219144
This commit is contained in:
parent
09ed8520b9
commit
74a1c62fca
|
@ -1,3 +1,8 @@
|
|||
2015-01-02 Janus Weil <janus@gcc.gnu.org>
|
||||
|
||||
PR fortran/57562
|
||||
* expr.c (find_component_ref): Deal with extended types.
|
||||
|
||||
2015-01-02 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
* trans-decl.c (gfc_build_qualified_array): Fix coarray tokens
|
||||
|
|
|
@ -1270,12 +1270,23 @@ depart:
|
|||
static gfc_constructor *
|
||||
find_component_ref (gfc_constructor_base base, gfc_ref *ref)
|
||||
{
|
||||
gfc_component *comp;
|
||||
gfc_component *pick;
|
||||
gfc_component *pick = ref->u.c.component;
|
||||
gfc_constructor *c = gfc_constructor_first (base);
|
||||
|
||||
comp = ref->u.c.sym->components;
|
||||
pick = ref->u.c.component;
|
||||
gfc_symbol *dt = ref->u.c.sym;
|
||||
int ext = dt->attr.extension;
|
||||
|
||||
/* For extended types, check if the desired component is in one of the
|
||||
* parent types. */
|
||||
while (ext > 0 && gfc_find_component (dt->components->ts.u.derived,
|
||||
pick->name, true, true))
|
||||
{
|
||||
dt = dt->components->ts.u.derived;
|
||||
c = gfc_constructor_first (c->expr->value.constructor);
|
||||
ext--;
|
||||
}
|
||||
|
||||
gfc_component *comp = dt->components;
|
||||
while (comp != pick)
|
||||
{
|
||||
comp = comp->next;
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2015-01-02 Janus Weil <janus@gcc.gnu.org>
|
||||
|
||||
PR fortran/57562
|
||||
* gfortran.dg/extends_16.f90: New.
|
||||
|
||||
2015-01-02 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
* gfortran.dg/coarray/caf.exp (dg-compile-aux-modules): Add.
|
||||
|
@ -12,7 +17,7 @@
|
|||
2015-01-02 Janus Weil <janus@gcc.gnu.org>
|
||||
|
||||
PR fortran/60507
|
||||
* gfortran.dg/dummy_procedure_11: New.
|
||||
* gfortran.dg/dummy_procedure_11.f90: New.
|
||||
|
||||
Copyright (C) 2015 Free Software Foundation, Inc.
|
||||
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
! { dg-do run }
|
||||
!
|
||||
! PR 57562: [OOP] ICE due to extended derived type with PARAMETER attribute
|
||||
!
|
||||
! Contributed by <helvio.vairinhos@gmail.com>
|
||||
|
||||
type :: Parent
|
||||
integer :: member1 = 0
|
||||
end type
|
||||
|
||||
type, extends(Parent) :: Child
|
||||
integer :: member2 = 0
|
||||
end type
|
||||
|
||||
type, extends(Child) :: Grandchild
|
||||
integer :: member3 = 0
|
||||
end type
|
||||
|
||||
type(Grandchild), parameter :: object = Grandchild(23, 42, -99)
|
||||
|
||||
if (object%member1 /= 23) call abort
|
||||
if (object%member2 /= 42) call abort
|
||||
if (object%member3 /= -99) call abort
|
||||
|
||||
end
|
Loading…
Reference in New Issue