Commit 73c9f270 by Jason Merrill Committed by Jason Merrill

tree.c (perm_manip): Also regenerate the RTL of an extern.

	* tree.c (perm_manip): Also regenerate the RTL of an extern.
	(copy_to_permanent): Use end_temporary_allocation.

From-SVN: r19560
parent 15ebe47d
Wed May 6 02:33:39 1998 Jason Merrill <jason@yorick.cygnus.com>
* tree.c (perm_manip): Also regenerate the RTL of an extern.
(copy_to_permanent): Use end_temporary_allocation.
Tue May 5 23:54:04 1998 Jason Merrill <jason@yorick.cygnus.com>
* init.c (expand_vec_init): The initialization of each array
......
......@@ -1685,10 +1685,19 @@ perm_manip (t)
{
if (TREE_PERMANENT (t))
return t;
/* Support `void f () { extern int i; A<&i> a; }' */
if ((TREE_CODE (t) == VAR_DECL || TREE_CODE (t) == FUNCTION_DECL)
&& TREE_PUBLIC (t))
return copy_node (t);
{
t = copy_node (t);
/* copy_rtx won't make a new SYMBOL_REF, so call make_decl_rtl again. */
DECL_RTL (t) = 0;
make_decl_rtl (t, NULL_PTR, 1);
return t;
}
return NULL_TREE;
}
......@@ -1699,22 +1708,15 @@ tree
copy_to_permanent (t)
tree t;
{
register struct obstack *ambient_obstack = current_obstack;
register struct obstack *ambient_saveable_obstack = saveable_obstack;
register struct obstack *ambient_expression_obstack = expression_obstack;
if (t == NULL_TREE || TREE_PERMANENT (t))
return t;
saveable_obstack = &permanent_obstack;
current_obstack = saveable_obstack;
expression_obstack = saveable_obstack;
push_obstacks_nochange ();
end_temporary_allocation ();
t = mapcar (t, perm_manip);
current_obstack = ambient_obstack;
saveable_obstack = ambient_saveable_obstack;
expression_obstack = ambient_expression_obstack;
pop_obstacks ();
return t;
}
......
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