| Submitter | Tobias Burnus |
|---|---|
| Date | Dec. 5, 2012, 4:06 p.m. |
| Message ID | <50BF7120.6040806@net-b.de> |
| Download | mbox | patch |
| Permalink | /patch/203898/ |
| State | New |
| Headers | show |
Comments
Hi Tobias, > The patch below is part of my FINAL patch. The NULL -> NULL_TREE change is > obvious. certainly ok. > The expr to al->expr change is to pass a BT_CLASS instead of a > BT_DERIVED. And the NULL to gfc_lval_expr_from_sym change allows to access > var->_vtab->_final for a BT_CLASS deferred variable. It seems that both of them will not have any effect right now, but are useful only as preparation for FINAL, right? > Build and regtested on x86-64-linux. > OK for the trunk? Yes, ok from my side. One could also commit those changes together with the actual changes that will come in gfc_deallocate_scalar_with_status. OTOH, they are not doing any harm, so: Ok for trunk. Thanks for the patch, Janus
Btw, one nit about your ChangeLog:
2012-12-05 Tobias Burnus <burnus@net-b.de>
* trans-array.c (gfc_deallocate_scalar_with_status): Use
NULL_TREE in the call to gfc_deallocate_scalar_with_status.
* trans-decl.c (gfc_trans_deferred_vars): Pass symbol.
* trans-stmt.c (gfc_trans_deallocate): Pass polymorphic variable.
The trans-array.c line should have "structure_alloc_comps".
Cheers,
Janus
2012/12/5 Tobias Burnus <burnus@net-b.de>:
> First, I would like to *ping* the patch
> http://gcc.gnu.org/ml/fortran/2012-12/msg00022.html
>
>
> The patch below is part of my FINAL patch. The NULL -> NULL_TREE change is
> obvious. The expr to al->expr change is to pass a BT_CLASS instead of a
> BT_DERIVED. And the NULL to gfc_lval_expr_from_sym change allows to access
> var->_vtab->_final for a BT_CLASS deferred variable.
>
> Build and regtested on x86-64-linux.
> OK for the trunk?
>
> Tobias
Patch
2012-12-05 Tobias Burnus <burnus@net-b.de> * trans-array.c (gfc_deallocate_scalar_with_status): Use NULL_TREE in the call to gfc_deallocate_scalar_with_status. * trans-decl.c (gfc_trans_deferred_vars): Pass symbol. * trans-stmt.c (gfc_trans_deallocate): Pass polymorphic variable. diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index 24adfde..0689892 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -7589,7 +7589,7 @@ structure_alloc_comps (gfc_symbol * der_type, tree decl, CLASS_DATA (c)->attr.codimension); else { - tmp = gfc_deallocate_scalar_with_status (comp, NULL, true, NULL, + tmp = gfc_deallocate_scalar_with_status (comp, NULL_TREE, true, NULL, CLASS_DATA (c)->ts); gfc_add_expr_to_block (&tmpblock, tmp); called_dealloc_with_status = true; diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index 3bee178..b236050 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -3780,9 +3780,10 @@ gfc_trans_deferred_vars (gfc_symbol * proc_sym, gfc_wrapped_block * block) NULL_TREE, true, NULL, true); else - tmp = gfc_deallocate_scalar_with_status (se.expr, NULL, - true, NULL, - sym->ts); + tmp = gfc_deallocate_scalar_with_status (se.expr, NULL_TREE, + true, + gfc_lval_expr_from_sym (sym), + sym->ts); } if (sym->ts.type == BT_CLASS) { diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c index 79dc27d..6fe8b77 100644 --- a/gcc/fortran/trans-stmt.c +++ b/gcc/fortran/trans-stmt.c @@ -5380,7 +5380,7 @@ gfc_trans_deallocate (gfc_code *code) else { tmp = gfc_deallocate_scalar_with_status (se.expr, pstat, false, - expr, expr->ts); + al->expr, al->expr->ts); gfc_add_expr_to_block (&se.pre, tmp); /* Set to zero after deallocation. */