diff options
author | Janus Weil <janus@gcc.gnu.org> | 2010-11-05 19:14:52 +0100 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2010-11-05 19:14:52 +0100 |
commit | 611c64f0699940b9604b4ea719daadbdae79654c (patch) | |
tree | db3c9509cd58e015bc566f15340f5dd30d33b1b0 /gcc/fortran/expr.c | |
parent | 458ebeba0f4edf877b36a9b61d56ee4ff8e97af3 (diff) | |
download | gcc-611c64f0699940b9604b4ea719daadbdae79654c.zip gcc-611c64f0699940b9604b4ea719daadbdae79654c.tar.gz gcc-611c64f0699940b9604b4ea719daadbdae79654c.tar.bz2 |
re PR fortran/45451 ([OOP] Inconsistent status of ALLOCATABLE components inside CLASS variables.)
2010-11-05 Janus Weil <janus@gcc.gnu.org>
PR fortran/45451
PR fortran/46174
* class.c (gfc_find_derived_vtab): Improved search for existing vtab.
Add component '$copy' to vtype symbol for polymorphic deep copying.
* expr.c (gfc_check_pointer_assign): Make sure the vtab is generated
during resolution stage.
* resolve.c (resolve_codes): Don't resolve code if namespace is already
resolved.
* trans-stmt.c (gfc_trans_allocate): Call '$copy' procedure for
polymorphic ALLOCATE statements with SOURCE.
2010-11-05 Janus Weil <janus@gcc.gnu.org>
PR fortran/45451
PR fortran/46174
* gfortran.dg/class_19.f03: Modified.
* gfortran.dg/class_allocate_6.f03: New.
From-SVN: r166368
Diffstat (limited to 'gcc/fortran/expr.c')
-rw-r--r-- | gcc/fortran/expr.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c index 8dfbf73..2b98b35 100644 --- a/gcc/fortran/expr.c +++ b/gcc/fortran/expr.c @@ -3457,6 +3457,10 @@ gfc_check_pointer_assign (gfc_expr *lvalue, gfc_expr *rvalue) return FAILURE; } + if (lvalue->ts.type == BT_CLASS && rvalue->ts.type == BT_DERIVED) + /* Make sure the vtab is present. */ + gfc_find_derived_vtab (rvalue->ts.u.derived); + /* Check rank remapping. */ if (rank_remap) { |