diff options
author | Olivier Hainque <hainque@adacore.com> | 2010-06-23 08:56:20 +0000 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2010-06-23 10:56:20 +0200 |
commit | 2503cb81eefe3d14714b243c49bf36e5f7256597 (patch) | |
tree | 4603caf89ef68254d8df00e2df6bb2659cdb367e /gcc/ada/gcc-interface/decl.c | |
parent | d92eccc3593dc167d5b5f59f7493d0867dafbd80 (diff) | |
download | gcc-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.c | 6 |
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)) |