OSDN Git Service

2006-10-31 Bob Duff <duff@adacore.com>
[pf3gnuchains/gcc-fork.git] / gcc / ada / einfo.ads
index ea34b12..46f03a9 100644 (file)
@@ -6,8 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---                                                                          --
---          Copyright (C) 1992-2002 Free Software Foundation, Inc.          --
+--          Copyright (C) 1992-2006, 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- --
@@ -17,8 +16,8 @@
 -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
 -- for  more details.  You should have  received  a copy of the GNU General --
 -- Public License  distributed with GNAT;  see file COPYING.  If not, write --
--- to  the Free Software Foundation,  59 Temple Place - Suite 330,  Boston, --
--- MA 02111-1307, USA.                                                      --
+-- to  the  Free Software Foundation,  51  Franklin  Street,  Fifth  Floor, --
+-- Boston, MA 02110-1301, USA.                                              --
 --                                                                          --
 -- As a special exception,  if other files  instantiate  generics from this --
 -- unit, or you link  this unit with other files  to produce an executable, --
@@ -42,6 +41,10 @@ package Einfo is
 --  This package defines the annotations to the abstract syntax tree that
 --  are needed to support semantic processing of an Ada compilation.
 
+--  Note that after editing this spec and the corresponding body it is
+--  required to run ceinfo to check the consistentcy of spec and body.
+--  See ceinfo.adb for more information about the checks made.
+
 --  These annotations are for the most part attributes of declared entities,
 --  and they correspond to conventional symbol table information. Other
 --  attributes include sets of meanings for overloaded names, possible
@@ -81,8 +84,10 @@ package Einfo is
 --------------------------------
 
 --  XEINFO is a utility program which automatically produces a C header file,
---  a-xeinfo.h from the spec and body of package Einfo. It reads the input
---  files einfo.ads and einfo.adb and produces the output file a-xeinfo.h.
+--  einfo.h from the spec and body of package Einfo. It reads the input
+--  files einfo.ads and einfo.adb and produces the output file einfo.h.
+--  XEINFO is run automatically by the build scripts when you do a full
+--  bootstrap.
 
 --  In order for this utility program to operate correctly, the form of the
 --  einfo.ads and einfo.adb files must meet certain requirements and be laid
@@ -104,7 +109,7 @@ package Einfo is
 
 --  XEINFO reads and processes the function specs and the pragma Inlines. For
 --  functions that are declared as inlined, XEINFO reads the corresponding body
---  from xeinfo.adb, and processes it into C code. This results in some strict
+--  from einfo.adb, and processes it into C code. This results in some strict
 --  restrictions on which functions can be inlined:
 
 --     The function spec must be on a single line
@@ -112,7 +117,7 @@ package Einfo is
 --     There can only be a single statement, contained on a single line,
 --     not counting any pragma Assert statements.
 
---     This single statement must either by a function call with simple,
+--     This single statement must either be a function call with simple,
 --     single token arguments, or it must be a membership test of the form
 --     a in b, where a and b are single tokens.
 
@@ -180,7 +185,7 @@ package Einfo is
 --       dynamic bounds, it is assumed that the value can range down or up
 --       to the corresponding bound of the ancestor
 
---    The RM defined attribute Size corresponds to the Value_Size attribute.
+--    The RM defined attribute Size corresponds to the Value_Size attribute
 
 --    The Size attribute may be defined for a first-named subtype. This sets
 --    the Value_Size of the first-named subtype to the given value, and the
@@ -283,6 +288,18 @@ package Einfo is
 --  and if assertions are enabled, an attempt to set the attribute on a
 --  subtype will raise an assert error.
 
+--    Abstract_Interfaces (Elist25)
+--       Present in record types and subtypes. List of abstract interfaces
+--       implemented by a tagged type that are not already implemented by the
+--       ancestors (Ada 2005: AI-251).
+
+--    Abstract_Interface_Alias (Node25)
+--       Present in subprograms that cover a primitive operation of an abstract
+--       interface type. Can be set only if the Is_Hidden flag is also set,
+--       since such entities are always hidden. Points to its associated
+--       interface subprogram. It is used to register the subprogram in
+--       secondary dispatch table of the interface (Ada 2005: AI-251).
+
 --    Accept_Address (Elist21)
 --       Present in entries. If an accept has a statement sequence, then an
 --       address variable is created, which is used to hold the address of the
@@ -310,9 +327,9 @@ package Einfo is
 --       rather irregular, and the semantic checks that depend on the nominal
 --       subtype being unconstrained use flag Is_Constr_Subt_For_U_Nominal(qv).
 
---    Access_Disp_Table (Node16) [implementation base type only]
+--    Access_Disp_Table (Elist16) [implementation base type only]
 --       Present in record type entities. For a tagged type, points to the
---       dispatch table associated with the tagged type. For a non-tagged
+--       dispatch tables associated with the tagged type. For a non-tagged
 --       record, contains Empty.
 
 --    Address_Clause (synthesized)
@@ -330,20 +347,28 @@ package Einfo is
 --       make sure that the address can be meaningfully taken.
 
 --    Alias (Node18)
---       Present in overloaded entities (literals, subprograms, entries).
---       Points to parent subprogram of a derived subprogram. Also used for
---       a subprogram renaming, where it points to the renamed subprogram.
---       Always empty for entries.
+--       Present in overloaded entities (literals, subprograms, entries) and
+--       subprograms that cover a primitive operation of an abstract interface
+--       (that is, subprograms with the Abstract_Interface_Alias attribute).
+--       In case of overloaded entities it points to the parent subprogram of
+--       a derived subprogram. In case of abstract interface subprograms it
+--       points to the subprogram that covers the abstract interface primitive.
+--       Also used for a subprogram renaming, where it points to the renamed
+--       subprogram. Always empty for entries.
 
 --    Alignment (Uint14)
---       Present in all entities for types and objects. This indicates the
---       desired alignment for a type, or the actual alignment for an object.
---       A value of zero (Uint_0) indicates that the alignment is not yet set.
+--       Present in entities for types and also in constants, variables,
+--       loop parameters, and formal parameters. This indicates the desired
+--       alignment for a type, or the actual alignment for an object. A value
+--       of zero (Uint_0) indicates that the alignment has not been set yet.
 --       The alignment can be set by an explicit alignment clause, or set by
---       the front-end in package Layout, or set by the back-end.
+--       the front-end in package Layout, or set by the back-end as part of
+--       the back end back-annotation process. The alignment field is also
+--       present in E_Exception entities, but there it is used only by the
+--       back-end for back annotation.
 
 --    Alignment_Clause (synthesized)
---       Appllies to all entities for types and objects. If an alignment
+--       Applies to all entities for types and objects. If an alignment
 --       attribute definition clause is present for the entity, then this
 --       function returns the N_Attribute_Definition clause that specifies the
 --       alignment. If no alignment clause applies to the type, then the call
@@ -366,7 +391,13 @@ package Einfo is
 --       Present in all type and subtype entities. Set non-Empty only for
 --       Itypes. Set to point to the associated node for the Itype, i.e.
 --       the node whose elaboration generated the Itype. This is used for
---       copying trees, to determine whether or not to copy an Itype.
+--       copying trees, to determine whether or not to copy an Itype, and
+--       also for accessibility checks on anonymous access types. This
+--       node is typically an object declaration, component declaration,
+--       type or subtype declaration. For an access discriminant in a type
+--       declaration, the associated_node_for_itype is the discriminant
+--       specification. For an access parameter it is the enclosing subprogram
+--       declaration.
 
 --    Associated_Storage_Pool (Node22) [root type only]
 --       Present in simple and general access type entities. References the
@@ -411,6 +442,11 @@ package Einfo is
 --       Present in package and generic package entities, points to the
 --       corresponding package body entity if one is present.
 
+--    Body_Needed_For_SAL (Flag40)
+--       Present in package and subprogram entities that are compilation
+--       units. Indicates that the source for the body must be included
+--       when the unit is part of a standalone library.
+
 --    C_Pass_By_Copy (Flag125) [implementation base type only]
 --       Present in record types. Set if a pragma Convention for the record
 --       type specifies convention C_Pass_By_Copy. This convention name is
@@ -421,6 +457,13 @@ package Einfo is
 --       set to By_Copy (unless specifically overridden by an Import or
 --       Export pragma).
 
+--    Can_Never_Be_Null (Flag38)
+--       This flag is present in all entities, but can only be set in an
+--       object which can never have a null value. This is used to avoid
+--       unncessary resetting of the Is_Known_Non_Null flag for such
+--       entities. The cases where this is set True are constant access
+--       values initialized to a non-null value, and access parameters.
+
 --    Chars (Name1)
 --       Present in all entities. This field contains an entry into the names
 --       table that has the character string of the identifier, character
@@ -432,6 +475,13 @@ package Einfo is
 --       (including post gigi steps such as cross-reference generation), the
 --       entities will contain the encoded qualified names.
 
+--    Checks_May_Be_Suppressed (Flag31)
+--       Present in all entities. Set if a pragma Suppress or Unsuppress
+--       mentions the entity specifically in the second argument. If this
+--       flag is set the the Global_Entity_Suppress and Local_Entity_Suppress
+--       tables must be consulted to determine if the is actually an active
+--       Suppress or Unsuppress pragma that applies to the entity.
+
 --    Class_Wide_Type (Node9)
 --       Present in all type entities. For a tagged type or subtype, returns
 --       the corresponding implicitly declared class-wide type. Set to Empty
@@ -499,13 +549,13 @@ package Einfo is
 --       representation clause is present for the corresponding record
 --       type a that specifies a position for the component, then the
 --       Component_Clause field of the E_Component entity points to the
---       N_Component_Claue node. Set to Empty if no record representation
+--       N_Component_Clause node. Set to Empty if no record representation
 --       clause was present, or if there was no specification for this
 --       component.
 
 --    Component_Size (Uint22) [implementation base type only]
 --       Present in array types. It contains the component size value for
---       the array. A value of zero means that the value is not yet set.
+--       the array. A value of No_Uint means that the value is not yet set.
 --       The value can be set by the use of a component size clause, or
 --       by the front end in package Layout, or by the backend. A negative
 --       value is used to represent a value which is not known at compile
@@ -517,11 +567,12 @@ package Einfo is
 --       Present in array types and string types. References component type.
 
 --    Constant_Value (synthesized)
---       Applies to constants, named integers, and named reals. Obtains
---       the initialization expression for the entity. Will return Empty for
---       for a deferred constant whose full view is not available or in some
---       other cases of internal entities, which cannot be treated as
---       constants from the point of view of constant folding.
+--       Applies to variables, constants, named integers, and named reals.
+--       Obtains the initialization expression for the entity. Will return
+--       Empty for for a deferred constant whose full view is not available
+--       or in some other cases of internal entities, which cannot be treated
+--       as constants from the point of view of constant folding. Empty is
+--       also returned for variables with no initialization expression.
 
 --    Corresponding_Concurrent_Type (Node18)
 --       Present in record types that are constructed by the expander to
@@ -547,19 +598,48 @@ package Einfo is
 --       (see Exp_Ch9). This type is used to represent values of the task type.
 
 --    Corresponding_Remote_Type (Node22)
---      Present in record types that describe the fat pointer structure for
---      Remote_Access_To_Subrogram types. References the original access type.
+--       Present in record types that describe the fat pointer structure for
+--       Remote_Access_To_Subrogram types. References the original access type.
 
 --    CR_Discriminant (Node23)
---      Present in discriminants of concurrent types. Denotes the homologous
---      discriminant of the corresponding record type. The CR_Discriminant is
---      created at the same time as the discriminal, and used to replace
---      occurrences of the discriminant within the type declaration.
+--       Present in discriminants of concurrent types. Denotes the homologous
+--       discriminant of the corresponding record type. The CR_Discriminant is
+--       created at the same time as the discriminal, and used to replace
+--       occurrences of the discriminant within the type declaration.
+
+--    Current_Use_Clause (Node25)
+--       Present in packages. Indicates the use clause currently in scope
+--       that makes the package use_visible. Used to detect redundant use
+--       clauses for the same package.
+
+--    Current_Value (Node9)
+--       Present in all object entities. Set in E_Variable, E_Constant, formal
+--       parameters and E_Loop_Parameter entities if we have trackable current
+--       values. Set non-Empty if the (constant) current value of the variable
+--       is known, This value is valid only for references from the same
+--       sequential scope as the entity. The sequential scope of an entity
+--       includes the immediate scope and any contained scopes that are package
+--       specs, package bodies, blocks (at any nesting level) or statement
+--       sequences in IF or loop statements.
+--
+--       Another related use of this field is to record information about the
+--       value obtained from an IF or WHILE statement condition. If the IF or
+--       ELSIF or WHILE condition has the form "NOT {,NOT] OBJ RELOP VAL ",
+--       or OBJ [AND [THEN]] expr, where OBJ refers to an entity with a
+--       Current_Value field, RELOP is one of the six relational operators, and
+--       VAL is a compile-time known value then the Current_Value field of OBJ
+--       points to the N_If_Statement, N_Elsif_Part, or N_Iteration_Scheme node
+--       of the relevant construct, and the Condition field of this can be
+--       consulted to give information about the value of OBJ. For more details
+--       on this usage, see the procedure Exp_Util.Get_Current_Value_Condition.
 
 --    Debug_Info_Off (Flag166)
 --       Present in all entities. Set if a pragma Suppress_Debug_Info applies
 --       to the entity, or if internal processing in the compiler determines
---       that suppression of debug information is desirable.
+--       that suppression of debug information is desirable. Note that this
+--       flag is only for use by the front end as part of the processing for
+--       determining if Needs_Debug_Info should be set. The back end should
+--       always test Needs_Debug_Info, it should never test Debug_Info_Off.
 
 --    Debug_Renaming_Link (Node13)
 --       Used to link the enumeration literal of a debug renaming declaration
@@ -659,12 +739,14 @@ package Einfo is
 --       package specs for which a Discard_Names pragma with zero arguments
 --       has been encountered. The purpose of setting this flag is to be able
 --       to set the Discard_Names attribute on enumeration types declared
---       after the pragma within the same declarative region.
+--       after the pragma within the same declarative region. This flag is
+--       set to False if a Keep_Names pragma appears for an enumeration type.
 
 --    Discriminal (Node17)
 --       Present in discriminants (Discriminant formal: GNAT's first
 --       coinage). The entity used as a formal parameter that corresponds
---       to a discriminant. See section "Use of Discriminants" for details.
+--       to a discriminant. See section "Handling of Discriminants" for
+--       full details of the use of discriminals.
 
 --    Discriminal_Link (Node10)
 --       Present in discriminals (which have an Ekind of E_In_Parameter,
@@ -681,7 +763,7 @@ package Einfo is
 --       types, subtypes, record types and subtypes, private types and
 --       subtypes, limited private types and subtypes and incomplete types).
 --       It is an error to reference the Discriminant_Constraint field if
---       Has_Disciminants is False.
+--       Has_Discriminants is False.
 --
 --       If the Is_Constrained flag is set, Discriminant_Constraint points
 --       to an element list containing the discriminant constraints in the
@@ -726,6 +808,11 @@ package Einfo is
 --       Present in E_Component entities. Only used for component marked
 --       Is_Tag. Store the number of entries in the Vtable (or Dispatch Table)
 
+--    DT_Offset_To_Top_Func (Node25)
+--       Present in E_Component entities. Only used for component marked
+--       Is_Tag. If present it stores the Offset_To_Top function used to
+--       provide this value in tagged types whose ancestor has discriminants.
+
 --    DT_Position (Uint15)
 --       Present in function and procedure entities which are dispatching
 --       (should not be referenced without first checking that flag
@@ -736,12 +823,13 @@ package Einfo is
 --       Present in all entities. Contains a value of the enumeration type
 --       Entity_Kind declared in a subsequent section in this spec.
 
---    Elaborate_All_Desirable (Flag146)
---       Present in package and subprogram entities, and in generic package
---       and subprogram entities. Set if internal analysis of a client that
---       with's this unit determines that Elaborate_All is desirable, i.e.
---       that there is a possibility that Program_Error may be raised if
---       Elaborate_All conditions cannot be met.
+--    Elaborate_Body_Desirable (Flag210)
+--       Present in package entities. Set if the elaboration circuitry detects
+--       a case where there is a package body that modifies one or more visible
+--       entities in the package spec and there is no explicit Elaborate_Body
+--       pragma for the package. This information is passed on to the binder,
+--       which attempts, but does not promise, to elaborate the body as close
+--       to the spec as possible.
 
 --    Elaboration_Entity (Node13)
 --       Present in generic and non-generic package and subprogram
@@ -772,8 +860,8 @@ package Einfo is
 --       is no need to set the flag.
 
 --    Enclosing_Dynamic_Scope (synthesized)
---      Appliesa to all entities. Returns the closest dynamic scope in which
---      the entity is declared or Standard_Standard for library-level entities
+--       Applies to all entities. Returns the closest dynamic scope in which
+--       the entity is declared or Standard_Standard for library-level entities
 
 --    Enclosing_Scope (Node18)
 --       Present in labels. Denotes the innermost enclosing construct that
@@ -880,7 +968,7 @@ package Einfo is
 --       the record that is the fat pointer representation of an RAST.
 
 --    Esize (Uint12)
---       Present in all types and subtypes, an also for components, constants,
+--       Present in all types and subtypes, and also for components, constants,
 --       and variables. Contains the Object_Size of the type or of the object.
 --       A value of zero indicates that the value is not yet known.
 --
@@ -898,7 +986,10 @@ package Einfo is
 --       Present in all entities. Represents the type of the entity, which
 --       is itself another entity. For a type entity, points to the parent
 --       type for a derived type, or if the type is not derived, points to
---       itself. For a subtype entity, Etype points to the base type.
+--       itself. For a subtype entity, Etype points to the base type. For
+--       a class wide type, points to the parent type. For a subprogram or
+--       subprogram type, Etype has the return type of a function or is set
+--       to Standard_Void_Type to represent a procedure.
 
 --    Exception_Code (Uint22)
 --       Present in exception entitites. Set to zero unless either an
@@ -922,6 +1013,11 @@ package Einfo is
 --       one, with Empty indicating the end of the list of extra
 --       formals.
 
+--    Extra_Formals (Node28)
+--       Applies to subprograms and subprogram types, and also in entries
+--       and entry families. Returns first extra formal of the subprogram
+--       or entry. Returns Empty if there are no extra formals.
+
 --    Extra_Accessibility (Node13)
 --       Present in formal parameters in the non-generic case if
 --       expansion is active. Normally Empty, but if a parameter is
@@ -982,23 +1078,6 @@ package Einfo is
 --       tag itself is prepended to the front of the entity chain, so the
 --       First_Discriminant function steps past the tag if it is present.
 
---    First_Girder_Discriminant (synthesized)
---       Applies to types with discriminants. For tagged types, and untagged
---       types which are root types or derived types but which do not rename
---       discriminants in their root type, this is the same as
---       First_Discriminant.
---
---       For derived non-tagged types that rename discriminants in the root
---       type this is the first of the discriminants that occurr in the
---       root type. To be precise, in this case girder discriminants are
---       entities attached to the entity chain of the derived type which
---       are a copy of the discriminants of the root type. Furthermore their
---       Is_Completely_Hidden flag is set.
---
---       For derived untagged types, girder discriminants are the real
---       discriminants from Gigi's standpoint, ie those that will be stored in
---       actual objects of the type.
-
 --    First_Entity (Node17)
 --       Present in all entities which act as scopes to which a list of
 --       associated entities is attached (blocks, class subtypes and types,
@@ -1014,6 +1093,12 @@ package Einfo is
 --       a subprogram type (the designated type of an Access_To_Subprogram
 --       definition) or in an entry.
 
+--    First_Formal_With_Extras (synthesized)
+--       Applies to subprograms and subprogram types, and also in entries
+--       and entry families. Returns first formal of the subprogram or entry.
+--       Returns Empty if there are no formals. The list returned includes
+--       all the extra formals (see description of Extra_Formals field).
+
 --    First_Index (Node17)
 --       Present in array types and subtypes and in string types and subtypes.
 --       By introducing implicit subtypes for the index constraints, we have
@@ -1031,6 +1116,8 @@ package Einfo is
 --       the enumeration type definition node. A special case occurs with
 --       standard character and wide character types, where this field is
 --       Empty, since there are no enumeration literal lists in these cases.
+--       Note that this field is set in enumeration subtypes, but it still
+--       points to the first literal of the base type in this case.
 
 --    First_Optional_Parameter (Node14)
 --       Present in (non-generic) function and procedure entities. Set to a
@@ -1078,11 +1165,40 @@ package Einfo is
 --       Note in particular that size clauses are present only for this
 --       purpose, and should only be accessed if Has_Size_Clause is set.
 
+--    First_Stored_Discriminant (synthesized)
+--       Applies to types with discriminants. Gives the first discriminant
+--       stored in the object. In many cases, these are the same as the
+--       normal visible discriminants for the type, but in the case of
+--       renamed discriminants, this is not always the case.
+--
+--       For tagged types, and untagged types which are root types or
+--       derived types but which do not rename discriminants in their
+--       root type, the stored discriminants are the same as the actual
+--       discriminants of the type, and hence this function is the same
+--       as First_Discriminant.
+--
+--       For derived non-tagged types that rename discriminants in the root
+--       type this is the first of the discriminants that occur in the
+--       root type. To be precise, in this case stored discriminants are
+--       entities attached to the entity chain of the derived type which
+--       are a copy of the discriminants of the root type. Furthermore their
+--       Is_Completely_Hidden flag is set since although they are actually
+--       stored in the object, they are not in the set of discriminants that
+--       is visble in the type.
+--
+--       For derived untagged types, stored discriminants are the real
+--       discriminants from Gigi's standpoint, i.e. those that will be
+--       stored in actual objects of the type.
+
 --    First_Subtype (synthesized)
 --       Applies to all types and subtypes. For types, yields the first
 --       subtype of the type. For subtypes, yields the first subtype of
 --       the base type of the subtype.
 
+--    First_Tag_Component (synthesized)
+--       Applies to tagged record types, returns the entity for the first
+--       _Tag field in this record.
+
 --    Freeze_Node (Node7)
 --       Present in all entities. If there is an associated freeze node for
 --       the entity, this field references this freeze node. If no freeze
@@ -1099,6 +1215,9 @@ package Einfo is
 --       types, i.e. record types (Java classes) that hold pointers to each
 --       other. If such a type is an access type, it has no explicit freeze
 --       node, so that the back-end does not attempt to elaborate it.
+--       Currently this flag is also used to implement Ada 2005 (AI-50217).
+--       It will be renamed to From_Limited_With after removal of the current
+--       GNAT with_type clause???
 
 --    Full_View (Node11)
 --       Present in all type and subtype entities and in deferred constants.
@@ -1115,18 +1234,17 @@ package Einfo is
 --       the function returns a value of a type whose size is not known
 --       at compile time.
 
+--    Generic_Homonym (Node11)
+--       Present in generic packages. The generic homonym is the entity of
+--       a renaming declaration inserted in every generic unit. It is used
+--       to resolve the name of a local entity that is given by a qualified
+--       name, when the generic entity itself is hidden by a local name.
+
 --    Generic_Renamings (Elist23)
 --       Present in package and subprogram instances. Holds mapping that
 --       associates generic parameters with the corresponding instances, in
 --       those cases where the instance is an entity.
 
---    Girder_Constraint (Elist23)
---       Present in entities that can have discriminants (concurrent types
---       subtypes, record types and subtypes, private types and subtypes,
---       limited private types and subtypes and incomplete types). Points
---       to an element list containing the expressions for each of the
---       girder discriminants for the record (sub)type.
-
 --    Handler_Records (List10)
 --       Present in subprogram and package entities. Points to a list of
 --       identifiers referencing the handler record entities for the
@@ -1150,6 +1268,11 @@ package Einfo is
 --       be RCI entities, so the flag Is_Remote_Call_Interface will always
 --       be set if this flag is set.
 
+--    Has_Anon_Block_Suffix (Flag201)
+--       Present in all entities. Set if the entity is nested within one or
+--       more anonymous blocks and the Chars field contains a name with an
+--       anonymous block suffix (see Exp_Dbug for furthert details).
+
 --    Has_Atomic_Components (Flag86) [implementation base type only]
 --       Present in all types and objects. Set only for an array type or
 --       an array object if a valid pragma Atomic_Components applies to the
@@ -1185,12 +1308,13 @@ package Einfo is
 --    Has_Completion (Flag26)
 --       Present in all entities that require a completion (functions,
 --       procedures, private types, limited private types, incomplete types,
---       and packages that require a body). Set if the completion has been
---       encountered and analyzed.
+--       constants and packages that require a body). The flag is set if the
+--       completion has been encountered and analyzed.
 
 --    Has_Completion_In_Body (Flag71)
---       Present in  "Taft amendment types" that is to say incomplete types
---       whose full declaration appears in the package body.
+--       Present in all entities for types and subtypes. Set only in "Taft
+--       amendment types" (incomplete types whose full declaration appears in
+--       the package body).
 
 --    Has_Complex_Representation (Flag140) [implementation base type only]
 --       Present in all type entities. Set only for a record base type to
@@ -1201,15 +1325,25 @@ package Einfo is
 --       present for the given type. Note that this flag can be False even
 --       if Component_Size is non-zero (happens in the case of derived types).
 
+--    Has_Constrained_Partial_View (Flag187)
+--       Present in private type and their completions, when the private
+--       type has no discriminants and the full view has discriminants with
+--       defaults. In Ada 2005 heap-allocated objects of such types are not
+--       constrained, and can change their discriminants with full assignment.
+
+--    Has_Contiguous_Rep (Flag181)
+--       Present in enumeration types. True if the type as a representation
+--       clause whose entries are successive integers.
+
 --    Has_Controlling_Result (Flag98)
 --       Present in E_Function entities. True if The function is a primitive
 --       function of a tagged type which can dispatch on result
 
 --    Has_Controlled_Component (Flag43) [base type only]
