decl.c (gnat_to_gnu_entity): Reuse dummy fat type for gnu_ptr_template and gnu_template_type.
* 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. From-SVN: r184605
This commit is contained in:
parent
afbf6e97a5
commit
2afda005e1
5 changed files with 38 additions and 3 deletions
|
@ -1,3 +1,9 @@
|
|||
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.
|
||||
|
|
|
@ -2003,8 +2003,8 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
|
|||
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);
|
||||
|
@ -2035,9 +2035,16 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
|
|||
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);
|
||||
}
|
||||
else
|
||||
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. */
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
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
|
||||
|
|
13
gcc/testsuite/gnat.dg/array20.adb
Normal file
13
gcc/testsuite/gnat.dg/array20.adb
Normal file
|
@ -0,0 +1,13 @@
|
|||
-- { 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;
|
5
gcc/testsuite/gnat.dg/array20.ads
Normal file
5
gcc/testsuite/gnat.dg/array20.ads
Normal file
|
@ -0,0 +1,5 @@
|
|||
package Array20 is
|
||||
|
||||
pragma Elaborate_Body;
|
||||
|
||||
end array20;
|
Loading…
Add table
Reference in a new issue