diff options
author | Richard Henderson <rth@cygnus.com> | 1999-09-11 23:30:39 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 1999-09-11 23:30:39 -0700 |
commit | 24554b03c644591306283dd455eef887d1f1b0fe (patch) | |
tree | 88853ad115b0c3604e2de43f3c0a9c852fdb276a /gcc/tree.c | |
parent | 1497faf6be0086785ed49a0fd0177d78d9ce346c (diff) | |
download | gcc-24554b03c644591306283dd455eef887d1f1b0fe.zip gcc-24554b03c644591306283dd455eef887d1f1b0fe.tar.gz gcc-24554b03c644591306283dd455eef887d1f1b0fe.tar.bz2 |
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
Diffstat (limited to 'gcc/tree.c')
-rw-r--r-- | gcc/tree.c | 11 |
1 files changed, 7 insertions, 4 deletions
@@ -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; |