---       Present in composite type entities. Indicates that the type has a
---       component that either is a controlled type, or itself contains a
---       controlled component (i.e. either Has_Controlled_Component or
---       Is_Controlled is set for at least one component).
+--       Present in all entities. Set only for composite type entities which
+--       contain a component that either is a controlled type, or itself
+--       contains controlled component (i.e. either Has_Controlled_Component
+--       or Is_Controlled is set for at least one component).
 
 --    Has_Convention_Pragma (Flag119)
 --       Present in an entity for which a Convention, Import, or Export
@@ -1268,13 +1402,15 @@ package Einfo is
 
 --    Has_Gigi_Rep_Item (Flag82)
 --       This flag is set if the rep item chain (referenced by First_Rep_Item
---       and linked through the Next_Rep_Item chain contains a representation
+--       and linked through the Next_Rep_Item chain) contains a representation
 --       item that needs to be specially processed by Gigi, i.e. one of the
 --       following items:
 --
 --          Machine_Attribute pragma
 --          Linker_Alias pragma
 --          Linker_Section pragma
+--          Linker_Constructor pragma
+--          Linker_Destructor pragma
 --          Weak_External pragma
 --
 --       If this flag is set, then Gigi should scan the rep item chain to
@@ -1286,7 +1422,7 @@ package Einfo is
 --       scope. Used by Gigi to generate unique names for such entities.
 
 --    Has_Interrupt_Handler (synthesized)
---       Applies to all protected types entities. Set if the protected type
+--       Applies to all protected type entities. Set if the protected type
 --       definition contains at least one procedure to which a pragma
 --       Interrupt_Handler applies.
 
@@ -1330,8 +1466,26 @@ package Einfo is
 
 --    Has_Per_Object_Constraint (Flag154)
 --       Present in E_Component entities, true if the subtype of the
---       component has a per object constraint, i.e. an actual discriminant
---       value of the form T'Access, where T is the enclosing type.
+--       component has a per object constraint. Per object constraints result
+--       from the following situations:
+--
+--       1. N_Attribute_Reference - when the prefix is the enclosing type and
+--          the attribute is Access.
+--       2. N_Discriminant_Association - when the expression uses the
+--          discriminant of the enclosing type.
+--       3. N_Index_Or_Discriminant_Constraint - when at least one of the
+--          individual constraints is a per object constraint.
+--       4. N_Range - when the lower or upper bound uses the discriminant of
+--          the enclosing type.
+--       5. N_Range_Constraint - when the range expression uses the
+--          discriminant of the enclosing type.
+
+--    Has_Persistent_BSS (Flag188)
+--       Present in all entities. Set True for entities to which a valid
+--       pragma Persistent_BSS applies. Note that although the pragma is
+--       only meaningful for objects, we set it for all entities in a unit
+--       to which the pragma applies, as well as the unit entity itself, for
+--       convenience in propagating the flag to contained entities.
 
 --    Has_Pragma_Controlled (Flag27) [implementation base type only]
 --       Present in access type entities. It is set if a pragma Controlled
@@ -1344,20 +1498,25 @@ package Einfo is
 --    Has_Pragma_Inline (Flag157)
 --       Present in all entities. Set for functions and procedures for which
 --       a pragma Inline or Inline_Always applies to the subprogram. Note
---       subprogram. Note that this flag can be set even if Is_Inlined is
---       not set. This happens for pragma Inline (if Inline_Active is False)
---       In other words, the flag Has_Pragma_Inline represents the formal
---       semantic status, and is used for checking semantic correctness.
+--       that this flag can be set even if Is_Inlined is not set. This
+--       happens for pragma Inline (if Inline_Active is False). In other
+--       words, the flag Has_Pragma_Inline represents the formal semantic
+--       status, and is used for checking semantic correctness.
 --       The flag Is_Inlined indicates whether inlining is actually active
 --       for the entity.
 
 --    Has_Pragma_Pack (Flag121) [implementation base type only]
---       Present in all entities. It indicates that a valid pragma Pack was
---       was given for the type. Note that this flag is not inherited by a
+--       Present in all entities. If set, indicates that a valid pragma Pack
+--       was was given for the type. Note that this flag is not inherited by
 --       derived type. See also the Is_Packed flag.
 
+--    Has_Pragma_Pure (Flag203)
+--       Present in all entities. If set, indicates that a valid pragma Pure
+--       was given for the entity. In some cases, we need to test whether
+--       Is_Pure was explicitly set using this pragma.
+
 --    Has_Pragma_Pure_Function (Flag179)
---       Present in subprogram entities. It indicates that a valid pragma
+--       Present in all entities. If set, indicates that a valid pragma
 --       Pure_Function was given for the entity. In some cases, we need to
 --       know that Is_Pure was explicitly set using this pragma.
 
@@ -1367,6 +1526,15 @@ package Einfo is
 --       entity has no references, but a warning should be given if it is
 --       in fact referenced.
 
+--    Known_To_Have_Preelab_Init (Flag207)
+--       Present in all type and subtype entities. If set, then the type is
+--       known to have preelaborable initialization. In the case of a partial
+--       view of a private type, it is only possible for this tobe set if a
+--       pragma Preelaborable_Initialization is given for the type. For other
+--       types, it is never set if the type does not have preelaborable
+--       initialization, it may or may not be set if the type does have
+--       preelaborable initialization.
+
 --    Has_Primitive_Operations (Flag120) [base type only]
 --       Present in all type entities. Set if at least one primitive operation
 --       is defined for the type.
@@ -1428,6 +1596,22 @@ package Einfo is
 --       representation clause, and thus is not inherited by a derived type.
 --       This flag is always False for non-record types.
 
+--    Has_Specified_Stream_Input (Flag190)
+--    Has_Specified_Stream_Output (Flag191)
+--    Has_Specified_Stream_Read (Flag192)
+--    Has_Specified_Stream_Write (Flag193)
+--       Present in all type and subtype entities. Set for a given view if the
+--       corresponding stream-oriented attribute has been defined by an
+--       attribute definition clause. When such a clause occurs, a TSS is set
+--       on the underlying full view; the flags are used to track visibility of
+--       the attribute definition clause for partial or incomplete views.
+--
+--    Has_Static_Discriminants (Flag211)
+--       Present in record subtypes constrained by discriminant values. Set if
+--       all the discriminant values have static values, meaning that in the
+--       case of a variant record, the component list can be trimmed down to
+--       include only the components corresponding to these discriminants.
+--
 --    Has_Storage_Size_Clause (Flag23) [implementation base type only]
 --       Present in task types and access types. It is set if a Storage_Size
 --       clause is present for the type. Used to prevent multiple clauses for
@@ -1437,6 +1621,10 @@ package Einfo is
 --       of access types, this flag is present only in the root type, since a
 --       storage size clause cannot be given to a derived type.
 
