* 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
+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.
/* 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));
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));
}
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;
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
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. */