OSDN Git Service

* atree.adb: Add a fifth component to entities
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 3 Jan 2005 15:33:59 +0000 (15:33 +0000)
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 3 Jan 2005 15:33:59 +0000 (15:33 +0000)
This allows us to add 32 flags and four new fields

* atree.ads: Add a fifth component to entities
This allows us to add 32 flags and four new fields

* einfo.ads, einfo.adb: Document new fields and new flags now available
Add routines for printing new fields

* treepr.adb: Call routines to print out additional fields if present

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92830 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ada/atree.adb
gcc/ada/atree.ads
gcc/ada/einfo.adb
gcc/ada/einfo.ads
gcc/ada/treepr.adb

index f8fef8c..149203a 100644 (file)
@@ -89,8 +89,9 @@ package body Atree is
    function To_Flag_Byte_Ptr is new
      Unchecked_Conversion (Node_Kind_Ptr, Flag_Byte_Ptr);
 
-   --  The following declarations are used to store flags 73-96 in the
-   --  Field12 field of the third component of an extended (entity) node.
+   --  The following declarations are used to store flags 73-96 and the
+   --  Convention field in the Field12 field of the third component of an
+   --  extended (Entity) node.
 
    type Flag_Word is record
       Flag73 : Boolean;
@@ -189,11 +190,11 @@ package body Atree is
    function To_Flag_Word2_Ptr is new
      Unchecked_Conversion (Union_Id_Ptr, Flag_Word2_Ptr);
 
-   --  The following declarations are used to store flags 97-120 in the
+   --  The following declarations are used to store flags 152-183 in the
    --  Field12 field of the fourth component of an extended (entity) node.
 
    type Flag_Word3 is record
-      Flag152  : Boolean;
+      Flag152 : Boolean;
       Flag153 : Boolean;
       Flag154 : Boolean;
       Flag155 : Boolean;
@@ -242,6 +243,59 @@ package body Atree is
    function To_Flag_Word3_Ptr is new
      Unchecked_Conversion (Union_Id_Ptr, Flag_Word3_Ptr);
 
+   --  The following declarations are used to store flags 184-215 in the
+   --  Field11 field of the fifth component of an extended (entity) node.
+
+   type Flag_Word4 is record
+      Flag184 : Boolean;
+      Flag185 : Boolean;
+      Flag186 : Boolean;
+      Flag187 : Boolean;
+      Flag188 : Boolean;
+      Flag189 : Boolean;
+      Flag190 : Boolean;
+      Flag191 : Boolean;
+
+      Flag192 : Boolean;
+      Flag193 : Boolean;
+      Flag194 : Boolean;
+      Flag195 : Boolean;
+      Flag196 : Boolean;
+      Flag197 : Boolean;
+      Flag198 : Boolean;
+      Flag199 : Boolean;
+
+      Flag200 : Boolean;
+      Flag201 : Boolean;
+      Flag202 : Boolean;
+      Flag203 : Boolean;
+      Flag204 : Boolean;
+      Flag205 : Boolean;
+      Flag206 : Boolean;
+      Flag207 : Boolean;
+
+      Flag208 : Boolean;
+      Flag209 : Boolean;
+      Flag210 : Boolean;
+      Flag211 : Boolean;
+      Flag212 : Boolean;
+      Flag213 : Boolean;
+      Flag214 : Boolean;
+      Flag215 : Boolean;
+   end record;
+
+   pragma Pack (Flag_Word4);
+   for Flag_Word4'Size use 32;
+   for Flag_Word4'Alignment use 4;
+
+   type Flag_Word4_Ptr is access all Flag_Word4;
+
+   function To_Flag_Word4 is new
+     Unchecked_Conversion (Union_Id, Flag_Word4);
+
+   function To_Flag_Word4_Ptr is new
+     Unchecked_Conversion (Union_Id_Ptr, Flag_Word4_Ptr);
+
    --  Default value used to initialize default nodes. Note that some of the
    --  fields get overwritten, and in particular, Nkind always gets reset.
 
@@ -404,6 +458,8 @@ package body Atree is
       Ext1   : Node_Record := Default_Node_Extension;
       Ext2   : Node_Record := Default_Node_Extension;
       Ext3   : Node_Record := Default_Node_Extension;
+      Ext4   : Node_Record := Default_Node_Extension;
+
    begin
       if Present (Src) then
          Nod := Nodes.Table (Src);
@@ -412,6 +468,7 @@ package body Atree is
             Ext1 := Nodes.Table (Src + 1);
             Ext2 := Nodes.Table (Src + 2);
             Ext3 := Nodes.Table (Src + 3);
+            Ext4 := Nodes.Table (Src + 4);
          end if;
       end if;
 
@@ -433,6 +490,7 @@ package body Atree is
          Nodes.Append (Ext1);
          Nodes.Append (Ext2);
          Nodes.Append (Ext3);
+         Nodes.Append (Ext4);
       end if;
 
       Orig_Nodes.Set_Last (Nodes.Last);
@@ -518,6 +576,7 @@ package body Atree is
          Nodes.Table (Destination + 1) := Nodes.Table (Source + 1);
          Nodes.Table (Destination + 2) := Nodes.Table (Source + 2);
          Nodes.Table (Destination + 3) := Nodes.Table (Source + 3);
+         Nodes.Table (Destination + 4) := Nodes.Table (Source + 4);
 
       else
          pragma Assert (not Has_Extension (Source));
@@ -579,10 +638,9 @@ package body Atree is
 
          else
             NL := New_List;
-            E := First (List);
 
+            E := First (List);
             while Present (E) loop
-
                if Has_Extension (E) then
                   Append (Copy_Entity (E), NL);
                else
