summaryrefslogtreecommitdiff
path: root/gcc/fortran/symbol.c
diff options
context:
space:
mode:
authortobi <tobi@138bc75d-0d04-0410-961f-82ee72b054a4>2004-07-10 22:37:16 +0000
committertobi <tobi@138bc75d-0d04-0410-961f-82ee72b054a4>2004-07-10 22:37:16 +0000
commit403ddc45539fc7a59c23bdd007be967822174232 (patch)
tree71058c2b83b5ab95a6950a9d27dec8011f02a891 /gcc/fortran/symbol.c
parentb5a3ac6338aafe27953da02faa2233ddee7050a8 (diff)
downloadgcc-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.c17
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)
{