]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
[Ada] Do not generate DW_TAG_typedef for constrained array types
authorEric Botcazou <ebotcazou@adacore.com>
Wed, 22 Jun 2022 18:38:15 +0000 (20:38 +0200)
committerPierre-Marie de Rodat <derodat@adacore.com>
Wed, 13 Jul 2022 10:01:20 +0000 (10:01 +0000)
It no longer serves any useful purpose at this point.

gcc/ada/

* gcc-interface/utils.cc (gnat_pushdecl): Build DECL_ORIGINAL_TYPE
only for pointer types.

gcc/ada/gcc-interface/utils.cc

index 05adacd52eaa75e5d724c3ca125ae1eb43b058da..a57143021a79efcf21996618d0bb4b0c3c64c2e6 100644 (file)
@@ -877,21 +877,18 @@ gnat_pushdecl (tree decl, Node_Id gnat_node)
     {
       tree t = TREE_TYPE (decl);
 
-      /* Array and pointer types aren't tagged types in the C sense so we need
-        to generate a typedef in DWARF for them and make sure it is preserved,
-        unless the type is artificial.  */
+      /* Pointer types aren't named types in the C sense so we need to generate
+         a typedef in DWARF for them and make sure it is preserved, unless the
+         type is artificial.  */
       if (!(TYPE_NAME (t) && TREE_CODE (TYPE_NAME (t)) == TYPE_DECL)
-         && ((TREE_CODE (t) != ARRAY_TYPE && TREE_CODE (t) != POINTER_TYPE)
-             || DECL_ARTIFICIAL (decl)))
+         && (TREE_CODE (t) != POINTER_TYPE || DECL_ARTIFICIAL (decl)))
        ;
-      /* For array and pointer types, create the DECL_ORIGINAL_TYPE that will
-        generate the typedef in DWARF.  Also do that for fat pointer types
-        because, even though they are tagged types in the C sense, they are
-        still XUP types attached to the base array type at this point.  */
+      /* For pointer types, create the DECL_ORIGINAL_TYPE that will generate
+        the typedef in DWARF.  Also do that for fat pointer types because,
+        even though they are named types in the C sense, they are still the
+        XUP types created for the base array type at this point.  */
       else if (!DECL_ARTIFICIAL (decl)
-              && (TREE_CODE (t) == ARRAY_TYPE
-                  || TREE_CODE (t) == POINTER_TYPE
-                  || TYPE_IS_FAT_POINTER_P (t)))
+              && (TREE_CODE (t) == POINTER_TYPE || TYPE_IS_FAT_POINTER_P (t)))
        {
          tree tt = build_variant_type_copy (t);
          TYPE_NAME (tt) = decl;
@@ -905,10 +902,6 @@ gnat_pushdecl (tree decl, Node_Id gnat_node)
            DECL_ORIGINAL_TYPE (decl) = DECL_ORIGINAL_TYPE (TYPE_NAME (t));
          else
            DECL_ORIGINAL_TYPE (decl) = t;
-         /* Array types need to have a name so that they can be related to
-            their GNAT encodings.  */
-         if (TREE_CODE (t) == ARRAY_TYPE && !TYPE_NAME (t))
-           TYPE_NAME (t) = DECL_NAME (decl);
          /* Remark the canonical fat pointer type as artificial.  */
          if (TYPE_IS_FAT_POINTER_P (t))
            TYPE_ARTIFICIAL (t) = 1;