Commit 46c91e45 by Eric Botcazou Committed by Eric Botcazou

decl.c (gnat_to_gnu_entity): Do not set an alignment on fields of the RETURN…

decl.c (gnat_to_gnu_entity): Do not set an alignment on fields of the RETURN type built for the CICO mechanism.

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Procedure>: Do not set
	an alignment on fields of the RETURN type built for the CICO mechanism.

From-SVN: r183611
parent 16934bbf
2012-01-27 Eric Botcazou <ebotcazou@adacore.com> 2012-01-27 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Procedure>: Do not set
an alignment on fields of the RETURN type built for the CICO mechanism.
2012-01-27 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/trans.c (gnat_to_gnu): Avoid making a SAVE_EXPR for * gcc-interface/trans.c (gnat_to_gnu): Avoid making a SAVE_EXPR for
a call to a function that returns an unconstrained type with default a call to a function that returns an unconstrained type with default
discriminant.  Similarly, avoid doing the conversion to the nominal discriminant. Similarly, avoid doing the conversion to the nominal
result type in this case. result type in this case.
2012-01-27 Eric Botcazou <ebotcazou@adacore.com> 2012-01-27 Eric Botcazou <ebotcazou@adacore.com>
......
...@@ -4305,7 +4305,9 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition) ...@@ -4305,7 +4305,9 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
gnu_return_type = gnu_new_ret_type; gnu_return_type = gnu_new_ret_type;
TYPE_NAME (gnu_return_type) = get_identifier ("RETURN"); TYPE_NAME (gnu_return_type) = get_identifier ("RETURN");
/* Set a default alignment to speed up accesses. */ /* Set a default alignment to speed up accesses. But we
shouldn't increase the size of the structure too much,
lest it doesn't fit in return registers anymore. */
TYPE_ALIGN (gnu_return_type) TYPE_ALIGN (gnu_return_type)
= get_mode_alignment (ptr_mode); = get_mode_alignment (ptr_mode);
} }
...@@ -4314,9 +4316,6 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition) ...@@ -4314,9 +4316,6 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
= create_field_decl (gnu_param_name, gnu_param_type, = create_field_decl (gnu_param_name, gnu_param_type,
gnu_return_type, NULL_TREE, NULL_TREE, gnu_return_type, NULL_TREE, NULL_TREE,
0, 0); 0, 0);
/* Set a minimum alignment to speed up accesses. */
if (DECL_ALIGN (gnu_field) < TYPE_ALIGN (gnu_return_type))
DECL_ALIGN (gnu_field) = TYPE_ALIGN (gnu_return_type);
Sloc_to_locus (Sloc (gnat_param), Sloc_to_locus (Sloc (gnat_param),
&DECL_SOURCE_LOCATION (gnu_field)); &DECL_SOURCE_LOCATION (gnu_field));
DECL_CHAIN (gnu_field) = gnu_field_list; DECL_CHAIN (gnu_field) = gnu_field_list;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment