From: Eric Botcazou Date: Wed, 18 Nov 2015 18:31:42 +0000 (+0000) Subject: decl.c (gnat_to_gnu_entity): Use case #1 for the renaming of an address. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=482a338d0113756c63035861fa05aa003b49cf65;p=gcc.git decl.c (gnat_to_gnu_entity): Use case #1 for the renaming of an address. * gcc-interface/decl.c (gnat_to_gnu_entity) : Use case #1 for the renaming of an address. From-SVN: r230560 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 3ffb45e7114..6c4a850a9a9 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2015-11-18 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity) : Use case #1 + for the renaming of an address. + 2015-11-18 Eric Botcazou * gcc-interface/trans.c (fold_constant_decl_in_expr) : If diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c index ceeb9958617..883b2755df4 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)) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d0c4b6c95f5..b4e2db51fd2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-11-18 Eric Botcazou + + * gnat.dg/renaming7.adb: New test. + * gnat.dg/renaming7_pkg.ads: New helper. + 2015-11-18 Ajit Agarwal PR tree-optimization/68402 diff --git a/gcc/testsuite/gnat.dg/renaming7.adb b/gcc/testsuite/gnat.dg/renaming7.adb new file mode 100644 index 00000000000..2a93f9e9a3f --- /dev/null +++ b/gcc/testsuite/gnat.dg/renaming7.adb @@ -0,0 +1,12 @@ +-- { dg-do compile } +-- { dg-options "-O" } + +with Renaming7_Pkg; use Renaming7_Pkg; +with System; + +procedure Renaming7 is + C : constant System.Address := A'Address; + D : System.Address renames C; +begin + null; +end; diff --git a/gcc/testsuite/gnat.dg/renaming7_pkg.ads b/gcc/testsuite/gnat.dg/renaming7_pkg.ads new file mode 100644 index 00000000000..4014adc23ee --- /dev/null +++ b/gcc/testsuite/gnat.dg/renaming7_pkg.ads @@ -0,0 +1,5 @@ +package Renaming7_Pkg is + + A : Integer; + +end Renaming7_Pkg;