Require target lra in gcc.dg/pr108095.c
[official-gcc.git] / gcc / testsuite / gnat.dg / renaming2.adb
blob0ec89c2f3ab5440370b76fbc543a8f3a9c354e99
1 -- { dg-do run }
2 -- { dg-options "-gnatws" }
4 with Text_IO;
5 procedure renaming2 is
6 type RealNodeData;
7 type RefRealNodeData is access RealNodeData;
9 type ExpressionEntry;
10 type RefExpression is access ExpressionEntry;
12 type RefDefUseEntry is access Natural;
14 type ExpressionEntry is
15 record
16 Number : RefDefUseEntry;
17 Id : Integer;
18 end record;
20 type RealNodeData is
21 record
22 Node : RefExpression;
23 Id : Integer;
24 end record;
26 for ExpressionEntry use
27 record
28 Number at 0 range 0 .. 63;
29 Id at 8 range 0 .. 31;
30 end record ;
32 for RealNodeData use
33 record
34 Node at 0 range 0 .. 63;
35 Id at 8 range 0 .. 31;
36 end record ;
38 U_Node : RefDefUseEntry := new Natural'(1);
39 E_Node : RefExpression := new ExpressionEntry'(Number => U_Node,
40 Id => 2);
41 R_Node : RefRealNodeData := new RealNodeData'(Node => E_Node,
42 Id => 3);
44 procedure test_routine (NodeRealData : RefRealNodeData)
45 is
46 OldHead : RefDefUseEntry renames NodeRealData.all.Node.all.Number;
47 OldHead1 : constant RefDefUseEntry := OldHead;
48 begin
49 NodeRealData.all.Node := new ExpressionEntry'(Number => null, Id => 4);
50 declare
51 OldHead2 : constant RefDefUseEntry := OldHead;
52 begin
53 if OldHead1 /= OldHead2
54 then
55 Text_IO.Put_Line (" OldHead changed !!!");
56 end if;
57 end;
58 end;
59 begin
60 test_routine (R_Node);
61 end;