@@ -605,7 +663,6 @@ package body Atree is
 
       begin
          if Field in Node_Range then
-
             New_N := Union_Id (Copy_Separate_Tree (Node_Id (Field)));
 
             if Parent (Node_Id (Field)) = Source then
@@ -697,6 +754,10 @@ package body Atree is
       procedure Delete_List (L : List_Id);
       --  Delete all elements on the given list
 
+      ------------------
+      -- Delete_Field --
+      ------------------
+
       procedure Delete_Field (F : Union_Id) is
       begin
          if F = Union_Id (Empty) then
@@ -719,6 +780,10 @@ package body Atree is
          end if;
       end Delete_Field;
 
+      -----------------
+      -- Delete_List --
+      -----------------
+
       procedure Delete_List (L : List_Id) is
       begin
          while Is_Non_Empty_List (L) loop
@@ -785,6 +850,9 @@ package body Atree is
       Temp_Ent := Nodes.Table (E1 + 3);
       Nodes.Table (E1 + 3) := Nodes.Table (E2 + 3);
       Nodes.Table (E2 + 3) := Temp_Ent;
+      Temp_Ent := Nodes.Table (E1 + 4);
+      Nodes.Table (E1 + 4) := Nodes.Table (E2 + 4);
+      Nodes.Table (E2 + 4) := Temp_Ent;
 
       --  That exchange exchanged the parent pointers as well, which is what
       --  we want, but we need to patch up the defining identifier pointers
@@ -809,8 +877,12 @@ package body Atree is
       Result : Entity_Id;
 
       procedure Debug_Extend_Node;
-      --  Debug routine for debug flag N
       pragma Inline (Debug_Extend_Node);
+      --  Debug routine for debug flag N
+
+      -----------------------
+      -- Debug_Extend_Node --
+      -----------------------
 
       procedure Debug_Extend_Node is
       begin
@@ -829,6 +901,8 @@ package body Atree is
          end if;
       end Debug_Extend_Node;
 
+   --  Start of processing for Extend_Node
+
    begin
       pragma Assert (not (Has_Extension (Node)));
       Result := Allocate_Initialize_Node (Node, With_Extension => True);
@@ -847,6 +921,10 @@ package body Atree is
       --  points to a node, list, or element list that has a parent that
       --  points to Old_Node. If so, the parent is reset to point to New_Node.
 
+      ----------------
+      -- Fix_Parent --
+      ----------------
+
       procedure Fix_Parent (Field : Union_Id; Old_Node, New_Node : Node_Id) is
       begin
          --  Fix parent of node that is referenced by Field. Note that we must
@@ -870,6 +948,8 @@ package body Atree is
          end if;
       end Fix_Parent;
 
+   --  Start of processing for Fix_Parents
+
    begin
       Fix_Parent (Field1 (New_Node), Old_Node, New_Node);
       Fix_Parent (Field2 (New_Node), Old_Node, New_Node);
@@ -921,7 +1001,8 @@ package body Atree is
       Set_Name1 (Error, Error_Name);
       Set_Error_Posted (Error, True);
 
-      --  Set global variables for New_Copy_Tree:
+      --  Set global variables for New_Copy_Tree
+
       NCT_Hash_Tables_Used := False;
       NCT_Table_Entries    := 0;
       NCT_Hash_Table_Setup := False;
@@ -1019,11 +1100,19 @@ package body Atree is
    function New_Copy_Hash (E : Entity_Id) return NCT_Header_Num;
    --  Hash function used for hash operations
 
+   -------------------
+   -- New_Copy_Hash --
+   -------------------
+
    function New_Copy_Hash (E : Entity_Id) return NCT_Header_Num is
    begin
       return Nat (E) mod (NCT_Header_Num'Last + 1);
    end New_Copy_Hash;
 
+   ---------------
+   -- NCT_Assoc --
+   ---------------
+
    --  The hash table NCT_Assoc associates old entities in the table
    --  with their corresponding new entities (i.e. the pairs of entries
    --  presented in the original Map argument are Key-Element pairs).
@@ -1036,6 +1125,10 @@ package body Atree is
      Hash       => New_Copy_Hash,
      Equal      => Types."=");
 
+   ---------------------
+   -- NCT_Itype_Assoc --
+   ---------------------
+
    --  The hash table NCT_Itype_Assoc contains entries only for those
    --  old nodes which have a non-empty Associated_Node_For_Itype set.
    --  The key is the associated node, and the element is the new node
@@ -1049,7 +1142,7 @@ package body Atree is
      Hash       => New_Copy_Hash,
      Equal      => Types."=");
 
