renaming2.adb

来自「用于进行gcc测试」· ADB 代码 · 共 62 行

ADB
62
字号
--  { dg-do run }--  { dg-options "-gnatws" }with Text_IO;procedure renaming2 is    type RealNodeData;    type RefRealNodeData is access RealNodeData;    type ExpressionEntry;    type RefExpression is access ExpressionEntry;    type RefDefUseEntry is access Natural;        type ExpressionEntry is    record        Number : RefDefUseEntry;        Id     : Integer;    end record;       type RealNodeData is    record        Node   : RefExpression;        Id     : Integer;     end record;                for ExpressionEntry use    record        Number at 0 range  0 .. 63;        Id     at 8 range  0 .. 31;    end record ;            for RealNodeData use    record        Node   at  0 range  0 .. 63;        Id     at 8 range  0 .. 31;    end record ;            U_Node : RefDefUseEntry := new Natural'(1);     E_Node : RefExpression := new ExpressionEntry'(Number => U_Node,                                                   Id => 2);    R_Node : RefRealNodeData := new RealNodeData'(Node => E_Node,                                                    Id => 3);            procedure test_routine (NodeRealData : RefRealNodeData)    is          OldHead   : RefDefUseEntry renames NodeRealData.all.Node.all.Number;        OldHead1  : constant RefDefUseEntry := OldHead;    begin      NodeRealData.all.Node := new ExpressionEntry'(Number => null, Id => 4);      declare                                                           OldHead2 : constant RefDefUseEntry := OldHead;      begin        if OldHead1 /= OldHead2        then          Text_IO.Put_Line (" OldHead changed !!!");        end if;      end;    end;begin  test_routine (R_Node);end;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?