From: Janus Weil Date: Wed, 9 Feb 2011 20:30:20 +0000 (+0100) Subject: re PR fortran/47463 ([OOP] ICE in gfc_add_component_ref) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=15167bbaa59ef9668501a4a224484efa2ff502c9;p=gcc.git re PR fortran/47463 ([OOP] ICE in gfc_add_component_ref) 2011-02-09 Janus Weil PR fortran/47463 * resolve.c (resolve_typebound_subroutine): Remove erroneous line. 2011-02-09 Janus Weil PR fortran/47463 * gfortran.dg/typebound_assignment_2.f03: New. From-SVN: r169985 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 14ae30f9757..6475d5eaf8b 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2011-02-09 Janus Weil + + PR fortran/47463 + * resolve.c (resolve_typebound_subroutine): Remove erroneous line. + 2011-02-09 Janus Weil PR fortran/47637 diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 7f3734e8269..688967a99d1 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -5894,7 +5894,6 @@ resolve_typebound_subroutine (gfc_code *code) name = name ? name : code->expr1->value.function.esym->name; code->expr1->symtree = expr->symtree; code->expr1->ref = gfc_copy_ref (expr->ref); - expr->symtree->n.sym->ts.u.derived = declared; gfc_add_vptr_component (code->expr1); gfc_add_component_ref (code->expr1, name); code->expr1->value.function.esym = NULL; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8f26a770c1e..9725a4948ec 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-02-09 Janus Weil + + PR fortran/47463 + * gfortran.dg/typebound_assignment_2.f03: New. + 2011-02-09 Richard Guenther PR tree-optimization/47664 diff --git a/gcc/testsuite/gfortran.dg/typebound_assignment_2.f03 b/gcc/testsuite/gfortran.dg/typebound_assignment_2.f03 new file mode 100644 index 00000000000..862535a8652 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/typebound_assignment_2.f03 @@ -0,0 +1,39 @@ +! { dg-do compile } +! +! PR 47463: [OOP] ICE in gfc_add_component_ref +! +! Contributed by Rich Townsend + +module hydro_grid + type :: grid_t + contains + procedure :: assign + generic :: assignment(=) => assign + end type grid_t + public :: grid_t +contains + subroutine assign (this, that) + class(grid_t), intent(inout) :: this + class(grid_t), intent(in) :: that + end subroutine assign +end module hydro_grid + +module hydro_flow + use hydro_grid + type :: flow_t + class(grid_t), allocatable :: gr + end type flow_t +contains + subroutine init_params (this) + class(flow_t), intent(out) :: this + type(grid_t) :: gr + call init_comps(this, gr) + end subroutine init_params + subroutine init_comps (this, gr) + class(flow_t), intent(out) :: this + class(grid_t), intent(in) :: gr + this%gr = gr + end subroutine init_comps +end module hydro_flow + +! { dg-final { cleanup-modules "hydro_grid hydro_flow" } }