summaryrefslogtreecommitdiff
path: root/gcc/ada/gcc-interface/decl.c
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2013-02-06 13:19:20 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2013-02-06 13:19:20 +0000
commit8b1e0325b111be4be290c3b97ab9bd69cafec841 (patch)
tree2cc5780b0e7e87bc528d73aa3ed90f7dcde02e60 /gcc/ada/gcc-interface/decl.c
parentcaa1ac556a056680b3920e379e8768da99ce701b (diff)
downloadgcc-8b1e0325b111be4be290c3b97ab9bd69cafec841.tar.gz
Revert previous change, unintended.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@195805 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/gcc-interface/decl.c')
-rw-r--r--gcc/ada/gcc-interface/decl.c88
1 files changed, 19 insertions, 69 deletions
diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c
index 2af3ca83ee3..56b64a3c343 100644
--- a/gcc/ada/gcc-interface/decl.c
+++ b/gcc/ada/gcc-interface/decl.c
@@ -2908,12 +2908,10 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
{
Node_Id full_definition = Declaration_Node (gnat_entity);
Node_Id record_definition = Type_Definition (full_definition);
- Node_Id gnat_constr;
Entity_Id gnat_field;
- tree gnu_field, gnu_field_list = NULL_TREE;
- tree gnu_get_parent;
+ tree gnu_field, gnu_field_list = NULL_TREE, gnu_get_parent;
/* Set PACKED in keeping with gnat_to_gnu_field. */
- const int packed
+ int packed
= Is_Packed (gnat_entity)
? 1
: Component_Alignment (gnat_entity) == Calign_Storage_Unit
@@ -2923,13 +2921,13 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
&& Known_RM_Size (gnat_entity)))
? -2
: 0;
- const bool has_discr = Has_Discriminants (gnat_entity);
- const bool has_rep = Has_Specified_Layout (gnat_entity);
- const bool is_extension
+ bool has_discr = Has_Discriminants (gnat_entity);
+ bool has_rep = Has_Specified_Layout (gnat_entity);
+ bool all_rep = has_rep;
+ bool is_extension
= (Is_Tagged_Type (gnat_entity)
&& Nkind (record_definition) == N_Derived_Type_Definition);
- const bool is_unchecked_union = Is_Unchecked_Union (gnat_entity);
- bool all_rep = has_rep;
+ bool is_unchecked_union = Is_Unchecked_Union (gnat_entity);
/* See if all fields have a rep clause. Stop when we find one
that doesn't. */
@@ -3168,51 +3166,6 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
}
}
- /* If we have a derived untagged type that renames discriminants in
- the root type, the (stored) discriminants are a just copy of the
- discriminants of the root type. This means that any constraints
- added by the renaming in the derivation are disregarded as far
- as the layout of the derived type is concerned. To rescue them,
- we change the type of the (stored) discriminants to a subtype
- with the bounds of the type of the visible discriminants. */
- if (has_discr
- && !is_extension
- && Stored_Constraint (gnat_entity) != No_Elist)
- for (gnat_constr = First_Elmt (Stored_Constraint (gnat_entity));
- gnat_constr != No_Elmt;
- gnat_constr = Next_Elmt (gnat_constr))
- if (Nkind (Node (gnat_constr)) == N_Identifier
- /* Ignore access discriminants. */
- && !Is_Access_Type (Etype (Node (gnat_constr)))
- && Ekind (Entity (Node (gnat_constr))) == E_Discriminant)
- {
- Entity_Id gnat_discr = Entity (Node (gnat_constr));
- tree gnu_discr_type = gnat_to_gnu_type (Etype (gnat_discr));
- tree gnu_ref
- = gnat_to_gnu_entity (Original_Record_Component (gnat_discr),
- NULL_TREE, 0);
-
- /* GNU_REF must be an expression using a PLACEHOLDER_EXPR built
- just above for one of the stored discriminants. */
- gcc_assert (TREE_TYPE (TREE_OPERAND (gnu_ref, 0)) == gnu_type);
-
- if (gnu_discr_type != TREE_TYPE (gnu_ref))
- {
- const unsigned prec = TYPE_PRECISION (TREE_TYPE (gnu_ref));
- tree gnu_subtype
- = TYPE_UNSIGNED (TREE_TYPE (gnu_ref))
- ? make_unsigned_type (prec) : make_signed_type (prec);
- TREE_TYPE (gnu_subtype) = TREE_TYPE (gnu_ref);
- TYPE_EXTRA_SUBTYPE_P (gnu_subtype) = 1;
- SET_TYPE_RM_MIN_VALUE (gnu_subtype,
- TYPE_MIN_VALUE (gnu_discr_type));
- SET_TYPE_RM_MAX_VALUE (gnu_subtype,
- TYPE_MAX_VALUE (gnu_discr_type));
- TREE_TYPE (gnu_ref)
- = TREE_TYPE (TREE_OPERAND (gnu_ref, 1)) = gnu_subtype;
- }
- }
-
/* Add the fields into the record type and finish it up. */
components_to_record (gnu_type, Component_List (record_definition),
gnu_field_list, packed, definition, false,
@@ -4125,10 +4078,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
tree gnu_stub_type = NULL_TREE, gnu_stub_name = NULL_TREE;
tree gnu_ext_name = create_concat_name (gnat_entity, NULL);
Entity_Id gnat_param;
- enum inline_status_t inline_status
- = Has_Pragma_No_Inline (gnat_entity)
- ? is_suppressed
- : (Is_Inlined (gnat_entity) ? is_enabled : is_disabled);
+ bool inline_flag = Is_Inlined (gnat_entity);
bool public_flag = Is_Public (gnat_entity) || imported_p;
bool extern_flag
= (Is_Public (gnat_entity) && !definition) || imported_p;
@@ -4684,15 +4634,15 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
gnu_decl
= create_subprog_decl (gnu_entity_name, gnu_ext_name, gnu_type,
- gnu_param_list, inline_status,
- public_flag, extern_flag, artificial_flag,
- attr_list, gnat_entity);
+ gnu_param_list, inline_flag, public_flag,
+ extern_flag, artificial_flag, attr_list,
+ gnat_entity);
if (has_stub)
{
tree gnu_stub_decl
= create_subprog_decl (gnu_entity_name, gnu_stub_name,
gnu_stub_type, gnu_stub_param_list,
- inline_status, true, extern_flag,
+ inline_flag, true, extern_flag,
false, attr_list, gnat_entity);
SET_DECL_FUNCTION_STUB (gnu_decl, gnu_stub_decl);
}
@@ -5425,7 +5375,7 @@ get_minimal_subprog_decl (Entity_Id gnat_entity)
return
create_subprog_decl (gnu_entity_name, gnu_ext_name, void_ftype, NULL_TREE,
- is_disabled, true, true, true, attr_list, gnat_entity);
+ false, true, true, true, attr_list, gnat_entity);
}
/* Return whether the E_Subprogram_Type/E_Function/E_Procedure GNAT_ENTITY is
@@ -6014,7 +5964,7 @@ elaborate_entity (Entity_Id gnat_entity)
Present (gnat_field);
gnat_field = Next_Discriminant (gnat_field),
gnat_discriminant_expr = Next_Elmt (gnat_discriminant_expr))
- /* Ignore access discriminants. */
+ /* ??? For now, ignore access discriminants. */
if (!Is_Access_Type (Etype (Node (gnat_discriminant_expr))))
elaborate_expression (Node (gnat_discriminant_expr),
gnat_entity, get_entity_name (gnat_field),
@@ -7660,20 +7610,20 @@ build_subst_list (Entity_Id gnat_subtype, Entity_Id gnat_type, bool definition)
{
vec<subst_pair> gnu_list = vNULL;
Entity_Id gnat_discrim;
- Node_Id gnat_constr;
+ Node_Id gnat_value;
for (gnat_discrim = First_Stored_Discriminant (gnat_type),
- gnat_constr = First_Elmt (Stored_Constraint (gnat_subtype));
+ gnat_value = First_Elmt (Stored_Constraint (gnat_subtype));
Present (gnat_discrim);
gnat_discrim = Next_Stored_Discriminant (gnat_discrim),
- gnat_constr = Next_Elmt (gnat_constr))
+ gnat_value = Next_Elmt (gnat_value))
/* Ignore access discriminants. */
- if (!Is_Access_Type (Etype (Node (gnat_constr))))
+ if (!Is_Access_Type (Etype (Node (gnat_value))))
{
tree gnu_field = gnat_to_gnu_field_decl (gnat_discrim);
tree replacement = convert (TREE_TYPE (gnu_field),
elaborate_expression
- (Node (gnat_constr), gnat_subtype,
+ (Node (gnat_value), gnat_subtype,
get_entity_name (gnat_discrim),
definition, true, false));
subst_pair s = {gnu_field, replacement};