decl.c (make_packable_type): Retrieve the real name of the type.

* decl.c (make_packable_type): Retrieve the real name of the type.
	(maybe_pad_type): Simplify similar code.

From-SVN: r130512
This commit is contained in:
Eric Botcazou 2007-11-29 12:41:41 +00:00 committed by Eric Botcazou
parent 17a15a5c4a
commit a6dcb051e9
2 changed files with 16 additions and 5 deletions

View file

@ -1,3 +1,8 @@
2007-11-29 Eric Botcazou <ebotcazou@adacore.com>
* decl.c (make_packable_type): Retrieve the real name of the type.
(maybe_pad_type): Simplify similar code.
2007-11-28 Samuel Tardieu <sam@rfc1149.net>
PR ada/15803

View file

@ -5198,13 +5198,17 @@ static tree
make_packable_type (tree type)
{
tree new_type = make_node (TREE_CODE (type));
tree name = TYPE_NAME (type);
tree field_list = NULL_TREE;
tree old_field;
if (name && TREE_CODE (name) == TYPE_DECL)
name = DECL_NAME (name);
/* Copy the name and flags from the old type to that of the new and set
the alignment to try for an integral type. For QUAL_UNION_TYPE,
also copy the size. */
TYPE_NAME (new_type) = TYPE_NAME (type);
TYPE_NAME (new_type) = name;
TYPE_JUSTIFIED_MODULAR_P (new_type)
= TYPE_JUSTIFIED_MODULAR_P (type);
TYPE_CONTAINS_TEMPLATE_P (new_type) = TYPE_CONTAINS_TEMPLATE_P (type);
@ -5394,16 +5398,18 @@ maybe_pad_type (tree type, tree size, unsigned int align,
/* Unless debugging information isn't being written for the input type,
write a record that shows what we are a subtype of and also make a
variable that indicates our size, if variable. */
if (TYPE_NAME (record) && AGGREGATE_TYPE_P (type)
if (TYPE_NAME (record)
&& AGGREGATE_TYPE_P (type)
&& (TREE_CODE (TYPE_NAME (type)) != TYPE_DECL
|| !DECL_IGNORED_P (TYPE_NAME (type))))
{
tree marker = make_node (RECORD_TYPE);
tree name = (TREE_CODE (TYPE_NAME (record)) == TYPE_DECL
? DECL_NAME (TYPE_NAME (record))
: TYPE_NAME (record));
tree name = TYPE_NAME (record);
tree orig_name = TYPE_NAME (type);
if (TREE_CODE (name) == TYPE_DECL)
name = DECL_NAME (name);
if (TREE_CODE (orig_name) == TYPE_DECL)
orig_name = DECL_NAME (orig_name);