OSDN Git Service

* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Procedure>: Set minimum
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 8 Apr 2011 20:30:14 +0000 (20:30 +0000)
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 8 Apr 2011 20:30:14 +0000 (20:30 +0000)
alignment on fields of the RETURN type built for the Copy-In Copy-Out
mechanism.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@172210 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ada/ChangeLog
gcc/ada/gcc-interface/decl.c

index 2046aa7..e16092f 100644 (file)
@@ -1,5 +1,11 @@
 2011-04-08  Eric Botcazou  <ebotcazou@adacore.com>
 
+       * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Procedure>: Set minimum
+       alignment on fields of the RETURN type built for the Copy-In Copy-Out
+       mechanism.
+
+2011-04-08  Eric Botcazou  <ebotcazou@adacore.com>
+
        * gcc-interface/trans.c (Identifier_to_gnu): Do not return initializers
        of aggregate types that contain a placeholder.
 
index 2902396..bc6b9cc 100644 (file)
@@ -4226,6 +4226,9 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
                  = create_field_decl (gnu_param_name, gnu_param_type,
                                       gnu_return_type, NULL_TREE, NULL_TREE,
                                       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),
                               &DECL_SOURCE_LOCATION (gnu_field));
                DECL_CHAIN (gnu_field) = gnu_field_list;