]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
decl.c (make_packable_type): Retrieve the real name of the type.
authorEric Botcazou <ebotcazou@adacore.com>
Thu, 29 Nov 2007 12:41:41 +0000 (12:41 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Thu, 29 Nov 2007 12:41:41 +0000 (12:41 +0000)
* decl.c (make_packable_type): Retrieve the real name of the type.
(maybe_pad_type): Simplify similar code.

From-SVN: r130512

gcc/ada/ChangeLog
gcc/ada/decl.c

index 4c81d841dbb5d792bb0a813d36761d908f41e846..c65713b6794bfda9db83991c7366b604a35c73a9 100644 (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
index 8cac29a5c99141bc907b151496be4f47dc4552a1..876b1595ecd9d5fd925627c0a7397709de3497d3 100644 (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);