-   --  Start of New_Copy_Tree function
+   --  Start of processing for New_Copy_Tree function
 
    function New_Copy_Tree
      (Source    : Node_Id;
@@ -1199,8 +1292,8 @@ package body Atree is
 
          else
             New_Elist := New_Elmt_List;
-            M := First_Elmt (Old_Elist);
 
+            M := First_Elmt (Old_Elist);
             while Present (M) loop
                Append_Elmt (Copy_Node_With_Replacement (Node (M)), New_Elist);
                Next_Elmt (M);
@@ -1274,6 +1367,7 @@ package body Atree is
 
          else
             New_List := Empty_List;
+
             E := First (Old_List);
             while Present (E) loop
                Append (Copy_Node_With_Replacement (E), New_List);
@@ -1479,7 +1573,6 @@ package body Atree is
 
       procedure Visit_Elist (E : Elist_Id) is
          Elmt : Elmt_Id;
-
       begin
          if Present (E) then
             Elmt := First_Elmt (E);
@@ -1705,7 +1798,6 @@ package body Atree is
 
       procedure Visit_List (L : List_Id) is
          N : Node_Id;
-
       begin
          if L /= No_List then
             N := First (L);
@@ -1747,7 +1839,6 @@ package body Atree is
             else
                declare
                   E : Elmt_Id;
-
                begin
                   if Present (Actual_Map) then
                      E := First_Elmt (Actual_Map);
@@ -1790,6 +1881,7 @@ package body Atree is
 
          begin
             NCT_Table_Entries := 0;
+
             Elmt := First_Elmt (Actual_Map);
             while Present (Elmt) loop
                NCT_Table_Entries := NCT_Table_Entries + 1;
@@ -1817,7 +1909,6 @@ package body Atree is
          declare
             Elmt      : Elmt_Id;
             New_Itype : Entity_Id;
-
          begin
             Elmt := First_Elmt (Actual_Map);
             while Present (Elmt) loop
@@ -1845,8 +1936,8 @@ package body Atree is
       Ent : Entity_Id;
 
       procedure New_Entity_Debugging_Output;
-      --  Debugging routine for debug flag N
       pragma Inline (New_Entity_Debugging_Output);
+      --  Debugging routine for debug flag N
 
       ---------------------------------
       -- New_Entity_Debugging_Output --
@@ -1898,8 +1989,8 @@ package body Atree is
       Nod : Node_Id;
 
       procedure New_Node_Debugging_Output;
-      --  Debugging routine for debug flag N
       pragma Inline (New_Node_Debugging_Output);
+      --  Debugging routine for debug flag N
 
       --------------------------
       -- New_Debugging_Output --
@@ -2396,7 +2487,6 @@ package body Atree is
       function Traverse is new Traverse_Func (Process);
       Discard : Traverse_Result;
       pragma Warnings (Off, Discard);
-
    begin
       Discard := Traverse (Node);
    end Traverse_Proc;
@@ -2567,6 +2657,30 @@ package body Atree is
          return Nodes.Table (N + 3).Field10;
       end Field23;
 
+      function Field24 (N : Node_Id) return Union_Id is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return Nodes.Table (N + 4).Field6;
+      end Field24;
+
+      function Field25 (N : Node_Id) return Union_Id is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return Nodes.Table (N + 4).Field7;
+      end Field25;
+
+      function Field26 (N : Node_Id) return Union_Id is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return Nodes.Table (N + 4).Field8;
+      end Field26;
+
+      function Field27 (N : Node_Id) return Union_Id is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return Nodes.Table (N + 4).Field9;
+      end Field27;
+
       function Node1 (N : Node_Id) return Node_Id is
       begin
          pragma Assert (N in Nodes.First .. Nodes.Last);
@@ -2705,6 +2819,30 @@ package body Atree is
          return Node_Id (Nodes.Table (N + 3).Field10);
       end Node23;
 
+      function Node24 (N : Node_Id) return Node_Id is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return Node_Id (Nodes.Table (N + 4).Field6);
+      end Node24;
+
+      function Node25 (N : Node_Id) return Node_Id is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return Node_Id (Nodes.Table (N + 4).Field7);
+      end Node25;
+
+      function Node26 (N : Node_Id) return Node_Id is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return Node_Id (Nodes.Table (N + 4).Field8);
+      end Node26;
+
+      function Node27 (N : Node_Id) return Node_Id is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return Node_Id (Nodes.Table (N + 4).Field9);
+      end Node27;
+
       function List1 (N : Node_Id) return List_Id is
       begin
          pragma Assert (N in Nodes.First .. Nodes.Last);
@@ -2831,7 +2969,6 @@ package body Atree is
       function Uint3 (N : Node_Id) return Uint is
          pragma Assert (N in Nodes.First .. Nodes.Last);
          U : constant Union_Id := Nodes.Table (N).Field3;
-
       begin
          if U = 0 then
             return Uint_0;
@@ -2843,7 +2980,6 @@ package body Atree is
       function Uint4 (N : Node_Id) return Uint is
          pragma Assert (N in Nodes.First .. Nodes.Last);
          U : constant Union_Id := Nodes.Table (N).Field4;
-
       begin
          if U = 0 then
             return Uint_0;
@@ -2855,7 +2991,6 @@ package body Atree is
       function Uint5 (N : Node_Id) return Uint is
          pragma Assert (N in Nodes.First .. Nodes.Last);
          U : constant Union_Id := Nodes.Table (N).Field5;
-
       begin
          if U = 0 then
             return Uint_0;
@@ -2879,7 +3014,6 @@ package body Atree is
       function Uint9 (N : Node_Id) return Uint is
          pragma Assert (Nkind (N) in N_Entity);
          U : constant Union_Id := Nodes.Table (N + 1).Field9;
-
       begin
          if U = 0 then
             return Uint_0;
@@ -2888,34 +3022,31 @@ package body Atree is
          end if;
       end Uint9;
 
-      function Uint11 (N : Node_Id) return Uint is
+      function Uint10 (N : Node_Id) return Uint is
          pragma Assert (Nkind (N) in N_Entity);
-         U : constant Union_Id := Nodes.Table (N + 1).Field11;
-
+         U : constant Union_Id := Nodes.Table (N + 1).Field10;
       begin
          if U = 0 then
             return Uint_0;
          else
             return From_Union (U);
          end if;
-      end Uint11;
+      end Uint10;
 
-      function Uint10 (N : Node_Id) return Uint is
+      function Uint11 (N : Node_Id) return Uint is
          pragma Assert (Nkind (N) in N_Entity);
-         U : constant Union_Id := Nodes.Table (N + 1).Field10;
-
+         U : constant Union_Id := Nodes.Table (N + 1).Field11;
       begin
          if U = 0 then
             return Uint_0;
          else
             return From_Union (U);
          end if;
-      end Uint10;
+      end Uint11;
 
       function Uint12 (N : Node_Id) return Uint is
          pragma Assert (Nkind (N) in N_Entity);
          U : constant Union_Id := Nodes.Table (N + 1).Field12;
-
       begin
          if U = 0 then
             return Uint_0;
@@ -2927,7 +3058,6 @@ package body Atree is
       function Uint13 (N : Node_Id) return Uint is
          pragma Assert (Nkind (N) in N_Entity);
          U : constant Union_Id := Nodes.Table (N + 2).Field6;
-
       begin
          if U = 0 then
             return Uint_0;
@@ -2939,7 +3069,6 @@ package body Atree is
       function Uint14 (N : Node_Id) return Uint is
          pragma Assert (Nkind (N) in N_Entity);
          U : constant Union_Id := Nodes.Table (N + 2).Field7;
-
       begin
          if U = 0 then
             return Uint_0;
@@ -2951,7 +3080,6 @@ package body Atree is
       function Uint15 (N : Node_Id) return Uint is
          pragma Assert (Nkind (N) in N_Entity);
          U : constant Union_Id := Nodes.Table (N + 2).Field8;
-
       begin
          if U = 0 then
             return Uint_0;
@@ -2963,7 +3091,6 @@ package body Atree is
       function Uint16 (N : Node_Id) return Uint is
          pragma Assert (Nkind (N) in N_Entity);
          U : constant Union_Id := Nodes.Table (N + 2).Field9;
-
       begin
          if U = 0 then
             return Uint_0;
@@ -2975,7 +3102,6 @@ package body Atree is
       function Uint17 (N : Node_Id) return Uint is
          pragma Assert (Nkind (N) in N_Entity);
          U : constant Union_Id := Nodes.Table (N + 2).Field10;
-
       begin
          if U = 0 then
             return Uint_0;
@@ -2987,7 +3113,6 @@ package body Atree is
       function Uint22 (N : Node_Id) return Uint is
          pragma Assert (Nkind (N) in N_Entity);
          U : constant Union_Id := Nodes.Table (N + 3).Field9;
-
       begin
          if U = 0 then
             return Uint_0;
@@ -4094,6 +4219,198 @@ package body Atree is
          return To_Flag_Word3 (Nodes.Table (N + 3).Field11).Flag183;
       end Flag183;
 
+      function Flag184 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag184;
+      end Flag184;
+
+      function Flag185 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag185;
+      end Flag185;
+
+      function Flag186 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag186;
+      end Flag186;
+
+      function Flag187 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag187;
+      end Flag187;
+
+      function Flag188 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag188;
+      end Flag188;
+
+      function Flag189 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag189;
+      end Flag189;
+
+      function Flag190 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag190;
+      end Flag190;
+
+      function Flag191 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag191;
+      end Flag191;
+
+      function Flag192 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag192;
+      end Flag192;
+
+      function Flag193 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag193;
+      end Flag193;
+
+      function Flag194 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag194;
+      end Flag194;
+
+      function Flag195 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag195;
+      end Flag195;
+
+      function Flag196 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag196;
+      end Flag196;
+
+      function Flag197 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag197;
+      end Flag197;
+
+      function Flag198 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag198;
+      end Flag198;
+
+      function Flag199 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag199;
+      end Flag199;
+
+      function Flag200 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag200;
+      end Flag200;
+
+      function Flag201 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag201;
+      end Flag201;
+
+      function Flag202 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag202;
+      end Flag202;
+
+      function Flag203 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag203;
+      end Flag203;
+
+      function Flag204 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag204;
+      end Flag204;
+
+      function Flag205 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag205;
+      end Flag205;
+
+      function Flag206 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag206;
+      end Flag206;
+
+      function Flag207 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag207;
+      end Flag207;
+
+      function Flag208 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag208;
+      end Flag208;
+
+      function Flag209 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag209;
+      end Flag209;
+
+      function Flag210 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag210;
+      end Flag210;
+
+      function Flag211 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag211;
+      end Flag211;
+
+      function Flag212 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag212;
+      end Flag212;
+
+      function Flag213 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag213;
+      end Flag213;
+
+      function Flag214 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag214;
+      end Flag214;
+
+      function Flag215 (N : Node_Id) return Boolean is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         return To_Flag_Word4 (Nodes.Table (N + 4).Field11).Flag215;
+      end Flag215;
+
       procedure Set_Nkind (N : Node_Id; Val : Node_Kind) is
       begin
          pragma Assert (N in Nodes.First .. Nodes.Last);
@@ -4238,6 +4555,30 @@ package body Atree is
          Nodes.Table (N + 3).Field10 := Val;
       end Set_Field23;
 
+      procedure Set_Field24 (N : Node_Id; Val : Union_Id) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         Nodes.Table (N + 4).Field6 := Val;
+      end Set_Field24;
+
+      procedure Set_Field25 (N : Node_Id; Val : Union_Id) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         Nodes.Table (N + 4).Field7 := Val;
+      end Set_Field25;
+
+      procedure Set_Field26 (N : Node_Id; Val : Union_Id) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         Nodes.Table (N + 4).Field8 := Val;
+      end Set_Field26;
+
+      procedure Set_Field27 (N : Node_Id; Val : Union_Id) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         Nodes.Table (N + 4).Field9 := Val;
+      end Set_Field27;
+
       procedure Set_Node1 (N : Node_Id; Val : Node_Id) is
       begin
          pragma Assert (N in Nodes.First .. Nodes.Last);
@@ -4376,6 +4717,30 @@ package body Atree is
          Nodes.Table (N + 3).Field10 := Union_Id (Val);
       end Set_Node23;
 
+      procedure Set_Node24 (N : Node_Id; Val : Node_Id) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         Nodes.Table (N + 4).Field6 := Union_Id (Val);
+      end Set_Node24;
+
+      procedure Set_Node25 (N : Node_Id; Val : Node_Id) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         Nodes.Table (N + 4).Field7 := Union_Id (Val);
+      end Set_Node25;
+
+      procedure Set_Node26 (N : Node_Id; Val : Node_Id) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         Nodes.Table (N + 4).Field8 := Union_Id (Val);
+      end Set_Node26;
+
+      procedure Set_Node27 (N : Node_Id; Val : Node_Id) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         Nodes.Table (N + 4).Field9 := Union_Id (Val);
+      end Set_Node27;
+
       procedure Set_List1 (N : Node_Id; Val : List_Id) is
       begin
          pragma Assert (N in Nodes.First .. Nodes.Last);
@@ -5873,6 +6238,262 @@ package body Atree is
              (Nodes.Table (N + 3).Field11'Unrestricted_Access)).Flag183 := Val;
       end Set_Flag183;
 
+      procedure Set_Flag184 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag184 := Val;
+      end Set_Flag184;
+
+      procedure Set_Flag185 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag185 := Val;
+      end Set_Flag185;
+
+      procedure Set_Flag186 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag186 := Val;
+      end Set_Flag186;
+
+      procedure Set_Flag187 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag187 := Val;
+      end Set_Flag187;
+
+      procedure Set_Flag188 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag188 := Val;
+      end Set_Flag188;
+
+      procedure Set_Flag189 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag189 := Val;
+      end Set_Flag189;
+
+      procedure Set_Flag190 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag190 := Val;
+      end Set_Flag190;
+
+      procedure Set_Flag191 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag191 := Val;
+      end Set_Flag191;
+
+      procedure Set_Flag192 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag192 := Val;
+      end Set_Flag192;
+
+      procedure Set_Flag193 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag193 := Val;
+      end Set_Flag193;
+
+      procedure Set_Flag194 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag194 := Val;
+      end Set_Flag194;
+
+      procedure Set_Flag195 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag195 := Val;
+      end Set_Flag195;
+
+      procedure Set_Flag196 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag196 := Val;
+      end Set_Flag196;
+
+      procedure Set_Flag197 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag197 := Val;
+      end Set_Flag197;
+
+      procedure Set_Flag198 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag198 := Val;
+      end Set_Flag198;
+
+      procedure Set_Flag199 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag199 := Val;
+      end Set_Flag199;
+
+      procedure Set_Flag200 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag200 := Val;
+      end Set_Flag200;
+
+      procedure Set_Flag201 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag201 := Val;
+      end Set_Flag201;
+
+      procedure Set_Flag202 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag202 := Val;
+      end Set_Flag202;
+
+      procedure Set_Flag203 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag203 := Val;
+      end Set_Flag203;
+
+      procedure Set_Flag204 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag204 := Val;
+      end Set_Flag204;
+
+      procedure Set_Flag205 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag205 := Val;
+      end Set_Flag205;
+
+      procedure Set_Flag206 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag206 := Val;
+      end Set_Flag206;
+
+      procedure Set_Flag207 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag207 := Val;
+      end Set_Flag207;
+
+      procedure Set_Flag208 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag208 := Val;
+      end Set_Flag208;
+
+      procedure Set_Flag209 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag209 := Val;
+      end Set_Flag209;
+
+      procedure Set_Flag210 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag210 := Val;
+      end Set_Flag210;
+
+      procedure Set_Flag211 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag211 := Val;
+      end Set_Flag211;
+
+      procedure Set_Flag212 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag212 := Val;
+      end Set_Flag212;
+
+      procedure Set_Flag213 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag213 := Val;
+      end Set_Flag213;
+
+      procedure Set_Flag214 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag214 := Val;
+      end Set_Flag214;
+
+      procedure Set_Flag215 (N : Node_Id; Val : Boolean) is
+      begin
+         pragma Assert (Nkind (N) in N_Entity);
+         To_Flag_Word4_Ptr
+           (Union_Id_Ptr'
+             (Nodes.Table (N + 4).Field11'Unrestricted_Access)).Flag215 := Val;
+      end Set_Flag215;
+
       procedure Set_Node1_With_Parent (N : Node_Id; Val : Node_Id) is
       begin
          pragma Assert (N in Nodes.First .. Nodes.Last);
index 0f38e3e..aeee0f5 100644 (file)
@@ -176,9 +176,9 @@ package Atree is
    --                    entity, it is of type Entity_Kind which is defined
    --                    in package Einfo.
 
-   --   Flag19           133 additional flags
+   --   Flag19           197 additional flags
    --   ...
-   --   Flag151
+   --   Flag215
 
    --   Convention       Entity convention (Convention_Id value)
 
@@ -188,8 +188,8 @@ package Atree is
    --   Elist6           Synonym for Field6 typed as Elist_Id
    --   Uint6            Synonym for Field6 typed as Uint (Empty = Uint_0)
 
-   --   Similar definitions for Field7 to Field23 (and Node7-Node23,
-   --   Elist7-Elist23, Uint7-Uint23, Ureal7-Ureal23). Note that not all
+   --   Similar definitions for Field7 to Field27 (and Node7-Node27,
+   --   Elist7-Elist27, Uint7-Uint27, Ureal7-Ureal27). Note that not all
    --   these functions are defined, only the ones that are actually used.
 
    type Paren_Count_Type is mod 4;
@@ -292,7 +292,7 @@ package Atree is
    -------------------------------------
 
    --  A subpackage Atree.Unchecked_Access provides routines for reading and
-   --  writing the fields defined above (Field1-17, Node1-17, Flag1-88 etc).
+   --  writing the fields defined above (Field1-27, Node1-27, Flag1-215 etc).
    --  These unchecked access routines can be used for untyped traversals.
    --  In addition they are used in the implementations of the Sinfo and
    --  Einfo packages. These packages both provide logical synonyms for
@@ -323,12 +323,13 @@ package Atree is
    --  Called before the backend is invoked to lock the nodes table
 
    procedure Tree_Read;
-   --  Initializes internal tables from current tree file using Tree_Read.
-   --  Note that Initialize should not be called if Tree_Read is used.
-   --  Tree_Read includes all necessary initialization.
+   --  Initializes internal tables from current tree file using the relevant
+   --  Table.Tree_Read routines. Note that Initialize should not be called if
+   --  Tree_Read is used. Tree_Read includes all necessary initialization.
 
    procedure Tree_Write;
-   --  Writes out internal tables to current tree file using Tree_Write
+   --  Writes out internal tables to current tree file using the relevant
+   --  Table.Tree_Write routines.
 
    function New_Node
      (New_Node_Kind : Node_Kind;
@@ -837,6 +838,18 @@ package Atree is
       function Field23 (N : Node_Id) return Union_Id;
       pragma Inline (Field23);
 
+      function Field24 (N : Node_Id) return Union_Id;
+      pragma Inline (Field24);
+
+      function Field25 (N : Node_Id) return Union_Id;
+      pragma Inline (Field25);
+
+      function Field26 (N : Node_Id) return Union_Id;
+      pragma Inline (Field26);
+
+      function Field27 (N : Node_Id) return Union_Id;
+      pragma Inline (Field27);
+
       function Node1 (N : Node_Id) return Node_Id;
       pragma Inline (Node1);
 
@@ -906,6 +919,18 @@ package Atree is
       function Node23 (N : Node_Id) return Node_Id;
       pragma Inline (Node23);
 
+      function Node24 (N : Node_Id) return Node_Id;
+      pragma Inline (Node24);
+
+      function Node25 (N : Node_Id) return Node_Id;
+      pragma Inline (Node25);
+
+      function Node26 (N : Node_Id) return Node_Id;
+      pragma Inline (Node26);
+
+      function Node27 (N : Node_Id) return Node_Id;
+      pragma Inline (Node27);
+
       function List1 (N : Node_Id) return List_Id;
       pragma Inline (List1);
 
@@ -1565,6 +1590,102 @@ package Atree is
       function Flag183 (N : Node_Id) return Boolean;
       pragma Inline (Flag183);
 
+      function Flag184 (N : Node_Id) return Boolean;
+      pragma Inline (Flag184);
+
+      function Flag185 (N : Node_Id) return Boolean;
+      pragma Inline (Flag185);
+
+      function Flag186 (N : Node_Id) return Boolean;
+      pragma Inline (Flag186);
+
+      function Flag187 (N : Node_Id) return Boolean;
+      pragma Inline (Flag187);
+
+      function Flag188 (N : Node_Id) return Boolean;
+      pragma Inline (Flag188);
+
+      function Flag189 (N : Node_Id) return Boolean;
+      pragma Inline (Flag189);
+
+      function Flag190 (N : Node_Id) return Boolean;
+      pragma Inline (Flag190);
+
+      function Flag191 (N : Node_Id) return Boolean;
+      pragma Inline (Flag191);
+
+      function Flag192 (N : Node_Id) return Boolean;
+      pragma Inline (Flag192);
+
+      function Flag193 (N : Node_Id) return Boolean;
+      pragma Inline (Flag193);
+
+      function Flag194 (N : Node_Id) return Boolean;
+      pragma Inline (Flag194);
+
+      function Flag195 (N : Node_Id) return Boolean;
+      pragma Inline (Flag195);
+
+      function Flag196 (N : Node_Id) return Boolean;
+      pragma Inline (Flag196);
+
+      function Flag197 (N : Node_Id) return Boolean;
+      pragma Inline (Flag197);
+
+      function Flag198 (N : Node_Id) return Boolean;
+      pragma Inline (Flag198);
+
+      function Flag199 (N : Node_Id) return Boolean;
+      pragma Inline (Flag199);
+
+      function Flag200 (N : Node_Id) return Boolean;
+      pragma Inline (Flag200);
+
+      function Flag201 (N : Node_Id) return Boolean;
+      pragma Inline (Flag201);
+
+      function Flag202 (N : Node_Id) return Boolean;
+      pragma Inline (Flag202);
+
+      function Flag203 (N : Node_Id) return Boolean;
+      pragma Inline (Flag203);
+
+      function Flag204 (N : Node_Id) return Boolean;
+      pragma Inline (Flag204);
+
+      function Flag205 (N : Node_Id) return Boolean;
+      pragma Inline (Flag205);
+
+      function Flag206 (N : Node_Id) return Boolean;
+      pragma Inline (Flag206);
+
+      function Flag207 (N : Node_Id) return Boolean;
+      pragma Inline (Flag207);
+
+      function Flag208 (N : Node_Id) return Boolean;
+      pragma Inline (Flag208);
+
+      function Flag209 (N : Node_Id) return Boolean;
+      pragma Inline (Flag209);
+
+      function Flag210 (N : Node_Id) return Boolean;
+      pragma Inline (Flag210);
+
+      function Flag211 (N : Node_Id) return Boolean;
+      pragma Inline (Flag211);
+
+      function Flag212 (N : Node_Id) return Boolean;
+      pragma Inline (Flag212);
+
+      function Flag213 (N : Node_Id) return Boolean;
+      pragma Inline (Flag213);
+
+      function Flag214 (N : Node_Id) return Boolean;
+      pragma Inline (Flag214);
+
+      function Flag215 (N : Node_Id) return Boolean;
+      pragma Inline (Flag215);
+
       --  Procedures to set value of indicated field
 
       procedure Set_Nkind (N : Node_Id; Val : Node_Kind);
@@ -1639,6 +1760,18 @@ package Atree is
       procedure Set_Field23 (N : Node_Id; Val : Union_Id);
       pragma Inline (Set_Field23);
 
+      procedure Set_Field24 (N : Node_Id; Val : Union_Id);
+      pragma Inline (Set_Field24);
+
+      procedure Set_Field25 (N : Node_Id; Val : Union_Id);
+      pragma Inline (Set_Field25);
+
+      procedure Set_Field26 (N : Node_Id; Val : Union_Id);
+      pragma Inline (Set_Field26);
+
+      procedure Set_Field27 (N : Node_Id; Val : Union_Id);
+      pragma Inline (Set_Field27);
+
       procedure Set_Node1 (N : Node_Id; Val : Node_Id);
       pragma Inline (Set_Node1);
 
@@ -1708,6 +1841,18 @@ package Atree is
       procedure Set_Node23 (N : Node_Id; Val : Node_Id);
       pragma Inline (Set_Node23);
 
+      procedure Set_Node24 (N : Node_Id; Val : Node_Id);
+      pragma Inline (Set_Node24);
+
+      procedure Set_Node25 (N : Node_Id; Val : Node_Id);
+      pragma Inline (Set_Node25);
+
+      procedure Set_Node26 (N : Node_Id; Val : Node_Id);
+      pragma Inline (Set_Node26);
+
+      procedure Set_Node27 (N : Node_Id; Val : Node_Id);
+      pragma Inline (Set_Node27);
+
       procedure Set_List1 (N : Node_Id; Val : List_Id);
       pragma Inline (Set_List1);
 
@@ -2362,6 +2507,103 @@ package Atree is
       procedure Set_Flag183 (N : Node_Id; Val : Boolean);
       pragma Inline (Set_Flag183);
 
+      procedure Set_Flag184 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag184);
+
+      procedure Set_Flag185 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag185);
+
+      procedure Set_Flag186 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag186);
+
+      procedure Set_Flag187 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag187);
+
+      procedure Set_Flag188 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag188);
+
+      procedure Set_Flag189 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag189);
+
+      procedure Set_Flag190 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag190);
+
+      procedure Set_Flag191 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag191);
+
+      procedure Set_Flag192 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag192);
+
+      procedure Set_Flag193 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag193);
+
+      procedure Set_Flag194 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag194);
+
+      procedure Set_Flag195 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag195);
+
+      procedure Set_Flag196 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag196);
+
+      procedure Set_Flag197 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag197);
+
+      procedure Set_Flag198 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag198);
+
+      procedure Set_Flag199 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag199);
+
+      procedure Set_Flag200 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag200);
+
+      procedure Set_Flag201 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag201);
+
+      procedure Set_Flag202 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag202);
+
+      procedure Set_Flag203 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag203);
+
+      procedure Set_Flag204 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag204);
+
+      procedure Set_Flag205 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag205);
+
+      procedure Set_Flag206 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag206);
+
+      procedure Set_Flag207 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag207);
+
+      procedure Set_Flag208 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag208);
+
+      procedure Set_Flag209 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag209);
+
+      procedure Set_Flag210 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag210);
+
+      procedure Set_Flag211 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag211);
+
+      procedure Set_Flag212 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag212);
+
+      procedure Set_Flag213 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag213);
+
+      procedure Set_Flag214 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag214);
+
+      procedure Set_Flag215 (N : Node_Id; Val : Boolean);
+      pragma Inline (Set_Flag215);
+
+
       --  The following versions of Set_Noden also set the parent
       --  pointer of the referenced node if it is non_Empty
 
