Fix inaccurate bounds in debug info for vector array types
authorEric Botcazou <ebotcazou@adacore.com>
Tue, 14 Sep 2021 09:10:17 +0000 (11:10 +0200)
committerEric Botcazou <ebotcazou@adacore.com>
Tue, 14 Sep 2021 09:10:17 +0000 (11:10 +0200)
They should not be 0-based, unless the array type itself is.

gcc/ada/
* gcc-interface/decl.c (gnat_to_gnu_entity): For vector types, make
the representative array the debug type.

gcc/ada/gcc-interface/decl.c

index 9202184..20e3eea 100644 (file)
@@ -4740,6 +4740,14 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, bool definition)
       else
        gnu_decl = create_type_decl (gnu_entity_name, gnu_type, artificial_p,
                                     debug_info_p, gnat_entity);
+
+      /* For vector types, make the representative array the debug type.  */
+      if (VECTOR_TYPE_P (gnu_type))
+       {
+         tree rep = TYPE_REPRESENTATIVE_ARRAY (gnu_type);
+         TYPE_NAME (rep) = DECL_NAME (gnu_decl);
+         SET_TYPE_DEBUG_TYPE (gnu_type, rep);
+       }
     }
 
   /* Otherwise, for a type reusing an existing DECL, back-annotate values.  */