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 + -
显示快捷键?