summaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2005-07-07 11:41:56 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2005-07-07 11:41:56 +0200
commit69601f746d42adbf89b28a162cdbad0fa23de354 (patch)
treefd1f814171f120aad67442bac387846d899371e1 /gcc/ada
parent33420a449faae383e5bee8594fc6f4a4cf9788f9 (diff)
downloadgcc-69601f746d42adbf89b28a162cdbad0fa23de354.tar.gz
decl.c (gnat_to_gnu_entity): Do not strip the padding type if the parameter is not passed by copy but...
2005-07-07 Eric Botcazou <ebotcazou@adacore.com> * decl.c (gnat_to_gnu_entity) <E_Procedure>: Do not strip the padding type if the parameter is not passed by copy but reference by default. From-SVN: r101693
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/decl.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/ada/decl.c b/gcc/ada/decl.c
index fb6d002da07..88fef2157d3 100644
--- a/gcc/ada/decl.c
+++ b/gcc/ada/decl.c
@@ -3426,8 +3426,12 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
if (TREE_CODE (gnu_param_type) == RECORD_TYPE
&& TYPE_IS_PADDING_P (gnu_param_type)
&& (req_by_ref || Has_Foreign_Convention (gnat_entity)
- || !must_pass_by_ref (TREE_TYPE (TYPE_FIELDS
- (gnu_param_type)))))
+ || (!must_pass_by_ref (TREE_TYPE (TYPE_FIELDS
+ (gnu_param_type)))
+ && (req_by_copy
+ || !default_pass_by_ref (TREE_TYPE
+ (TYPE_FIELDS
+ (gnu_param_type)))))))
gnu_param_type = TREE_TYPE (TYPE_FIELDS (gnu_param_type));
/* If this is an IN parameter it is read-only, so make a variant