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
This commit is contained in:
Mark Mitchell 2002-04-13 01:25:27 +00:00 committed by Mark Mitchell
parent 21b1475254
commit c740732f62
4 changed files with 30 additions and 13 deletions

View File

@ -1,3 +1,12 @@
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.

View File

@ -1,3 +1,10 @@
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

View File

@ -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);
}

View File

@ -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