diff options
| author | Erik Edelmann <eedelman@gcc.gnu.org> | 2006-04-02 17:00:39 +0000 |
|---|---|---|
| committer | Erik Edelmann <eedelman@gcc.gnu.org> | 2006-04-02 17:00:39 +0000 |
| commit | 763ccd45373c3c60afee048d86ca073aa0e2e860 (patch) | |
| tree | 7090a0a4e5cba66a5413fbfc2c0390b70ed6c1fc /gcc/fortran/trans-expr.c | |
| parent | ace23abf021c2785afc2d66280b47b11aecd56ee (diff) | |
| download | gcc-763ccd45373c3c60afee048d86ca073aa0e2e860.zip gcc-763ccd45373c3c60afee048d86ca073aa0e2e860.tar.gz gcc-763ccd45373c3c60afee048d86ca073aa0e2e860.tar.bz2 | |
trans-array.c (gfc_trans_dealloc_allocated): Take a tree representation of the array to be deallocated as argument instead...
2006-04-02 Erik Edelmann <eedelman@gcc.gnu.org>
* trans-array.c (gfc_trans_dealloc_allocated): Take a
tree representation of the array to be deallocated as argument
instead of its gfc_symbol.
(gfc_trans_deferred_array): Update call to
gfc_trans_dealloc_allocated.
* trans-array.h (gfc_trans_dealloc_allocated): Update prototype.
* trans-expr.c (gfc_conv_function_call): Update call to
gfc_trans_dealloc_allocated, get indirect reference to dummy
arguments.
2006-04-02 Erik Edelmann <eedelman@gcc.gnu.org>
* gfortran.dg/allocatable_dummy_1.f90: Also check that allocatable
dummy arguments work when the actual argument is itself a dummy
argument of the caller.
From-SVN: r112625
Diffstat (limited to 'gcc/fortran/trans-expr.c')
| -rw-r--r-- | gcc/fortran/trans-expr.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index 783583c..94921bc 100644 --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -1920,7 +1920,10 @@ gfc_conv_function_call (gfc_se * se, gfc_symbol * sym, if (formal && formal->sym->attr.allocatable && formal->sym->attr.intent == INTENT_OUT) { - tmp = gfc_trans_dealloc_allocated (arg->expr->symtree->n.sym); + tmp = arg->expr->symtree->n.sym->backend_decl; + if (arg->expr->symtree->n.sym->attr.dummy) + tmp = build_fold_indirect_ref (tmp); + tmp = gfc_trans_dealloc_allocated (tmp); gfc_add_expr_to_block (&se->pre, tmp); } |
