diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2015-11-18 18:31:42 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2015-11-18 18:31:42 +0000 |
commit | 482a338d0113756c63035861fa05aa003b49cf65 (patch) | |
tree | f9406b1c7cb09d095c6b70103d1e989127905810 /gcc/ada/gcc-interface | |
parent | a239279ee574a15ed79d27b48f835c3db45a593f (diff) | |
download | gcc-482a338d0113756c63035861fa05aa003b49cf65.zip gcc-482a338d0113756c63035861fa05aa003b49cf65.tar.gz gcc-482a338d0113756c63035861fa05aa003b49cf65.tar.bz2 |
decl.c (gnat_to_gnu_entity): Use case #1 for the renaming of an address.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Use case #1
for the renaming of an address.
From-SVN: r230560
Diffstat (limited to 'gcc/ada/gcc-interface')
-rw-r--r-- | gcc/ada/gcc-interface/decl.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c index ceeb995..883b275 100644 --- a/gcc/ada/gcc-interface/decl.c +++ b/gcc/ada/gcc-interface/decl.c @@ -963,8 +963,8 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition) function call is a constant object. Therefore, it can be the inner object of a constant renaming and the renaming must be fully instantiated, i.e. it cannot be a reference to (part of) - an existing object. And treat null expressions, constructors - and literals the same way. */ + an existing object. And treat other rvalues (addresses, null + expressions, constructors and literals) the same way. */ tree inner = gnu_expr; while (handled_component_p (inner) || CONVERT_EXPR_P (inner)) inner = TREE_OPERAND (inner, 0); @@ -974,6 +974,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition) inner = TREE_OPERAND (inner, 1); if ((TREE_CODE (inner) == CALL_EXPR && !call_is_atomic_load (inner)) + || TREE_CODE (inner) == ADDR_EXPR || TREE_CODE (inner) == NULL_EXPR || TREE_CODE (inner) == CONSTRUCTOR || CONSTANT_CLASS_P (inner)) |