Commit 8fa6b6c9 by Mike Stump

libgcc2.c (__empty): An empty function used by the C++ frontend for defaulting cleanup actions.

	* libgcc2.c (__empty): An empty function used by the C++ frontend for
	defaulting cleanup actions.

	* tree.c (save_tree_status, restore_tree_status): Save and restore
	temporary_firstobj, so that in progress objects that live on the
	temporary obstack are not reallocated, if we save and restore the
	tree status in their lifetime.

From-SVN: r10799
parent 24bd20c2
...@@ -2367,6 +2367,11 @@ __register_exceptions (exception_table *table) ...@@ -2367,6 +2367,11 @@ __register_exceptions (exception_table *table)
exception_table_list = node; exception_table_list = node;
} }
void
__empty ()
{
}
#if #machine(i386) #if #machine(i386)
void void
__unwind_function(void *ptr) __unwind_function(void *ptr)
......
...@@ -340,6 +340,7 @@ save_tree_status (p, context) ...@@ -340,6 +340,7 @@ save_tree_status (p, context)
p->all_types_permanent = all_types_permanent; p->all_types_permanent = all_types_permanent;
p->momentary_stack = momentary_stack; p->momentary_stack = momentary_stack;
p->maybepermanent_firstobj = maybepermanent_firstobj; p->maybepermanent_firstobj = maybepermanent_firstobj;
p->temporary_firstobj = temporary_firstobj;
p->momentary_firstobj = momentary_firstobj; p->momentary_firstobj = momentary_firstobj;
p->momentary_function_firstobj = momentary_function_firstobj; p->momentary_function_firstobj = momentary_function_firstobj;
p->function_obstack = function_obstack; p->function_obstack = function_obstack;
...@@ -392,6 +393,7 @@ save_tree_status (p, context) ...@@ -392,6 +393,7 @@ save_tree_status (p, context)
expression_obstack = &permanent_obstack; expression_obstack = &permanent_obstack;
rtl_obstack = saveable_obstack = &permanent_obstack; rtl_obstack = saveable_obstack = &permanent_obstack;
temporary_firstobj = (char *) obstack_alloc (&temporary_obstack, 0);
momentary_firstobj = (char *) obstack_finish (&momentary_obstack); momentary_firstobj = (char *) obstack_finish (&momentary_obstack);
momentary_function_firstobj = momentary_firstobj; momentary_function_firstobj = momentary_firstobj;
} }
...@@ -420,6 +422,7 @@ restore_tree_status (p) ...@@ -420,6 +422,7 @@ restore_tree_status (p)
obstack_free (function_obstack, 0); obstack_free (function_obstack, 0);
free (function_obstack); free (function_obstack);
temporary_firstobj = p->temporary_firstobj;
momentary_firstobj = p->momentary_firstobj; momentary_firstobj = p->momentary_firstobj;
momentary_function_firstobj = p->momentary_function_firstobj; momentary_function_firstobj = p->momentary_function_firstobj;
maybepermanent_firstobj = p->maybepermanent_firstobj; maybepermanent_firstobj = p->maybepermanent_firstobj;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment