diff options
author | tobi <tobi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-07-10 22:37:16 +0000 |
---|---|---|
committer | tobi <tobi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-07-10 22:37:16 +0000 |
commit | 403ddc45539fc7a59c23bdd007be967822174232 (patch) | |
tree | 71058c2b83b5ab95a6950a9d27dec8011f02a891 /gcc/fortran/symbol.c | |
parent | b5a3ac6338aafe27953da02faa2233ddee7050a8 (diff) | |
download | gcc-403ddc45539fc7a59c23bdd007be967822174232.tar.gz |
PR fortran/16336
* decl.c (gfc_match_save): Use-associated common block
doesn't collide.
* gfortran.h (gfc_common_head): Add new field 'name'.
Fix typo in comment after #endif.
* match.c (gfc_get_common): Add new argument from_common,
mangle name if flag is set, fill in new field in structure
gfc_common_head.
(match_common): Set new arg in call to gfc_get_common,
use-associated common block doesn't collide.
* match.h (gfc_get_common): Adapt prototype.
* module.c (load_commons): Set new arg in call to
gfc_get_common.
* symbol.c (free_common_tree): New function.
(gfc_free_namespace): Call new function.
* trans-common.c (several functions): Remove argument
'name', use name from gfc_common_head instead.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84476 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fortran/symbol.c')
-rw-r--r-- | gcc/fortran/symbol.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c index 9208d2205d9..3159436eeb9 100644 --- a/gcc/fortran/symbol.c +++ b/gcc/fortran/symbol.c @@ -2139,6 +2139,22 @@ gfc_commit_symbols (void) } +/* Recursive function that deletes an entire tree and all the common + head structures it points to. */ + +static void +free_common_tree (gfc_symtree * common_tree) +{ + if (common_tree == NULL) + return; + + free_common_tree (common_tree->left); + free_common_tree (common_tree->right); + + gfc_free (common_tree); +} + + /* Recursive function that deletes an entire tree and all the user operator nodes that it contains. */ @@ -2216,6 +2232,7 @@ gfc_free_namespace (gfc_namespace * ns) free_sym_tree (ns->sym_root); free_uop_tree (ns->uop_root); + free_common_tree (ns->common_root); for (cl = ns->cl_list; cl; cl = cl2) { |