From fc5536deae6647b485545777dc4a22c0b5404581 Mon Sep 17 00:00:00 2001 From: ebotcazou Date: Wed, 13 Dec 2017 09:05:07 +0000 Subject: [PATCH] * gcc-interface/decl.c (gnat_to_gnu_entity): Robustify test for types descendant of System.Address. (gnat_to_gnu_subprog_type): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255599 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ada/ChangeLog | 6 ++++++ gcc/ada/gcc-interface/decl.c | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index c676e7b877f..70c596efbae 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,9 @@ +2017-12-13 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity): Robustify test for types + descendant of System.Address. + (gnat_to_gnu_subprog_type): Likewise. + 2017-12-08 Jakub Jelinek * gcc-interface/utils.c (gnat_internal_attribute_table): Add diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c index 77515c0bcd2..f626e6186d2 100644 --- a/gcc/ada/gcc-interface/decl.c +++ b/gcc/ada/gcc-interface/decl.c @@ -659,7 +659,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, bool definition) /* Get the type after elaborating the renamed object. */ if (Has_Foreign_Convention (gnat_entity) - && Is_Descendant_Of_Address (gnat_type)) + && Is_Descendant_Of_Address (Underlying_Type (gnat_type))) gnu_type = ptr_type_node; else { @@ -5594,7 +5594,7 @@ gnat_to_gnu_subprog_type (Entity_Id gnat_subprog, bool definition, /* For foreign convention subprograms, return System.Address as void * or equivalent. Note that this comprises GCC builtins. */ if (Has_Foreign_Convention (gnat_subprog) - && Is_Descendant_Of_Address (gnat_return_type)) + && Is_Descendant_Of_Address (Underlying_Type (gnat_return_type))) gnu_return_type = ptr_type_node; else gnu_return_type = gnat_to_gnu_profile_type (gnat_return_type); @@ -5761,7 +5761,7 @@ gnat_to_gnu_subprog_type (Entity_Id gnat_subprog, bool definition, /* For foreign convention subprograms, pass System.Address as void * or equivalent. Note that this comprises GCC builtins. */ if (Has_Foreign_Convention (gnat_subprog) - && Is_Descendant_Of_Address (gnat_param_type)) + && Is_Descendant_Of_Address (Underlying_Type (gnat_param_type))) gnu_param_type = ptr_type_node; else gnu_param_type = gnat_to_gnu_profile_type (gnat_param_type); -- 2.11.4.GIT