* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: In the case of a
renaming, preserve the volatileness through the indirection, if any.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@183365
138bc75d-0d04-0410-961f-
82ee72b054a4
+2012-01-21 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR ada/46192
+ * gcc-interface/decl.c (gnat_to_gnu_entity) <object>: In the case of a
+ renaming, preserve the volatileness through the indirection, if any.
+
2012-01-14 Andreas Schwab <schwab@linux-m68k.org>
* gcc-interface/Makefile.in (OSCONS_EXTRACT): Add
entity is always accessed indirectly through it. */
else
{
+ /* We need to preserve the volatileness of the renamed
+ object through the indirection. */
+ if (TREE_THIS_VOLATILE (gnu_expr)
+ && !TYPE_VOLATILE (gnu_type))
+ gnu_type
+ = build_qualified_type (gnu_type,
+ (TYPE_QUALS (gnu_type)
+ | TYPE_QUAL_VOLATILE));
gnu_type = build_reference_type (gnu_type);
inner_const_flag = TREE_READONLY (gnu_expr);
const_flag = true;
+2012-01-21 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/renaming5.ad[sb]: New test.
+
2012-01-20 Jason Merrill <jason@redhat.com>
PR c++/51919
--- /dev/null
+-- PR ada/46192
+-- Testcase by Rolf Ebert <rolf.ebert.gcc@gmx.de>
+
+-- { dg-do compile }
+-- { dg-options "-O2 -fdump-tree-optimized" }
+
+with System; use System;
+
+package body Renaming5 is
+
+ type Bits_In_Byte is array (0 .. 7) of Boolean;
+ pragma Pack (Bits_In_Byte);
+
+ A : Bits_In_Byte;
+ for A'Address use System'To_Address(16#c0#);
+ pragma Volatile (A);
+
+ B : Bits_In_Byte renames A;
+
+ procedure Proc is
+ begin
+ while B (0) = False loop
+ null;
+ end loop;
+ end;
+
+end Renaming5;
+
+-- { dg-final { scan-tree-dump-times "goto" 2 "optimized" } }
+-- { dg-final { cleanup-tree-dump "optimized" } }
--- /dev/null
+package Renaming5 is
+
+ procedure Proc;
+
+end Renaming5;