diff options
author | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2010-05-08 11:02:08 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2010-05-08 11:02:08 +0000 |
commit | 928dfa4bd0a32e35a8366d7ef21323a76f54a97c (patch) | |
tree | 2593094f791734fc31513027f5e49a230b7b4e17 /gcc/ada/gcc-interface/utils.c | |
parent | d5a8e96fa1155b0447c2a76556c08912933689eb (diff) | |
download | gcc-928dfa4bd0a32e35a8366d7ef21323a76f54a97c.zip gcc-928dfa4bd0a32e35a8366d7ef21323a76f54a97c.tar.gz gcc-928dfa4bd0a32e35a8366d7ef21323a76f54a97c.tar.bz2 |
gigi.h (build_unc_object_type): Add DEBUG_INFO_P param.
* gcc-interface/gigi.h (build_unc_object_type): Add DEBUG_INFO_P param.
(build_unc_object_type_from_ptr): Likewise.
* gcc-interface/utils.c (build_unc_object_type): Add DEBUG_INFO_P param
and pass it to create_type_decl. Declare the type. Simplify.
(build_unc_object_type_from_ptr): Add DEBUG_INFO_P parameter and pass
it to build_unc_object_type.
* gcc-interface/decl.c (gnat_to_gnu_entity): Adjust to above change.
* gcc-interface/trans.c (Attribute_to_gnu): Likewise.
(gnat_to_gnu): Likewise.
* gcc-interface/utils2.c (build_allocator): Likewise.
From-SVN: r159180
Diffstat (limited to 'gcc/ada/gcc-interface/utils.c')
-rw-r--r-- | gcc/ada/gcc-interface/utils.c | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/gcc/ada/gcc-interface/utils.c b/gcc/ada/gcc-interface/utils.c index 7b403a7..8697baf 100644 --- a/gcc/ada/gcc-interface/utils.c +++ b/gcc/ada/gcc-interface/utils.c @@ -3299,15 +3299,16 @@ build_function_stub (tree gnu_subprog, Entity_Id gnat_subprog) end_subprog_body (gnu_body); } -/* Build a type to be used to represent an aliased object whose nominal - type is an unconstrained array. This consists of a RECORD_TYPE containing - a field of TEMPLATE_TYPE and a field of OBJECT_TYPE, which is an - ARRAY_TYPE. If ARRAY_TYPE is that of the unconstrained array, this - is used to represent an arbitrary unconstrained object. Use NAME - as the name of the record. */ +/* Build a type to be used to represent an aliased object whose nominal type + is an unconstrained array. This consists of a RECORD_TYPE containing a + field of TEMPLATE_TYPE and a field of OBJECT_TYPE, which is an ARRAY_TYPE. + If ARRAY_TYPE is that of an unconstrained array, this is used to represent + an arbitrary unconstrained object. Use NAME as the name of the record. + DEBUG_INFO_P is true if we need to write debug information for the type. */ tree -build_unc_object_type (tree template_type, tree object_type, tree name) +build_unc_object_type (tree template_type, tree object_type, tree name, + bool debug_info_p) { tree type = make_node (RECORD_TYPE); tree template_field = create_field_decl (get_identifier ("BOUNDS"), @@ -3317,10 +3318,12 @@ build_unc_object_type (tree template_type, tree object_type, tree name) TYPE_NAME (type) = name; TYPE_CONTAINS_TEMPLATE_P (type) = 1; - finish_record_type (type, - chainon (chainon (NULL_TREE, template_field), - array_field), - 0, true); + TREE_CHAIN (template_field) = array_field; + finish_record_type (type, template_field, 0, true); + + /* Declare it now since it will never be declared otherwise. This is + necessary to ensure that its subtrees are properly marked. */ + create_type_decl (name, type, NULL, true, debug_info_p, Empty); return type; } @@ -3329,7 +3332,7 @@ build_unc_object_type (tree template_type, tree object_type, tree name) tree build_unc_object_type_from_ptr (tree thin_fat_ptr_type, tree object_type, - tree name) + tree name, bool debug_info_p) { tree template_type; @@ -3339,7 +3342,9 @@ build_unc_object_type_from_ptr (tree thin_fat_ptr_type, tree object_type, = (TYPE_IS_FAT_POINTER_P (thin_fat_ptr_type) ? TREE_TYPE (TREE_TYPE (TREE_CHAIN (TYPE_FIELDS (thin_fat_ptr_type)))) : TREE_TYPE (TYPE_FIELDS (TREE_TYPE (thin_fat_ptr_type)))); - return build_unc_object_type (template_type, object_type, name); + + return + build_unc_object_type (template_type, object_type, name, debug_info_p); } /* Shift the component offsets within an unconstrained object TYPE to make it |