From: Mark Mitchell Date: Thu, 9 Sep 1999 21:47:28 +0000 (+0000) Subject: decl.c (lang_mark_tree): Mark TYPE_LANG_SPECIFIC. X-Git-Tag: prereleases/libstdc++-2.92~10706 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c27db0df86846d46159245fc1036a386f87cf39e;p=thirdparty%2Fgcc.git decl.c (lang_mark_tree): Mark TYPE_LANG_SPECIFIC. * decl.c (lang_mark_tree): Mark TYPE_LANG_SPECIFIC. (lang_cleanup_tree): Remove. * lex.c (make_lang_type): Use ggc_alloc to allocate TYPE_LANG_SPECIFIC. From-SVN: r29244 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 369b091f7f7f..0fa9272d3f51 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,10 @@ 1999-09-09 Mark Mitchell + * decl.c (lang_mark_tree): Mark TYPE_LANG_SPECIFIC. + (lang_cleanup_tree): Remove. + * lex.c (make_lang_type): Use ggc_alloc to allocate + TYPE_LANG_SPECIFIC. + Reorganize per-function data. * cp-tree.h (saved_scope): Add function_decl, bindings. (language_function): Rename binding_level to bindings. diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 8121e80547de..00f7bddd8e6a 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -14583,6 +14583,7 @@ lang_mark_tree (t) if (lt && !(TREE_CODE (t) == POINTER_TYPE && TREE_CODE (TREE_TYPE (t)) == METHOD_TYPE)) { + ggc_mark (lt); ggc_mark_tree (lt->vfields); ggc_mark_tree (lt->vbases); ggc_mark_tree (lt->tags); @@ -14602,13 +14603,3 @@ lang_mark_tree (t) } } -void -lang_cleanup_tree (t) - tree t; -{ - if (TREE_CODE_CLASS (TREE_CODE (t)) == 't' - && TYPE_LANG_SPECIFIC (t) != NULL - && !(TREE_CODE (t) == POINTER_TYPE - && TREE_CODE (TREE_TYPE (t)) == METHOD_TYPE)) - free (TYPE_LANG_SPECIFIC (t)); -} diff --git a/gcc/cp/lex.c b/gcc/cp/lex.c index 988e01a69710..bcadd935a84f 100644 --- a/gcc/cp/lex.c +++ b/gcc/cp/lex.c @@ -4828,7 +4828,7 @@ make_lang_type (code) SET_IS_AGGR_TYPE (t, 1); - pi = (struct lang_type *) xmalloc (sizeof (struct lang_type)); + pi = (struct lang_type *) ggc_alloc (sizeof (struct lang_type)); bzero ((char *) pi, (int) sizeof (struct lang_type)); TYPE_LANG_SPECIFIC (t) = pi;