@@ -2479,7 +2721,8 @@ package Atree is
          --  The eighteen flags for a normal node
 
          --  The above fields are used as follows in components 2-4 of
-         --  an extended node entry.
+         --  an extended node entry. These fields are not currently
+         --  used in component 5 (where we still have lots of room!)
 
          --    In_List            used as  Flag19, Flag40, Flag129
          --    Unused_1           used as  Flag20, Flag41, Flag130
@@ -2567,9 +2810,18 @@ package Atree is
             --  as follows:
 
             --    Field6-10      Holds Field19-Field23
-            --    Field11        Holds Flag152-Flag167 (16 bits unused)
+            --    Field11        Holds Flag152-Flag183
             --    Field12        Holds Flag97-Flag128
 
+            --  In the fifth component, the extension format as described
+            --  above is used to hold additional general fields and flags
+            --  as follows:
+
+            --    Field6-9       Holds Field24-Field27
+            --    Field10        currently unused, reserved for expansion
+            --    Field11        Holds Flag184-Flag215
+            --    Field12        currently unused, reserved for expansion
+
          end case;
       end record;
 
index 85af819..39ab963 100644 (file)
@@ -209,6 +209,11 @@ package body Einfo is
    --    Privals_Chain                   Elist23
    --    Protected_Operation             Node23
 
