c-ada-spec.c (get_underlying_decl): Get to the main type variant.
authorEric Botcazou <ebotcazou@adacore.com>
Mon, 1 Oct 2018 09:39:28 +0000 (09:39 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Mon, 1 Oct 2018 09:39:28 +0000 (09:39 +0000)
* c-ada-spec.c (get_underlying_decl): Get to the main type variant.
(dump_ada_node): Add const keyword.

From-SVN: r264738

gcc/c-family/ChangeLog
gcc/c-family/c-ada-spec.c

index 3b3b98724755015c381cbf54b828369adce0d9d6..015ca8a2fb99636bca9542a497503f7d4dc6a15c 100644 (file)
@@ -1,3 +1,8 @@
+2018-10-01  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * c-ada-spec.c (get_underlying_decl): Get to the main type variant.
+       (dump_ada_node): Add const keyword.
+
 2018-09-25  Martin Liska  <mliska@suse.cz>
 
        * c-common.c (c_common_truthvalue_conversion):
index eae741ed6b533aa3ca2e09896f225a4cc785321c..2e1b91e30c33b104dc8d800e574b255afe1bfbef 100644 (file)
@@ -1020,13 +1020,18 @@ get_underlying_decl (tree type)
   if (DECL_P (type))
     return type;
 
-  /* type is a typedef.  */
-  if (TYPE_P (type) && TYPE_NAME (type) && DECL_P (TYPE_NAME (type)))
-    return TYPE_NAME (type);
+  if (TYPE_P (type))
+    {
+      type = TYPE_MAIN_VARIANT (type);
+
+      /* type is a typedef.  */
+      if (TYPE_NAME (type) && DECL_P (TYPE_NAME (type)))
+       return TYPE_NAME (type);
 
-  /* TYPE_STUB_DECL has been set for type.  */
-  if (TYPE_P (type) && TYPE_STUB_DECL (type))
-    return TYPE_STUB_DECL (type);
+      /* TYPE_STUB_DECL has been set for type.  */
+      if (TYPE_STUB_DECL (type))
+       return TYPE_STUB_DECL (type);
+    }
 
   return NULL_TREE;
 }
@@ -2143,8 +2148,8 @@ dump_ada_node (pretty_printer *buffer, tree node, tree type, int spc,
        }
       else
        {
+         const unsigned int quals = TYPE_QUALS (TREE_TYPE (node));
          bool is_access = false;
-         unsigned int quals = TYPE_QUALS (TREE_TYPE (node));
 
          if (VOID_TYPE_P (TREE_TYPE (node)))
            {