+--    Has_Stream_Size_Clause (Flag184)
+--       This flag is set on types which have a Stream_Size clause attribute.
+--       Used to prevent multiple Stream_Size clauses for a given entity.
+
 --    Has_Subprogram_Descriptor (Flag93)
 --       This flag is set on entities for which zero-cost exception subprogram
 --       descriptors can be generated (subprograms and library level package
@@ -1464,6 +1652,13 @@ package Einfo is
 --       either from their declaration or through type derivation. The use
 --       of this flag exactly meets the spec in RM 3.7(26). Note that all
 --       class-wide types are considered to have unknown discriminants.
+--       Note that both Has_Discriminants and Has_Unknown_Discriminants may
+--       be true for a type. Class-wide types and their subtypes have
+--       unknown discriminants and can have declared ones as well. Private
+--       types declared with unknown discriminants may have a full view that
+--       has explicit discriminants, and both flag will be set on the partial
+--       view, to insure that discriminants are properly inherited in certain
+--       contexts.
 
 --    Has_Volatile_Components (Flag87) [implementation base type only]
 --       Present in all types and objects. Set only for an array type or
@@ -1476,11 +1671,20 @@ package Einfo is
 --       that in the case of a type the pragma will be chained to the rep
 --       item chain of the first subtype in the usual manner.
 
+--    Has_Xref_Entry (Flag182)
+--       This flag is set if an entity has an entry in the Xref information
+--       generated in ali files. This is true for all source entities in the
+--       extended main source file. It is also true of entities in other
+--       packages that are referenced directly or indirectly from the main
+--       source file (indirect reference occurs when the main source file
+--       references an entity with a type reference. See package Lib.Xref
+--       for further details).
+
 --    Hiding_Loop_Variable (Node8)
 --       Present in variables. Set only if a variable of a discrete type is
 --       hidden by a loop variable in the same local scope, in which case
 --       the Hiding_Loop_Variable field of the hidden variable points to
---       the E_Loop_Variable entity doing the hiding. Used in processing
+--       the E_Loop_Parameter entity doing the hiding. Used in processing
 --       warning messages if the hidden variable turns out to be unused
 --       or is referenced without being set.
 
@@ -1492,11 +1696,11 @@ package Einfo is
 
 --    Implementation_Base_Type (synthesized)
 --       Applies to all types. Similar to Base_Type, but never returns a
---       private type when applied to a non-private type. Instead in this
---       case, it always returns the Representation_Type of the base type
---       in this case, so that we still have a concrete type. Note: it is
---       allowed to apply Implementation_Base_Type to other than a type,
---       in which case it simply returns the entity unchanged.
+--       private type when applied to a non-private type. Instead in this case,
+--       it always returns the Underlying_Type of the base type, so that we
+--       still have a concrete type. Note: it is allowed to apply
+--       Implementation_Base_Type to other than a type, in which case it simply
+--       returns the entity unchanged.
 
 --    In_Package_Body (Flag48)
 --       Set on the entity that denotes the package (the defining occurrence
@@ -1504,21 +1708,23 @@ package Einfo is
 --       body. Reset on completion of analysis/expansion.
 
 --    In_Private_Part (Flag45)
---       Present in package entities. Flag is set to indicate that the
---       private part is being analyzed. The flag is reset at the end of the
---       package declaration.
+--       Present in all entities. Can be set only in package entities and
+--       objects. For package entities, this flag is set to indicate that the
+--       private part of the package is being analyzed. The flag is reset at
+--       the end of the package declaration. For objects it indicates that the
+--       declaration of the object occurs in the private part of a package.
 
 --    Inner_Instances (Elist23)
---      Present in generic units. Contains element list of units that are
---      instantiated within the given generic. Used to diagnose circular
---      instantiations.
+--       Present in generic units. Contains element list of units that are
+--       instantiated within the given generic. Used to diagnose circular
+--       instantiations.
 
 --    Interface_Name (Node21)
 --       Present in exceptions, functions, procedures, variables, constants,
 --       and packages. Set to Empty unless an export, import, or interface
 --       name pragma has explicitly specified an external name, in which
 --       case it references an N_String_Literal node for the specified
---       exteral name. In the case of exceptions, the field is set by
+--       external name. In the case of exceptions, the field is set by
 --       Import_Exception/Export_Exception (which can be used in OpenVMS
 --       versions only). Note that if this field is Empty, and Is_Imported
 --       or Is_Exported is set, then the default interface name is the name
@@ -1547,6 +1753,14 @@ package Einfo is
 --       Present in all types, and also for functions and procedures. Set
 --       for abstract types and abstract subprograms.
 
+--    Is_Local_Anonymous_Access (Flag194)
+--       Present in access types. Set for an anonymous access type to indicate
+--       that the type is created for a record component with an access
+--       definition, an array component, or a stand-alone object. Such
+--       anonymous types have an accessibility level equal to that of the
+--       declaration in which they appear, unlike the anonymous access types
+--       that are created for access parameters and access discriminants.
+
 --    Is_Access_Constant (Flag69)
 --       Present in access types and subtypes. Indicates that the keyword
 --       constant was present in the access type definition.
@@ -1554,6 +1768,12 @@ package Einfo is
 --    Is_Access_Type (synthesized)
 --       Applies to all entities, true for access types and subtypes
 
+--    Is_Ada_2005_Only (Flag185)
+--       Applies to all entities, true if a valid pragma Ada_05 applies to the
+--       entity which specifically names the entity, indicating that the entity
+--       is Ada 2005 only. Note that this flag is not set if the entity is part
+--       of a unit compiled with the normal no-argument form of pragma Ada_05.
+
 --    Is_Aliased (Flag15)
 --       Present in objects whose declarations carry the keyword aliased,
 --       and on record components that have the keyword.
@@ -1585,9 +1805,9 @@ package Einfo is
 --    Is_Bit_Packed_Array (Flag122) [implementation base type only]
 --       Present in all entities. This flag is set for a packed array
 --       type that is bit packed (i.e. the component size is known by the
---       front end and is in the range 1-7, 9-15, or 17-31). Is_Packed is
---       always set if Is_Bit_Packed_Array is set, but it is possible for
---       Is_Packed to be set without Is_Bit_Packed_Array or the case of an
+--       front end and is in the range 1-7, 9-15, 17-31, or 33-63). Is_Packed
+--       is always set if Is_Bit_Packed_Array is set, but it is possible for
+--       Is_Packed to be set without Is_Bit_Packed_Array for the case of an
 --       array having one or more index types that are enumeration types
 --       with non-standard enumeration representations.
 
@@ -1619,6 +1839,11 @@ package Einfo is
 --    Is_Class_Wide_Type (synthesized)
 --       Applies to all entities, true for class wide types and subtypes
 
+--    Is_Class_Wide_Equivalent_Type (Flag35)
+--       Present in record types and subtypes. Set to True, if the type acts
+--       as a class-wide equivalent type, i.e. the Equivalent_Type field of
+--       some class-wide subtype entity references this record type.
+
 --    Is_Compilation_Unit (Flag149)
 --       Present in all entities. Set if the entity is a package or subprogram
 --       entity for a compilation unit other than a subunit (since we treat
@@ -1632,7 +1857,7 @@ package Einfo is
 --       directly visible in the derived type because the derived type or
 --       one of its ancestors have renamed the discriminants in the root
 --       type. Note that there are girder discriminants which are not
---       Completely_Hidden (eg the discriminants of a root type).
+--       Completely_Hidden (e.g. the discriminants of a root type).
 
 --    Is_Composite_Type (synthesized)
 --       Applies to all entities, true for all composite types and
@@ -1690,12 +1915,8 @@ package Einfo is
 --       types and subtypes.
 
 --    Is_Derived_Type (synthesized)
---       Applies to all type entities. Determine if given entity is a
---       derived type
-
---    Is_Destructor (Flag77)
---       Present in function and procedure entities. Set if a pragma
---       CPP_Destructor applies to the subprogram.
+--       Applies to all entities. Determine if given entity is a derived type.
+--       Always false if argument is not a type.
 
 --    Is_Discrete_Type (synthesized)
 --       Applies to all entities, true for all discrete types and subtypes
@@ -1715,7 +1936,8 @@ package Einfo is
 
 --    Is_Dynamic_Scope (synthesized)
 --       Applies to all Entities. Returns True if the entity is a dynamic
---       scope (i.e. a block, a subprogram a task_type or an entry).
+--       scope (i.e. a block, subprogram, task_type, entry
+--       or extended return statement).
 
 --    Is_Elementary_Type (synthesized)
 --       Applies to all entities, true for all elementary types and
@@ -1764,6 +1986,9 @@ package Einfo is
 --    Is_Formal (synthesized)
 --       Applies to all entities, true for IN, IN OUT and OUT parameters
 
+--    Is_Formal_Object (synthesized)
+--       Applies to all entities, true for generic IN and IN OUT parameters
+
 --    Is_Formal_Subprogram (Flag111)
 --       Defined on all entities, true for generic formal subprograms.
 
@@ -1783,12 +2008,17 @@ package Einfo is
 
 --    Is_Generic_Instance (Flag130)
 --       Present in all entities. Set to indicate that the entity is an
---       instance of a generic unit.
+--       instance of a generic unit, or a formal package (which is an instance
+--       of the template).
+
+--    Is_Generic_Subprogram (synthesized)
+--       Applies to all entities. Yields True for a generic subprogram
+--       (generic function, generic subprogram), False for all other entities.
 
 --    Is_Generic_Type (Flag13)
---       Present in types which are generic formal types. Such types have an
---       Ekind that corresponds to their classification, so the Ekind cannot
---       be used to identify generic types.
+--       Present in all types and subtypes. Set for types which are generic
+--       formal types. Such types have an Ekind that corresponds to their
+--       classification, so the Ekind cannot be used to identify generic types.
 
 --    Is_Generic_Unit (synthesized)
 --       Applies to all entities. Yields True for a generic unit (generic
@@ -1820,6 +2050,9 @@ package Einfo is
 --    Is_Incomplete_Or_Private_Type (synthesized)
 --       Applies to all entities, true for private and incomplete types
 
+--    Is_Incomplete_Type (synthesized)
+--       Applies to all entities, true for incomplete types and subtypes
+
 --    Is_Indefinite_Subtype (synthesized)
 --       Applies to all entities for types and subtypes. Determines if given
 --       entity is an unconstrained array type or subtype, a discriminated
@@ -1846,14 +2079,26 @@ package Einfo is
 --    Is_Integer_Type (synthesized)
 --       Applies to all entities, true for integer types and subtypes
 
+--    Is_Interface (Flag186)
+--       Present in record types and subtypes to indicate that the current
+--       entity corresponds with an abstract interface. Because abstract
+--       interfaces are conceptually a special kind of abstract tagged types
+--       we represent them by means of tagged record types and subtypes
+--       marked with this attribute. This allows us to reuse most of the
+--       compiler support for abstract tagged types to implement interfaces
+--       (Ada 2005: AI-251).
+
 --    Is_Internal (Flag17)
 --       Present in all entities. Set to indicate an entity created during
---       semantic processing (e.g. an implicit type). Need more documentation
---       on this one! ???
+--       semantic processing (e.g. an implicit type, or a temporary). The
+--       only current use of this flag is to indicate that temporaries
+--       generated for the result of an inlined function call need not be
+--       initialized, even when scalars are initialized or normalized.
 
 --    Is_Interrupt_Handler (Flag89)
---       Present in protected procedures. Set if a pragma Interrupt_Handler
---       applies to the procedure (which must be parameterless).
+--       Present in procedures. Set if a pragma Interrupt_Handler applies
+--       to the procedure. The procedure must be parameterless, and on all
+--       targets except AAMP it must be a protected procedure.
 
 --    Is_Intrinsic_Subprogram (Flag64)
 --       Present in functions and procedures. It is set if a valid pragma
@@ -1875,6 +2120,37 @@ package Einfo is
 --       is that the first use of such a type (the one that causes it to be
 --       defined) must be in the same scope as the type.
 
+--    Is_Known_Non_Null (Flag37)
+--       Present in all entities. Relevant (and can be set True) only for
+--       objects of an access type. It is set if the object is currently
+--       known to have a non-null value (meaning that no access checks
+--       are needed). The indication can for example come from assignment
+--       of an access parameter or an allocator whose value is known non-null.
+--
+--       Note: this flag is set according to the sequential flow of the
+--       program, watching the current value of the variable. However,
+--       this processing can miss cases of changing the value of an aliased
+--       or constant object, so even if this flag is set, it should not
+--       be believed if the variable is aliased or volatile. It would
+--       be a little neater to avoid the flag being set in the first
+--       place in such cases, but that's trickier, and there is only
+--       one place that tests the value anyway.
+--
+--       The flag is dynamically set and reset as semantic analysis and
+--       expansion proceeds. Its value is meaningless once the tree is
+--       fully constructed, since it simply indicates the last state.
+--       Thus this flag has no meaning to the back end.
+
+--    Is_Known_Null (Flag204)
+--       Present in all entities. Relevant (and can be set True) only for
+--       objects of an access type. It is set if the object is currently known
+--       to have a null value (meaning that a dereference will surely raise
+--       constraint error exception). The indication can come from an
+--       assignment or object declaration.
+--
+--       The comments above about sequential flow and aliased and volatile for
+--       the Is_Known_Non_Null flag apply equally to the Is_Known_Null flag.
+
 --    Is_Known_Valid (Flag170)
 --       Present in all entities. Relevant for types (and subtype) and
 --       for objects (and enumeration literals) of a discrete type.
@@ -1903,6 +2179,11 @@ package Einfo is
 --       For non-discrete objects, the setting of the Is_Known_Valid flag is
 --       not defined, and is not relevant, since the considerations of the
 --       requirement in (RM 13.9.1(9-11)) do not apply.
+--
+--       The flag is dynamically set and reset as semantic analysis and
+--       expansion proceeds. Its value is meaningless once the tree is
+--       fully constructed, since it simply indicates the last state.
+--       Thus this flag has no meaning to the back end.
 
 --    Is_Limited_Composite (Flag106)
 --       Present in all entities. True for composite types that have a
@@ -1911,6 +2192,10 @@ package Einfo is
 --       do not become visible until the immediate scope of the composite
 --       type itself (RM 7.3.1 (5)).
 
+--    Is_Limited_Interface (Flag197)
+--       Present in types that are interfaces. True if interface is declared
+--       limited, or is derived from limited interfaces.
+
 --    Is_Limited_Record (Flag25)
 --       Present in all entities. Set to true for record (sub)types if the
 --       record is declared to be limited. Note that this flag is not set
@@ -1925,7 +2210,10 @@ package Einfo is
 --       Present in subprogram entities. Set to indicate that the subprogram
 --       is a machine code subprogram (i.e. its body includes at least one
 --       code statement). Also indicates that all necessary semantic checks
---       as required by RM 13.8 have been performed.
+--       as required by RM 13.8(3) have been performed.
+
+--    Is_Modular_Integer_Type (synthesized)
+--       Applies to all entities. True if entity is a modular integer type
 
 --    Is_Non_Static_Subtype (Flag109)
 --       This flag is present in all type and subtype entities. It is set in
@@ -1944,7 +2232,7 @@ package Einfo is
 --       and the tests for static subtypes greatly simplified.
 
 --    Is_Null_Init_Proc (Flag178)
---       Present in procedure entities. Set for generated init_proc procedures
+--       Present in procedure entities. Set for generated init proc procedures
 --       (used to initialize composite types), if the code for the procedure
 --       is null (i.e. is a return and nothing else). Such null initialization
 --       procedures are generated in case some client is compiled using the
@@ -1960,6 +2248,10 @@ package Einfo is
 --       Applies to all entities, true for entities representing objects,
 --       including generic formal parameters.
 
+--    Is_Obsolescent (Flag153)
+--       Present in all entities. Set for any entity for which a valid pragma
+--       Obsolescent applies.
+
 --    Is_Optional_Parameter (Flag134)
 --       Present in parameter entities. Set if the parameter is specified as
 --       optional by use of a First_Optional_Parameter argument to one of the
@@ -1969,7 +2261,11 @@ package Einfo is
 --       Applies to all entities, true for ordinary fixed point types
 --       and subtypes
 
---    Is_Package (synthesized)
+--    Is_Overriding_Operation (Flag39)
+--       Present in subprograms. Set if the subprogram is a primitive
+--       operation of a derived type, that overrides an inherited operation.
+
+--    Is_Package_Or_Generic_Package (synthesized)
 --       Applies to all entities. True for packages and generic packages.
 --       False for all other entities.
 
@@ -2037,10 +2333,15 @@ package Einfo is
 --       flag is set does not necesarily mean that no elaboration code is
 --       generated for the package.
 
+--    Is_Primitive_Wrapper (Flag195)
+--       Present in E_Procedures. Primitive wrappers are Expander-generated
+--       procedures that wrap entries of protected or task types implementing
+--       a limited interface.
+
 --    Is_Private_Composite (Flag107)
 --       Present in composite types that have a private component. Used to
 --       enforce the rule that operations on the composite type that depend
---       on the fulll view of the component, do not become visible until the
+--       on the full view of the component, do not become visible until the
 --       immediate scope of the composite type itself (7.3.1 (5)). Both this
 --       flag and Is_Limited_Composite are needed.
 
@@ -2053,13 +2354,13 @@ package Einfo is
 --       Applies to all entities, true for private types and subtypes,
 --       as well as for record with private types as subtypes
 
+--    Is_Protected_Interface (Flag198)
+--       Present in types that are interfaces. True if interface is declared
+--       protected, or is derived from protected interfaces.
+
 --    Is_Protected_Type (synthesized)
 --       Applies to all entities, true for protected types and subtypes
 
---    Is_Psected (Flag153)
---       Present in entities for objects, true if a valid Psect_Object
---       pragma applies to the object. Used to detect duplicate pragmas.
-
 --    Is_Public (Flag10)
 --       Present in all entities. Set to indicate that an entity defined in
 --       one compilation unit can be referenced from other compilation units.
@@ -2085,6 +2386,11 @@ package Einfo is
 --       resulting from assignment to out parameters, or to objects designated
 --       by access parameters).
 
+--    Is_Pure_Unit_Access_Type (Flag189)
+--       Present in access type and subtype entities. Set if the type or
+--       subtype appears in a pure unit. Used to give an error message at
+--       freeze time if the access type has a storage pool.
+
 --    Is_Real_Type (synthesized)
 --       Applies to all entities, true for real types and subtypes
 
@@ -2108,9 +2414,18 @@ package Einfo is
 --       renaming is handled by the front end, by macro substitution of
 --       a copy of the (evaluated) name tree whereever the variable is used.
 
---    Is_Return_By_Reference_Type (synthesized)
---       Applies to all type entities. True if the type is required to
---       be returned by reference, as defined in 6.5(11-16).
+--    Is_Inherently_Limited_Type (synthesized)
+--       Applies to all type entities. True if the type is "inherently"
+--       limited (i.e. cannot become nonlimited). From the Ada 2005
+--       RM-7.5(8.1/2), "a type with a part that is of a task, protected, or
+--       explicitly limited record type". These are the types that are defined
+--       as return-by-reference types in Ada 95 (see RM95-6.5(11-16)). In Ada
+--       2005, these are the types that require build-in-place for function
+--       calls. Note that build-in-place is allowed for other types, too.
+
+--    Is_Return_Object (Flag209)
+--       Applies to all object entities. True if the object is the return
+--       object of an extended_return_statement; False otherwise.
 
 --    Is_Scalar_Type (synthesized)
 --       Applies to all entities, true for scalar types and subtypes
@@ -2146,6 +2461,10 @@ package Einfo is
 --       or a string slice type, or an array type with one dimension and a
 --       component type that is a character type.
 
+--    Is_Synchronized_Interface (Flag199)
+--       Present_types that are interfaces. True is interface is declared
+--       synchronized, or is derived from synchronized interfaces.
+
 --    Is_Tag (Flag78)
 --       Present in E_Component. For regular tagged type this flag is set on
 --       the tag component (whose name is Name_uTag) and for CPP_Class tagged
@@ -2155,6 +2474,10 @@ package Einfo is
 --    Is_Tagged_Type (Flag55)
 --       Present in all entities, true for an entity for a tagged type.
 
+--    Is_Task_Interface (Flag200)
+--       Present in types that are interfaces. True is interface is declared
+--        as such, or if it is derived from task interfaces.
+
 --    Is_Task_Record_Type (synthesized)
 --       Applies to all entities, true if Is_Concurrent_Record_Type
 --       Corresponding_Concurrent_Type is a task type.
@@ -2162,6 +2485,10 @@ package Einfo is
 --    Is_Task_Type (synthesized)
 --       Applies to all entities, true for task types and subtypes
 
+--    Is_Thread_Body (Flag77)
+--       Applies to subprogram entities. Set if a valid Thread_Body pragma
+--       applies to this subprogram, which is thus a thread body.
+
 --    Is_True_Constant (Flag163)
 --       This flag is set in constants and variables which have an initial
 --       value specified but which are never assigned, partially or in the
@@ -2170,11 +2497,21 @@ package Einfo is
 --       code generator. For a constant, it means that the constant was not
 --       modified by generated code (e.g. to set a discriminant in an init
 --       proc). Assignments by user or generated code will reset this flag.
+--
+--       Note: there is one situation in which the back end does not permit
+--       this flag to be set, even if no assignments are generated. This is
+--       the case of an object of a record or array type which is initialized
+--       with an aggregate, and is itself used as the expression initializing
+--       an atomic object, or the right hand side of an assignment to an atomic
+--       object. In this case the object must not have Is_True_Constant set,
+--       even though no assignments are generated (the reason for this is that
+--       the back end must not optimize the object away, because that would
+--       violate the restriction on aggregates in these positions).
 
 --    Is_Type (synthesized)
 --       Applies to all entities, true for a type entity
 
---    Is_Unchecked_Union (Flag117)
+--    Is_Unchecked_Union (Flag117) [implementation base type only]
 --       Present in all entities. Set only in record types to which the
 --       pragma Unchecked_Union has been validly applied.
 
@@ -2200,6 +2537,13 @@ package Einfo is
 --       a separate flag must be used to indicate whether the names are
 --       visible by selected notation, or not.
 
+--    Is_Visible_Formal (Flag206)
+--       Present in all entities. Set for instances of the formals of a formal
+--       package. Indicates that the entity must be made visible in the body
+--       of the instance, to reproduce the visibility of the generic. This
+--       simplifies visibility settings in instance bodies.
+--       ??? confusion in abovecomments between being present and being set
+
 --    Is_VMS_Exception (Flag133)
 --       Present in all entities. Set only for exception entities where the
 --       exception was specified in an Import_Exception or Export_Exception
@@ -2211,12 +2555,50 @@ package Einfo is
 --       variables. Set if a pragma Volatile applies to the entity. Also set
 --       if pragma Shared or pragma Atomic applies to entity. In the case of
 --       private or incomplete types, this flag is set in both the private
---       and full view.
+--       and full view. The flag is not set reliably on private subtypes,
+--       and is always retrieved from the base type (but this is not a base-
+--       type-only attribute because it applies to other entities). Note that
+--       the back end should use Treat_As_Volatile, rather than Is_Volatile
+--       to indicate code generation requirements for volatile variables.
+--       Similarly, any front end test which is concerned with suppressing
+--       optimizations on volatile objects should test Treat_As_Volatile
+--       rather than testing this flag.
 
 --    Is_Wrapper_Package (synthesized)
 --       Present in package entities. Indicates that the package has been
 --       created as a wrapper for a subprogram instantiation.
 
+--    Itype_Printed (Flag202)
+--       Set in Itypes if the Itype has been printed by Sprint. This is used to
+--       avoid printing an Itype more than once.
+
+--    Kill_Elaboration_Checks (Flag32)
+--       Present in all entities. Set by the expander to kill elaboration
+--       checks which are known not to be needed. Equivalent in effect to
+--       the use of pragma Supress (Elaboration_Checks) for that entity
+--       except that the effect is permanent and cannot be undone by a
+--       subsequent pragma Unsuppress.
+
+--    Kill_Range_Checks (Flag33)
+--       Present in all entities. Equivalent in effect to the use of pragma
+--       Supress (Range_Checks) for that entity except that the result is
+--       permanent and cannot be undone by a subsequent pragma Unsuppress.
+--       This is currently only used in one odd situation in Sem_Ch3 for
+--       record types, and it would be good to get rid of it???
+
+--    Kill_Tag_Checks (Flag34)
+--       Present in all entities. Set by the expander to kill elaboration
+--       checks which are known not to be needed. Equivalent in effect to
+--       the use of pragma Supress (Tag_Checks) for that entity except
+--       that the result is permanent and cannot be undone by a subsequent
+--       pragma Unsuppress.
+
+--    Last_Assignment (Node20)
+--       Present in entities for variables. Set for a local variable to point
+--       to the left side of an assignment statement assigning a value to the
+--       variable. Cleared if the value of the variable is referenced. Used to
+--       warn about dubious assignment statements whose value is not used.
+
 --    Last_Entity (Node20)
 --       Present in all entities which act as scopes to which a list of
 --       associated entities is attached (blocks, class subtypes and types,
@@ -2225,6 +2607,13 @@ package Einfo is
 --       Points to a the last entry in the list of associated entities chained
 --       through the Next_Entity field. Empty if no entities are chained.
 
+--    Limited_View (Node23)
+--       Present in non-generic package entities that are not instances. Bona
+--       fide package with the limited-view list through the first_entity and
+--       first_private attributes. The elements of this list are the shadow
+--       entities created for the types and local packages that are declared
+--       in a package appearing in a limited_with clause (Ada 2005: AI-50217)
+
 --    Lit_Indexes (Node15)
 --       Present in enumeration types and subtypes. Non-empty only for the
 --       case of an enumeration root type, where it contains the entity for
@@ -2239,6 +2628,16 @@ package Einfo is
 --       the nature and use of this entity for implementing the Image and
 --       Value attributes for the enumeration type in question.
 
+--    Low_Bound_Known (Flag205)
+--       Present in all entities. Currently this can only be set True for
+--       formal parameter entries of a standard unconstrained one-dimensional
+--       array or string type, where the lower bound of the index type is zero
+--       or one. Indicates that the low bound is known to be equal to the lower
+--       bound of the index type (e.g. 1 for String, since the index type is
+--       Positive). This flag can only be set by a pragma Assert which
+--       specifies this. If this flag is set, warnings about assuming the index
+--       low bound to be zero or one are suppressed.
+
 --    Machine_Radix_10 (Flag84)
 --       Present in decimal types and subtypes, set if the Machine_Radix
 --       is 10, as the result of the specification of a machine radix
@@ -2270,12 +2669,30 @@ package Einfo is
 --       case, this will be a power of 2, but if Non_Binary_Modulus is
 --       set, then it will not be a power of 2.
 
+--    Must_Be_On_Byte_Boundary (Flag183)
+--       Present in entities for types and subtypes. Set if objects of
+--       the type must always be allocated on a byte boundary (more
+--       accurately a storage unit boundary). The front end checks that
+--       component clauses respect this rule, and the back end ensures
+--       that record packing does not violate this rule. Currently the
+--       flag is set only for packed arrays longer than 64 bits where
+--       the component size is not a power of 2.
+
+--    Must_Have_Preelab_Init (Flag208)
+--       Present in entities for types and subtypes. Set in the full type of a
+--       private type or subtype if a pragma Has_Preelaborable_Initialization
+--       is present for the private type. Used to check that the full type has
+--       preelaborable initialization at freeze time (this has to be deferred
+--       to the freeze point because of the rule about overriding Initialize).
+
 --    Needs_Debug_Info (Flag147)
 --       Present in all entities. Set if the entity requires debugging
 --       information to be generated. This is true of all entities that
 --       have Comes_From_Source set, and also transitively for entities
 --       associated with such components (e.g. their types). It is true
 --       for all entities in Debug_Generated_Code mode (-gnatD switch).
+--       This is the flag that the back end should check to determine
+--       whether or not to generate debugging information for an entity.
 
 --    Needs_No_Actuals (Flag22)
 --       Present in callable entities (subprograms, entries, access to
@@ -2286,20 +2703,24 @@ package Einfo is
 --       interpreted as an indexing of the result of the call. It is also
 --       used to resolve various cases of entry calls.
 
---    Not_Source_Assigned (Flag115)
+--    Never_Set_In_Source (Flag115)
 --       Present in all entities, but relevant only for variables and
---       parameters. This flag is set if the object is never assigned a
---       value in user code and was not fully initialized at declaration
---       time. Note however, that an access variable is not considered
---       fully initialized in this sense.
---
+--       parameters. This flag is set if the object is never assigned
+--       a value in user source code, either by assignment or by the
+--       use of an initial value, or by some other means.
+
 --       This flag is only for the purposes of issuing warnings, it must not
 --       be used by the code generator to indicate that the variable is in
 --       fact a constant, since some assignments in generated code do not
---       count (for example, the call to an init_proc to assign some but
---       not all of the fields in a patially initialized record). The code
+--       count (for example, the call to an init proc to assign some but
+--       not all of the fields in a partially initialized record). The code
 --       generator should instead use the flag Is_True_Constant.
 --
+--       For the purposes of this warning, the default assignment of
+--       access variables to null is not considered the assignment of
+--       of a value (so the warning can be given for code that relies
+--       on this initial null value, when no other value is ever set).
+--
 --       In variables and out parameters, if this flag is set after full
 --       processing of the corresponding declarative unit, it indicates that
 --       the variable or parameter was never set, and a warning message can
@@ -2308,8 +2729,8 @@ package Einfo is
 --       Note: this flag is initially set, and then cleared on encountering
 --       any construct that might conceivably legitimately set the value.
 --       Thus during the analysis of a declarative region and its associated
---       statement sequence, the meaning of the flag is "not assigned yet",
---       and once this analysis is complete the flag means "never assigned".
+--       statement sequence, the meaning of the flag is "not set yet", and
+--       once this analysis is complete the flag means "never assigned".
 
 --       Note: for variables appearing in package declarations, this flag
 --       is never set. That is because there is no way to tell if some
@@ -2319,7 +2740,7 @@ package Einfo is
 --       Note: in the case of renamed objects, the flag must be set in the
 --       ultimate renamed object. Clients noting a possible modification
 --       should use the Note_Possible_Modification procedure in Sem_Util
---       rather than Set_Not_Source_Assigned precisely to deal properly with
+--       rather than Set_Never_Set_In_Source precisely to deal properly with
 --       the renaming possibility.
 
 --    Next_Component (synthesized)
@@ -2381,10 +2802,19 @@ package Einfo is
 --       Empty if applied to the last literal. This is actually a synonym
 --       for Next, but its use is preferred in this context.
 
+--    Next_Tag_Component (synthesized)
+--       Applies to components of tagged record types. Given a _Tag field
+--       of a record, returns the next _Tag field in this record.
+
 --    Non_Binary_Modulus (Flag58) [base type only]
 --       Present in modular integer types. Set if the modulus for the type
 --       is other than a power of 2.
 
+--    Non_Limited_View (Node17)
+--       Present in incomplete types that are the shadow entities created
+--       when analyzing a limited_with_clause (Ada 2005: AI-50217). Points to
+--       the defining entity in the original declaration.
+
 --    Nonzero_Is_True (Flag162) [base type only]
 --       Present in enumeration types. True if any non-zero value is to be
 --       interpreted as true. Currently this is set true for derived Boolean
@@ -2393,20 +2823,21 @@ package Einfo is
 --    No_Pool_Assigned (Flag131) [root type only]
 --       Present in access types. Set if a storage size clause applies to
 --       the variable with a compile time known value of zero. This flag is
---       used to generate warnings if any attempt is made to allocate an
---       instance of such an access type. This is set only in the root
+--       used to generate warnings if any attempt is made to allocate or free
+--       an instance of such an access type. This is set only in the root
 --       type, since derived types must have the same pool.
 
 --    No_Return (Flag113)
---       Present in procedure and generic procedure entries. Indicates that
---       a pragma No_Return applies to the procedure.
+--       Present in all entities. Always false except in the case of procedures
+--       and generic procedures for which a pragma No_Return is given.
 
 --    Normalized_First_Bit (Uint8)
 --       Present in components and discriminants. Indicates the normalized
 --       value of First_Bit for the component, i.e. the offset within the
 --       lowest addressed storage unit containing part or all of the field.
+--       Set to No_Uint if no first bit position is assigned yet.
 
---    Normalized_Position (Uint9)
+--    Normalized_Position (Uint14)
 --       Present in components and discriminants. Indicates the normalized
 --       value of Position for the component, i.e. the offset in storage
 --       units from the start of the record to the lowest addressed storage
@@ -2423,6 +2854,16 @@ package Einfo is
 --       the maximum size such records (needed for allocation purposes when
 --       there are default discriminants, and also for the 'Size value).
 
+--    No_Strict_Aliasing (Flag136) [base type only]
+--       Present in access types. Set to direct the back end to avoid any
+--       optimizations based on an assumption about the aliasing status of
+--       objects designated by the access type. For the case of the gcc
+--       back end, the effect is as though all references to objects of
+--       the type were compiled with -fno-strict-aliasing. This flag is
+--       set if an unchecked conversion with the access type as a target
+--       type occurs in the same source unit as the declaration of the
+--       access type, or if an explicit pragma No_Strict_Aliasing applies.
+
 --    Number_Dimensions (synthesized)
 --       Applies to array types and subtypes. Returns the number of dimensions
 --       of the array type or subtype as a value of type Pos.
@@ -2439,6 +2880,18 @@ package Einfo is
 --       Applies to subprograms and subprogram types. Yields the number of
 --       formals as a value of type Pos.
 
+--    Obsolescent_Warning (Node24)
+--       Present in all entities. Set non-empty only if a pragma Obsolescent
+--       applying to the entity had a string argument, in which case it records
+--       the contents of the corresponding string literal node. This field is
+--       only accessed if the flag Is_Obsolescent is set.
+
+--    Original_Access_Type (Node21)
+--       Present in access to subprogram types. Anonymous access to protected
+--       subprogram types are replaced by an occurrence of an internal access
+--       to subprogram type. This field links the replacement entity with the
+--       original entity.
+
 --    Original_Array_Type (Node21)
 --       Present in modular types and array types and subtypes. Set only
 --       if the Is_Packed_Array_Type flag is set, indicating that the type
@@ -2471,6 +2924,22 @@ package Einfo is
 --       In subtypes (tagged and untagged):
 --         Points to the component in the base type.
 
+--    Overridden_Operation (Node26)
+--       Present in subprograms. For overriding operations, points to the
+--       user-defined parent subprogram that is being overridden.
+
+--    Package_Instantiation (Node26)
+--       Present in packages and generic packages. When present, this field
+--       references an N_Package_Instantiation node associated with an
+--       instantiated package. In the case where the referenced node has
+--       been rewritten to an N_Package_Specification, the instantiation
+--       node is available from the Original_Node field of the package spec
+--       node. This is currently not guaranteed to be set in all cases, but
+--       when set, the field is used in Get_Package_Instantiation_Node as
+--       one of the means of obtaining the instantiation node. Eventually
+--       it should be set in all cases, including package entities associated
+--       with formal packages. ???
+
 --    Packed_Array_Type (Node23)
 --       Present in array types and subtypes, including the string literal
 --       subtype case, if the corresponding type is packed (either bit packed
@@ -2490,8 +2959,7 @@ package Einfo is
 
 --    Parent_Subtype (Node19)
 --       Present in E_Record_Type. Points to the subtype to use for a
---       field that references the parent record. This is used by Gigi to
---       construct such a field.
+--       field that references the parent record.
 
 --    Primitive_Operations (Elist15)
 --       Present in tagged record types and subtypes and in tagged private
@@ -2571,7 +3039,16 @@ package Einfo is
 --       which a goto to that label is legal.
 
 --    Referenced (Flag156)
---       Present in all entities, set if the entity is referenced.
+--       Present in all entities, set if the entity is referenced, except
+--       for the case of an appearence of a simple variable that is not a
+--       renaming, as the left side of an assignment in which case the flag
+--       Referenced_As_LHS is set instead.
+
+--    Referenced_As_LHS (Flag36): This flag is set instead of
+--       Referenced if a simple variable that is not a renaming appears as
+--       the left side of an assignment. The reason we distinguish this kind
+--       of reference is that we have a separate warning for variables that
+--       are only assigned and never read.
 
 --    Referenced_Object (Node10)
 --       Present in all type entities. Set non-Empty only for type entities
@@ -2607,13 +3084,15 @@ package Einfo is
 
 --    Renamed_Object (Node18)
 --       Present in all objects (constants, variables, components, formal
---       parameters, generic formal parameters, and loop parameters. Set
+--       parameters, generic formal parameters, and loop parameters). Set
 --       non-Empty if the object was declared by a renaming declaration, in
 --       which case it references the tree node for the name of the renamed
 --       object. This is only possible for the variable and constant cases.
 --       For formal parameters, this field is used in the course of inline
 --       expansion, to map the formals of a subprogram into the corresponding
---       actuals. The field is Empty otherwise.
+--       actuals. For formals of a task entry, it denotes the local renaming
+--       that replaces the actual within the accept statement.
+--       The field is Empty otherwise.
 
 --    Renaming_Map (Uint9)
 --       Present in generic subprograms, generic packages, and their
@@ -2631,9 +3110,16 @@ package Einfo is
 --       entities (for convenience in setting it), but is only tested
 --       for the function case.
 
+--    Return_Applies_To (Node8)
+--       Present in E_Return_Statement. Points to the entity representing
+--       the construct to which the return statement applies, as defined in
+--       RM-6.5(4/2). Note that a (simple) return statement within an
+--       extended_return_statement applies to the extended_return_statement,
+--       even though it causes the whole function to return.
+
 --    Returns_By_Ref (Flag90)
 --       Present in function entities, to indicate that the function
---       returns the result by reference, either because its return typ is a
+--       returns the result by reference, either because its return type is a
 --       by-reference-type or because it uses explicitly the secondary stack.
 
 --    Reverse_Bit_Order (Flag164) [base type only]
@@ -2647,7 +3133,7 @@ package Einfo is
 --       Present in all type and subtype entities. Contains the value of
 --       type'Size as defined in the RM. See also the Esize field and
 --       and the description on "Handling of Type'Size Values". A value
---       of zero for in this field for a non-discrete type means that
+--       of zero in this field for a non-discrete type means that
 --       the front end has not yet determined the size value. For the
 --       case of a discrete type, this field is always set by the front
 --       end and zero is a legitimate value for a type with one value.
@@ -2681,7 +3167,9 @@ package Einfo is
 --       Present in all entities. Points to the entity for the scope (block,
 --       loop, subprogram, package etc.) in which the entity is declared.
 --       Since this field is in the base part of the entity node, the access
---       routines for this field are in Sinfo.
+--       routines for this field are in Sinfo. Note that for a child package,
+--       the Scope will be the parent package, and for a non-child package,
+--       the Scope will be Standard.
 
 --    Scope_Depth (synth)
 --       Applies to program units, blocks, concurrent types and entries,
@@ -2703,7 +3191,7 @@ package Einfo is
 --       is needed, since returns an invalid value in this case!
 
 --    Sec_Stack_Needed_For_Return (Flag167)
---       Present in scope entities (blocks,functions, procedures, tasks,
+--       Present in scope entities (blocks, functions, procedures, tasks,
 --       entries). Set to True when secondary stack is used to hold
 --       the returned value of a function and thus should not be
 --       released on scope exit.
@@ -2730,9 +3218,9 @@ package Einfo is
 --       set, in which case this is the entity for the shared memory read
 --       routine. See Exp_Smem for full details.
 
---    Size_Check_Code (Node9)
+--    Size_Check_Code (Node19)
 --       Present in constants and variables. Normally Empty. Set if code is
---       generated to check the size of the variable. This field is used to
+--       generated to check the size of the object. This field is used to
 --       suppress this code if a subsequent address clause is encountered.
 
 --    Size_Clause (synthesized)
@@ -2780,6 +3268,13 @@ package Einfo is
 --       this field is present only in the root type (since derived types
 --       share the same storage pool).
 
+--    Stored_Constraint (Elist23)
+--       Present in entities that can have discriminants (concurrent types
+--       subtypes, record types and subtypes, private types and subtypes,
+--       limited private types and subtypes and incomplete types). Points
+--       to an element list containing the expressions for each of the
+--       stored discriminants for the record (sub)type.
+
 --    Strict_Alignment (Flag145) [implementation base type only]
 --       Present in all type entities. Indicates that some containing part
 --       is either aliased or tagged. This prohibits packing the object
@@ -2797,127 +3292,92 @@ package Einfo is
 --       the low bound of the applicable index constraint if there is one,
 --       or a copy of the low bound of the index base type if not.
 
---    Suppress_Access_Checks (Flag31)
---       Present in all entities. Set if access checks associated with this
---       entity are to be suppressed (see separate section on "Handling of
---       Check Suppression")
-
---    Suppress_Accessibility_Checks (Flag32)
---       Present in all entities. Set if accessibility checks associated with
---       this entity are to be suppressed (see separate section on "Handling
---       of Check Suppression")
-
---    Suppress_Discriminant_Checks (Flag33)
---       Present in all entities. Set if discriminant checks associated with
---       this entity are to be suppressed (see separate section on "Handling
---       of Check Suppression")
-
---    Suppress_Division_Checks (Flag34)
---       Present in all entities. Set if division checks associated with
---       this entity are to be suppressed (see separate section on "Handling
---       of Check Suppression")
-
---    Suppress_Elaboration_Checks (Flag35)
---       Present in all entities. Set if elaboration checks associated with
---       this entity are to be suppressed (see separate section on "Handling
---       of Check Suppression")
-
 --    Suppress_Elaboration_Warnings (Flag148)
---       Present in all entities. Set if a pragma Suppress Elaboration_Checks
---       is applied specifically to the entity. If set on a subprogram, all
---       elaboration warnings for calls to the subprogram are suppressed. If
---       set on a package, then all elaboration warnings for calls to any
---       subprograms in the package are suppressed.
-
---    Suppress_Index_Checks (Flag36)
---       Present in all entities. Set if index checks associated with this
---       entity are to be suppressed (see separate section on "Handling of
---       Check Suppression")
+--       Present in all entities, relevant only for subprogram entities and
+--       for variables. If this flag is set then Sem_Elab will not generate
+--       elaboration warnings for the subprogram or variable. Suppression of
+--       such warnings is automatic for subprograms for which elaboration
+--       checks are suppressed (without the need to set this flag), but the
+--       flag is also set for various internal entities (such as init procs)
+--       which are known not to generate any possible access before
+--       elaboration, and it is set on variables when a warning is given to
+--       avoid multiple elaboration warnings for the same variable.
 
 --    Suppress_Init_Proc (Flag105) [base type only]
 --       Present in all type entities. Set to suppress the generation of
 --       initialization procedures where they are known to be not needed.
 --       For example, the enumeration image table entity uses this flag.
 
---    Suppress_Length_Checks (Flag37)
---       Present in all entities. Set if length checks associated with this
---       entity are to be suppressed (see separate section on "Handling of
---       Check Suppression")
-
---    Suppress_Overflow_Checks (Flag38)
---       Present in all entities. Set if overflow checks associated with
---       this entity are to be suppressed (see separate section on "Handling
---       of Check Suppression")
-
---    Suppress_Range_Checks (Flag39)
---       Present in all entities. Set if range checks associated with this
---       entity are to be suppressed (see separate section on "Handling of
---       Check Suppression")
-
---    Suppress_Storage_Checks (Flag40)
---       Present in all entities. Set if storage checks associated with
---       this entity are to be suppressed (see separate section on "Handling
---       of Check Suppression")
-
 --    Suppress_Style_Checks (Flag165)
 --       Present in all entities. Suppresses any style checks specifically
 --       associated with the given entity if set.
 
---    Suppress_Tag_Checks (Flag41)
---       Present in all entities. Set if tag checks associated with this
---       entity are to be suppressed (see separate section on "Handling of
---       Check Suppression")
+--    Task_Body_Procedure (Node25)
+--       Present in task types and subtypes. Points to the entity for
+--       the task body procedure (as further described in Exp_Ch9, task
+--       bodies are expanded into procedures). A convenient function to
+--       retrieve this field is Sem_Util.Get_Task_Body_Procedure.
+--       The last sentence is odd ??? Why not have Task_Body_Procedure
+--       go to the Underlying_Type of the Root_Type???
 
---    Tag_Component (synthesized)
---       Applies to tagged record types, returns the entity for the _Tag
---       field in this record, which must be present.
+--    Treat_As_Volatile (Flag41)
+--       Present in all type entities, and also in constants, components and
+--       variables. Set if this entity is to be treated as volatile for code
+--       generation purposes. Always set if Is_Volatile is set, but can also
+--       be set as a result of situations (such as address overlays) where
+--       the front end wishes to force volatile handling to inhibit aliasing
+--       optimization which might be legally ok, but is undesirable. Note
+--       that the back end always tests this flag rather than Is_Volatile.
+--       The front end tests Is_Volatile if it is concerned with legality
+--       checks associated with declared volatile variables, but if the test
+--       is for the purposes of suppressing optimizations, then the front
+--       end should test Treat_As_Volatile rather than Is_Volatile.
 
 --    Type_High_Bound (synthesized)
---       Applies to scalar types. Returns the tree node (Node_Id) that
---       contains the high bound of a scalar type. The returned value is a
---       literal for a base type, but may be an expression in the case of a
---       scalar type with dynamic bounds. Note that in the case of a fixed
---       point type, the high bound is in units of small, and is an integer.
+--       Applies to scalar types. Returns the tree node (Node_Id) that contains
+--       the high bound of a scalar type. The returned value is literal for a
+--       base type, but may be an expression in the case of scalar type with
+--       dynamic bounds. Note that in the case of a fixed point type, the high
+--       bound is in units of small, and is an integer.
 
 --    Type_Low_Bound (synthesized)
---       Applies to scalar types. Returns the tree node (Node_Id) that
---       contains the low bound of a scalar type. The returned value is a
---       literal for a base type, but may be an expression in the case of a
---       scalar type with dynamic bounds. Note that in the case of a fixed
---       point type, the low bound is in units of small, and is an integer.
+--       Applies to scalar types. Returns the tree node (Node_Id) that contains
+--       the low bound of a scalar type. The returned value is literal for a
+--       base type, but may be an expression in the case of scalar type with
+--       dynamic bounds. Note that in the case of a fixed point type, the low
+--       bound is in units of small, and is an integer.
 
 --    Underlying_Full_View (Node19)
 --       Present in private subtypes that are the completion of other private
---       types, or in private types that are derived from private subtypes.
---       If the full view of a private type T is derived from another
---       private type  with discriminants Td, the full view of T is also
---       private, and there is no way to attach to it a further full view that
---       would convey the structure of T to the back end. The Underlying_Full_
---       View is an attribute of the full view that is a subtype of Td with
---       the same constraint as the declaration for T. The declaration for this
---       subtype is built at the point of the declaration of T, either as a
---       completion, or as a subtype declaration where the base type is private
---       and has a private completion. If Td is already constrained, then its
---       full view can serve directly as the full view of T.
+--       types, or in private types that are derived from private subtypes. If
+--       the full view of a private type T is derived from another private type
+--       with discriminants Td, the full view of T is also private, and there
+--       is no way to attach to it a further full view that would convey the
+--       structure of T to the back end. The Underlying_Full_ View is an
+--       attribute of the full view that is a subtype of Td with the same
+--       constraint as the declaration for T. The declaration for this subtype
+--       is built at the point of the declaration of T, either as completion,
+--       or as a subtype declaration where the base type is private and has a
+--       private completion. If Td is already constrained, then its full view
+--       can serve directly as the full view of T.
 
 --    Underlying_Type (synthesized)
---       Applies to all entities. This is the identity function except in
---       the case where it is applied to an incomplete or private type,
---       in which case it is the underlying type of the type declared by
---       the completion, or Empty if the completion has not yet been
---       encountered and analyzed.
+--       Applies to all entities. This is the identity function except in the
+--       case where it is applied to an incomplete or private type, in which
+--       case it is the underlying type of the type declared by the completion,
+--       or Empty if the completion has not yet been encountered and analyzed.
 --
---       Note: the reason this attribute applies to all entities, and not
---       just types, is to legitimize code where Underlying_Type is applied
---       to an entity which may or may not be a type, with the intent that
---       if it is a type, its underlying type is taken.
+--       Note: the reason this attribute applies to all entities, and not just
+--       types, is to legitimize code where Underlying_Type is applied to an
+--       entity which may or may not be a type, with the intent that if it is a
+--       type, its underlying type is taken.
 
 --    Unset_Reference (Node16)
---       Present in variables and out parameters. This is normally Empty.
---       It is set to point to an identifier that represents a reference
---       to the entity before any value has been set. Only the first such
---       reference is identified. This field is used to generate a warning
---       message if necessary (see Sem_Warn.Check_Unset_Reference).
+--       Present in variables and out parameters. This is normally Empty. It
+--       is set to point to an identifier that represents a reference to the
+--       entity before any value has been set. Only the first such reference
+--       is identified. This field is used to generate a warning message if
+--       necessary (see Sem_Warn.Check_Unset_Reference).
 
 --    Uses_Sec_Stack (Flag95)
 --       Present in scope entities (blocks,functions, procedures, tasks,
@@ -2934,6 +3394,14 @@ package Einfo is
 --       is used to suppress warnings for a given entity. It is also used by
 --       the compiler in some situations to kill spurious warnings.
 
+--    Was_Hidden (Flag196)
+--       Present in all entities. Used to save the value of the Is_Hidden
+--       attribute when the limited-view is installed (Ada 2005: AI-217).
+
+--    Wrapped_Entity (Node27)
+--       Present in an E_Procedure classified as an Is_Primitive_Wrapper. Set
+--       to the entity that is being wrapped.
+
    ------------------
    -- Access Kinds --
    ------------------
@@ -2941,7 +3409,11 @@ package Einfo is
    --  The following three entity kinds are introduced by the corresponding
    --  type definitions:
 
-   --    E_Access_Type,  E_General_Access_Type,  E_Anonymous_Access_Type.
+   --    E_Access_Type,
+   --    E_General_Access_Type,
+   --    E_Anonymous_Access_Subprogram_Type,
+   --    E_Anonymous_Access_Protected_Subprogram_Type
+   --    E_Anonymous_Access_Type.
 
    --  In addition, we define the kind E_Allocator_Type to label
    --  allocators. This is because special resolution rules apply to this
@@ -3149,6 +3621,14 @@ package Einfo is
       --  and a protected operation within, and have different compile-time
       --  and run-time properties than other access to subprograms.
 
+      E_Anonymous_Access_Subprogram_Type,
+      --  An anonymous access to subprogram type, created by an access to
+      --  subprogram declaration.
+
+      E_Anonymous_Access_Protected_Subprogram_Type,
+      --  An anonymous access to protected subprogram type, created by an
+      --  access to subprogram declaration.
+
       E_Anonymous_Access_Type,
       --  An anonymous access type created by an access parameter or access
       --  discriminant.
@@ -3190,21 +3670,22 @@ package Einfo is
       --  A record type, created by a record type declaration
 
       E_Record_Subtype,
-      --  A record subtype, created by a record subtype declaration.
+      --  A record subtype, created by a record subtype declaration
 
       E_Record_Type_With_Private,
-      --  Used for types defined by a private extension declaration. Includes
-      --  the fields for both private types and for record types (with the
-      --  sole exception of Corresponding_Concurrent_Type which is obviously
-      --  not needed). This entity is considered to be both a record type and
+      --  Used for types defined by a private extension declaration, and
+      --  for tagged private types. Includes the fields for both private
+      --  types and for record types (with the sole exception of
+      --  Corresponding_Concurrent_Type which is obviously not needed).
+      --  This entity is considered to be both a record type and
       --  a private type.
 
       E_Record_Subtype_With_Private,
-      --  A subtype of a type defined by a private extension declaration.
+      --  A subtype of a type defined by a private extension declaration
 
       E_Private_Type,
-      --  A private type, created by a private type declaration that does
-      --  not have the keyword limited.
+      --  A private type, created by a private type declaration
+      --  that has neither the keyword limited nor the keyword tagged.
 
       E_Private_Subtype,
       --  A subtype of a private type, created by a subtype declaration used
@@ -3212,7 +3693,7 @@ package Einfo is
 
       E_Limited_Private_Type,
       --  A limited private type, created by a private type declaration that
-      --  has the keyword limited.
+      --  has the keyword limited, but not the keyword tagged.
 
       E_Limited_Private_Subtype,
       --  A subtype of a limited private type, created by a subtype declaration
@@ -3221,6 +3702,10 @@ package Einfo is
       E_Incomplete_Type,
       --  An incomplete type, created by an incomplete type declaration
 
+      E_Incomplete_Subtype,
+      --  An incomplete subtype, created by a subtype declaration where the
+      --  subtype mark denotes an incomplete type.
+
       E_Task_Type,
       --  A task type, created by a task type declaration. An entity with this
       --  Ekind is also created to describe the anonymous type of a task that
@@ -3303,14 +3788,14 @@ package Einfo is
       --  A generic function. This is the entity for a generic function
       --  created by a generic subprogram declaration.
 
-      E_Generic_Package,
-      --  A generic package, this is the entity for a generic package created
-      --  by a generic package declaration.
-
       E_Generic_Procedure,
       --  A generic function. This is the entity for a generic procedure
       --  created by a generic subprogram declaration.
 
+      E_Generic_Package,
+      --  A generic package, this is the entity for a generic package created
+      --  by a generic package declaration.
+
       E_Label,
       --  The defining entity for a label. Note that this is created by the
       --  implicit label declaration, not the occurrence of the label itself,
@@ -3320,6 +3805,14 @@ package Einfo is
       --  A loop identifier, created by an explicit or implicit label on a
       --  loop statement.
 
+      E_Return_Statement,
+      --  A dummy entity created for each return statement. Used to hold
+      --  information about the return statement (what it applies to) and in
+      --  rules checking. For example, a simple_return_statement that applies
+      --  to an extended_return_statement cannot have an expression; this
+      --  requires putting the E_Return_Statement entity for the
+      --  extended_return_statement on the scope stack.
+
       E_Package,
       --  A package, created by a package declaration
 
@@ -3355,11 +3848,11 @@ package Einfo is
    -- Subtype Declarations --
    --------------------------
 
-   --  The above entities are arranged so that they can be conveniently
-   --  grouped into subtype ranges. Note that for each of the xxx_KInd
-   --  ranges defined below, there is a corresponding Is_xxx.. predicate
-   --  which is to be used in preference to direct range tests using the
-   --  subtype name. However, the subtype names are available for direct
+   --  The above entities are arranged so that they can be conveniently grouped
+   --  into subtype ranges. Note that for each of the xxx_Kind ranges defined
+   --  below, there is a corresponding Is_xxx (or for types, Is_xxx_Type)
+   --  predicate which is to be used in preference to direct range tests using
+   --  the subtype name. However, the subtype names are available for direct
    --  use, e.g. as choices in case statements.
 
    subtype Access_Kind                 is Entity_Kind range
@@ -3370,6 +3863,8 @@ package Einfo is
    --  E_General_Access_Type
    --  E_Access_Subprogram_Type
    --  E_Access_Protected_Subprogram_Type
+   --  E_Anonymous_Access_Subprogram_Type
+   --  E_Anonymous_Access_Protected_Subprogram_Type
        E_Anonymous_Access_Type;
 
    subtype Array_Kind                  is Entity_Kind range
@@ -3400,6 +3895,7 @@ package Einfo is
    --  E_Limited_Private_Type
    --  E_Limited_Private_Subtype
    --  E_Incomplete_Type
+   --  E_Incomplete_Subtype
    --  E_Task_Type
    --  E_Task_Subtype,
    --  E_Protected_Type,
@@ -3465,6 +3961,8 @@ package Einfo is
    --  E_General_Access_Type
    --  E_Access_Subprogram_Type
    --  E_Access_Protected_Subprogram_Type
+   --  E_Anonymous_Access_Subprogram_Type
+   --  E_Anonymous_Access_Protected_Subprogram_Type
        E_Anonymous_Access_Type;
 
    subtype Enumeration_Kind            is Entity_Kind range
@@ -3488,13 +3986,25 @@ package Einfo is
    subtype Formal_Kind                 is Entity_Kind range
        E_In_Parameter ..
    --  E_Out_Parameter
-       E_In_Out_Parameter;
+     E_In_Out_Parameter;
 
-   subtype Generic_Unit_Kind           is Entity_Kind range
+   subtype Formal_Object_Kind          is Entity_Kind range
+       E_Generic_In_Out_Parameter ..
+       E_Generic_In_Parameter;
+
+   subtype Generic_Subprogram_Kind     is Entity_Kind range
        E_Generic_Function ..
-   --  E_Generic_Package,
        E_Generic_Procedure;
 
+   subtype Generic_Unit_Kind           is Entity_Kind range
+       E_Generic_Function ..
+   --  E_Generic_Procedure
+       E_Generic_Package;
+
+   subtype Incomplete_Kind             is Entity_Kind range
+       E_Incomplete_Type ..
+       E_Incomplete_Subtype;
+
    subtype Incomplete_Or_Private_Kind  is Entity_Kind range
        E_Record_Type_With_Private ..
    --  E_Record_Subtype_With_Private
@@ -3502,7 +4012,8 @@ package Einfo is
    --  E_Private_Subtype
    --  E_Limited_Private_Type
    --  E_Limited_Private_Subtype
-       E_Incomplete_Type;
+   --  E_Incomplete_Type
+       E_Incomplete_Subtype;
 
    subtype Integer_Kind                is Entity_Kind range
        E_Signed_Integer_Type ..
@@ -3633,6 +4144,8 @@ package Einfo is
    --  E_General_Access_Type
    --  E_Access_Subprogram_Type,
    --  E_Access_Protected_Subprogram_Type
+   --  E_Anonymous_Access_Subprogram_Type
+   --  E_Anonymous_Access_Protected_Subprogram_Type
    --  E_Anonymous_Access_Type
    --  E_Array_Type
    --  E_Array_Subtype
@@ -3650,6 +4163,7 @@ package Einfo is
    --  E_Limited_Private_Type
    --  E_Limited_Private_Subtype
    --  E_Incomplete_Type
+   --  E_Incomplete_Subtype
    --  E_Task_Type
    --  E_Task_Subtype
    --  E_Protected_Type
@@ -3664,7 +4178,7 @@ package Einfo is
    --  For each enumeration value defined in Entity_Kind we list all the
    --  attributes defined in Einfo which can legally be applied to an entity
    --  of that kind. The implementation of the attribute functions (and for
-   --  non-synthesized attributes, or the corresponding set procedures) are
+   --  non-synthetized attributes, of the corresponding set procedures) are
    --  in the Einfo body.
 
    --  The following attributes apply to all entities
@@ -3678,20 +4192,30 @@ package Einfo is
    --    Etype                         (Node5)
    --    First_Rep_Item                (Node6)
    --    Freeze_Node                   (Node7)
+   --    Obsolescent_Warning           (Node24)
 
    --    Address_Taken                 (Flag104)
+   --    Can_Never_Be_Null             (Flag38)
+   --    Checks_May_Be_Suppressed      (Flag31)
    --    Debug_Info_Off                (Flag166)
+   --    Has_Anon_Block_Suffix         (Flag201)
+   --    Has_Controlled_Component      (Flag43)   (base type only)
    --    Has_Convention_Pragma         (Flag119)
    --    Has_Delayed_Freeze            (Flag18)
    --    Has_Fully_Qualified_Name      (Flag173)
    --    Has_Gigi_Rep_Item             (Flag82)
    --    Has_Homonym                   (Flag56)
+   --    Has_Persistent_BSS            (Flag188)
    --    Has_Pragma_Elaborate_Body     (Flag150)
    --    Has_Pragma_Inline             (Flag157)
+   --    Has_Pragma_Pure               (Flag203)
+   --    Has_Pragma_Pure_Function      (Flag179)
    --    Has_Pragma_Unreferenced       (Flag180)
    --    Has_Private_Declaration       (Flag155)
    --    Has_Qualified_Name            (Flag161)
    --    Has_Unknown_Discriminants     (Flag72)
+   --    Has_Xref_Entry                (Flag182)
+   --    Is_Ada_2005_Only              (Flag185)
    --    Is_Bit_Packed_Array           (Flag122)  (base type only)
    --    Is_Child_Unit                 (Flag73)
    --    Is_Compilation_Unit           (Flag149)
@@ -3709,13 +4233,17 @@ package Einfo is
    --    Is_Inlined                    (Flag11)
    --    Is_Internal                   (Flag17)
    --    Is_Itype                      (Flag91)
+   --    Is_Known_Non_Null             (Flag37)
+   --    Is_Known_Null                 (Flag204)
    --    Is_Known_Valid                (Flag170)
    --    Is_Limited_Composite          (Flag106)
    --    Is_Limited_Record             (Flag25)
+   --    Is_Obsolescent                (Flag153)
    --    Is_Package_Body_Entity        (Flag160)
    --    Is_Packed_Array_Type          (Flag138)
    --    Is_Potentially_Use_Visible    (Flag9)
    --    Is_Preelaborated              (Flag59)
+   --    Is_Primitive_Wrapper          (Flag195)
    --    Is_Public                     (Flag10)
    --    Is_Pure                       (Flag44)
    --    Is_Remote_Call_Interface      (Flag62)
@@ -3723,29 +4251,26 @@ package Einfo is
    --    Is_Shared_Passive             (Flag60)
    --    Is_Statically_Allocated       (Flag28)
    --    Is_Unchecked_Union            (Flag117)
+   --    Is_Visible_Formal             (Flag206)
    --    Is_VMS_Exception              (Flag133)
+   --    Kill_Elaboration_Checks       (Flag32)
+   --    Kill_Range_Checks             (Flag33)
+   --    Kill_Tag_Checks               (Flag34)
+   --    Low_Bound_Known               (Flag205)
    --    Materialize_Entity            (Flag168)
    --    Needs_Debug_Info              (Flag147)
+   --    No_Return                     (Flag113)
    --    Referenced                    (Flag156)
-   --    Suppress_Access_Checks        (Flag31)
-   --    Suppress_Accessibility_Checks (Flag32)
-   --    Suppress_Discriminant_Checks  (Flag33)
-   --    Suppress_Division_Checks      (Flag34)
-   --    Suppress_Elaboration_Checks   (Flag35)
+   --    Referenced_As_LHS             (Flag36)
    --    Suppress_Elaboration_Warnings (Flag148)
-   --    Suppress_Index_Checks         (Flag36)
-   --    Suppress_Length_Checks        (Flag37)
-   --    Suppress_Overflow_Checks      (Flag38)
-   --    Suppress_Range_Checks         (Flag39)
-   --    Suppress_Storage_Checks       (Flag40)
    --    Suppress_Style_Checks         (Flag165)
-   --    Suppress_Tag_Checks           (Flag41)
+   --    Was_Hidden                    (Flag196)
 
    --    Declaration_Node              (synth)
    --    Enclosing_Dynamic_Scope       (synth)
    --    Has_Foreign_Convention        (synth)
+   --    Is_Derived_Type               (synth)
    --    Is_Dynamic_Scope              (synth)
-   --    Is_Generic_Unit               (synth)
    --    Is_Limited_Type               (synth)
    --    Underlying_Type               (synth)
    --    all classification attributes (synth)
@@ -3769,13 +4294,19 @@ package Einfo is
    --    Has_Aliased_Components        (Flag135)  (base type only)
    --    Has_Alignment_Clause          (Flag46)
    --    Has_Atomic_Components         (Flag86)   (base type only)
+   --    Has_Completion_In_Body        (Flag71)
    --    Has_Complex_Representation    (Flag140)  (base type only)
+   --    Has_Constrained_Partial_View  (Flag187)
    --    Has_Discriminants             (Flag5)
    --    Has_Non_Standard_Rep          (Flag75)   (base type only)
    --    Has_Object_Size_Clause        (Flag172)
    --    Has_Primitive_Operations      (Flag120)  (base type only)
    --    Has_Size_Clause               (Flag29)
    --    Has_Specified_Layout          (Flag100)  (base type only)
+   --    Has_Specified_Stream_Input    (Flag190)
+   --    Has_Specified_Stream_Output   (Flag191)
+   --    Has_Specified_Stream_Read     (Flag192)
+   --    Has_Specified_Stream_Write    (Flag193)
    --    Has_Task                      (Flag30)   (base type only)
    --    Has_Unchecked_Union           (Flag123)  (base type only)
    --    Has_Volatile_Components       (Flag87)   (base type only)
@@ -3790,6 +4321,10 @@ package Einfo is
    --    Is_Frozen                     (Flag4)
    --    Is_Generic_Actual_Type        (Flag94)
    --    Is_Generic_Type               (Flag13)
+   --    Is_Limited_Interface          (Flag197)
+   --    Is_Protected_Interface        (Flag198)
+   --    Is_Synchronized_Interface     (Flag199)
+   --    Is_Task_Interface             (Flag200)
    --    Is_Non_Static_Subtype         (Flag109)
    --    Is_Packed                     (Flag51)   (base type only)
    --    Is_Private_Composite          (Flag107)
@@ -3797,10 +4332,15 @@ package Einfo is
    --    Is_Tagged_Type                (Flag55)
    --    Is_Unsigned_Type              (Flag144)
    --    Is_Volatile                   (Flag16)
+   --    Itype_Printed                 (Flag202)  (itypes only)
+   --    Known_To_Have_Preelab_Init    (Flag207)
+   --    Must_Be_On_Byte_Boundary      (Flag183)
+   --    Must_Have_Preelab_Init        (Flag208)
    --    Size_Depends_On_Discriminant  (Flag177)
    --    Size_Known_At_Compile_Time    (Flag92)
    --    Strict_Alignment              (Flag145)  (base type only)
    --    Suppress_Init_Proc            (Flag105)  (base type only)
+   --    Treat_As_Volatile             (Flag41)
 
    --    Alignment_Clause              (synth)
    --    Ancestor_Subtype              (synth)
@@ -3810,7 +4350,7 @@ package Einfo is
    --    Implementation_Base_Type      (synth)
    --    Is_By_Copy_Type               (synth)
    --    Is_By_Reference_Type          (synth)
-   --    Is_Return_By_Reference_Type   (synth)
+   --    Is_Inherently_Limited_Type    (synth)
    --    Root_Type                     (synth)
    --    Size_Clause                   (synth)
 
@@ -3821,12 +4361,14 @@ package Einfo is
    --  E_Access_Protected_Subprogram_Type
    --    Equivalent_Type               (Node18)
    --    Directly_Designated_Type      (Node20)
+   --    Original_Access_Type          (Node21)
    --    Needs_No_Actuals              (Flag22)
    --    (plus type attributes)
 
    --  E_Access_Subprogram_Type
    --    Equivalent_Type               (Node18)   (remote types only)
    --    Directly_Designated_Type      (Node20)
+   --    Original_Access_Type          (Node21)
    --    Needs_No_Actuals              (Flag22)
    --    (plus type attributes)
 
@@ -3839,8 +4381,11 @@ package Einfo is
    --    Associated_Final_Chain        (Node23)
    --    Has_Pragma_Controlled         (Flag27)   (base type only)
    --    Has_Storage_Size_Clause       (Flag23)   (base type only)
+   --    Is_Local_Anonymous_Access     (Flag194)
    --    Is_Access_Constant            (Flag69)
+   --    Is_Pure_Unit_Access_Type      (Flag189)
    --    No_Pool_Assigned              (Flag131)  (base type only)
+   --    No_Strict_Aliasing            (Flag136)  (base type only)
    --    (plus type attributes)
 
    --  E_Access_Attribute_Type
@@ -3851,6 +4396,8 @@ package Einfo is
    --    Directly_Designated_Type      (Node20)
    --    (plus type attributes)
 
+   --  E_Anonymous_Access_Subprogram_Type
+   --  E_Anonymous_Access_Protected_Subprogram_Type
    --  E_Anonymous_Access_Type
    --    Storage_Size_Variable         (Node15)   ??? is this needed ???
    --    Directly_Designated_Type      (Node20)
@@ -3866,7 +4413,6 @@ package Einfo is
    --    Packed_Array_Type             (Node23)
    --    Component_Alignment           (special)  (base type only)
    --    Has_Component_Size_Clause     (Flag68)   (base type only)
-   --    Has_Controlled_Component      (Flag43)   (base type only)
    --    Has_Pragma_Pack               (Flag121)  (base type only)
    --    Is_Aliased                    (Flag15)
    --    Is_Constrained                (Flag12)
@@ -3882,12 +4428,12 @@ package Einfo is
    --    Discard_Names                 (Flag88)
    --    Finalization_Chain_Entity     (Node19)
    --    Scope_Depth_Value             (Uint22)
-   --    Scope_Depth                   (synth)
    --    Entry_Cancel_Parameter        (Node23)
    --    Has_Master_Entity             (Flag21)
    --    Has_Nested_Block_With_Handler (Flag101)
    --    Sec_Stack_Needed_For_Return   (Flag167)
    --    Uses_Sec_Stack                (Flag95)
+   --    Scope_Depth                   (synth)
 
    --  E_Class_Wide_Type
    --  E_Class_Wide_Subtype
@@ -3895,17 +4441,17 @@ package Einfo is
    --    First_Entity                  (Node17)
    --    Equivalent_Type               (Node18)   (always Empty in type case)
    --    Last_Entity                   (Node20)
-   --    Has_Controlled_Component      (Flag43)   (base type only)
    --    First_Component               (synth)
    --    (plus type attributes)
 
    --  E_Component
    --    Normalized_First_Bit          (Uint8)
-   --    Normalized_Position           (Uint9)
+   --    Current_Value                 (Node9)    (always Empty)
    --    Normalized_Position_Max       (Uint10)
    --    Component_Bit_Offset          (Uint11)
    --    Esize                         (Uint12)
    --    Component_Clause              (Node13)
+   --    Normalized_Position           (Uint14)
    --    DT_Entry_Count                (Uint15)
    --    Entry_Formal                  (Node16)
    --    Prival                        (Node17)
@@ -3914,35 +4460,43 @@ package Einfo is
    --    Interface_Name                (Node21)   (JGNAT usage only)
    --    Original_Record_Component     (Node22)
    --    Protected_Operation           (Node23)
+   --    DT_Offset_To_Top_Func         (Node25)
    --    Has_Biased_Representation     (Flag139)
    --    Has_Per_Object_Constraint     (Flag154)
    --    Is_Atomic                     (Flag85)
    --    Is_Tag                        (Flag78)
    --    Is_Volatile                   (Flag16)
-   --    Next_Component                (synth)
+   --    Treat_As_Volatile             (Flag41)
+   --    Is_Return_Object              (Flag209)
    --    Is_Protected_Private          (synth)
+   --    Next_Component                (synth)
+   --    Next_Tag_Component            (synth)
 
    --  E_Constant
    --  E_Loop_Parameter
-   --    Size_Check_Code               (Node9)
+   --    Current_Value                 (Node9)    (always Empty)
    --    Discriminal_Link              (Node10)   (discriminals only)
    --    Full_View                     (Node11)
    --    Esize                         (Uint12)
    --    Alignment                     (Uint14)
    --    Actual_Subtype                (Node17)
    --    Renamed_Object                (Node18)
+   --    Size_Check_Code               (Node19)   (constants only)
+   --    In_Private_Part               (Flag45)
    --    Interface_Name                (Node21)
    --    Has_Alignment_Clause          (Flag46)
    --    Has_Atomic_Components         (Flag86)
    --    Has_Biased_Representation     (Flag139)
+   --    Has_Completion                (Flag26)   (constants only)
    --    Has_Size_Clause               (Flag29)
    --    Has_Volatile_Components       (Flag87)
    --    Is_Atomic                     (Flag85)
    --    Is_Eliminated                 (Flag124)
-   --    Is_Psected                    (Flag153)
    --    Is_True_Constant              (Flag163)
    --    Is_Volatile                   (Flag16)
-   --    Not_Source_Assigned           (Flag115)
+   --    Never_Set_In_Source           (Flag115)
+   --    Treat_As_Volatile             (Flag41)
+   --    Is_Return_Object              (Flag209)
    --    Address_Clause                (synth)
    --    Alignment_Clause              (synth)
    --    Constant_Value                (synth)
@@ -3963,11 +4517,12 @@ package Einfo is
 
    --  E_Discriminant
    --    Normalized_First_Bit          (Uint8)
-   --    Normalized_Position           (Uint9)
+   --    Current_Value                 (Node9)    (always Empty)
    --    Normalized_Position_Max       (Uint10)
    --    Component_Bit_Offset          (Uint11)
    --    Esize                         (Uint12)
    --    Component_Clause              (Node13)
+   --    Normalized_Position           (Uint14)
    --    Discriminant_Number           (Uint15)
    --    Discriminal                   (Node17)
    --    Renamed_Object                (Node18)   (always Empty)
@@ -3976,8 +4531,9 @@ package Einfo is
    --    Interface_Name                (Node21)   (JGNAT usage only)
    --    Original_Record_Component     (Node22)
    --    CR_Discriminant               (Node23)
+   --    Is_Return_Object              (Flag209)
    --    Next_Discriminant             (synth)
-   --    Next_Girder_Discriminant      (synth)
+   --    Next_Stored_Discriminant      (synth)
 
    --  E_Entry
    --  E_Entry_Family
@@ -3990,7 +4546,6 @@ package Einfo is
    --    Last_Entity                   (Node20)
    --    Accept_Address                (Elist21)
    --    Scope_Depth_Value             (Uint22)
-   --    Scope_Depth                   (synth)
    --    Privals_Chain                 (Elist23)  (for a protected entry)
    --    Default_Expressions_Processed (Flag108)
    --    Entry_Accepted                (Flag152)
@@ -4000,8 +4555,10 @@ package Einfo is
    --    Uses_Sec_Stack                (Flag95)
    --    Address_Clause                (synth)
    --    First_Formal                  (synth)
+   --    First_Formal_With_Extras      (synth)
    --    Entry_Index_Type              (synth)
    --    Number_Formals                (synth)
+   --    Scope_Depth                   (synth)
 
    --  E_Entry_Index_Parameter
    --    Entry_Index_Constant          (Node18)
@@ -4022,6 +4579,7 @@ package Einfo is
    --    Scalar_Range                  (Node20)
    --    Enum_Pos_To_Rep               (Node23)   (type only, not subtype)
    --    Has_Biased_Representation     (Flag139)
+   --    Has_Contiguous_Rep            (Flag181)
    --    Has_Enumeration_Rep_Clause    (Flag66)
    --    Nonzero_Is_True               (Flag162)  (base type only)
    --    Type_Low_Bound                (synth)
@@ -4029,6 +4587,7 @@ package Einfo is
    --    (plus type attributes)
 
    --  E_Exception
+   --    Alignment                     (Uint14)
    --    Renamed_Entity                (Node18)
    --    Register_Exception_Call       (Node20)
    --    Interface_Name                (Node21)
@@ -4043,8 +4602,8 @@ package Einfo is
    --  E_Floating_Point_Type
    --  E_Floating_Point_Subtype
    --    Digits_Value                  (Uint17)
-   --    Type_Low_Bound                (synth)
    --    Scalar_Range                  (Node20)
+   --    Type_Low_Bound                (synth)
    --    Type_High_Bound               (synth)
    --    (plus type attributes)
 
@@ -4067,36 +4626,38 @@ package Einfo is
    --    Last_Entity                   (Node20)
    --    Interface_Name                (Node21)
    --    Scope_Depth_Value             (Uint22)
-   --    Scope_Depth                   (synth)
    --    Generic_Renamings             (Elist23)  (for an instance)
    --    Inner_Instances               (Elist23)  (for a generic function)
    --    Privals_Chain                 (Elist23)  (for a protected function)
+   --    Abstract_Interface_Alias      (Node25)
+   --    Overridden_Operation          (Node26)
+   --    Extra_Formals                 (Node28)
+   --    Body_Needed_For_SAL           (Flag40)
    --    Elaboration_Entity_Required   (Flag174)
    --    Function_Returns_With_DSP     (Flag169)
    --    Default_Expressions_Processed (Flag108)
    --    Delay_Cleanups                (Flag114)
    --    Delay_Subprogram_Descriptors  (Flag50)
    --    Discard_Names                 (Flag88)
-   --    Elaborate_All_Desirable       (Flag146)
    --    Has_Completion                (Flag26)
    --    Has_Controlling_Result        (Flag98)
    --    Has_Master_Entity             (Flag21)
    --    Has_Missing_Return            (Flag142)
    --    Has_Nested_Block_With_Handler (Flag101)
-   --    Has_Pragma_Pure_Function      (Flag179)  (non-generic case only)
    --    Has_Recursive_Call            (Flag143)
    --    Has_Subprogram_Descriptor     (Flag93)
    --    Is_Abstract                   (Flag19)
    --    Is_Called                     (Flag102)  (non-generic case only)
    --    Is_Constructor                (Flag76)
-   --    Is_Destructor                 (Flag77)
    --    Is_Discrim_SO_Function        (Flag176)
    --    Is_Eliminated                 (Flag124)
    --    Is_Instantiated               (Flag126)  (generic case only)
    --    Is_Intrinsic_Subprogram       (Flag64)
    --    Is_Machine_Code_Subprogram    (Flag137)  (non-generic case only)
+   --    Is_Overriding_Operation       (Flag39)   (non-generic case only)
    --    Is_Private_Descendant         (Flag53)
    --    Is_Pure                       (Flag44)
+   --    Is_Thread_Body                (Flag77)   (non-generic case only)
    --    Is_Visible_Child_Unit         (Flag116)
    --    Needs_No_Actuals              (Flag22)
    --    Return_Present                (Flag54)
@@ -4105,7 +4666,9 @@ package Einfo is
    --    Uses_Sec_Stack                (Flag95)
    --    Address_Clause                (synth)
    --    First_Formal                  (synth)
+   --    First_Formal_With_Extras      (synth)
    --    Number_Formals                (synth)
+   --    Scope_Depth                   (synth)
 
    --  E_General_Access_Type
    --    Storage_Size_Variable         (Node15)   (base type only)
@@ -4117,6 +4680,7 @@ package Einfo is
 
    --  E_Generic_In_Parameter
    --  E_Generic_In_Out_Parameter
+   --    Current_Value                 (Node9)    (always Empty)
    --    Entry_Component               (Node11)
    --    Actual_Subtype                (Node17)
    --    Renamed_Object                (Node18)   (always Empty)
@@ -4124,20 +4688,24 @@ package Einfo is
    --    Protected_Formal              (Node22)
    --    Is_Controlling_Formal         (Flag97)
    --    Is_Entry_Formal               (Flag52)
+   --    Is_Return_Object              (Flag209)
    --    Parameter_Mode                (synth)
 
    --  E_Incomplete_Type
+   --  E_Incomplete_Subtype
+   --    Non_Limited_View              (Node17)
    --    Private_Dependents            (Elist18)
    --    Discriminant_Constraint       (Elist21)
-   --    Girder_Constraint             (Elist23)
+   --    Stored_Constraint             (Elist23)
    --    First_Discriminant            (synth)
-   --    First_Girder_Discriminant     (synth)
+   --    First_Stored_Discriminant     (synth)
    --    (plus type attributes)
 
    --  E_In_Parameter
    --  E_In_Out_Parameter
    --  E_Out_Parameter
    --    Mechanism                     (Uint8)    (returns Mechanism_Type)
+   --    Current_Value                 (Node9)
    --    Discriminal_Link              (Node10)   (discriminals only)
    --    Entry_Component               (Node11)
    --    Esize                         (Uint12)
@@ -4155,7 +4723,9 @@ package Einfo is
    --    Is_Controlling_Formal         (Flag97)
    --    Is_Entry_Formal               (Flag52)
    --    Is_Optional_Parameter         (Flag134)
-   --    Not_Source_Assigned           (Flag115)
+   --    Low_Bound_Known               (Flag205)
+   --    Never_Set_In_Source           (Flag115)
+   --    Is_Return_Object              (Flag209)
    --    Parameter_Mode                (synth)
 
    --  E_Label
@@ -4170,11 +4740,10 @@ package Einfo is
    --    Last_Entity                   (Node20)
    --    Discriminant_Constraint       (Elist21)
    --    Private_View                  (Node22)
-   --    Girder_Constraint             (Elist23)
+   --    Stored_Constraint             (Elist23)
    --    Has_Completion                (Flag26)
-   --    Has_Completion_In_Body        (Flag71)
    --    First_Discriminant            (synth)
-   --    First_Girder_Discriminant     (synth)
+   --    First_Stored_Discriminant     (synth)
    --    (plus type attributes)
 
    --  E_Loop
@@ -4206,8 +4775,8 @@ package Einfo is
    --    Is_Machine_Code_Subprogram    (Flag137)
    --    Is_Pure                       (Flag44)
    --    Is_Intrinsic_Subprogram       (Flag64)
+   --    Is_Overriding_Operation       (Flag39)
    --    Default_Expressions_Processed (Flag108)
-   --    Has_Pragma_Pure_Function      (Flag179)
 
    --  E_Ordinary_Fixed_Point_Type
    --  E_Ordinary_Fixed_Point_Subtype
@@ -4224,6 +4793,7 @@ package Einfo is
    --    Dependent_Instances           (Elist8)   (for an instance)
    --    Renaming_Map                  (Uint9)
    --    Handler_Records               (List10)   (non-generic case only)
+   --    Generic_Homonym               (Node11)   (generic case only)
    --    Associated_Formal_Package     (Node12)
    --    Elaboration_Entity            (Node13)
    --    Shadow_Entities               (List14)
@@ -4235,13 +4805,16 @@ package Einfo is
    --    Last_Entity                   (Node20)
    --    Interface_Name                (Node21)
    --    Scope_Depth_Value             (Uint22)
-   --    Scope_Depth                   (synth)
    --    Generic_Renamings             (Elist23)  (for an instance)
    --    Inner_Instances               (Elist23)  (generic case only)
+   --    Limited_View                  (Node23)   (non-generic, not instance)
+   --    Current_Use_Clause            (Node25)
+   --    Package_Instantiation         (Node26)
    --    Delay_Subprogram_Descriptors  (Flag50)
+   --    Body_Needed_For_SAL           (Flag40)
    --    Discard_Names                 (Flag88)
-   --    Elaborate_All_Desirable       (Flag146)
    --    Elaboration_Entity_Required   (Flag174)
+   --    Elaborate_Body_Desirable      (Flag210)  (non-generic case only)
    --    From_With_Type                (Flag159)
    --    Has_All_Calls_Remote          (Flag79)
    --    Has_Completion                (Flag26)
@@ -4255,9 +4828,11 @@ package Einfo is
    --    Is_Private_Descendant         (Flag53)
    --    Is_Visible_Child_Unit         (Flag116)
    --    Is_Wrapper_Package            (synth)    (non-generic case only)
+   --    Scope_Depth                   (synth)
 
    --  E_Package_Body
    --    Handler_Records               (List10)   (non-generic case only)
+   --    Related_Instance              (Node15)   (non-generic case only)
    --    First_Entity                  (Node17)
    --    Spec_Entity                   (Node19)
    --    Last_Entity                   (Node20)
@@ -4275,13 +4850,12 @@ package Einfo is
    --    Last_Entity                   (Node20)
    --    Discriminant_Constraint       (Elist21)
    --    Private_View                  (Node22)
-   --    Girder_Constraint             (Elist23)
+   --    Stored_Constraint             (Elist23)
    --    Has_Completion                (Flag26)
-   --    Has_Completion_In_Body        (Flag71)
    --    Is_Controlled                 (Flag42)   (base type only)
    --    Is_For_Access_Subtype         (Flag118)  (subtype only)
    --    First_Discriminant            (synth)
-   --    First_Girder_Discriminant     (synth)
+   --    First_Stored_Discriminant     (synth)
    --    (plus type attributes)
 
    --  E_Procedure
@@ -4305,32 +4879,37 @@ package Einfo is
    --    Generic_Renamings             (Elist23)  (for an instance)
    --    Inner_Instances               (Elist23)  (for a generic procedure)
    --    Privals_Chain                 (Elist23)  (for a protected procedure)
+   --    Abstract_Interface_Alias      (Node25)
+   --    Overridden_Operation          (Node26)
+   --    Wrapped_Entity                (Node27)   (non-generic case only)
+   --    Extra_Formals                 (Node28)
+   --    Body_Needed_For_SAL           (Flag40)
    --    Elaboration_Entity_Required   (Flag174)
    --    Function_Returns_With_DSP     (Flag169)  (always False for procedure)
    --    Default_Expressions_Processed (Flag108)
    --    Delay_Cleanups                (Flag114)
    --    Delay_Subprogram_Descriptors  (Flag50)
    --    Discard_Names                 (Flag88)
-   --    Elaborate_All_Desirable       (Flag146)
    --    Has_Completion                (Flag26)
    --    Has_Master_Entity             (Flag21)
    --    Has_Nested_Block_With_Handler (Flag101)
-   --    Has_Pragma_Pure_Function      (Flag179)  (non-generic case only)
    --    Has_Subprogram_Descriptor     (Flag93)
    --    Is_Visible_Child_Unit         (Flag116)
    --    Is_Abstract                   (Flag19)
    --    Is_Asynchronous               (Flag81)
    --    Is_Called                     (Flag102)  (non-generic subprogram)
    --    Is_Constructor                (Flag76)
-   --    Is_Destructor                 (Flag77)
    --    Is_Eliminated                 (Flag124)
    --    Is_Instantiated               (Flag126)  (generic case only)
    --    Is_Interrupt_Handler          (Flag89)
    --    Is_Intrinsic_Subprogram       (Flag64)
    --    Is_Machine_Code_Subprogram    (Flag137)  (non-generic case only)
    --    Is_Null_Init_Proc             (Flag178)
+   --    Is_Overriding_Operation       (Flag39)   (non-generic case only)
+   --    Is_Primitive_Wrapper          (Flag195)  (non-generic case only)
    --    Is_Private_Descendant         (Flag53)
    --    Is_Pure                       (Flag44)
+   --    Is_Thread_Body                (Flag77)   (non-generic case only)
    --    Is_Valued_Procedure           (Flag127)
    --    Is_Visible_Child_Unit         (Flag116)
    --    Needs_No_Actuals              (Flag22)
@@ -4338,6 +4917,7 @@ package Einfo is
    --    Sec_Stack_Needed_For_Return   (Flag167)
    --    Address_Clause                (synth)
    --    First_Formal                  (synth)
+   --    First_Formal_With_Extras      (synth)
    --    Number_Formals                (synth)
 
    --  E_Protected_Body
@@ -4357,8 +4937,7 @@ package Einfo is
    --    Discriminant_Constraint       (Elist21)
    --    Scope_Depth_Value             (Uint22)
    --    Scope_Depth                   (synth)
-   --    Girder_Constraint             (Elist23)
-   --    Has_Controlled_Component      (Flag43)   (base type only)
+   --    Stored_Constraint             (Elist23)
    --    Has_Interrupt_Handler         (synth)
    --    Sec_Stack_Needed_For_Return   (Flag167) ???
    --    Uses_Sec_Stack                (Flag95) ???
@@ -4368,7 +4947,7 @@ package Einfo is
    --  E_Record_Type
    --  E_Record_Subtype
    --    Primitive_Operations          (Elist15)
-   --    Access_Disp_Table             (Node16)   (base type only)
+   --    Access_Disp_Table             (Elist16)  (base type only)
    --    Cloned_Subtype                (Node16)   (subtype case only)
    --    First_Entity                  (Node17)
    --    Corresponding_Concurrent_Type (Node18)
@@ -4376,48 +4955,54 @@ package Einfo is
    --    Last_Entity                   (Node20)
    --    Discriminant_Constraint       (Elist21)
    --    Corresponding_Remote_Type     (Node22)
-   --    Girder_Constraint             (Elist23)
+   --    Stored_Constraint             (Elist23)
+   --    Abstract_Interfaces           (Elist25)
    --    Component_Alignment           (special)  (base type only)
    --    C_Pass_By_Copy                (Flag125)  (base type only)
-   --    Has_Controlled_Component      (Flag43)   (base type only)
    --    Has_External_Tag_Rep_Clause   (Flag110)
    --    Has_Record_Rep_Clause         (Flag65)   (base type only)
+   --    Has_Static_Discriminants      (Flag211)  (subtype only)
+   --    Is_Class_Wide_Equivalent_Type (Flag35)
    --    Is_Concurrent_Record_Type     (Flag20)
    --    Is_Constrained                (Flag12)
    --    Is_Controlled                 (Flag42)   (base type only)
+   --    Is_Interface                  (Flag186)
    --    Reverse_Bit_Order             (Flag164)  (base type only)
    --    First_Component               (synth)
    --    First_Discriminant            (synth)
-   --    First_Girder_Discriminant     (synth)
-   --    Tag_Component                 (synth)
+   --    First_Stored_Discriminant     (synth)
+   --    First_Tag_Component           (synth)
    --    (plus type attributes)
 
    --  E_Record_Type_With_Private
    --  E_Record_Subtype_With_Private
    --    Primitive_Operations          (Elist15)
-   --    Access_Disp_Table             (Node16)   (base type only)
+   --    Access_Disp_Table             (Elist16)  (base type only)
    --    First_Entity                  (Node17)
    --    Private_Dependents            (Elist18)
    --    Underlying_Full_View          (Node19)
    --    Last_Entity                   (Node20)
    --    Discriminant_Constraint       (Elist21)
    --    Private_View                  (Node22)
-   --    Girder_Constraint             (Elist23)
+   --    Stored_Constraint             (Elist23)
+   --    Abstract_Interfaces           (Elist25)
    --    Has_Completion                (Flag26)
-   --    Has_Completion_In_Body        (Flag71)
-   --    Has_Controlled_Component      (Flag43)   (base type only)
    --    Has_Record_Rep_Clause         (Flag65)   (base type only)
    --    Has_External_Tag_Rep_Clause   (Flag110)
    --    Is_Concurrent_Record_Type     (Flag20)
    --    Is_Constrained                (Flag12)
    --    Is_Controlled                 (Flag42)   (base type only)
+   --    Is_Interface                  (Flag186)
    --    Reverse_Bit_Order             (Flag164)  (base type only)
    --    First_Component               (synth)
    --    First_Discriminant            (synth)
-   --    First_Girder_Discriminant     (synth)
-   --    Tag_Component                 (synth)
+   --    First_Stored_Discriminant     (synth)
+   --    First_Tag_Component           (synth)
    --    (plus type attributes)
 
+   --  E_Return_Statement
+   --    Return_Applies_To             (Node8)
+
    --  E_Signed_Integer_Type
    --  E_Signed_Integer_Subtype
    --    Scalar_Range                  (Node20)
@@ -4452,6 +5037,7 @@ package Einfo is
    --  E_Subprogram_Type
    --    Directly_Designated_Type      (Node20)
    --    First_Formal                  (synth)
+   --    First_Formal_With_Extras      (synth)
    --    Number_Formals                (synth)
    --    Function_Returns_With_DSP     (Flag169)
    --    (plus type attributes)
@@ -4470,7 +5056,8 @@ package Einfo is
    --    Discriminant_Constraint       (Elist21)
    --    Scope_Depth_Value             (Uint22)
    --    Scope_Depth                   (synth)
-   --    Girder_Constraint             (Elist23)
+   --    Stored_Constraint             (Elist23)
+   --    Task_Body_Procedure           (Node25)
    --    Delay_Cleanups                (Flag114)
    --    Has_Master_Entity             (Flag21)
    --    Has_Storage_Size_Clause       (Flag23)   (base type only)
@@ -4482,7 +5069,7 @@ package Einfo is
 
    --  E_Variable
    --    Hiding_Loop_Variable          (Node8)
-   --    Size_Check_Code               (Node9)
+   --    Current_Value                 (Node9)
    --    Esize                         (Uint12)
    --    Extra_Accessibility           (Node13)
    --    Alignment                     (Uint14)
@@ -4490,6 +5077,8 @@ package Einfo is
    --    Unset_Reference               (Node16)
    --    Actual_Subtype                (Node17)
    --    Renamed_Object                (Node18)
+   --    Size_Check_Code               (Node19)
+   --    Last_Assignment               (Node20)
    --    Interface_Name                (Node21)
    --    Shared_Var_Assign_Proc        (Node22)
    --    Extra_Constrained             (Node23)
@@ -4498,15 +5087,18 @@ package Einfo is
    --    Has_Biased_Representation     (Flag139)
    --    Has_Size_Clause               (Flag29)
    --    Has_Volatile_Components       (Flag87)
+   --    In_Private_Part               (Flag45)
    --    Is_Atomic                     (Flag85)
    --    Is_Eliminated                 (Flag124)
-   --    Is_Psected                    (Flag153)
    --    Is_Shared_Passive             (Flag60)
    --    Is_True_Constant              (Flag163)
    --    Is_Volatile                   (Flag16)
-   --    Not_Source_Assigned           (Flag115)
+   --    Never_Set_In_Source           (Flag115)
+   --    Treat_As_Volatile             (Flag41)
+   --    Is_Return_Object              (Flag209)
    --    Address_Clause                (synth)
    --    Alignment_Clause              (synth)
+   --    Constant_Value                (synth)
    --    Size_Clause                   (synth)
 
    --  E_Void
@@ -4575,22 +5167,12 @@ package Einfo is
 
    --  There are three ways that checks can be suppressed:
 
-   --    1.  At the command line level. Package Opt contains global Boolean
-   --        flags with names Suppress_Options.xxx_Checks, where xxx is the
-   --        name of one of the checks that can be suppressed (excluding
-   --        All_Checks, which is simply reflected by setting all the
-   --        individual flags)
+   --    1.  At the command line level
+   --    2.  At the scope level.
+   --    3.  At the entity level.
 
-   --    2.  At the scope level. The body of Sem contains flags with names
-   --        Suppress.xxx_Checks which are set to indicate that the given
-   --        check is suppressed for the current scope. These flags are
-   --        saved in the scope stack on entry to a scope and restored on
-   --        exit from the scope.
-
-   --    3.  At the entity level. Each entity contains a set of flags named
-   --        Suppress_xxx_Checks which suppress the given check for that
-   --        particularly entity (of course not all flags are meaningful for
-   --        all entities).
+   --  See spec of Sem in sem.ads for details of the data structures used
+   --  to keep track of these various methods for suppressing checks.
 
    -------------------------------
    -- Handling of Discriminants --
@@ -4740,19 +5322,21 @@ package Einfo is
    subtype L is Elist_Id;
    subtype S is List_Id;
 
-   ---------------------------------
-   --  Attribute Access Functions --
-   ---------------------------------
+   --------------------------------
+   -- Attribute Access Functions --
+   --------------------------------
 
    --  All attributes are manipulated through a procedural interface. This
    --  section contains the functions used to obtain attribute values which
    --  correspond to values in fields or flags in the entity itself.
 
+   function Abstract_Interfaces                (Id : E) return L;
    function Accept_Address                     (Id : E) return L;
-   function Access_Disp_Table                  (Id : E) return E;
+   function Access_Disp_Table                  (Id : E) return L;
    function Actual_Subtype                     (Id : E) return E;
    function Address_Taken                      (Id : E) return B;
    function Alias                              (Id : E) return E;
+   function Abstract_Interface_Alias           (Id : E) return E;
    function Alignment                          (Id : E) return U;
    function Associated_Final_Chain             (Id : E) return E;
    function Associated_Formal_Package          (Id : E) return E;
@@ -4761,8 +5345,11 @@ package Einfo is
    function Barrier_Function                   (Id : E) return N;
    function Block_Node                         (Id : E) return N;
    function Body_Entity                        (Id : E) return E;
+   function Body_Needed_For_SAL                (Id : E) return B;
    function CR_Discriminant                    (Id : E) return E;
    function C_Pass_By_Copy                     (Id : E) return B;
+   function Can_Never_Be_Null                  (Id : E) return B;
+   function Checks_May_Be_Suppressed           (Id : E) return B;
    function Class_Wide_Type                    (Id : E) return E;
    function Cloned_Subtype                     (Id : E) return E;
    function Component_Alignment                (Id : E) return C;
@@ -4775,10 +5362,13 @@ package Einfo is
    function Corresponding_Equality             (Id : E) return E;
    function Corresponding_Record_Type          (Id : E) return E;
    function Corresponding_Remote_Type          (Id : E) return E;
+   function Current_Use_Clause                 (Id : E) return E;
+   function Current_Value                      (Id : E) return N;
    function Debug_Info_Off                     (Id : E) return B;
    function Debug_Renaming_Link                (Id : E) return E;
    function DTC_Entity                         (Id : E) return E;
    function DT_Entry_Count                     (Id : E) return U;
+   function DT_Offset_To_Top_Func              (Id : E) return E;
    function DT_Position                        (Id : E) return U;
    function Default_Expr_Function              (Id : E) return E;
    function Default_Expressions_Processed      (Id : E) return B;
@@ -4797,7 +5387,7 @@ package Einfo is
    function Discriminant_Constraint            (Id : E) return L;
    function Discriminant_Default_Value         (Id : E) return N;
    function Discriminant_Number                (Id : E) return U;
-   function Elaborate_All_Desirable            (Id : E) return B;
+   function Elaborate_Body_Desirable           (Id : E) return B;
    function Elaboration_Entity                 (Id : E) return E;
    function Elaboration_Entity_Required        (Id : E) return B;
    function Enclosing_Scope                    (Id : E) return E;
@@ -4819,6 +5409,7 @@ package Einfo is
    function Extra_Accessibility                (Id : E) return E;
    function Extra_Constrained                  (Id : E) return E;
    function Extra_Formal                       (Id : E) return E;
+   function Extra_Formals                      (Id : E) return E;
    function Finalization_Chain_Entity          (Id : E) return E;
    function Finalize_Storage_Only              (Id : E) return B;
    function First_Entity                       (Id : E) return E;
@@ -4831,18 +5422,21 @@ package Einfo is
    function From_With_Type                     (Id : E) return B;
    function Full_View                          (Id : E) return E;
    function Function_Returns_With_DSP          (Id : E) return B;
+   function Generic_Homonym                    (Id : E) return E;
    function Generic_Renamings                  (Id : E) return L;
-   function Girder_Constraint                  (Id : E) return L;
    function Handler_Records                    (Id : E) return S;
    function Has_Aliased_Components             (Id : E) return B;
    function Has_Alignment_Clause               (Id : E) return B;
    function Has_All_Calls_Remote               (Id : E) return B;
+   function Has_Anon_Block_Suffix              (Id : E) return B;
    function Has_Atomic_Components              (Id : E) return B;
    function Has_Biased_Representation          (Id : E) return B;
    function Has_Completion                     (Id : E) return B;
    function Has_Completion_In_Body             (Id : E) return B;
    function Has_Complex_Representation         (Id : E) return B;
    function Has_Component_Size_Clause          (Id : E) return B;
+   function Has_Constrained_Partial_View       (Id : E) return B;
+   function Has_Contiguous_Rep                 (Id : E) return B;
    function Has_Controlled_Component           (Id : E) return B;
    function Has_Controlling_Result             (Id : E) return B;
    function Has_Convention_Pragma              (Id : E) return B;
@@ -4863,10 +5457,12 @@ package Einfo is
    function Has_Non_Standard_Rep               (Id : E) return B;
    function Has_Object_Size_Clause             (Id : E) return B;
    function Has_Per_Object_Constraint          (Id : E) return B;
+   function Has_Persistent_BSS                 (Id : E) return B;
    function Has_Pragma_Controlled              (Id : E) return B;
    function Has_Pragma_Elaborate_Body          (Id : E) return B;
    function Has_Pragma_Inline                  (Id : E) return B;
    function Has_Pragma_Pack                    (Id : E) return B;
+   function Has_Pragma_Pure                    (Id : E) return B;
    function Has_Pragma_Pure_Function           (Id : E) return B;
    function Has_Pragma_Unreferenced            (Id : E) return B;
    function Has_Primitive_Operations           (Id : E) return B;
@@ -4876,14 +5472,21 @@ package Einfo is
    function Has_Size_Clause                    (Id : E) return B;
    function Has_Small_Clause                   (Id : E) return B;
    function Has_Specified_Layout               (Id : E) return B;
+   function Has_Specified_Stream_Input         (Id : E) return B;
+   function Has_Specified_Stream_Output        (Id : E) return B;
+   function Has_Specified_Stream_Read          (Id : E) return B;
+   function Has_Specified_Stream_Write         (Id : E) return B;
+   function Has_Static_Discriminants           (Id : E) return B;
    function Has_Storage_Size_Clause            (Id : E) return B;
+   function Has_Stream_Size_Clause             (Id : E) return B;
    function Has_Subprogram_Descriptor          (Id : E) return B;
    function Has_Task                           (Id : E) return B;
    function Has_Unchecked_Union                (Id : E) return B;
    function Has_Unknown_Discriminants          (Id : E) return B;
    function Has_Volatile_Components            (Id : E) return B;
-   function Homonym                            (Id : E) return E;
+   function Has_Xref_Entry                     (Id : E) return B;
    function Hiding_Loop_Variable               (Id : E) return E;
+   function Homonym                            (Id : E) return E;
    function In_Package_Body                    (Id : E) return B;
    function In_Private_Part                    (Id : E) return B;
    function In_Use                             (Id : E) return B;
@@ -4891,7 +5494,9 @@ package Einfo is
    function Interface_Name                     (Id : E) return N;
    function Is_AST_Entry                       (Id : E) return B;
    function Is_Abstract                        (Id : E) return B;
+   function Is_Local_Anonymous_Access          (Id : E) return B;
    function Is_Access_Constant                 (Id : E) return B;
+   function Is_Ada_2005_Only                   (Id : E) return B;
    function Is_Aliased                         (Id : E) return B;
    function Is_Asynchronous                    (Id : E) return B;
    function Is_Atomic                          (Id : E) return B;
@@ -4900,6 +5505,7 @@ package Einfo is
    function Is_Called                          (Id : E) return B;
    function Is_Character_Type                  (Id : E) return B;
    function Is_Child_Unit                      (Id : E) return B;
+   function Is_Class_Wide_Equivalent_Type      (Id : E) return B;
    function Is_Compilation_Unit                (Id : E) return B;
    function Is_Completely_Hidden               (Id : E) return B;
    function Is_Constr_Subt_For_UN_Aliased      (Id : E) return B;
@@ -4908,7 +5514,6 @@ package Einfo is
    function Is_Constructor                     (Id : E) return B;
    function Is_Controlled                      (Id : E) return B;
    function Is_Controlling_Formal              (Id : E) return B;
-   function Is_Destructor                      (Id : E) return B;
    function Is_Discrim_SO_Function             (Id : E) return B;
    function Is_Dispatching_Operation           (Id : E) return B;
    function Is_Eliminated                      (Id : E) return B;
@@ -4923,64 +5528,91 @@ package Einfo is
    function Is_Immediately_Visible             (Id : E) return B;
    function Is_Imported                        (Id : E) return B;
    function Is_Inlined                         (Id : E) return B;
+   function Is_Interface                       (Id : E) return B;
    function Is_Instantiated                    (Id : E) return B;
    function Is_Internal                        (Id : E) return B;
    function Is_Interrupt_Handler               (Id : E) return B;
    function Is_Intrinsic_Subprogram            (Id : E) return B;
    function Is_Itype                           (Id : E) return B;
+   function Is_Known_Non_Null                  (Id : E) return B;
+   function Is_Known_Null                      (Id : E) return B;
    function Is_Known_Valid                     (Id : E) return B;
    function Is_Limited_Composite               (Id : E) return B;
+   function Is_Limited_Interface               (Id : E) return B;
    function Is_Machine_Code_Subprogram         (Id : E) return B;
    function Is_Non_Static_Subtype              (Id : E) return B;
    function Is_Null_Init_Proc                  (Id : E) return B;
+   function Is_Obsolescent                     (Id : E) return B;
    function Is_Optional_Parameter              (Id : E) return B;
    function Is_Package_Body_Entity             (Id : E) return B;
    function Is_Packed                          (Id : E) return B;
    function Is_Packed_Array_Type               (Id : E) return B;
    function Is_Potentially_Use_Visible         (Id : E) return B;
    function Is_Preelaborated                   (Id : E) return B;
+   function Is_Primitive_Wrapper               (Id : E) return B;
    function Is_Private_Composite               (Id : E) return B;
    function Is_Private_Descendant              (Id : E) return B;
-   function Is_Psected                         (Id : E) return B;
+   function Is_Protected_Interface             (Id : E) return B;
    function Is_Public                          (Id : E) return B;
    function Is_Pure                            (Id : E) return B;
+   function Is_Pure_Unit_Access_Type           (Id : E) return B;
    function Is_Remote_Call_Interface           (Id : E) return B;
    function Is_Remote_Types                    (Id : E) return B;
    function Is_Renaming_Of_Object              (Id : E) return B;
+   function Is_Return_Object                   (Id : E) return B;
    function Is_Shared_Passive                  (Id : E) return B;
    function Is_Statically_Allocated            (Id : E) return B;
+   function Is_Synchronized_Interface          (Id : E) return B;
    function Is_Tag                             (Id : E) return B;
    function Is_Tagged_Type                     (Id : E) return B;
+   function Is_Task_Interface                  (Id : E) return B;
+   function Is_Thread_Body                     (Id : E) return B;
    function Is_True_Constant                   (Id : E) return B;
    function Is_Unchecked_Union                 (Id : E) return B;
    function Is_Unsigned_Type                   (Id : E) return B;
    function Is_VMS_Exception                   (Id : E) return B;
    function Is_Valued_Procedure                (Id : E) return B;
    function Is_Visible_Child_Unit              (Id : E) return B;
+   function Is_Visible_Formal                  (Id : E) return B;
    function Is_Volatile                        (Id : E) return B;
-   function Is_Wrapper_Package                 (Id : E) return B;
+   function Itype_Printed                      (Id : E) return B;
+   function Kill_Elaboration_Checks            (Id : E) return B;
+   function Kill_Range_Checks                  (Id : E) return B;
+   function Kill_Tag_Checks                    (Id : E) return B;
+   function Known_To_Have_Preelab_Init         (Id : E) return B;
+   function Last_Assignment                    (Id : E) return N;
    function Last_Entity                        (Id : E) return E;
+   function Limited_View                       (Id : E) return E;
    function Lit_Indexes                        (Id : E) return E;
    function Lit_Strings                        (Id : E) return E;
+   function Low_Bound_Known                    (Id : E) return B;
    function Machine_Radix_10                   (Id : E) return B;
    function Master_Id                          (Id : E) return E;
    function Materialize_Entity                 (Id : E) return B;
    function Mechanism                          (Id : E) return M;
    function Modulus                            (Id : E) return U;
+   function Must_Be_On_Byte_Boundary           (Id : E) return B;
+   function Must_Have_Preelab_Init             (Id : E) return B;
    function Needs_Debug_Info                   (Id : E) return B;
    function Needs_No_Actuals                   (Id : E) return B;
+   function Never_Set_In_Source                (Id : E) return B;
    function Next_Inlined_Subprogram            (Id : E) return E;
    function No_Pool_Assigned                   (Id : E) return B;
    function No_Return                          (Id : E) return B;
+   function No_Strict_Aliasing                 (Id : E) return B;
    function Non_Binary_Modulus                 (Id : E) return B;
+   function Non_Limited_View                   (Id : E) return E;
    function Nonzero_Is_True                    (Id : E) return B;
    function Normalized_First_Bit               (Id : E) return U;
    function Normalized_Position                (Id : E) return U;
    function Normalized_Position_Max            (Id : E) return U;
-   function Not_Source_Assigned                (Id : E) return B;
    function Object_Ref                         (Id : E) return E;
+   function Obsolescent_Warning                (Id : E) return N;
+   function Original_Access_Type               (Id : E) return E;
    function Original_Array_Type                (Id : E) return E;
    function Original_Record_Component          (Id : E) return E;
+   function Overridden_Operation               (Id : E) return E;
+   function Package_Instantiation              (Id : E) return N;
    function Packed_Array_Type                  (Id : E) return E;
    function Parent_Subtype                     (Id : E) return E;
    function Primitive_Operations               (Id : E) return L;
@@ -4994,6 +5626,7 @@ package Einfo is
    function RM_Size                            (Id : E) return U;
    function Reachable                          (Id : E) return B;
    function Referenced                         (Id : E) return B;
+   function Referenced_As_LHS                  (Id : E) return B;
    function Referenced_Object                  (Id : E) return N;
    function Register_Exception_Call            (Id : E) return N;
    function Related_Array_Object               (Id : E) return E;
@@ -5002,6 +5635,7 @@ package Einfo is
    function Renamed_Object                     (Id : E) return N;
    function Renaming_Map                       (Id : E) return U;
    function Return_Present                     (Id : E) return B;
+   function Return_Applies_To                  (Id : E) return N;
    function Returns_By_Ref                     (Id : E) return B;
    function Reverse_Bit_Order                  (Id : E) return B;
    function Scalar_Range                       (Id : E) return N;
@@ -5017,28 +5651,22 @@ package Einfo is
    function Small_Value                        (Id : E) return R;
    function Spec_Entity                        (Id : E) return E;
    function Storage_Size_Variable              (Id : E) return E;
+   function Stored_Constraint                  (Id : E) return L;
    function Strict_Alignment                   (Id : E) return B;
    function String_Literal_Length              (Id : E) return U;
    function String_Literal_Low_Bound           (Id : E) return N;
-   function Suppress_Access_Checks             (Id : E) return B;
-   function Suppress_Accessibility_Checks      (Id : E) return B;
-   function Suppress_Discriminant_Checks       (Id : E) return B;
-   function Suppress_Division_Checks           (Id : E) return B;
-   function Suppress_Elaboration_Checks        (Id : E) return B;
    function Suppress_Elaboration_Warnings      (Id : E) return B;
-   function Suppress_Index_Checks              (Id : E) return B;
    function Suppress_Init_Proc                 (Id : E) return B;
-   function Suppress_Length_Checks             (Id : E) return B;
-   function Suppress_Overflow_Checks           (Id : E) return B;
-   function Suppress_Range_Checks              (Id : E) return B;
-   function Suppress_Storage_Checks            (Id : E) return B;
    function Suppress_Style_Checks              (Id : E) return B;
-   function Suppress_Tag_Checks                (Id : E) return B;
+   function Task_Body_Procedure                (Id : E) return N;
+   function Treat_As_Volatile                  (Id : E) return B;
    function Underlying_Full_View               (Id : E) return E;
    function Unset_Reference                    (Id : E) return N;
    function Uses_Sec_Stack                     (Id : E) return B;
    function Vax_Float                          (Id : E) return B;
    function Warnings_Off                       (Id : E) return B;
+   function Was_Hidden                         (Id : E) return B;
+   function Wrapped_Entity                     (Id : E) return E;
 
    -------------------------------
    -- Classification Attributes --
@@ -5067,11 +5695,14 @@ package Einfo is
    function Is_Fixed_Point_Type                (Id : E) return B;
    function Is_Floating_Point_Type             (Id : E) return B;
    function Is_Formal                          (Id : E) return B;
+   function Is_Formal_Object                   (Id : E) return B;
    function Is_Formal_Subprogram               (Id : E) return B;
    function Is_Generic_Actual_Type             (Id : E) return B;
-   function Is_Generic_Type                    (Id : E) return B;
    function Is_Generic_Unit                    (Id : E) return B;
+   function Is_Generic_Type                    (Id : E) return B;
+   function Is_Generic_Subprogram              (Id : E) return B;
    function Is_Incomplete_Or_Private_Type      (Id : E) return B;
+   function Is_Incomplete_Type                 (Id : E) return B;
    function Is_Integer_Type                    (Id : E) return B;
    function Is_Limited_Record                  (Id : E) return B;
    function Is_Modular_Integer_Type            (Id : E) return B;
@@ -5080,6 +5711,7 @@ package Einfo is
    function Is_Object                          (Id : E) return B;
    function Is_Ordinary_Fixed_Point_Type       (Id : E) return B;
    function Is_Overloadable                    (Id : E) return B;
+   function Is_Overriding_Operation            (Id : E) return B;
    function Is_Private_Type                    (Id : E) return B;
    function Is_Protected_Type                  (Id : E) return B;
    function Is_Real_Type                       (Id : E) return B;
@@ -5108,7 +5740,8 @@ package Einfo is
    function First_Component                    (Id : E) return E;
    function First_Discriminant                 (Id : E) return E;
    function First_Formal                       (Id : E) return E;
-   function First_Girder_Discriminant          (Id : E) return E;
+   function First_Formal_With_Extras           (Id : E) return E;
+   function First_Stored_Discriminant          (Id : E) return E;
    function First_Subtype                      (Id : E) return E;
    function Has_Attach_Handler                 (Id : E) return B;
    function Has_Entries                        (Id : E) return B;
@@ -5124,18 +5757,19 @@ package Einfo is
    function Is_Dynamic_Scope                   (Id : E) return B;
    function Is_Indefinite_Subtype              (Id : E) return B;
    function Is_Limited_Type                    (Id : E) return B;
-   function Is_Package                         (Id : E) return B;
+   function Is_Package_Or_Generic_Package      (Id : E) return B;
    function Is_Protected_Private               (Id : E) return B;
    function Is_Protected_Record_Type           (Id : E) return B;
-   function Is_Return_By_Reference_Type        (Id : E) return B;
+   function Is_Inherently_Limited_Type         (Id : E) return B;
    function Is_String_Type                     (Id : E) return B;
    function Is_Task_Record_Type                (Id : E) return B;
+   function Is_Wrapper_Package                 (Id : E) return B;
    function Next_Component                     (Id : E) return E;
    function Next_Discriminant                  (Id : E) return E;
    function Next_Formal                        (Id : E) return E;
    function Next_Formal_With_Extras            (Id : E) return E;
-   function Next_Girder_Discriminant           (Id : E) return E;
    function Next_Literal                       (Id : E) return E;
+   function Next_Stored_Discriminant           (Id : E) return E;
    function Number_Dimensions                  (Id : E) return Pos;
    function Number_Discriminants               (Id : E) return Pos;
    function Number_Entries                     (Id : E) return Nat;
@@ -5144,7 +5778,9 @@ package Einfo is
    function Root_Type                          (Id : E) return E;
    function Scope_Depth_Set                    (Id : E) return B;
    function Size_Clause                        (Id : E) return N;
-   function Tag_Component                      (Id : E) return E;
+   function Stream_Size_Clause                 (Id : E) return N;
+   function First_Tag_Component                (Id : E) return E;
+   function Next_Tag_Component                 (Id : E) return E;
    function Type_High_Bound                    (Id : E) return N;
    function Type_Low_Bound                     (Id : E) return N;
    function Underlying_Type                    (Id : E) return E;
@@ -5209,11 +5845,13 @@ package Einfo is
    -- Attribute Set Procedures --
    ------------------------------
 
+   procedure Set_Abstract_Interfaces           (Id : E; V : L);
    procedure Set_Accept_Address                (Id : E; V : L);
-   procedure Set_Access_Disp_Table             (Id : E; V : E);
+   procedure Set_Access_Disp_Table             (Id : E; V : L);
    procedure Set_Actual_Subtype                (Id : E; V : E);
    procedure Set_Address_Taken                 (Id : E; V : B := True);
    procedure Set_Alias                         (Id : E; V : E);
+   procedure Set_Abstract_Interface_Alias      (Id : E; V : E);
    procedure Set_Alignment                     (Id : E; V : U);
    procedure Set_Associated_Final_Chain        (Id : E; V : E);
    procedure Set_Associated_Formal_Package     (Id : E; V : E);
@@ -5222,8 +5860,11 @@ package Einfo is
    procedure Set_Barrier_Function              (Id : E; V : N);
    procedure Set_Block_Node                    (Id : E; V : N);
    procedure Set_Body_Entity                   (Id : E; V : E);
+   procedure Set_Body_Needed_For_SAL           (Id : E; V : B := True);
    procedure Set_CR_Discriminant               (Id : E; V : E);
    procedure Set_C_Pass_By_Copy                (Id : E; V : B := True);
+   procedure Set_Can_Never_Be_Null             (Id : E; V : B := True);
+   procedure Set_Checks_May_Be_Suppressed      (Id : E; V : B := True);
    procedure Set_Class_Wide_Type               (Id : E; V : E);
    procedure Set_Cloned_Subtype                (Id : E; V : E);
    procedure Set_Component_Alignment           (Id : E; V : C);
@@ -5236,10 +5877,13 @@ package Einfo is
    procedure Set_Corresponding_Equality        (Id : E; V : E);
    procedure Set_Corresponding_Record_Type     (Id : E; V : E);
    procedure Set_Corresponding_Remote_Type     (Id : E; V : E);
+   procedure Set_Current_Use_Clause            (Id : E; V : E);
+   procedure Set_Current_Value                 (Id : E; V : N);
    procedure Set_Debug_Info_Off                (Id : E; V : B := True);
    procedure Set_Debug_Renaming_Link           (Id : E; V : E);
    procedure Set_DTC_Entity                    (Id : E; V : E);
    procedure Set_DT_Entry_Count                (Id : E; V : U);
+   procedure Set_DT_Offset_To_Top_Func         (Id : E; V : E);
    procedure Set_DT_Position                   (Id : E; V : U);
    procedure Set_Default_Expr_Function         (Id : E; V : E);
    procedure Set_Default_Expressions_Processed (Id : E; V : B := True);
@@ -5258,7 +5902,7 @@ package Einfo is
    procedure Set_Discriminant_Constraint       (Id : E; V : L);
    procedure Set_Discriminant_Default_Value    (Id : E; V : N);
    procedure Set_Discriminant_Number           (Id : E; V : U);
-   procedure Set_Elaborate_All_Desirable       (Id : E; V : B := True);
+   procedure Set_Elaborate_Body_Desirable      (Id : E; V : B := True);
    procedure Set_Elaboration_Entity            (Id : E; V : E);
    procedure Set_Elaboration_Entity_Required   (Id : E; V : B := True);
    procedure Set_Enclosing_Scope               (Id : E; V : E);
@@ -5279,6 +5923,7 @@ package Einfo is
    procedure Set_Extra_Accessibility           (Id : E; V : E);
    procedure Set_Extra_Constrained             (Id : E; V : E);
    procedure Set_Extra_Formal                  (Id : E; V : E);
+   procedure Set_Extra_Formals                 (Id : E; V : E);
    procedure Set_Finalization_Chain_Entity     (Id : E; V : E);
    procedure Set_Finalize_Storage_Only         (Id : E; V : B := True);
    procedure Set_First_Entity                  (Id : E; V : E);
@@ -5291,18 +5936,21 @@ package Einfo is
    procedure Set_From_With_Type                (Id : E; V : B := True);
    procedure Set_Full_View                     (Id : E; V : E);
    procedure Set_Function_Returns_With_DSP     (Id : E; V : B := True);
+   procedure Set_Generic_Homonym               (Id : E; V : E);
    procedure Set_Generic_Renamings             (Id : E; V : L);
-   procedure Set_Girder_Constraint             (Id : E; V : L);
    procedure Set_Handler_Records               (Id : E; V : S);
    procedure Set_Has_Aliased_Components        (Id : E; V : B := True);
    procedure Set_Has_Alignment_Clause          (Id : E; V : B := True);
    procedure Set_Has_All_Calls_Remote          (Id : E; V : B := True);
+   procedure Set_Has_Anon_Block_Suffix         (Id : E; V : B := True);
    procedure Set_Has_Atomic_Components         (Id : E; V : B := True);
    procedure Set_Has_Biased_Representation     (Id : E; V : B := True);
    procedure Set_Has_Completion                (Id : E; V : B := True);
    procedure Set_Has_Completion_In_Body        (Id : E; V : B := True);
    procedure Set_Has_Complex_Representation    (Id : E; V : B := True);
    procedure Set_Has_Component_Size_Clause     (Id : E; V : B := True);
+   procedure Set_Has_Constrained_Partial_View  (Id : E; V : B := True);
+   procedure Set_Has_Contiguous_Rep            (Id : E; V : B := True);
    procedure Set_Has_Controlled_Component      (Id : E; V : B := True);
    procedure Set_Has_Controlling_Result        (Id : E; V : B := True);
    procedure Set_Has_Convention_Pragma         (Id : E; V : B := True);
@@ -5322,10 +5970,12 @@ package Einfo is
    procedure Set_Has_Non_Standard_Rep          (Id : E; V : B := True);
    procedure Set_Has_Object_Size_Clause        (Id : E; V : B := True);
    procedure Set_Has_Per_Object_Constraint     (Id : E; V : B := True);
+   procedure Set_Has_Persistent_BSS            (Id : E; V : B := True);
    procedure Set_Has_Pragma_Controlled         (Id : E; V : B := True);
    procedure Set_Has_Pragma_Elaborate_Body     (Id : E; V : B := True);
    procedure Set_Has_Pragma_Inline             (Id : E; V : B := True);
    procedure Set_Has_Pragma_Pack               (Id : E; V : B := True);
+   procedure Set_Has_Pragma_Pure               (Id : E; V : B := True);
    procedure Set_Has_Pragma_Pure_Function      (Id : E; V : B := True);
    procedure Set_Has_Pragma_Unreferenced       (Id : E; V : B := True);
    procedure Set_Has_Primitive_Operations      (Id : E; V : B := True);
@@ -5336,12 +5986,19 @@ package Einfo is
    procedure Set_Has_Size_Clause               (Id : E; V : B := True);
    procedure Set_Has_Small_Clause              (Id : E; V : B := True);
    procedure Set_Has_Specified_Layout          (Id : E; V : B := True);
+   procedure Set_Has_Specified_Stream_Input    (Id : E; V : B := True);
+   procedure Set_Has_Specified_Stream_Output   (Id : E; V : B := True);
+   procedure Set_Has_Specified_Stream_Read     (Id : E; V : B := True);
+   procedure Set_Has_Specified_Stream_Write    (Id : E; V : B := True);
+   procedure Set_Has_Static_Discriminants      (Id : E; V : B := True);
    procedure Set_Has_Storage_Size_Clause       (Id : E; V : B := True);
+   procedure Set_Has_Stream_Size_Clause        (Id : E; V : B := True);
    procedure Set_Has_Subprogram_Descriptor     (Id : E; V : B := True);
    procedure Set_Has_Task                      (Id : E; V : B := True);
    procedure Set_Has_Unchecked_Union           (Id : E; V : B := True);
    procedure Set_Has_Unknown_Discriminants     (Id : E; V : B := True);
    procedure Set_Has_Volatile_Components       (Id : E; V : B := True);
+   procedure Set_Has_Xref_Entry                (Id : E; V : B := True);
    procedure Set_Hiding_Loop_Variable          (Id : E; V : E);
    procedure Set_Homonym                       (Id : E; V : E);
    procedure Set_In_Package_Body               (Id : E; V : B := True);
@@ -5351,7 +6008,9 @@ package Einfo is
    procedure Set_Interface_Name                (Id : E; V : N);
    procedure Set_Is_AST_Entry                  (Id : E; V : B := True);
    procedure Set_Is_Abstract                   (Id : E; V : B := True);
+   procedure Set_Is_Local_Anonymous_Access     (Id : E; V : B := True);
    procedure Set_Is_Access_Constant            (Id : E; V : B := True);
+   procedure Set_Is_Ada_2005_Only              (Id : E; V : B := True);
    procedure Set_Is_Aliased                    (Id : E; V : B := True);
    procedure Set_Is_Asynchronous               (Id : E; V : B := True);
    procedure Set_Is_Atomic                     (Id : E; V : B := True);
@@ -5360,6 +6019,7 @@ package Einfo is
    procedure Set_Is_Called                     (Id : E; V : B := True);
    procedure Set_Is_Character_Type             (Id : E; V : B := True);
    procedure Set_Is_Child_Unit                 (Id : E; V : B := True);
+   procedure Set_Is_Class_Wide_Equivalent_Type (Id : E; V : B := True);
    procedure Set_Is_Compilation_Unit           (Id : E; V : B := True);
    procedure Set_Is_Completely_Hidden          (Id : E; V : B := True);
    procedure Set_Is_Concurrent_Record_Type     (Id : E; V : B := True);
@@ -5369,7 +6029,6 @@ package Einfo is
    procedure Set_Is_Constructor                (Id : E; V : B := True);
    procedure Set_Is_Controlled                 (Id : E; V : B := True);
    procedure Set_Is_Controlling_Formal         (Id : E; V : B := True);
-   procedure Set_Is_Destructor                 (Id : E; V : B := True);
    procedure Set_Is_Discrim_SO_Function        (Id : E; V : B := True);
    procedure Set_Is_Dispatching_Operation      (Id : E; V : B := True);
    procedure Set_Is_Eliminated                 (Id : E; V : B := True);
@@ -5387,64 +6046,93 @@ package Einfo is
    procedure Set_Is_Immediately_Visible        (Id : E; V : B := True);
    procedure Set_Is_Imported                   (Id : E; V : B := True);
    procedure Set_Is_Inlined                    (Id : E; V : B := True);
+   procedure Set_Is_Interface                  (Id : E; V : B := True);
    procedure Set_Is_Instantiated               (Id : E; V : B := True);
    procedure Set_Is_Internal                   (Id : E; V : B := True);
    procedure Set_Is_Interrupt_Handler          (Id : E; V : B := True);
    procedure Set_Is_Intrinsic_Subprogram       (Id : E; V : B := True);
    procedure Set_Is_Itype                      (Id : E; V : B := True);
+   procedure Set_Is_Known_Non_Null             (Id : E; V : B := True);
+   procedure Set_Is_Known_Null                 (Id : E; V : B := True);
    procedure Set_Is_Known_Valid                (Id : E; V : B := True);
    procedure Set_Is_Limited_Composite          (Id : E; V : B := True);
+   procedure Set_Is_Limited_Interface          (Id : E; V : B := True);
    procedure Set_Is_Limited_Record             (Id : E; V : B := True);
    procedure Set_Is_Machine_Code_Subprogram    (Id : E; V : B := True);
    procedure Set_Is_Non_Static_Subtype         (Id : E; V : B := True);
    procedure Set_Is_Null_Init_Proc             (Id : E; V : B := True);
+   procedure Set_Is_Obsolescent                (Id : E; V : B := True);
    procedure Set_Is_Optional_Parameter         (Id : E; V : B := True);
+   procedure Set_Is_Overriding_Operation       (Id : E; V : B := True);
    procedure Set_Is_Package_Body_Entity        (Id : E; V : B := True);
    procedure Set_Is_Packed                     (Id : E; V : B := True);
    procedure Set_Is_Packed_Array_Type          (Id : E; V : B := True);
    procedure Set_Is_Potentially_Use_Visible    (Id : E; V : B := True);
    procedure Set_Is_Preelaborated              (Id : E; V : B := True);
+   procedure Set_Is_Primitive_Wrapper          (Id : E; V : B := True);
    procedure Set_Is_Private_Composite          (Id : E; V : B := True);
    procedure Set_Is_Private_Descendant         (Id : E; V : B := True);
-   procedure Set_Is_Psected                    (Id : E; V : B := True);
+   procedure Set_Is_Protected_Interface        (Id : E; V : B := True);
    procedure Set_Is_Public                     (Id : E; V : B := True);
    procedure Set_Is_Pure                       (Id : E; V : B := True);
+   procedure Set_Is_Pure_Unit_Access_Type      (Id : E; V : B := True);
    procedure Set_Is_Remote_Call_Interface      (Id : E; V : B := True);
    procedure Set_Is_Remote_Types               (Id : E; V : B := True);
    procedure Set_Is_Renaming_Of_Object         (Id : E; V : B := True);
+   procedure Set_Is_Return_Object              (Id : E; V : B := True);
    procedure Set_Is_Shared_Passive             (Id : E; V : B := True);
    procedure Set_Is_Statically_Allocated       (Id : E; V : B := True);
+   procedure Set_Is_Synchronized_Interface     (Id : E; V : B := True);
    procedure Set_Is_Tag                        (Id : E; V : B := True);
    procedure Set_Is_Tagged_Type                (Id : E; V : B := True);
+   procedure Set_Is_Task_Interface             (Id : E; V : B := True);
+   procedure Set_Is_Thread_Body                (Id : E; V : B := True);
    procedure Set_Is_True_Constant              (Id : E; V : B := True);
    procedure Set_Is_Unchecked_Union            (Id : E; V : B := True);
    procedure Set_Is_Unsigned_Type              (Id : E; V : B := True);
    procedure Set_Is_VMS_Exception              (Id : E; V : B := True);
    procedure Set_Is_Valued_Procedure           (Id : E; V : B := True);
    procedure Set_Is_Visible_Child_Unit         (Id : E; V : B := True);
+   procedure Set_Is_Visible_Formal             (Id : E; V : B := True);
    procedure Set_Is_Volatile                   (Id : E; V : B := True);
+   procedure Set_Itype_Printed                 (Id : E; V : B := True);
+   procedure Set_Kill_Elaboration_Checks       (Id : E; V : B := True);
+   procedure Set_Kill_Range_Checks             (Id : E; V : B := True);
+   procedure Set_Kill_Tag_Checks               (Id : E; V : B := True);
+   procedure Set_Known_To_Have_Preelab_Init    (Id : E; V : B := True);
+   procedure Set_Last_Assignment               (Id : E; V : N);
    procedure Set_Last_Entity                   (Id : E; V : E);
+   procedure Set_Limited_View                  (Id : E; V : E);
    procedure Set_Lit_Indexes                   (Id : E; V : E);
    procedure Set_Lit_Strings                   (Id : E; V : E);
+   procedure Set_Low_Bound_Known               (Id : E; V : B := True);
    procedure Set_Machine_Radix_10              (Id : E; V : B := True);
    procedure Set_Master_Id                     (Id : E; V : E);
    procedure Set_Materialize_Entity            (Id : E; V : B := True);
    procedure Set_Mechanism                     (Id : E; V : M);
    procedure Set_Modulus                       (Id : E; V : U);
+   procedure Set_Must_Be_On_Byte_Boundary      (Id : E; V : B := True);
+   procedure Set_Must_Have_Preelab_Init        (Id : E; V : B := True);
    procedure Set_Needs_Debug_Info              (Id : E; V : B := True);
    procedure Set_Needs_No_Actuals              (Id : E; V : B := True);
+   procedure Set_Never_Set_In_Source           (Id : E; V : B := True);
    procedure Set_Next_Inlined_Subprogram       (Id : E; V : E);
    procedure Set_No_Pool_Assigned              (Id : E; V : B := True);
    procedure Set_No_Return                     (Id : E; V : B := True);
+   procedure Set_No_Strict_Aliasing            (Id : E; V : B := True);
    procedure Set_Non_Binary_Modulus            (Id : E; V : B := True);
+   procedure Set_Non_Limited_View              (Id : E; V : E);
    procedure Set_Nonzero_Is_True               (Id : E; V : B := True);
    procedure Set_Normalized_First_Bit          (Id : E; V : U);
    procedure Set_Normalized_Position           (Id : E; V : U);
    procedure Set_Normalized_Position_Max       (Id : E; V : U);
-   procedure Set_Not_Source_Assigned           (Id : E; V : B := True);
    procedure Set_Object_Ref                    (Id : E; V : E);
+   procedure Set_Obsolescent_Warning           (Id : E; V : N);
+   procedure Set_Original_Access_Type          (Id : E; V : E);
    procedure Set_Original_Array_Type           (Id : E; V : E);
    procedure Set_Original_Record_Component     (Id : E; V : E);
+   procedure Set_Overridden_Operation          (Id : E; V : E);
+   procedure Set_Package_Instantiation         (Id : E; V : N);
    procedure Set_Packed_Array_Type             (Id : E; V : E);
    procedure Set_Parent_Subtype                (Id : E; V : E);
    procedure Set_Primitive_Operations          (Id : E; V : L);
@@ -5458,6 +6146,7 @@ package Einfo is
    procedure Set_RM_Size                       (Id : E; V : U);
    procedure Set_Reachable                     (Id : E; V : B := True);
    procedure Set_Referenced                    (Id : E; V : B := True);
+   procedure Set_Referenced_As_LHS             (Id : E; V : B := True);
    procedure Set_Referenced_Object             (Id : E; V : N);
    procedure Set_Register_Exception_Call       (Id : E; V : N);
    procedure Set_Related_Array_Object          (Id : E; V : E);
@@ -5466,6 +6155,7 @@ package Einfo is
    procedure Set_Renamed_Object                (Id : E; V : N);
    procedure Set_Renaming_Map                  (Id : E; V : U);
    procedure Set_Return_Present                (Id : E; V : B := True);
+   procedure Set_Return_Applies_To             (Id : E; V : N);
    procedure Set_Returns_By_Ref                (Id : E; V : B := True);
    procedure Set_Reverse_Bit_Order             (Id : E; V : B := True);
    procedure Set_Scalar_Range                  (Id : E; V : N);
@@ -5481,28 +6171,22 @@ package Einfo is
    procedure Set_Small_Value                   (Id : E; V : R);
    procedure Set_Spec_Entity                   (Id : E; V : E);
    procedure Set_Storage_Size_Variable         (Id : E; V : E);
+   procedure Set_Stored_Constraint             (Id : E; V : L);
    procedure Set_Strict_Alignment              (Id : E; V : B := True);
    procedure Set_String_Literal_Length         (Id : E; V : U);
    procedure Set_String_Literal_Low_Bound      (Id : E; V : N);
-   procedure Set_Suppress_Access_Checks        (Id : E; V : B := True);
-   procedure Set_Suppress_Accessibility_Checks (Id : E; V : B := True);
-   procedure Set_Suppress_Discriminant_Checks  (Id : E; V : B := True);
-   procedure Set_Suppress_Division_Checks      (Id : E; V : B := True);
-   procedure Set_Suppress_Elaboration_Checks   (Id : E; V : B := True);
    procedure Set_Suppress_Elaboration_Warnings (Id : E; V : B := True);
-   procedure Set_Suppress_Index_Checks         (Id : E; V : B := True);
    procedure Set_Suppress_Init_Proc            (Id : E; V : B := True);
-   procedure Set_Suppress_Length_Checks        (Id : E; V : B := True);
-   procedure Set_Suppress_Overflow_Checks      (Id : E; V : B := True);
-   procedure Set_Suppress_Range_Checks         (Id : E; V : B := True);
-   procedure Set_Suppress_Storage_Checks       (Id : E; V : B := True);
    procedure Set_Suppress_Style_Checks         (Id : E; V : B := True);
-   procedure Set_Suppress_Tag_Checks           (Id : E; V : B := True);
+   procedure Set_Task_Body_Procedure           (Id : E; V : N);
+   procedure Set_Treat_As_Volatile             (Id : E; V : B := True);
    procedure Set_Underlying_Full_View          (Id : E; V : E);
    procedure Set_Unset_Reference               (Id : E; V : N);
    procedure Set_Uses_Sec_Stack                (Id : E; V : B := True);
    procedure Set_Vax_Float                     (Id : E; V : B := True);
    procedure Set_Warnings_Off                  (Id : E; V : B := True);
+   procedure Set_Was_Hidden                    (Id : E; V : B := True);
+   procedure Set_Wrapped_Entity                (Id : E; V : E);
 
    -----------------------------------
    -- Field Initialization Routines --
@@ -5573,19 +6257,19 @@ package Einfo is
    procedure Proc_Next_Discriminant        (N : in out Node_Id);
    procedure Proc_Next_Formal              (N : in out Node_Id);
    procedure Proc_Next_Formal_With_Extras  (N : in out Node_Id);
-   procedure Proc_Next_Girder_Discriminant (N : in out Node_Id);
    procedure Proc_Next_Index               (N : in out Node_Id);
    procedure Proc_Next_Inlined_Subprogram  (N : in out Node_Id);
    procedure Proc_Next_Literal             (N : in out Node_Id);
+   procedure Proc_Next_Stored_Discriminant (N : in out Node_Id);
 
    pragma Inline (Proc_Next_Component);
    pragma Inline (Proc_Next_Discriminant);
    pragma Inline (Proc_Next_Formal);
    pragma Inline (Proc_Next_Formal_With_Extras);
-   pragma Inline (Proc_Next_Girder_Discriminant);
    pragma Inline (Proc_Next_Index);
    pragma Inline (Proc_Next_Inlined_Subprogram);
    pragma Inline (Proc_Next_Literal);
+   pragma Inline (Proc_Next_Stored_Discriminant);
 
    procedure Next_Component           (N : in out Node_Id)
      renames Proc_Next_Component;
@@ -5599,9 +6283,6 @@ package Einfo is
    procedure Next_Formal_With_Extras  (N : in out Node_Id)
      renames Proc_Next_Formal_With_Extras;
 
-   procedure Next_Girder_Discriminant (N : in out Node_Id)
-     renames Proc_Next_Girder_Discriminant;
-
    procedure Next_Index               (N : in out Node_Id)
      renames Proc_Next_Index;
 
@@ -5611,26 +6292,59 @@ package Einfo is
    procedure Next_Literal             (N : in out Node_Id)
      renames Proc_Next_Literal;
 
-   -------------------------------
-   -- Miscellaneous Subprograms --
-   -------------------------------
+   procedure Next_Stored_Discriminant (N : in out Node_Id)
+     renames Proc_Next_Stored_Discriminant;
 
-   procedure Append_Entity (Id : Entity_Id; V : Entity_Id);
-   --  Add an entity to the list of entities declared in the scope V
+   ----------------------------------------------
+   -- Subprograms for Accessing Rep Item Chain --
+   ----------------------------------------------
+
+   --  The First_Rep_Item field of every entity points to a linked list
+   --  (linked through Next_Rep_Item) of representation pragmas and
+   --  attribute definition clauses that apply to the item. Note that
+   --  in the case of types, it is assumed that any such rep items for
+   --  a base type also apply to all subtypes. This is implemented by
+   --  having the chain for subtypes link onto the chain for the base
+   --  type, so that any new entries for the subtype are added at the
+   --  start of the chain.
+
+   function Get_Attribute_Definition_Clause
+     (E  : Entity_Id;
+      Id : Attribute_Id) return Node_Id;
+   --  Searches the Rep_Item chain for a given entity E, for an instance
+   --  of an attribute definition clause with the given attribute Id. If
+   --  found, the value returned is the N_Attribute_Definition_Clause node,
+   --  otherwise Empty is returned.
 
    function Get_Rep_Pragma (E : Entity_Id; Nam : Name_Id) return Node_Id;
    --  Searches the Rep_Item chain for the given entity E, for an instance
    --  of a representation pragma with the given name Nam. If found then
    --  the value returned is the N_Pragma node, otherwise Empty is returned.
 
-   function Get_Attribute_Definition_Clause
-     (E    : Entity_Id;
-      Id   : Attribute_Id)
-      return Node_Id;
+   function Has_Rep_Pragma (E : Entity_Id; Nam : Name_Id) return Boolean;
+   --  Searches the Rep_Item chain for the given entity E, for an instance
+   --  of representation pragma with the given name Nam. If found then True
+   --  is returned, otherwise False indicates that no matching entry was found.
+
+   function Has_Attribute_Definition_Clause
+     (E  : Entity_Id;
+      Id : Attribute_Id) return Boolean;
    --  Searches the Rep_Item chain for a given entity E, for an instance
-   --  of an attribute definition clause with the given attibute Id Id. If
-   --  found, the value returned is the N_Attribute_Definition_Clause node,
-   --  otherwise Empty is returned.
+   --  of an attribute definition clause with the given attribute Id. If
+   --  found, True is returned, otherwise False indicates that no matching
+   --  entry was found.
+
+   procedure Record_Rep_Item (E : Entity_Id; N : Node_Id);
+   --  N is the node for either a representation pragma or an attribute
+   --  definition clause that applies to entity E. This procedure links
+   --  the node N onto the Rep_Item chain for entity E.
+
+   -------------------------------
+   -- Miscellaneous Subprograms --
+   -------------------------------
+
+   procedure Append_Entity (Id : Entity_Id; V : Entity_Id);
+   --  Add an entity to the list of entities declared in the scope V
 
    function Is_Entity_Name (N : Node_Id) return Boolean;
    --  Test if the node N is the name of an entity (i.e. is an identifier,
@@ -5681,6 +6395,11 @@ 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);
+   procedure Write_Field28_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.
@@ -5694,10 +6413,12 @@ package Einfo is
    --  subprograms meeting the requirements documented in the section on
    --  XEINFO may be referenced in this section.
 
+   pragma Inline (Abstract_Interfaces);
    pragma Inline (Accept_Address);
    pragma Inline (Access_Disp_Table);
    pragma Inline (Actual_Subtype);
    pragma Inline (Address_Taken);
+   pragma Inline (Abstract_Interface_Alias);
    pragma Inline (Alias);
    pragma Inline (Alignment);
    pragma Inline (Associated_Final_Chain);
@@ -5707,8 +6428,11 @@ package Einfo is
    pragma Inline (Barrier_Function);
    pragma Inline (Block_Node);
    pragma Inline (Body_Entity);
+   pragma Inline (Body_Needed_For_SAL);
    pragma Inline (CR_Discriminant);
    pragma Inline (C_Pass_By_Copy);
+   pragma Inline (Can_Never_Be_Null);
+   pragma Inline (Checks_May_Be_Suppressed);
    pragma Inline (Class_Wide_Type);
    pragma Inline (Cloned_Subtype);
    pragma Inline (Component_Bit_Offset);
@@ -5720,10 +6444,13 @@ package Einfo is
    pragma Inline (Corresponding_Equality);
    pragma Inline (Corresponding_Record_Type);
    pragma Inline (Corresponding_Remote_Type);
+   pragma Inline (Current_Use_Clause);
+   pragma Inline (Current_Value);
    pragma Inline (Debug_Info_Off);
    pragma Inline (Debug_Renaming_Link);
    pragma Inline (DTC_Entity);
    pragma Inline (DT_Entry_Count);
+   pragma Inline (DT_Offset_To_Top_Func);
    pragma Inline (DT_Position);
    pragma Inline (Default_Expr_Function);
    pragma Inline (Default_Expressions_Processed);
@@ -5742,7 +6469,7 @@ package Einfo is
    pragma Inline (Discriminant_Constraint);
    pragma Inline (Discriminant_Default_Value);
    pragma Inline (Discriminant_Number);
-   pragma Inline (Elaborate_All_Desirable);
+   pragma Inline (Elaborate_Body_Desirable);
    pragma Inline (Elaboration_Entity);
    pragma Inline (Elaboration_Entity_Required);
    pragma Inline (Enclosing_Scope);
@@ -5764,6 +6491,7 @@ package Einfo is
    pragma Inline (Extra_Accessibility);
    pragma Inline (Extra_Constrained);
    pragma Inline (Extra_Formal);
+   pragma Inline (Extra_Formals);
    pragma Inline (Finalization_Chain_Entity);
    pragma Inline (First_Entity);
    pragma Inline (First_Index);
@@ -5775,18 +6503,21 @@ package Einfo is
    pragma Inline (From_With_Type);
    pragma Inline (Full_View);
    pragma Inline (Function_Returns_With_DSP);
+   pragma Inline (Generic_Homonym);
    pragma Inline (Generic_Renamings);
-   pragma Inline (Girder_Constraint);
    pragma Inline (Handler_Records);
    pragma Inline (Has_Aliased_Components);
    pragma Inline (Has_Alignment_Clause);
    pragma Inline (Has_All_Calls_Remote);
+   pragma Inline (Has_Anon_Block_Suffix);
    pragma Inline (Has_Atomic_Components);
    pragma Inline (Has_Biased_Representation);
    pragma Inline (Has_Completion);
    pragma Inline (Has_Completion_In_Body);
    pragma Inline (Has_Complex_Representation);
    pragma Inline (Has_Component_Size_Clause);
+   pragma Inline (Has_Constrained_Partial_View);
+   pragma Inline (Has_Contiguous_Rep);
    pragma Inline (Has_Controlled_Component);
    pragma Inline (Has_Controlling_Result);
    pragma Inline (Has_Convention_Pragma);
@@ -5806,10 +6537,12 @@ package Einfo is
    pragma Inline (Has_Non_Standard_Rep);
    pragma Inline (Has_Object_Size_Clause);
    pragma Inline (Has_Per_Object_Constraint);
+   pragma Inline (Has_Persistent_BSS);
    pragma Inline (Has_Pragma_Controlled);
    pragma Inline (Has_Pragma_Elaborate_Body);
    pragma Inline (Has_Pragma_Inline);
    pragma Inline (Has_Pragma_Pack);
+   pragma Inline (Has_Pragma_Pure);
    pragma Inline (Has_Pragma_Pure_Function);
    pragma Inline (Has_Pragma_Unreferenced);
    pragma Inline (Has_Primitive_Operations);
@@ -5820,12 +6553,19 @@ package Einfo is
    pragma Inline (Has_Size_Clause);
    pragma Inline (Has_Small_Clause);
    pragma Inline (Has_Specified_Layout);
+   pragma Inline (Has_Specified_Stream_Input);
+   pragma Inline (Has_Specified_Stream_Output);
+   pragma Inline (Has_Specified_Stream_Read);
+   pragma Inline (Has_Specified_Stream_Write);
+   pragma Inline (Has_Static_Discriminants);
    pragma Inline (Has_Storage_Size_Clause);
+   pragma Inline (Has_Stream_Size_Clause);
    pragma Inline (Has_Subprogram_Descriptor);
    pragma Inline (Has_Task);
    pragma Inline (Has_Unchecked_Union);
    pragma Inline (Has_Unknown_Discriminants);
    pragma Inline (Has_Volatile_Components);
+   pragma Inline (Has_Xref_Entry);
    pragma Inline (Hiding_Loop_Variable);
    pragma Inline (Homonym);
    pragma Inline (In_Package_Body);
@@ -5835,7 +6575,9 @@ package Einfo is
    pragma Inline (Interface_Name);
    pragma Inline (Is_AST_Entry);
    pragma Inline (Is_Abstract);
+   pragma Inline (Is_Local_Anonymous_Access);
    pragma Inline (Is_Access_Constant);
+   pragma Inline (Is_Ada_2005_Only);
    pragma Inline (Is_Access_Type);
    pragma Inline (Is_Aliased);
    pragma Inline (Is_Array_Type);
@@ -5846,6 +6588,7 @@ package Einfo is
    pragma Inline (Is_Called);
    pragma Inline (Is_Character_Type);
    pragma Inline (Is_Child_Unit);
+   pragma Inline (Is_Class_Wide_Equivalent_Type);
    pragma Inline (Is_Class_Wide_Type);
    pragma Inline (Is_Compilation_Unit);
    pragma Inline (Is_Completely_Hidden);
@@ -5860,7 +6603,6 @@ package Einfo is
    pragma Inline (Is_Controlled);
    pragma Inline (Is_Controlling_Formal);
    pragma Inline (Is_Decimal_Fixed_Point_Type);
-   pragma Inline (Is_Destructor);
    pragma Inline (Is_Discrim_SO_Function);
    pragma Inline (Is_Digits_Type);
    pragma Inline (Is_Discrete_Or_Fixed_Point_Type);
@@ -5877,10 +6619,12 @@ package Einfo is
    pragma Inline (Is_Floating_Point_Type);
    pragma Inline (Is_For_Access_Subtype);
    pragma Inline (Is_Formal);
+   pragma Inline (Is_Formal_Object);
    pragma Inline (Is_Formal_Subprogram);
    pragma Inline (Is_Frozen);
    pragma Inline (Is_Generic_Actual_Type);
    pragma Inline (Is_Generic_Instance);
+   pragma Inline (Is_Generic_Subprogram);
    pragma Inline (Is_Generic_Type);
    pragma Inline (Is_Generic_Unit);
    pragma Inline (Is_Hidden);
@@ -5888,50 +6632,63 @@ package Einfo is
    pragma Inline (Is_Immediately_Visible);
    pragma Inline (Is_Imported);
    pragma Inline (Is_Incomplete_Or_Private_Type);
+   pragma Inline (Is_Incomplete_Type);
    pragma Inline (Is_Inlined);
+   pragma Inline (Is_Interface);
    pragma Inline (Is_Instantiated);
    pragma Inline (Is_Integer_Type);
    pragma Inline (Is_Internal);
    pragma Inline (Is_Interrupt_Handler);
    pragma Inline (Is_Intrinsic_Subprogram);
    pragma Inline (Is_Itype);
+   pragma Inline (Is_Known_Non_Null);
+   pragma Inline (Is_Known_Null);
    pragma Inline (Is_Known_Valid);
    pragma Inline (Is_Limited_Composite);
+   pragma Inline (Is_Limited_Interface);
    pragma Inline (Is_Limited_Record);
    pragma Inline (Is_Machine_Code_Subprogram);
    pragma Inline (Is_Modular_Integer_Type);
    pragma Inline (Is_Named_Number);
    pragma Inline (Is_Non_Static_Subtype);
    pragma Inline (Is_Null_Init_Proc);
+   pragma Inline (Is_Obsolescent);
    pragma Inline (Is_Numeric_Type);
    pragma Inline (Is_Object);
    pragma Inline (Is_Optional_Parameter);
    pragma Inline (Is_Package_Body_Entity);
    pragma Inline (Is_Ordinary_Fixed_Point_Type);
    pragma Inline (Is_Overloadable);
+   pragma Inline (Is_Overriding_Operation);
    pragma Inline (Is_Packed);
    pragma Inline (Is_Packed_Array_Type);
    pragma Inline (Is_Potentially_Use_Visible);
    pragma Inline (Is_Preelaborated);
+   pragma Inline (Is_Primitive_Wrapper);
    pragma Inline (Is_Private_Composite);
    pragma Inline (Is_Private_Descendant);
    pragma Inline (Is_Private_Type);
+   pragma Inline (Is_Protected_Interface);
    pragma Inline (Is_Protected_Type);
-   pragma Inline (Is_Psected);
    pragma Inline (Is_Public);
    pragma Inline (Is_Pure);
+   pragma Inline (Is_Pure_Unit_Access_Type);
    pragma Inline (Is_Real_Type);
    pragma Inline (Is_Record_Type);
    pragma Inline (Is_Remote_Call_Interface);
    pragma Inline (Is_Remote_Types);
    pragma Inline (Is_Renaming_Of_Object);
+   pragma Inline (Is_Return_Object);
    pragma Inline (Is_Scalar_Type);
    pragma Inline (Is_Shared_Passive);
    pragma Inline (Is_Signed_Integer_Type);
    pragma Inline (Is_Statically_Allocated);
    pragma Inline (Is_Subprogram);
+   pragma Inline (Is_Synchronized_Interface);
    pragma Inline (Is_Tag);
    pragma Inline (Is_Tagged_Type);
+   pragma Inline (Is_Task_Interface);
+   pragma Inline (Is_Thread_Body);
    pragma Inline (Is_True_Constant);
    pragma Inline (Is_Task_Type);
    pragma Inline (Is_Type);
@@ -5940,31 +6697,47 @@ package Einfo is
    pragma Inline (Is_VMS_Exception);
    pragma Inline (Is_Valued_Procedure);
    pragma Inline (Is_Visible_Child_Unit);
-   pragma Inline (Is_Volatile);
+   pragma Inline (Is_Visible_Formal);
+   pragma Inline (Itype_Printed);
+   pragma Inline (Kill_Elaboration_Checks);
+   pragma Inline (Kill_Range_Checks);
+   pragma Inline (Kill_Tag_Checks);
+   pragma Inline (Known_To_Have_Preelab_Init);
+   pragma Inline (Last_Assignment);
    pragma Inline (Last_Entity);
+   pragma Inline (Limited_View);
    pragma Inline (Lit_Indexes);
    pragma Inline (Lit_Strings);
+   pragma Inline (Low_Bound_Known);
    pragma Inline (Machine_Radix_10);
    pragma Inline (Master_Id);
    pragma Inline (Materialize_Entity);
    pragma Inline (Mechanism);
    pragma Inline (Modulus);
+   pragma Inline (Must_Be_On_Byte_Boundary);
+   pragma Inline (Must_Have_Preelab_Init);
    pragma Inline (Needs_Debug_Info);
    pragma Inline (Needs_No_Actuals);
+   pragma Inline (Never_Set_In_Source);
    pragma Inline (Next_Index);
    pragma Inline (Next_Inlined_Subprogram);
    pragma Inline (Next_Literal);
    pragma Inline (No_Pool_Assigned);
    pragma Inline (No_Return);
+   pragma Inline (No_Strict_Aliasing);
    pragma Inline (Non_Binary_Modulus);
+   pragma Inline (Non_Limited_View);
    pragma Inline (Nonzero_Is_True);
    pragma Inline (Normalized_First_Bit);
    pragma Inline (Normalized_Position);
    pragma Inline (Normalized_Position_Max);
-   pragma Inline (Not_Source_Assigned);
    pragma Inline (Object_Ref);
+   pragma Inline (Obsolescent_Warning);
+   pragma Inline (Original_Access_Type);
    pragma Inline (Original_Array_Type);
    pragma Inline (Original_Record_Component);
+   pragma Inline (Overridden_Operation);
+   pragma Inline (Package_Instantiation);
    pragma Inline (Packed_Array_Type);
    pragma Inline (Parameter_Mode);
    pragma Inline (Parent_Subtype);
@@ -5979,6 +6752,7 @@ package Einfo is
    pragma Inline (RM_Size);
    pragma Inline (Reachable);
    pragma Inline (Referenced);
+   pragma Inline (Referenced_As_LHS);
    pragma Inline (Referenced_Object);
    pragma Inline (Register_Exception_Call);
    pragma Inline (Related_Array_Object);
@@ -5987,6 +6761,7 @@ package Einfo is
    pragma Inline (Renamed_Object);
    pragma Inline (Renaming_Map);
    pragma Inline (Return_Present);
+   pragma Inline (Return_Applies_To);
    pragma Inline (Returns_By_Ref);
    pragma Inline (Reverse_Bit_Order);
    pragma Inline (Scalar_Range);
@@ -6002,28 +6777,22 @@ package Einfo is
    pragma Inline (Small_Value);
    pragma Inline (Spec_Entity);
    pragma Inline (Storage_Size_Variable);
+   pragma Inline (Stored_Constraint);
    pragma Inline (Strict_Alignment);
    pragma Inline (String_Literal_Length);
    pragma Inline (String_Literal_Low_Bound);
-   pragma Inline (Suppress_Access_Checks);
-   pragma Inline (Suppress_Accessibility_Checks);
-   pragma Inline (Suppress_Discriminant_Checks);
-   pragma Inline (Suppress_Division_Checks);
-   pragma Inline (Suppress_Elaboration_Checks);
    pragma Inline (Suppress_Elaboration_Warnings);
-   pragma Inline (Suppress_Index_Checks);
    pragma Inline (Suppress_Init_Proc);
-   pragma Inline (Suppress_Length_Checks);
-   pragma Inline (Suppress_Overflow_Checks);
-   pragma Inline (Suppress_Range_Checks);
-   pragma Inline (Suppress_Storage_Checks);
    pragma Inline (Suppress_Style_Checks);
-   pragma Inline (Suppress_Tag_Checks);
+   pragma Inline (Task_Body_Procedure);
+   pragma Inline (Treat_As_Volatile);
    pragma Inline (Underlying_Full_View);
    pragma Inline (Unset_Reference);
    pragma Inline (Uses_Sec_Stack);
    pragma Inline (Vax_Float);
    pragma Inline (Warnings_Off);
+   pragma Inline (Was_Hidden);
+   pragma Inline (Wrapped_Entity);
 
    pragma Inline (Init_Alignment);
    pragma Inline (Init_Component_Bit_Offset);
@@ -6032,10 +6801,12 @@ package Einfo is
    pragma Inline (Init_Esize);
    pragma Inline (Init_RM_Size);
 
+   pragma Inline (Set_Abstract_Interfaces);
    pragma Inline (Set_Accept_Address);
    pragma Inline (Set_Access_Disp_Table);
    pragma Inline (Set_Actual_Subtype);
    pragma Inline (Set_Address_Taken);
+   pragma Inline (Set_Abstract_Interface_Alias);
    pragma Inline (Set_Alias);
    pragma Inline (Set_Alignment);
    pragma Inline (Set_Associated_Final_Chain);
@@ -6045,8 +6816,11 @@ package Einfo is
    pragma Inline (Set_Barrier_Function);
    pragma Inline (Set_Block_Node);
    pragma Inline (Set_Body_Entity);
+   pragma Inline (Set_Body_Needed_For_SAL);
    pragma Inline (Set_CR_Discriminant);
    pragma Inline (Set_C_Pass_By_Copy);
+   pragma Inline (Set_Can_Never_Be_Null);
+   pragma Inline (Set_Checks_May_Be_Suppressed);
    pragma Inline (Set_Class_Wide_Type);
    pragma Inline (Set_Cloned_Subtype);
    pragma Inline (Set_Component_Bit_Offset);
@@ -6058,9 +6832,13 @@ package Einfo is
    pragma Inline (Set_Corresponding_Equality);
    pragma Inline (Set_Corresponding_Record_Type);
    pragma Inline (Set_Corresponding_Remote_Type);
+   pragma Inline (Set_Current_Use_Clause);
+   pragma Inline (Set_Current_Value);
    pragma Inline (Set_Debug_Info_Off);
    pragma Inline (Set_Debug_Renaming_Link);
    pragma Inline (Set_DTC_Entity);
+   pragma Inline (Set_DT_Entry_Count);
+   pragma Inline (Set_DT_Offset_To_Top_Func);
    pragma Inline (Set_DT_Position);
    pragma Inline (Set_Default_Expr_Function);
    pragma Inline (Set_Default_Expressions_Processed);
@@ -6079,7 +6857,7 @@ package Einfo is
    pragma Inline (Set_Discriminant_Constraint);
    pragma Inline (Set_Discriminant_Default_Value);
    pragma Inline (Set_Discriminant_Number);
-   pragma Inline (Set_Elaborate_All_Desirable);
+   pragma Inline (Set_Elaborate_Body_Desirable);
    pragma Inline (Set_Elaboration_Entity);
    pragma Inline (Set_Elaboration_Entity_Required);
    pragma Inline (Set_Enclosing_Scope);
@@ -6099,6 +6877,7 @@ package Einfo is
    pragma Inline (Set_Extra_Accessibility);
    pragma Inline (Set_Extra_Constrained);
    pragma Inline (Set_Extra_Formal);
+   pragma Inline (Set_Extra_Formals);
    pragma Inline (Set_Finalization_Chain_Entity);
    pragma Inline (Set_First_Entity);
    pragma Inline (Set_First_Index);
@@ -6110,18 +6889,21 @@ package Einfo is
    pragma Inline (Set_From_With_Type);
    pragma Inline (Set_Full_View);
    pragma Inline (Set_Function_Returns_With_DSP);
+   pragma Inline (Set_Generic_Homonym);
    pragma Inline (Set_Generic_Renamings);
-   pragma Inline (Set_Girder_Constraint);
    pragma Inline (Set_Handler_Records);
    pragma Inline (Set_Has_Aliased_Components);
    pragma Inline (Set_Has_Alignment_Clause);
    pragma Inline (Set_Has_All_Calls_Remote);
+   pragma Inline (Set_Has_Anon_Block_Suffix);
    pragma Inline (Set_Has_Atomic_Components);
    pragma Inline (Set_Has_Biased_Representation);
    pragma Inline (Set_Has_Completion);
    pragma Inline (Set_Has_Completion_In_Body);
    pragma Inline (Set_Has_Complex_Representation);
    pragma Inline (Set_Has_Component_Size_Clause);
+   pragma Inline (Set_Has_Constrained_Partial_View);
+   pragma Inline (Set_Has_Contiguous_Rep);
    pragma Inline (Set_Has_Controlled_Component);
    pragma Inline (Set_Has_Controlling_Result);
    pragma Inline (Set_Has_Convention_Pragma);
@@ -6141,12 +6923,15 @@ package Einfo is
    pragma Inline (Set_Has_Non_Standard_Rep);
    pragma Inline (Set_Has_Object_Size_Clause);
    pragma Inline (Set_Has_Per_Object_Constraint);
+   pragma Inline (Set_Has_Persistent_BSS);
    pragma Inline (Set_Has_Pragma_Controlled);
    pragma Inline (Set_Has_Pragma_Elaborate_Body);
    pragma Inline (Set_Has_Pragma_Inline);
    pragma Inline (Set_Has_Pragma_Pack);
+   pragma Inline (Set_Has_Pragma_Pure);
    pragma Inline (Set_Has_Pragma_Pure_Function);
    pragma Inline (Set_Has_Pragma_Unreferenced);
+   pragma Inline (Set_Known_To_Have_Preelab_Init);
    pragma Inline (Set_Has_Primitive_Operations);
    pragma Inline (Set_Has_Private_Declaration);
    pragma Inline (Set_Has_Qualified_Name);
@@ -6155,12 +6940,18 @@ package Einfo is
    pragma Inline (Set_Has_Size_Clause);
    pragma Inline (Set_Has_Small_Clause);
    pragma Inline (Set_Has_Specified_Layout);
+   pragma Inline (Set_Has_Specified_Stream_Input);
+   pragma Inline (Set_Has_Specified_Stream_Output);
+   pragma Inline (Set_Has_Specified_Stream_Read);
+   pragma Inline (Set_Has_Specified_Stream_Write);
+   pragma Inline (Set_Has_Static_Discriminants);
    pragma Inline (Set_Has_Storage_Size_Clause);
    pragma Inline (Set_Has_Subprogram_Descriptor);
    pragma Inline (Set_Has_Task);
    pragma Inline (Set_Has_Unchecked_Union);
    pragma Inline (Set_Has_Unknown_Discriminants);
    pragma Inline (Set_Has_Volatile_Components);
+   pragma Inline (Set_Has_Xref_Entry);
    pragma Inline (Set_Hiding_Loop_Variable);
    pragma Inline (Set_Homonym);
    pragma Inline (Set_In_Package_Body);
@@ -6170,7 +6961,9 @@ package Einfo is
    pragma Inline (Set_Interface_Name);
    pragma Inline (Set_Is_AST_Entry);
    pragma Inline (Set_Is_Abstract);
+   pragma Inline (Set_Is_Local_Anonymous_Access);
    pragma Inline (Set_Is_Access_Constant);
+   pragma Inline (Set_Is_Ada_2005_Only);
    pragma Inline (Set_Is_Aliased);
    pragma Inline (Set_Is_Asynchronous);
    pragma Inline (Set_Is_Atomic);
@@ -6179,6 +6972,7 @@ package Einfo is
    pragma Inline (Set_Is_Called);
    pragma Inline (Set_Is_Character_Type);
    pragma Inline (Set_Is_Child_Unit);
+   pragma Inline (Set_Is_Class_Wide_Equivalent_Type);
    pragma Inline (Set_Is_Compilation_Unit);
    pragma Inline (Set_Is_Completely_Hidden);
    pragma Inline (Set_Is_Concurrent_Record_Type);
@@ -6188,7 +6982,6 @@ package Einfo is
    pragma Inline (Set_Is_Constructor);
    pragma Inline (Set_Is_Controlled);
    pragma Inline (Set_Is_Controlling_Formal);
-   pragma Inline (Set_Is_Destructor);
    pragma Inline (Set_Is_Discrim_SO_Function);
    pragma Inline (Set_Is_Dispatching_Operation);
    pragma Inline (Set_Is_Eliminated);
@@ -6206,64 +6999,92 @@ package Einfo is
    pragma Inline (Set_Is_Immediately_Visible);
    pragma Inline (Set_Is_Imported);
    pragma Inline (Set_Is_Inlined);
+   pragma Inline (Set_Is_Interface);
    pragma Inline (Set_Is_Instantiated);
    pragma Inline (Set_Is_Internal);
    pragma Inline (Set_Is_Interrupt_Handler);
    pragma Inline (Set_Is_Intrinsic_Subprogram);
    pragma Inline (Set_Is_Itype);
+   pragma Inline (Set_Is_Known_Non_Null);
+   pragma Inline (Set_Is_Known_Null);
    pragma Inline (Set_Is_Known_Valid);
    pragma Inline (Set_Is_Limited_Composite);
+   pragma Inline (Set_Is_Limited_Interface);
    pragma Inline (Set_Is_Limited_Record);
    pragma Inline (Set_Is_Machine_Code_Subprogram);
    pragma Inline (Set_Is_Non_Static_Subtype);
    pragma Inline (Set_Is_Null_Init_Proc);
+   pragma Inline (Set_Is_Obsolescent);
    pragma Inline (Set_Is_Optional_Parameter);
+   pragma Inline (Set_Is_Overriding_Operation);
    pragma Inline (Set_Is_Package_Body_Entity);
    pragma Inline (Set_Is_Packed);
    pragma Inline (Set_Is_Packed_Array_Type);
    pragma Inline (Set_Is_Potentially_Use_Visible);
    pragma Inline (Set_Is_Preelaborated);
+   pragma Inline (Set_Is_Primitive_Wrapper);
    pragma Inline (Set_Is_Private_Composite);
    pragma Inline (Set_Is_Private_Descendant);
-   pragma Inline (Set_Is_Psected);
+   pragma Inline (Set_Is_Protected_Interface);
    pragma Inline (Set_Is_Public);
    pragma Inline (Set_Is_Pure);
+   pragma Inline (Set_Is_Pure_Unit_Access_Type);
    pragma Inline (Set_Is_Remote_Call_Interface);
    pragma Inline (Set_Is_Remote_Types);
    pragma Inline (Set_Is_Renaming_Of_Object);
+   pragma Inline (Set_Is_Return_Object);
    pragma Inline (Set_Is_Shared_Passive);
    pragma Inline (Set_Is_Statically_Allocated);
+   pragma Inline (Set_Is_Synchronized_Interface);
    pragma Inline (Set_Is_Tag);
    pragma Inline (Set_Is_Tagged_Type);
+   pragma Inline (Set_Is_Task_Interface);
+   pragma Inline (Set_Is_Thread_Body);
    pragma Inline (Set_Is_True_Constant);
    pragma Inline (Set_Is_Unchecked_Union);
    pragma Inline (Set_Is_Unsigned_Type);
    pragma Inline (Set_Is_VMS_Exception);
    pragma Inline (Set_Is_Valued_Procedure);
    pragma Inline (Set_Is_Visible_Child_Unit);
+   pragma Inline (Set_Is_Visible_Formal);
    pragma Inline (Set_Is_Volatile);
+   pragma Inline (Set_Itype_Printed);
+   pragma Inline (Set_Kill_Elaboration_Checks);
+   pragma Inline (Set_Kill_Range_Checks);
+   pragma Inline (Set_Kill_Tag_Checks);
+   pragma Inline (Set_Last_Assignment);
    pragma Inline (Set_Last_Entity);
+   pragma Inline (Set_Limited_View);
    pragma Inline (Set_Lit_Indexes);
    pragma Inline (Set_Lit_Strings);
+   pragma Inline (Set_Low_Bound_Known);
    pragma Inline (Set_Machine_Radix_10);
    pragma Inline (Set_Master_Id);
    pragma Inline (Set_Materialize_Entity);
    pragma Inline (Set_Mechanism);
    pragma Inline (Set_Modulus);
+   pragma Inline (Set_Must_Be_On_Byte_Boundary);
+   pragma Inline (Set_Must_Have_Preelab_Init);
    pragma Inline (Set_Needs_Debug_Info);
    pragma Inline (Set_Needs_No_Actuals);
+   pragma Inline (Set_Never_Set_In_Source);
    pragma Inline (Set_Next_Inlined_Subprogram);
    pragma Inline (Set_No_Pool_Assigned);
    pragma Inline (Set_No_Return);
+   pragma Inline (Set_No_Strict_Aliasing);
    pragma Inline (Set_Non_Binary_Modulus);
+   pragma Inline (Set_Non_Limited_View);
    pragma Inline (Set_Nonzero_Is_True);
    pragma Inline (Set_Normalized_First_Bit);
    pragma Inline (Set_Normalized_Position);
    pragma Inline (Set_Normalized_Position_Max);
-   pragma Inline (Set_Not_Source_Assigned);
    pragma Inline (Set_Object_Ref);
+   pragma Inline (Set_Obsolescent_Warning);
+   pragma Inline (Set_Original_Access_Type);
    pragma Inline (Set_Original_Array_Type);
    pragma Inline (Set_Original_Record_Component);
+   pragma Inline (Set_Overridden_Operation);
+   pragma Inline (Set_Package_Instantiation);
    pragma Inline (Set_Packed_Array_Type);
    pragma Inline (Set_Parent_Subtype);
    pragma Inline (Set_Primitive_Operations);
@@ -6277,6 +7098,7 @@ package Einfo is
    pragma Inline (Set_RM_Size);
    pragma Inline (Set_Reachable);
    pragma Inline (Set_Referenced);
+   pragma Inline (Set_Referenced_As_LHS);
    pragma Inline (Set_Referenced_Object);
    pragma Inline (Set_Register_Exception_Call);
    pragma Inline (Set_Related_Array_Object);
@@ -6285,6 +7107,7 @@ package Einfo is
    pragma Inline (Set_Renamed_Object);
    pragma Inline (Set_Renaming_Map);
    pragma Inline (Set_Return_Present);
+   pragma Inline (Set_Return_Applies_To);
    pragma Inline (Set_Returns_By_Ref);
    pragma Inline (Set_Reverse_Bit_Order);
    pragma Inline (Set_Scalar_Range);
@@ -6300,28 +7123,22 @@ package Einfo is
    pragma Inline (Set_Small_Value);
    pragma Inline (Set_Spec_Entity);
    pragma Inline (Set_Storage_Size_Variable);
+   pragma Inline (Set_Stored_Constraint);
    pragma Inline (Set_Strict_Alignment);
    pragma Inline (Set_String_Literal_Length);
    pragma Inline (Set_String_Literal_Low_Bound);
-   pragma Inline (Set_Suppress_Access_Checks);
-   pragma Inline (Set_Suppress_Accessibility_Checks);
-   pragma Inline (Set_Suppress_Discriminant_Checks);
-   pragma Inline (Set_Suppress_Division_Checks);
-   pragma Inline (Set_Suppress_Elaboration_Checks);
    pragma Inline (Set_Suppress_Elaboration_Warnings);
-   pragma Inline (Set_Suppress_Index_Checks);
    pragma Inline (Set_Suppress_Init_Proc);
-   pragma Inline (Set_Suppress_Length_Checks);
-   pragma Inline (Set_Suppress_Overflow_Checks);
-   pragma Inline (Set_Suppress_Range_Checks);
-   pragma Inline (Set_Suppress_Storage_Checks);
    pragma Inline (Set_Suppress_Style_Checks);
-   pragma Inline (Set_Suppress_Tag_Checks);
+   pragma Inline (Set_Task_Body_Procedure);
+   pragma Inline (Set_Treat_As_Volatile);
    pragma Inline (Set_Underlying_Full_View);
    pragma Inline (Set_Unset_Reference);
    pragma Inline (Set_Uses_Sec_Stack);
    pragma Inline (Set_Vax_Float);
    pragma Inline (Set_Warnings_Off);
+   pragma Inline (Set_Was_Hidden);
+   pragma Inline (Set_Wrapped_Entity);
 
    --  END XEINFO INLINES
 
@@ -6332,7 +7149,8 @@ package Einfo is
    --  things here which are small, but not of the canonical attribute
    --  access/set format that can be handled by xeinfo.
 
-   pragma Inline (Is_Package);
+   pragma Inline (Is_Package_Or_Generic_Package);
+   pragma Inline (Is_Volatile);
    pragma Inline (Is_Wrapper_Package);
    pragma Inline (Known_RM_Size);
    pragma Inline (Known_Static_Component_Bit_Offset);