+   --    (unused)                        Node24
+   --    (unused)                        Node25
+   --    (unused)                        Node26
+   --    (unused)                        Node27
+
    ---------------------------------------------
    -- Usage of Flags in Defining Entity Nodes --
    ---------------------------------------------
@@ -421,6 +426,38 @@ package body Einfo is
    --    Must_Be_On_Byte_Boundary       Flag183
 
    --    (unused)                       Flag153
+   --    (unused)                       Flag184
+   --    (unused)                       Flag185
+   --    (unused)                       Flag186
+   --    (unused)                       Flag187
+   --    (unused)                       Flag188
+   --    (unused)                       Flag189
+   --    (unused)                       Flag190
+   --    (unused)                       Flag191
+   --    (unused)                       Flag192
+   --    (unused)                       Flag193
+   --    (unused)                       Flag194
+   --    (unused)                       Flag195
+   --    (unused)                       Flag196
+   --    (unused)                       Flag197
+   --    (unused)                       Flag198
+   --    (unused)                       Flag199
+   --    (unused)                       Flag200
+   --    (unused)                       Flag201
+   --    (unused)                       Flag202
+   --    (unused)                       Flag203
+   --    (unused)                       Flag204
+   --    (unused)                       Flag205
+   --    (unused)                       Flag206
+   --    (unused)                       Flag207
+   --    (unused)                       Flag208
+   --    (unused)                       Flag209
+   --    (unused)                       Flag210
+   --    (unused)                       Flag211
+   --    (unused)                       Flag212
+   --    (unused)                       Flag213
+   --    (unused)                       Flag214
+   --    (unused)                       Flag215
 
    --------------------------------
    -- Attribute Access Functions --
