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-array.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-array.c')
-rw-r--r-- | gcc/fortran/trans-array.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index 7136d1e..5ebec62 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -4308,20 +4308,16 @@ gfc_conv_array_parameter (gfc_se * se, gfc_expr * expr, gfc_ss * ss, int g77) } -/* Generate code to deallocate the symbol 'sym', if it is allocated. */ +/* Generate code to deallocate an array, if it is allocated. */ tree -gfc_trans_dealloc_allocated (gfc_symbol * sym) +gfc_trans_dealloc_allocated (tree descriptor) { tree tmp; - tree descriptor; tree deallocate; stmtblock_t block; - gcc_assert (sym->attr.allocatable); - gfc_start_block (&block); - descriptor = sym->backend_decl; deallocate = gfc_array_deallocate (descriptor, null_pointer_node); tmp = gfc_conv_descriptor_data_get (descriptor); @@ -4396,7 +4392,7 @@ gfc_trans_deferred_array (gfc_symbol * sym, tree body) /* Allocatable arrays need to be freed when they go out of scope. */ if (sym->attr.allocatable) { - tmp = gfc_trans_dealloc_allocated (sym); + tmp = gfc_trans_dealloc_allocated (sym->backend_decl); gfc_add_expr_to_block (&fnblock, tmp); } |