E_Array_Type]: Reuse dummy fat type for gnu_ptr_template and
gnu_template_type.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@184605
138bc75d-0d04-0410-961f-
82ee72b054a4
+2012-02-27 Tristan Gingold <gingold@adacore.com>
+
+ * gcc-interface/decl.c (gnat_to_gnu_entity) [E_String_Type,
+ E_Array_Type]: Reuse dummy fat type for gnu_ptr_template and
+ gnu_template_type.
+
2012-02-27 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/ada-tree.h (TYPE_PACKED_ARRAY_TYPE_P): Add checking.
2012-02-27 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/ada-tree.h (TYPE_PACKED_ARRAY_TYPE_P): Add checking.
const bool convention_fortran_p
= (Convention (gnat_entity) == Convention_Fortran);
const int ndim = Number_Dimensions (gnat_entity);
const bool convention_fortran_p
= (Convention (gnat_entity) == Convention_Fortran);
const int ndim = Number_Dimensions (gnat_entity);
- tree gnu_template_type = make_node (RECORD_TYPE);
- tree gnu_ptr_template = build_pointer_type (gnu_template_type);
+ tree gnu_template_type;
+ tree gnu_ptr_template;
tree gnu_template_reference, gnu_template_fields, gnu_fat_type;
tree *gnu_index_types = XALLOCAVEC (tree, ndim);
tree *gnu_temp_fields = XALLOCAVEC (tree, ndim);
tree gnu_template_reference, gnu_template_fields, gnu_fat_type;
tree *gnu_index_types = XALLOCAVEC (tree, ndim);
tree *gnu_temp_fields = XALLOCAVEC (tree, ndim);
TYPE_NAME (gnu_fat_type) = NULL_TREE;
/* Save the contents of the dummy type for update_pointer_to. */
TYPE_POINTER_TO (gnu_type) = copy_type (gnu_fat_type);
TYPE_NAME (gnu_fat_type) = NULL_TREE;
/* Save the contents of the dummy type for update_pointer_to. */
TYPE_POINTER_TO (gnu_type) = copy_type (gnu_fat_type);
+ gnu_ptr_template =
+ TREE_TYPE (TREE_CHAIN (TYPE_FIELDS (gnu_fat_type)));
+ gnu_template_type = TREE_TYPE (gnu_ptr_template);
- gnu_fat_type = make_node (RECORD_TYPE);
+ {
+ gnu_fat_type = make_node (RECORD_TYPE);
+ gnu_template_type = make_node (RECORD_TYPE);
+ gnu_ptr_template = build_pointer_type (gnu_template_type);
+ }
/* Make a node for the array. If we are not defining the array
suppress expanding incomplete types. */
/* Make a node for the array. If we are not defining the array
suppress expanding incomplete types. */
+2012-02-27 Tristan Gingold <gingold@adacore.com>
+
+ * gnat.dg/array20.ad[sb]: New test.
+
2012-02-27 Jakub Jelinek <jakub@redhat.com>
PR target/52375
2012-02-27 Jakub Jelinek <jakub@redhat.com>
PR target/52375
--- /dev/null
+-- { dg-do assemble }
+
+package body Array20 is
+
+ type Arr is array (Positive range <>) of Integer;
+
+ type P_Arr is access Arr;
+
+ N : constant P_Arr := null;
+
+ Table : P_Arr := N;
+
+end Array20;
--- /dev/null
+package Array20 is
+
+ pragma Elaborate_Body;
+
+end array20;