aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/gcc-interface/decl.c
diff options
context:
space:
mode:
authorOlivier Hainque <hainque@adacore.com>2010-06-23 08:56:20 +0000
committerArnaud Charlet <charlet@gcc.gnu.org>2010-06-23 10:56:20 +0200
commit2503cb81eefe3d14714b243c49bf36e5f7256597 (patch)
tree4603caf89ef68254d8df00e2df6bb2659cdb367e /gcc/ada/gcc-interface/decl.c
parentd92eccc3593dc167d5b5f59f7493d0867dafbd80 (diff)
downloadgcc-2503cb81eefe3d14714b243c49bf36e5f7256597.zip
gcc-2503cb81eefe3d14714b243c49bf36e5f7256597.tar.gz
gcc-2503cb81eefe3d14714b243c49bf36e5f7256597.tar.bz2
(gnat_to_gnu_param): Use void_ptr GCC type for System.Address argument
of GCC builtin imports. From-SVN: r161261
Diffstat (limited to 'gcc/ada/gcc-interface/decl.c')
-rw-r--r--gcc/ada/gcc-interface/decl.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c
index c263548..c2f697e 100644
--- a/gcc/ada/gcc-interface/decl.c
+++ b/gcc/ada/gcc-interface/decl.c
@@ -5264,6 +5264,12 @@ gnat_to_gnu_param (Entity_Id gnat_param, Mechanism_Type mech,
gnu_param_type
= TREE_TYPE (TREE_TYPE (TYPE_FIELDS (TREE_TYPE (gnu_param_type))));
+ /* For GCC builtins, pass Address integer types as (void *) */
+ if (Convention (gnat_subprog) == Convention_Intrinsic
+ && Present (Interface_Name (gnat_subprog))
+ && Is_Descendent_Of_Address (Etype (gnat_param)))
+ gnu_param_type = ptr_void_type_node;
+
/* VMS descriptors are themselves passed by reference. */
if (mech == By_Short_Descriptor ||
(mech == By_Descriptor && TARGET_ABI_OPEN_VMS && !TARGET_MALLOC64))