From 15167bbaa59ef9668501a4a224484efa2ff502c9 Mon Sep 17 00:00:00 2001 From: Janus Weil Date: Wed, 9 Feb 2011 21:30:20 +0100 Subject: [PATCH] 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 --- gcc/fortran/ChangeLog | 5 +++ gcc/fortran/resolve.c | 1 - gcc/testsuite/ChangeLog | 5 +++ .../gfortran.dg/typebound_assignment_2.f03 | 39 +++++++++++++++++++ 4 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/typebound_assignment_2.f03 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" } } -- 2.30.2