-- In_List A flag used to indicate if the node is a member
-- of a node list.
- -- Rewrite_Sub A flag set if the node has been rewritten using
- -- the Rewrite procedure. The original value of the
- -- node is retrievable with Original_Node.
-
-- Rewrite_Ins A flag set if a node is marked as a rewrite inserted
-- node as a result of a call to Mark_Rewrite_Insertion.
-- it is useful to be able to do untyped traversals, and an internal
-- package in Atree allows for direct untyped accesses in such cases.
- -- Flag4 Fifteen Boolean flags (use depends on Nkind and
+ -- Flag4 Sixteen Boolean flags (use depends on Nkind and
-- Flag5 Ekind, as described for FieldN). Again the access
-- Flag6 is usually via subprograms in Sinfo and Einfo which
-- Flag7 provide high-level synonyms for these flags, and
-- Flag8 contain debugging code that checks that the values
-- Flag9 in Nkind and Ekind are appropriate for the access.
-- Flag10
- -- Flag11 Note that Flag1-3 are missing from this list. The
- -- Flag12 first three flag positions are reserved for the
- -- Flag13 standard flags (Comes_From_Source, Error_Posted,
- -- Flag14 and Analyzed)
+ -- Flag11 Note that Flag1-2 are missing from this list. For
+ -- Flag12 historical reasons, these flag names are unused.
+ -- Flag13
+ -- Flag14
-- Flag15
-- Flag16
-- Flag17
-- entity, it is of type Entity_Kind which is defined
-- in package Einfo.
- -- Flag19 229 additional flags
+ -- Flag19 235 additional flags
-- ...
- -- Flag247
+ -- Flag254
-- Convention Entity convention (Convention_Id value)
-- Uint6 Synonym for Field6 typed as Uint (Empty = Uint_0)
-- Similar definitions for Field7 to Field28 (and Node7-Node28,
- -- Elist7-Elist28, Uint7-Uint28, Ureal7-Ureal28). Note that not all
- -- these functions are defined, only the ones that are actually used.
+ -- Elist7-Elist28, Uint7-Uint28, Ureal7-Ureal28). Note that not all these
+ -- functions are defined, only the ones that are actually used.
function Last_Node_Id return Node_Id;
pragma Inline (Last_Node_Id);
-- Field1-5 fields are set to Empty
- -- Field6-22 fields in extended nodes are set to Empty
+ -- Field6-29 fields in extended nodes are set to Empty
-- Parent is set to Empty
-------------------------------------
-- A subpackage Atree.Unchecked_Access provides routines for reading and
- -- writing the fields defined above (Field1-27, Node1-27, Flag1-247 etc).
+ -- writing the fields defined above (Field1-27, Node1-27, Flag4-254 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
-- The parent pointer of the destination and its list link, if any, are
-- not affected by the copy. Note that parent pointers of descendents
-- are not adjusted, so the descendents of the destination node after
- -- the Copy_Node is completed have dubious parent pointers.
+ -- the Copy_Node is completed have dubious parent pointers. Note that
+ -- this routine does NOT copy aspect specifications, the Has_Aspects
+ -- flag in the returned node will always be False. The caller must deal
+ -- with copying aspect specifications where this is required.
function New_Copy (Source : Node_Id) return Node_Id;
-- This function allocates a completely new node, and then initializes
function Analyzed (N : Node_Id) return Boolean;
pragma Inline (Analyzed);
+ function Has_Aspects (N : Node_Id) return Boolean;
+ pragma Inline (Has_Aspects);
+
function Comes_From_Source (N : Node_Id) return Boolean;
pragma Inline (Comes_From_Source);
function Parent (N : Node_Id) return Node_Id;
pragma Inline (Parent);
- -- Returns the parent of a node if the node is not a list member, or
- -- else the parent of the list containing the node if the node is a
- -- list member.
+ -- Returns the parent of a node if the node is not a list member, or else
+ -- the parent of the list containing the node if the node is a list member.
function No (N : Node_Id) return Boolean;
pragma Inline (No);
-- unusual cases, the value needs to be reset (e.g. when a source
-- node is copied, and the copy must not have Comes_From_Source set.
+ procedure Set_Has_Aspects (N : Node_Id; Val : Boolean := True);
+ pragma Inline (Set_Has_Aspects);
+
------------------------------
-- Entity Update Procedures --
------------------------------
function Field28 (N : Node_Id) return Union_Id;
pragma Inline (Field28);
+ function Field29 (N : Node_Id) return Union_Id;
+ pragma Inline (Field29);
+
function Node1 (N : Node_Id) return Node_Id;
pragma Inline (Node1);
function Node28 (N : Node_Id) return Node_Id;
pragma Inline (Node28);
+ function Node29 (N : Node_Id) return Node_Id;
+ pragma Inline (Node29);
+
function List1 (N : Node_Id) return List_Id;
pragma Inline (List1);
function List14 (N : Node_Id) return List_Id;
pragma Inline (List14);
+ function List25 (N : Node_Id) return List_Id;
+ pragma Inline (List25);
+
function Elist1 (N : Node_Id) return Elist_Id;
pragma Inline (Elist1);
function Elist8 (N : Node_Id) return Elist_Id;
pragma Inline (Elist8);
+ function Elist10 (N : Node_Id) return Elist_Id;
+ pragma Inline (Elist10);
+
function Elist13 (N : Node_Id) return Elist_Id;
pragma Inline (Elist13);
function Flag247 (N : Node_Id) return Boolean;
pragma Inline (Flag247);
+ function Flag248 (N : Node_Id) return Boolean;
+ pragma Inline (Flag248);
+
+ function Flag249 (N : Node_Id) return Boolean;
+ pragma Inline (Flag249);
+
+ function Flag250 (N : Node_Id) return Boolean;
+ pragma Inline (Flag250);
+
+ function Flag251 (N : Node_Id) return Boolean;
+ pragma Inline (Flag251);
+
+ function Flag252 (N : Node_Id) return Boolean;
+ pragma Inline (Flag252);
+
+ function Flag253 (N : Node_Id) return Boolean;
+ pragma Inline (Flag253);
+
+ function Flag254 (N : Node_Id) return Boolean;
+ pragma Inline (Flag254);
+
-- Procedures to set value of indicated field
procedure Set_Nkind (N : Node_Id; Val : Node_Kind);
procedure Set_Field28 (N : Node_Id; Val : Union_Id);
pragma Inline (Set_Field28);
+ procedure Set_Field29 (N : Node_Id; Val : Union_Id);
+ pragma Inline (Set_Field29);
+
procedure Set_Node1 (N : Node_Id; Val : Node_Id);
pragma Inline (Set_Node1);
procedure Set_Node28 (N : Node_Id; Val : Node_Id);
pragma Inline (Set_Node28);
+ procedure Set_Node29 (N : Node_Id; Val : Node_Id);
+ pragma Inline (Set_Node29);
+
procedure Set_List1 (N : Node_Id; Val : List_Id);
pragma Inline (Set_List1);
procedure Set_List14 (N : Node_Id; Val : List_Id);
pragma Inline (Set_List14);
+ procedure Set_List25 (N : Node_Id; Val : List_Id);
+ pragma Inline (Set_List25);
+
procedure Set_Elist1 (N : Node_Id; Val : Elist_Id);
pragma Inline (Set_Elist1);
procedure Set_Elist8 (N : Node_Id; Val : Elist_Id);
pragma Inline (Set_Elist8);
+ procedure Set_Elist10 (N : Node_Id; Val : Elist_Id);
+ pragma Inline (Set_Elist10);
+
procedure Set_Elist13 (N : Node_Id; Val : Elist_Id);
pragma Inline (Set_Elist13);
procedure Set_Flag247 (N : Node_Id; Val : Boolean);
pragma Inline (Set_Flag247);
+ procedure Set_Flag248 (N : Node_Id; Val : Boolean);
+ pragma Inline (Set_Flag248);
+
+ procedure Set_Flag249 (N : Node_Id; Val : Boolean);
+ pragma Inline (Set_Flag249);
+
+ procedure Set_Flag250 (N : Node_Id; Val : Boolean);
+ pragma Inline (Set_Flag250);
+
+ procedure Set_Flag251 (N : Node_Id; Val : Boolean);
+ pragma Inline (Set_Flag251);
+
+ procedure Set_Flag252 (N : Node_Id; Val : Boolean);
+ pragma Inline (Set_Flag252);
+
+ procedure Set_Flag253 (N : Node_Id; Val : Boolean);
+ pragma Inline (Set_Flag253);
+
+ procedure Set_Flag254 (N : Node_Id; Val : Boolean);
+ pragma Inline (Set_Flag254);
+
-- The following versions of Set_Noden also set the parent
-- pointer of the referenced node if it is non_Empty
-- Flag used to indicate if node is a member of a list.
-- This field is considered private to the Atree package.
- Unused_1 : Boolean;
- -- Currently unused flag
+ Has_Aspects : Boolean;
+ -- Flag used to indicate that a node has aspect specifications that
+ -- are associated with the node. See Aspects package for details.
Rewrite_Ins : Boolean;
-- Flag set by Mark_Rewrite_Insertion procedure.
Flag18 : Boolean;
-- The eighteen flags for a normal node
- -- The above fields are used as follows in components 2-4 of
- -- 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
- -- Rewrite_Ins used as Flag21, Flag42, Flag131
- -- Analyzed used as Flag22, Flag43, Flag132
- -- Comes_From_Source used as Flag23, Flag44, Flag133
- -- Error_Posted used as Flag24, Flag45, Flag134
- -- Flag4 used as Flag25, Flag46, Flag135
- -- Flag5 used as Flag26, Flag47, Flag136
- -- Flag6 used as Flag27, Flag48, Flag137
- -- Flag7 used as Flag28, Flag49, Flag138
- -- Flag8 used as Flag29, Flag50, Flag139
- -- Flag9 used as Flag30, Flag51, Flag140
- -- Flag10 used as Flag31, Flag52, Flag141
- -- Flag11 used as Flag32, Flag53, Flag142
- -- Flag12 used as Flag33, Flag54, Flag143
- -- Flag13 used as Flag34, Flag55, Flag144
- -- Flag14 used as Flag35, Flag56, Flag145
- -- Flag15 used as Flag36, Flag57, Flag146
- -- Flag16 used as Flag37, Flag58, Flag147
- -- Flag17 used as Flag38, Flag59, Flag148
- -- Flag18 used as Flag39, Flag60, Flag149
- -- Pflag1 used as Flag61, Flag62, Flag150
- -- Pflag2 used as Flag63, Flag64, Flag151
+ -- The above fields are used as follows in components 2-5 of
+ -- an extended node entry.
+
+ -- In_List used as Flag19, Flag40, Flag129, Flag216
+ -- Has_Aspects used as Flag20, Flag41, Flag130, Flag217
+ -- Rewrite_Ins used as Flag21, Flag42, Flag131, Flag218
+ -- Analyzed used as Flag22, Flag43, Flag132, Flag219
+ -- Comes_From_Source used as Flag23, Flag44, Flag133, Flag220
+ -- Error_Posted used as Flag24, Flag45, Flag134, Flag221
+ -- Flag4 used as Flag25, Flag46, Flag135, Flag222
+ -- Flag5 used as Flag26, Flag47, Flag136, Flag223
+ -- Flag6 used as Flag27, Flag48, Flag137, Flag224
+ -- Flag7 used as Flag28, Flag49, Flag138, Flag225
+ -- Flag8 used as Flag29, Flag50, Flag139, Flag226
+ -- Flag9 used as Flag30, Flag51, Flag140, Flag227
+ -- Flag10 used as Flag31, Flag52, Flag141, Flag228
+ -- Flag11 used as Flag32, Flag53, Flag142, Flag229
+ -- Flag12 used as Flag33, Flag54, Flag143, Flag230
+ -- Flag13 used as Flag34, Flag55, Flag144, Flag231
+ -- Flag14 used as Flag35, Flag56, Flag145, Flag232
+ -- Flag15 used as Flag36, Flag57, Flag146, Flag233
+ -- Flag16 used as Flag37, Flag58, Flag147, Flag234
+ -- Flag17 used as Flag38, Flag59, Flag148, Flag235
+ -- Flag18 used as Flag39, Flag60, Flag149, Flag236
+ -- Pflag1 used as Flag61, Flag62, Flag150, Flag237
+ -- Pflag2 used as Flag63, Flag64, Flag151, Flag238
Nkind : Node_Kind;
-- For a non-extended node, or the initial section of an extended
--
-- Second entry: holds the Ekind field of the entity
-- Third entry: holds 8 additional flags (Flag65-Flag72)
- -- Fourth entry: not currently used
+ -- Fourth entry: holds 8 additional flags (Flag239-246)
+ -- Fifth entry: holds 8 additional flags (Flag247-254)
-- Now finally (on an 32-bit boundary!) comes the variant part
-- above is used to hold additional general fields and flags
-- as follows:
- -- Field6-10 Holds Field24-Field28
- -- Field11 Holds Flag184-Flag215
- -- Field12 Holds Flag216-Flag247
+ -- Field6-11 Holds Field24-Field29
+ -- Field12 Holds Flag184-Flag215
end case;
end record;
Pflag1 => False,
Pflag2 => False,
In_List => False,
- Unused_1 => False,
+ Has_Aspects => False,
Rewrite_Ins => False,
Analyzed => False,
Comes_From_Source => False,
Pflag1 => False,
Pflag2 => False,
In_List => False,
- Unused_1 => False,
+ Has_Aspects => False,
Rewrite_Ins => False,
Analyzed => False,
Comes_From_Source => False,