From: ebotcazou Date: Tue, 27 Oct 2009 20:24:31 +0000 (+0000) Subject: * gcc-interface/decl.c (purpose_member_field): New static function. X-Git-Tag: upstream/4.9.2~32929 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=eb98f615b8c7a1b60815c969f552ea7d6d701c56;p=platform%2Fupstream%2Flinaro-gcc.git * gcc-interface/decl.c (purpose_member_field): New static function. (annotate_rep): Use it instead of purpose_member. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@153616 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 9c6be32..5c269d1 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,5 +1,10 @@ 2009-10-27 Eric Botcazou + * gcc-interface/decl.c (purpose_member_field): New static function. + (annotate_rep): Use it instead of purpose_member. + +2009-10-27 Eric Botcazou + * raise-gcc (db_region_for): Use _Unwind_GetIPInfo instead of _Unwind_GetIP if HAVE_GETIPINFO is defined. (db_action_for): Likewise. diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c index 6abb366..c3766ee 100644 --- a/gcc/ada/gcc-interface/decl.c +++ b/gcc/ada/gcc-interface/decl.c @@ -7231,6 +7231,23 @@ annotate_object (Entity_Id gnat_entity, tree gnu_type, tree size, bool by_ref) UI_From_Int (TYPE_ALIGN (gnu_type) / BITS_PER_UNIT)); } +/* Return first element of field list whose TREE_PURPOSE is ELEM or whose + DECL_ORIGINAL_FIELD of TREE_PURPOSE is ELEM. Return NULL_TREE if there + is no such element in the list. */ + +static tree +purpose_member_field (const_tree elem, tree list) +{ + while (list) + { + tree field = TREE_PURPOSE (list); + if (elem == field || elem == DECL_ORIGINAL_FIELD (field)) + return list; + list = TREE_CHAIN (list); + } + return NULL_TREE; +} + /* Given GNAT_ENTITY, a record type, and GNU_TYPE, its corresponding GCC type, set Component_Bit_Offset and Esize of the components to the position and size used by Gigi. */ @@ -7254,11 +7271,12 @@ annotate_rep (Entity_Id gnat_entity, tree gnu_type) || (Ekind (gnat_field) == E_Discriminant && !Is_Unchecked_Union (Scope (gnat_field)))) { - tree parent_offset, t; - - t = purpose_member (gnat_to_gnu_field_decl (gnat_field), gnu_list); + tree t = purpose_member_field (gnat_to_gnu_field_decl (gnat_field), + gnu_list); if (t) { + tree parent_offset; + if (type_annotate_only && Is_Tagged_Type (gnat_entity)) { /* In this mode the tag and parent components are not