From 24554b03c644591306283dd455eef887d1f1b0fe Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Sat, 11 Sep 1999 23:30:39 -0700 Subject: [PATCH] tree.c (save_tree_status): Revert 10 Sep change. * tree.c (save_tree_status): Revert 10 Sep change. (restore_tree_status): Likewise. Call obstack_free with NULL before freeing the obstack proper. From-SVN: r29355 --- gcc/ChangeLog | 6 ++++++ gcc/tree.c | 11 +++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c050d119ff9..da73161fe1b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Sat Sep 11 23:28:33 1999 Richard Henderson + + * tree.c (save_tree_status): Revert 10 Sep change. + (restore_tree_status): Likewise. Call obstack_free with NULL + before freeing the obstack proper. + Sat Sep 11 23:23:46 1999 Richard Henderson * cse.c (cse_main): If gc'ing, collect around cse_basic_block. diff --git a/gcc/tree.c b/gcc/tree.c index b9da51bd5a5..ca471a92bc6 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -365,7 +365,8 @@ save_tree_status (p) function_maybepermanent_obstack = (struct obstack *) xmalloc (sizeof (struct obstack)); gcc_obstack_init (function_maybepermanent_obstack); - maybepermanent_firstobj = NULL; + maybepermanent_firstobj + = (char *) obstack_finish (function_maybepermanent_obstack); function_obstack = (struct obstack *) xmalloc (sizeof (struct obstack)); gcc_obstack_init (function_obstack); @@ -394,14 +395,16 @@ restore_tree_status (p) /* Free saveable storage used by the function just compiled and not saved. */ obstack_free (function_maybepermanent_obstack, maybepermanent_firstobj); + if (obstack_empty_p (function_maybepermanent_obstack)) + { + obstack_free (function_maybepermanent_obstack, NULL); + free (function_maybepermanent_obstack); + } obstack_free (&temporary_obstack, temporary_firstobj); obstack_free (&momentary_obstack, momentary_function_firstobj); obstack_free (function_obstack, NULL); - - if (maybepermanent_firstobj == NULL) - free (function_maybepermanent_obstack); free (function_obstack); temporary_firstobj = p->temporary_firstobj;