@@ -6078,6 +6115,10 @@ package body Einfo is
       procedure W (Flag_Name : String; Flag : Boolean);
       --  Write out given flag if it is set
 
+      -------
+      -- W --
+      -------
+
       procedure W (Flag_Name : String; Flag : Boolean) is
       begin
          if Flag then
@@ -7159,6 +7200,54 @@ package body Einfo is
       end case;
    end Write_Field23_Name;
 
+   ------------------------
+   -- Write_Field24_Name --
+   ------------------------
+
+   procedure Write_Field24_Name (Id : Entity_Id) is
+   begin
+      case Ekind (Id) is
+         when others                                     =>
+            Write_Str ("Field24??");
+      end case;
+   end Write_Field24_Name;
+
+   ------------------------
+   -- Write_Field25_Name --
+   ------------------------
+
+   procedure Write_Field25_Name (Id : Entity_Id) is
+   begin
+      case Ekind (Id) is
+         when others                                     =>
+            Write_Str ("Field25??");
+      end case;
+   end Write_Field25_Name;
+
+   ------------------------
+   -- Write_Field26_Name --
+   ------------------------
+
+   procedure Write_Field26_Name (Id : Entity_Id) is
+   begin
+      case Ekind (Id) is
+         when others                                     =>
+            Write_Str ("Field26??");
+      end case;
+   end Write_Field26_Name;
+
+   ------------------------
+   -- Write_Field27_Name --
+   ------------------------
+
+   procedure Write_Field27_Name (Id : Entity_Id) is
+   begin
+      case Ekind (Id) is
+         when others                                     =>
+            Write_Str ("Field27??");
+      end case;
+   end Write_Field27_Name;
+
    -------------------------
    -- Iterator Procedures --
    -------------------------
