mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-21 16:00:58 +08:00
re PR fortran/33375 (ICE (segfault) gfortran.dg/common_6.f90)
2008-01-17 H.J. Lu <hongjiu.lu@intel.com> PR fortran/33375 * symbol.c (free_common_tree): Renamed to ... (gfc_free_common_tree): This. Remove static. (gfc_free_namespace): Updated. * gfortran.h (gfc_free_common_tree): New. * match.c (gfc_match_common): Call gfc_free_common_tree () with gfc_current_ns->common_root and set gfc_current_ns->common_root to NULL on syntax error. From-SVN: r131621
This commit is contained in:
parent
5cc5439e27
commit
c018444469
@ -1,3 +1,16 @@
|
||||
2008-01-17 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR fortran/33375
|
||||
* symbol.c (free_common_tree): Renamed to ...
|
||||
(gfc_free_common_tree): This. Remove static.
|
||||
(gfc_free_namespace): Updated.
|
||||
|
||||
* gfortran.h (gfc_free_common_tree): New.
|
||||
|
||||
* match.c (gfc_match_common): Call gfc_free_common_tree () with
|
||||
gfc_current_ns->common_root and set gfc_current_ns->common_root
|
||||
to NULL on syntax error.
|
||||
|
||||
2008-01-18 Richard Sandiford <rsandifo@nildram.co.uk>
|
||||
|
||||
PR fortran/34686
|
||||
|
@ -2137,6 +2137,7 @@ int gfc_symbols_could_alias (gfc_symbol *, gfc_symbol *);
|
||||
void gfc_undo_symbols (void);
|
||||
void gfc_commit_symbols (void);
|
||||
void gfc_commit_symbol (gfc_symbol *);
|
||||
void gfc_free_common_tree (gfc_symtree *);
|
||||
void gfc_free_namespace (gfc_namespace *);
|
||||
|
||||
void gfc_symbol_init_2 (void);
|
||||
|
@ -2951,6 +2951,8 @@ done:
|
||||
return MATCH_YES;
|
||||
|
||||
syntax:
|
||||
gfc_free_common_tree (gfc_current_ns->common_root);
|
||||
gfc_current_ns->common_root = NULL;
|
||||
gfc_syntax_error (ST_COMMON);
|
||||
|
||||
cleanup:
|
||||
|
@ -2726,14 +2726,14 @@ gfc_commit_symbol (gfc_symbol *sym)
|
||||
/* 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)
|
||||
void
|
||||
gfc_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 (common_tree->left);
|
||||
gfc_free_common_tree (common_tree->right);
|
||||
|
||||
gfc_free (common_tree);
|
||||
}
|
||||
@ -2863,7 +2863,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);
|
||||
gfc_free_common_tree (ns->common_root);
|
||||
|
||||
for (cl = ns->cl_list; cl; cl = cl2)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user