diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 15797a1b65a..a8e82037ba7 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2012-07-16 Tristan Gingold + + * gcc-interface/decl.c (intrin_return_compatible_p): Map Address to + void *. + 2012-07-16 Thomas Quinot * exp_ch9.adb (Ensure_Statement_Present): New subprogram. diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c index 9a2dc458b2f..ef7c87c366e 100644 --- a/gcc/ada/gcc-interface/decl.c +++ b/gcc/ada/gcc-interface/decl.c @@ -8046,6 +8046,10 @@ intrin_return_compatible_p (intrin_binding_t * inb) && !VOID_TYPE_P (btin_return_type)) return true; + /* If return type is Address (integer type), map it to void *. */ + if (Is_Descendent_Of_Address (Etype (inb->gnat_entity))) + ada_return_type = ptr_void_type_node; + /* Check return types compatibility otherwise. Note that this handles void/void as well. */ if (intrin_types_incompatible_p (btin_return_type, ada_return_type))