From 19c846942984690edb7ef6ed29be08a0aae1868a Mon Sep 17 00:00:00 2001
From: Eric Botcazou <ebotcazou@adacore.com>
Date: Wed, 7 Apr 2010 10:51:30 +0000
Subject: [PATCH] decl.c (gnat_to_gnu_entity): Set default alignment on the
 RETURN type built for the Copy-In Copy-Out mechanism.

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Procedure>: Set default
	alignment on the RETURN type built for the Copy-In Copy-Out mechanism.

From-SVN: r158054
---
 gcc/ada/ChangeLog            | 5 +++++
 gcc/ada/gcc-interface/decl.c | 3 +++
 2 files changed, 8 insertions(+)

diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 89f5cad29866..09469ac839bd 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,8 @@
+2010-04-07  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Procedure>: Set default
+	alignment on the RETURN type built for the Copy-In Copy-Out mechanism.
+
 2010-04-07  Eric Botcazou  <ebotcazou@adacore.com>
 
 	* gcc-interface/trans.c (call_to_gnu): In the return-by-target-ptr case
diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c
index 0effe88cd9fa..0b620a0c0b4f 100644
--- a/gcc/ada/gcc-interface/decl.c
+++ b/gcc/ada/gcc-interface/decl.c
@@ -4062,6 +4062,9 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
 		    gcc_assert (TREE_CODE (gnu_return_type) == VOID_TYPE);
 		    gnu_return_type = make_node (RECORD_TYPE);
 		    TYPE_NAME (gnu_return_type) = get_identifier ("RETURN");
+		    /* Set a default alignment to speed up accesses.  */
+		    TYPE_ALIGN (gnu_return_type)
+		      = get_mode_alignment (ptr_mode);
 		    has_copy_in_out = true;
 		  }
 
-- 
GitLab