re PR fortran/57364 ([OOP] ICE gfc_enforce_clean_symbol_state)

2013-05-22  Tobias Burnus  <burnus@net-b.de>

        PR fortran/57364
        * resolve.c (get_temp_from_expr): Commit created sym.

2013-05-22  Tobias Burnus  <burnus@net-b.de>

        PR fortran/57364
        * gfortran.dg/defined_assignment_6.f90: New.

From-SVN: r199196
This commit is contained in:
Tobias Burnus 2013-05-22 14:43:55 +02:00 committed by Tobias Burnus
parent 1e1ba2d795
commit 28a595fc80
4 changed files with 47 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2013-05-22 Tobias Burnus <burnus@net-b.de>
PR fortran/57364
* resolve.c (get_temp_from_expr): Commit created sym.
2013-05-22 Tobias Burnus <burnus@net-b.de>
PR fortran/57338

View File

@ -9300,6 +9300,7 @@ get_temp_from_expr (gfc_expr *e, gfc_namespace *ns)
gfc_set_sym_referenced (tmp->n.sym);
gfc_add_flavor (&tmp->n.sym->attr, FL_VARIABLE, name, NULL);
gfc_commit_symbol (tmp->n.sym);
e = gfc_lval_expr_from_sym (tmp->n.sym);
/* Should the lhs be a section, use its array ref for the

View File

@ -1,3 +1,8 @@
2013-05-22 Tobias Burnus <burnus@net-b.de>
PR fortran/57364
* gfortran.dg/defined_assignment_6.f90: New.
2013-05-22 Tobias Burnus <burnus@net-b.de>
PR fortran/57338

View File

@ -0,0 +1,36 @@
! { dg-do compile }
!
! PR fortran/57364
!
! Contributed by Damian Rouson
!
module ref_counter_implementation
type ref_counter
contains
procedure :: assign
generic :: assignment(=) => assign
end type
contains
subroutine assign (lhs, rhs)
class (ref_counter), intent(inout) :: lhs
class (ref_counter), intent(in) :: rhs
end subroutine
end module
module foo_parent_implementation
use ref_counter_implementation ,only: ref_counter
type :: foo_parent
type(ref_counter) :: counter
end type
contains
type(foo_parent) function new_foo_parent()
end function
end module
module foo_implementation
use foo_parent_implementation ,only: foo_parent,new_foo_parent
type, extends(foo_parent) :: foo
end type
contains
type(foo) function new_foo()
new_foo%foo_parent = new_foo_parent()
end function
end module