From d5859bf49d3745d613c621bacf6a06f49fda593e Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Tue, 7 Apr 2009 10:58:37 +0000 Subject: [PATCH] decl.c (gnat_to_gnu_entity): Test the underlying type. * gcc-interface/decl.c (gnat_to_gnu_entity) : Test the underlying type. * gcc-interface/trans.c (lvalue_required_p): Likewise. From-SVN: r145663 --- gcc/ada/ChangeLog | 6 ++++++ gcc/ada/gcc-interface/decl.c | 4 +++- gcc/ada/gcc-interface/trans.c | 3 ++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index d0a953d6146..d2a58c371ec 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,9 @@ +2009-04-07 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity) : Test the + underlying type. + * gcc-interface/trans.c (lvalue_required_p): Likewise. + 2009-04-07 Eric Botcazou * gcc-interface/trans.c (Attribute_to_gnu) : diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c index 6cf616e961b..5984027e964 100644 --- a/gcc/ada/gcc-interface/decl.c +++ b/gcc/ada/gcc-interface/decl.c @@ -886,7 +886,9 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition) /* Case 3: If this is a constant renaming and creating a new object is allowed and cheap, treat it as a normal object whose initial value is what is being renamed. */ - if (const_flag && Is_Elementary_Type (Etype (gnat_entity))) + if (const_flag + && !Is_Composite_Type + (Underlying_Type (Etype (gnat_entity)))) ; /* Case 4: Make this into a constant pointer to the object we diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c index b505c887b6c..309617d35d1 100644 --- a/gcc/ada/gcc-interface/trans.c +++ b/gcc/ada/gcc-interface/trans.c @@ -730,7 +730,8 @@ lvalue_required_p (Node_Id gnat_node, tree gnu_type, int aliased) attached to the CONST_DECL. */ return (aliased != 0 /* This should match the constant case of the renaming code. */ - || Is_Composite_Type (Etype (Name (gnat_parent))) + || Is_Composite_Type + (Underlying_Type (Etype (Name (gnat_parent)))) || Nkind (Name (gnat_parent)) == N_Identifier); default: