Commit c740732f by Mark Mitchell Committed by Mark Mitchell

Revert these changes:

	2002-04-06  Mark Mitchell  <mark@codesourcery.com>

	PR c++/5571
	* stor-layout.c (layout_decl): Reset the RTL for the decl.

	* decl.c (duplicate_decls): Do not copy the RTL for a variable
	declaration if the old variable had an incomplete type and the new
	variable does not.
	(complete_vars): Do not call layout_decl for completed variables.

From-SVN: r52258
parent 21b14752
2002-04-12 Mark Mitchell <mark@codesourcery.com>
Revert these changes:
2002-04-06 Mark Mitchell <mark@codesourcery.com>
PR c++/5571
* stor-layout.c (layout_decl): Reset the RTL for the decl.
2002-04-12 Richard Henderson <rth@redhat.com>
* config.gcc (sparcv9-*-solaris2): Default to 32-bit code.
......
2002-04-12 Mark Mitchell <mark@codesourcery.com>
* decl.c (duplicate_decls): Do not copy the RTL for a variable
declaration if the old variable had an incomplete type and the new
variable does not.
(complete_vars): Do not call layout_decl for completed variables.
2002-04-12 Richard Sandiford <rsandifo@redhat.com>
* decl.c (duplicate_decls): Don't try to unify an implicit typedef
......
......@@ -3610,15 +3610,23 @@ duplicate_decls (newdecl, olddecl)
if (DECL_SECTION_NAME (newdecl) == NULL_TREE)
DECL_SECTION_NAME (newdecl) = DECL_SECTION_NAME (olddecl);
/* Keep the old rtl since we can safely use it. */
COPY_DECL_RTL (olddecl, newdecl);
if (TREE_CODE (newdecl) == FUNCTION_DECL)
{
DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT (newdecl)
|= DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT (olddecl);
DECL_NO_LIMIT_STACK (newdecl)
|= DECL_NO_LIMIT_STACK (olddecl);
/* Keep the old RTL. */
COPY_DECL_RTL (olddecl, newdecl);
}
else if (TREE_CODE (newdecl) == VAR_DECL
&& (DECL_SIZE (olddecl) || !DECL_SIZE (newdecl)))
{
/* Keep the old RTL. We cannot keep the old RTL if the old
declaration was for an incomplete object and the new
declaration is not since many attributes of the RTL will
change. */
COPY_DECL_RTL (olddecl, newdecl);
}
}
/* If cannot merge, then use the new type and qualifiers,
......@@ -14529,11 +14537,9 @@ complete_vars (type)
if (same_type_p (type, TREE_PURPOSE (*list)))
{
tree var = TREE_VALUE (*list);
/* Make sure that the type of the VAR has been laid out. It
might not have been if the type of VAR is an array. */
layout_type (TREE_TYPE (var));
/* Lay out the variable itself. */
layout_decl (var, 0);
/* Complete the type of the variable. The VAR_DECL itself
will be laid out in expand_expr. */
complete_type (TREE_TYPE (var));
/* Remove this entry from the list. */
*list = TREE_CHAIN (*list);
}
......
......@@ -461,11 +461,6 @@ layout_decl (decl, known_align)
larger_than_size);
}
}
/* If there was already RTL for this DECL, as for a variable with an
incomplete type whose type is completed later, update the RTL. */
if (DECL_RTL_SET_P (decl))
make_decl_rtl (decl, NULL);
}
/* Hook for a front-end function that can modify the record layout as needed
......
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