decl.c (lang_mark_tree): Mark TYPE_LANG_SPECIFIC.
authorMark Mitchell <mark@codesourcery.com>
Thu, 9 Sep 1999 21:47:28 +0000 (21:47 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Thu, 9 Sep 1999 21:47:28 +0000 (21:47 +0000)
* 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

gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/cp/lex.c

index 369b091..0fa9272 100644 (file)
@@ -1,5 +1,10 @@
 1999-09-09  Mark Mitchell  <mark@codesourcery.com>
 
+       * 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.
index 8121e80..00f7bdd 100644 (file)
@@ -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));
-}
index 988e01a..bcadd93 100644 (file)
@@ -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;