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:
parent
1e1ba2d795
commit
28a595fc80
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
Loading…
Reference in New Issue