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
This commit is contained in:
parent
a239279ee5
commit
482a338d01
|
@ -1,3 +1,8 @@
|
||||||
|
2015-11-18 Eric Botcazou <ebotcazou@adacore.com>
|
||||||
|
|
||||||
|
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Use case #1
|
||||||
|
for the renaming of an address.
|
||||||
|
|
||||||
2015-11-18 Eric Botcazou <ebotcazou@adacore.com>
|
2015-11-18 Eric Botcazou <ebotcazou@adacore.com>
|
||||||
|
|
||||||
* gcc-interface/trans.c (fold_constant_decl_in_expr) <ARRAY_REF>: If
|
* gcc-interface/trans.c (fold_constant_decl_in_expr) <ARRAY_REF>: If
|
||||||
|
|
|
@ -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
|
function call is a constant object. Therefore, it can be the
|
||||||
inner object of a constant renaming and the renaming must be
|
inner object of a constant renaming and the renaming must be
|
||||||
fully instantiated, i.e. it cannot be a reference to (part of)
|
fully instantiated, i.e. it cannot be a reference to (part of)
|
||||||
an existing object. And treat null expressions, constructors
|
an existing object. And treat other rvalues (addresses, null
|
||||||
and literals the same way. */
|
expressions, constructors and literals) the same way. */
|
||||||
tree inner = gnu_expr;
|
tree inner = gnu_expr;
|
||||||
while (handled_component_p (inner) || CONVERT_EXPR_P (inner))
|
while (handled_component_p (inner) || CONVERT_EXPR_P (inner))
|
||||||
inner = TREE_OPERAND (inner, 0);
|
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);
|
inner = TREE_OPERAND (inner, 1);
|
||||||
if ((TREE_CODE (inner) == CALL_EXPR
|
if ((TREE_CODE (inner) == CALL_EXPR
|
||||||
&& !call_is_atomic_load (inner))
|
&& !call_is_atomic_load (inner))
|
||||||
|
|| TREE_CODE (inner) == ADDR_EXPR
|
||||||
|| TREE_CODE (inner) == NULL_EXPR
|
|| TREE_CODE (inner) == NULL_EXPR
|
||||||
|| TREE_CODE (inner) == CONSTRUCTOR
|
|| TREE_CODE (inner) == CONSTRUCTOR
|
||||||
|| CONSTANT_CLASS_P (inner))
|
|| CONSTANT_CLASS_P (inner))
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2015-11-18 Eric Botcazou <ebotcazou@adacore.com>
|
||||||
|
|
||||||
|
* gnat.dg/renaming7.adb: New test.
|
||||||
|
* gnat.dg/renaming7_pkg.ads: New helper.
|
||||||
|
|
||||||
2015-11-18 Ajit Agarwal <ajitkum@xilinx.com>
|
2015-11-18 Ajit Agarwal <ajitkum@xilinx.com>
|
||||||
|
|
||||||
PR tree-optimization/68402
|
PR tree-optimization/68402
|
||||||
|
|
|
@ -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;
|
|
@ -0,0 +1,5 @@
|
||||||
|
package Renaming7_Pkg is
|
||||||
|
|
||||||
|
A : Integer;
|
||||||
|
|
||||||
|
end Renaming7_Pkg;
|
Loading…
Reference in New Issue