aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/decl.c13
-rw-r--r--gcc/ada/trans.c3
2 files changed, 7 insertions, 9 deletions
diff --git a/gcc/ada/decl.c b/gcc/ada/decl.c
index db80620..9d2e8fe 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 10955e3..fd42e83 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,