ggc.h (lang_cleanup_tree): Remove.
authorMark Mitchell <mark@codesourcery.com>
Thu, 9 Sep 1999 21:41:38 +0000 (21:41 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Thu, 9 Sep 1999 21:41:38 +0000 (21:41 +0000)
* ggc.h (lang_cleanup_tree): Remove.
* gcc-simple.c (ggc_free_tree): Don't call lang_cleanup_tree.
* ggc-callbacks.c (lang_cleanup_tree): Remove.

* c-decl.c (finish_struct): Use ggc_alloc to allocate
TYPE_LANG_SPECIFIC when garbage collecting.
(lang_cleanup_tree): Remove.

From-SVN: r29242

gcc/ChangeLog
gcc/c-decl.c
gcc/ggc-callbacks.c
gcc/ggc-simple.c
gcc/ggc.h

index 27f5f129dcaee900526e7cd6f7a6522a92c1919b..afc3ccbfb0bc0123ef23a92cbde15019fc505292 100644 (file)
@@ -1,3 +1,13 @@
+Thu Sep  9 14:36:31 1999  Mark Mitchell  <mark@codesourcery.com>
+
+       * ggc.h (lang_cleanup_tree): Remove.
+       * gcc-simple.c (ggc_free_tree): Don't call lang_cleanup_tree.
+       * ggc-callbacks.c (lang_cleanup_tree): Remove.
+       
+       * c-decl.c (finish_struct): Use ggc_alloc to allocate
+       TYPE_LANG_SPECIFIC when garbage collecting.
+       (lang_cleanup_tree): Remove.
+
 Thu Sep  9 14:23:02 1999  Jason Merrill  <jason@yorick.cygnus.com>
 
        * defaults.h (EH_FRAME_SECTION, EH_FRAME_SECTION_ASM_OP): Define here.
index f23cbc2d3396310c793902bb537928d381cd6410..1acb16012646f4de106d3e9ef6fb59455ccfdb28 100644 (file)
@@ -5725,7 +5725,9 @@ finish_struct (t, fieldlist, attributes)
        /* Use the same allocation policy here that make_node uses, to
           ensure that this lives as long as the rest of the struct decl.
           All decls in an inline function need to be saved.  */
-       if (allocation_temporary_p ())
+       if (ggc_p)
+         space = ggc_alloc (sizeof (struct lang_type) + len * sizeof (tree));
+       else if (allocation_temporary_p ())
          space = savealloc (sizeof (struct lang_type) + len * sizeof (tree));
        else
          space = oballoc (sizeof (struct lang_type) + len * sizeof (tree));
@@ -7142,19 +7144,6 @@ lang_mark_tree (t)
       ggc_mark_tree (i->error_locus);
       ggc_mark_tree (i->limbo_value);
     }
-}
-
-/* Free the language specific bits in T for GC.  */
-void
-lang_cleanup_tree (t)
-     tree t;
-{
-  if (TREE_CODE_CLASS (TREE_CODE (t)) == 't'
-      && TYPE_LANG_SPECIFIC (t) != NULL)
-    {
-#if 0
-      /* This is currently allocated with an obstack.  This will change.  */
-      free (TYPE_LANG_SPECIFIC (t));
-#endif
-    }
+  else if (TYPE_P (t) && TYPE_LANG_SPECIFIC (t))
+    ggc_mark (TYPE_LANG_SPECIFIC (t));
 }
index 797c3de47cafd241999dc61078bf407e1c14a738..3992368cff567465cc179ca458ead437b2b99f98 100644 (file)
@@ -35,15 +35,6 @@ lang_mark_tree (t)
   abort ();
 }
 
-void
-lang_cleanup_tree (t)
-     union tree_node *t ATTRIBUTE_UNUSED;
-{
-  /* If this function is called, we are doing GC.  But, this file is
-     only included in compilers for languages that don't support GC.  */
-  abort ();
-}
-
 void
 lang_mark_false_label_stack (l)
      struct label_node *l ATTRIBUTE_UNUSED;
index df5c0cde5e01ee5f9431db7eb912496f768043a5..d6e13cbf6f4e2022ccc51adb62268215e96fc507 100644 (file)
@@ -385,14 +385,6 @@ static inline void
 ggc_free_tree (t)
      struct ggc_tree *t;
 {
-  switch (TREE_CODE_CLASS (TREE_CODE (&t->tree)))
-    {
-    case 'd': /* A decl node.  */
-    case 't': /* A type node.  */
-      lang_cleanup_tree (&t->tree);
-      break;
-    }
-
 #ifdef GGC_DUMP
   fprintf (dump, "collect tree %p\n", &t->tree);
 #endif
index f2e6da384b0727b25fcff5e36706e102558b8bf2..bd6fe2fe543a562fc075dd1e973ae9f1290065d2 100644 (file)
--- a/gcc/ggc.h
+++ b/gcc/ggc.h
@@ -87,9 +87,6 @@ void ggc_mark PROTO ((void *));
    the lang_specific hooks in the tree.  */
 void lang_mark_tree PROTO ((union tree_node *));
 
-/* And similarly to free that data when the tree node is released.  */
-void lang_cleanup_tree PROTO ((union tree_node *));
-
 /* The FALSE_LABEL_STACK, declared in except.h, has
    language-dependent semantics.  Each front-end should define this
    function appropriately.  */