diff --git a/gcc/ada/decl.c b/gcc/ada/decl.c index db806209f70c86320790eb16249a4648722d860f..9d2e8fe871de8a75f4dd0100847698b991009f14 100644 --- a/gcc/ada/decl.c +++ b/gcc/ada/decl.c @@ -776,13 +776,12 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition) } /* Otherwise, make this into a constant pointer to the object we - are to rename. - - Stabilize it since in this case the renaming evaluation may - directly dereference the initial value we make here instead - of the pointer we will assign it to. We don't want variables - in the expression to be evaluated every time the renaming is - used, since their value may change in between. */ + are to rename and attach the object to the pointer. We need + to stabilize too since the renaming evaluation may directly + reference the renamed object instead of the pointer we will + attach it to. We don't want variables in the expression to + be evaluated every time the renaming is used, since their + value may change in between. */ else { bool has_side_effects = TREE_SIDE_EFFECTS (gnu_expr); diff --git a/gcc/ada/trans.c b/gcc/ada/trans.c index 10955e352316d47a8317f56bb5d2829d93344247..fd42e837a2bdb3190dc87b7481d9d414c37cb57a 100644 --- a/gcc/ada/trans.c +++ b/gcc/ada/trans.c @@ -410,8 +410,7 @@ Identifier_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p) && (! DECL_RENAMING_GLOBAL_P (gnu_result) || global_bindings_p ()) /* Make sure it's an lvalue like INDIRECT_REF. */ - && (TREE_CODE_CLASS (TREE_CODE (renamed_obj)) == 'd' - || TREE_CODE_CLASS (TREE_CODE (renamed_obj)) == 'r')) + && (DECL_P (renamed_obj) || REFERENCE_CLASS_P (renamed_obj))) gnu_result = renamed_obj; else gnu_result = build_unary_op (INDIRECT_REF, NULL_TREE,