index d77f811..c61ce66 100644 (file)
@@ -5960,6 +5960,10 @@ package Einfo is
    procedure Write_Field21_Name (Id : Entity_Id);
    procedure Write_Field22_Name (Id : Entity_Id);
    procedure Write_Field23_Name (Id : Entity_Id);
+   procedure Write_Field24_Name (Id : Entity_Id);
+   procedure Write_Field25_Name (Id : Entity_Id);
+   procedure Write_Field26_Name (Id : Entity_Id);
+   procedure Write_Field27_Name (Id : Entity_Id);
    --  These routines are used to output a nice symbolic name for the given
    --  field, depending on the Ekind. No blanks or end of lines are output,
    --  just the characters of the field name.
index ad10d50..2c52b5c 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 1992-2002 Free Software Foundation, Inc.          --
+--          Copyright (C) 1992-2004 Free Software Foundation, Inc.          --
 --                                                                          --
 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
 -- terms of the  GNU General Public License as published  by the Free Soft- --
@@ -539,8 +539,39 @@ package body Treepr is
          Print_Eol;
       end if;
 
-      Write_Entity_Flags (Ent, Prefix);
+      if Field_Present (Field24 (Ent)) then
+         Print_Str (Prefix);
+         Write_Field24_Name (Ent);
+         Write_Str (" = ");
+         Print_Field (Field24 (Ent));
+         Print_Eol;
+      end if;
 
+      if Field_Present (Field25 (Ent)) then
+         Print_Str (Prefix);
+         Write_Field25_Name (Ent);
+         Write_Str (" = ");
+         Print_Field (Field25 (Ent));
+         Print_Eol;
+      end if;
+
+      if Field_Present (Field26 (Ent)) then
+         Print_Str (Prefix);
+         Write_Field26_Name (Ent);
+         Write_Str (" = ");
+         Print_Field (Field26 (Ent));
+         Print_Eol;
+      end if;
+
+      if Field_Present (Field27 (Ent)) then
+         Print_Str (Prefix);
+         Write_Field27_Name (Ent);
+         Write_Str (" = ");
+         Print_Field (Field27 (Ent));
+         Print_Eol;
+      end if;
+
+      Write_Entity_Flags (Ent, Prefix);
    end Print_Entity_Info;
 
    ---------------