summaryrefslogtreecommitdiff
path: root/gcc/ada/einfo.ads
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/ada/einfo.ads')
-rw-r--r--gcc/ada/einfo.ads726
1 files changed, 459 insertions, 267 deletions
diff --git a/gcc/ada/einfo.ads b/gcc/ada/einfo.ads
index fce8aee1fc7..3f8b227fd6d 100644
--- a/gcc/ada/einfo.ads
+++ b/gcc/ada/einfo.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2002 Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2003 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- --
@@ -335,11 +335,15 @@ package Einfo is
-- 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
@@ -410,6 +414,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
@@ -420,6 +429,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
@@ -431,6 +447,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
@@ -516,11 +539,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
@@ -555,10 +579,35 @@ package Einfo is
-- created at the same time as the discriminal, and used to replace
-- occurrences of the discriminant within the type declaration.
+-- Current_Value (Node9)
+-- Present in E_Variable, E_Out_Parameter and E_In_Out_Parameter
+-- entities. 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, or blocks (at
+-- any nesting level). For convenience in coding, this field is
+-- also present in other object entities (E_Loop_Parameter and
+-- E_In_Parameter and E_Constant), but is not used to hold a
+-- constant value, since value tracking is not needed in this case.
+--
+-- Another related use of this field is to record information
+-- about the value obtained from an IF statement condition.
+-- If the IF/ELSIF condition has the form "[NOT] OBJ RELOP VAL",
+-- where OBJ is a reference to an entity with a Current_Value field,
+-- RELOP is one of the six relational operators, and VAL is a compile-
+-- time known valoue, then the Current_Value field if OBJ is set to
+-- point to the N_If_Statement or N_Elsif_Part node of the relevant
+-- construct. 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
@@ -658,12 +707,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,
@@ -680,7 +731,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
@@ -897,7 +948,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
@@ -981,23 +1035,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,
@@ -1030,6 +1067,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
@@ -1077,6 +1116,31 @@ 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 occurr 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
@@ -1114,18 +1178,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
@@ -1200,6 +1263,10 @@ 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_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
@@ -1285,7 +1352,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.
@@ -1343,10 +1410,10 @@ 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.
@@ -1475,11 +1542,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.
@@ -1618,6 +1694,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
@@ -1631,7 +1712,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
@@ -1692,10 +1773,6 @@ package Einfo is
-- 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.
-
-- Is_Discrete_Type (synthesized)
-- Applies to all entities, true for all discrete types and subtypes
@@ -1784,10 +1861,14 @@ package Einfo is
-- Present in all entities. Set to indicate that the entity is an
-- instance of a generic unit.
+-- 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
@@ -1851,8 +1932,9 @@ package Einfo is
-- on this one! ???
-- 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
@@ -1874,6 +1956,27 @@ 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 eample3 come from assignment
+-- of an access parameter or an allocator.
+--
+-- Note: this flag is set according to the sequential flow of the
+-- program, watching the current value of the variable. However,
+-- this processing can 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_Valid (Flag170)
-- Present in all entities. Relevant for types (and subtype) and
-- for objects (and enumeration literals) of a discrete type.
@@ -1902,6 +2005,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
@@ -1924,7 +2032,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
@@ -1943,7 +2054,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
@@ -1968,6 +2079,10 @@ package Einfo is
-- Applies to all entities, true for ordinary fixed point types
-- and subtypes
+-- 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 (synthesized)
-- Applies to all entities. True for packages and generic packages.
-- False for all other entities.
@@ -2169,6 +2284,16 @@ 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
@@ -2210,12 +2335,40 @@ 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.
+-- 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. Set by the expander to kill elaboration
+-- checks which are known not to be needed. 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.
+
+-- 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_Entity (Node20)
-- Present in all entities which act as scopes to which a list of
-- associated entities is attached (blocks, class subtypes and types,
@@ -2224,6 +2377,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_Views (Elist23)
+-- Present in non-generic package entities that are not instances.
+-- The elements of this list are the shadow entities created for the
+-- types and local packages that are declared in a package that appears
+-- in a limited_with clause. This list and Non_Limited_Views are built
+-- at the same time, and their elements are in one-one correspondence.
+
-- 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
@@ -2275,6 +2435,8 @@ package Einfo is
-- 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
@@ -2285,20 +2447,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
@@ -2307,8 +2473,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
@@ -2318,7 +2484,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)
@@ -2384,6 +2550,16 @@ package Einfo is
-- 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, and local packages that are the
+-- shadow entities created when analyzing a limited_with_clause.
+-- Points to the definining entity in the original declaration.
+
+-- Non_Limited_Views (Elist8)
+-- Present in non-generic packages that are not instances. The elements
+-- of this list are defining identifiers for types and local packages
+-- declared within a package that appears in a limited_with clause.
+
-- 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
@@ -2392,8 +2568,8 @@ 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)
@@ -2405,7 +2581,7 @@ package Einfo is
-- value of First_Bit for the component, i.e. the offset within the
-- lowest addressed storage unit containing part or all of the field.
--- 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
@@ -2489,8 +2665,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
@@ -2570,7 +2745,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
@@ -2606,13 +2790,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
@@ -2729,9 +2915,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)
@@ -2779,6 +2965,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
@@ -2796,81 +2989,42 @@ 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. If
+-- this flag is set then Sem_Elab will not generate elaboration warnings
+-- for the subprogram. 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. (we need a clear description of
+-- how this flag differs in effect from Elaboration_Checks_Suppressed???)
-- 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")
-
-- 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
@@ -3302,14 +3456,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,
@@ -3355,7 +3509,7 @@ package Einfo is
--------------------------
-- The above entities are arranged so that they can be conveniently
- -- grouped into subtype ranges. Note that for each of the xxx_KInd
+ -- 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
@@ -3489,11 +3643,15 @@ package Einfo is
-- E_Out_Parameter
E_In_Out_Parameter;
- subtype Generic_Unit_Kind is Entity_Kind range
+ 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_Or_Private_Kind is Entity_Kind range
E_Record_Type_With_Private ..
-- E_Record_Subtype_With_Private
@@ -3679,6 +3837,8 @@ package Einfo is
-- Freeze_Node (Node7)
-- Address_Taken (Flag104)
+ -- Can_Never_Be_Null (Flag38)
+ -- Checks_May_Be_Suppressed (Flag31)
-- Debug_Info_Off (Flag166)
-- Has_Convention_Pragma (Flag119)
-- Has_Delayed_Freeze (Flag18)
@@ -3691,6 +3851,7 @@ package Einfo is
-- Has_Private_Declaration (Flag155)
-- Has_Qualified_Name (Flag161)
-- Has_Unknown_Discriminants (Flag72)
+ -- Has_Xref_Entry (Flag182)
-- Is_Bit_Packed_Array (Flag122) (base type only)
-- Is_Child_Unit (Flag73)
-- Is_Compilation_Unit (Flag149)
@@ -3708,6 +3869,7 @@ package Einfo is
-- Is_Inlined (Flag11)
-- Is_Internal (Flag17)
-- Is_Itype (Flag91)
+ -- Is_Known_Non_Null (Flag37)
-- Is_Known_Valid (Flag170)
-- Is_Limited_Composite (Flag106)
-- Is_Limited_Record (Flag25)
@@ -3723,28 +3885,20 @@ package Einfo is
-- Is_Statically_Allocated (Flag28)
-- Is_Unchecked_Union (Flag117)
-- Is_VMS_Exception (Flag133)
+ -- Kill_Elaboration_Checks (Flag32)
+ -- Kill_Range_Checks (Flag33)
+ -- Kill_Tag_Checks (Flag34)
-- Materialize_Entity (Flag168)
-- Needs_Debug_Info (Flag147)
-- 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)
-- Declaration_Node (synth)
-- Enclosing_Dynamic_Scope (synth)
-- Has_Foreign_Convention (synth)
-- Is_Dynamic_Scope (synth)
- -- Is_Generic_Unit (synth)
-- Is_Limited_Type (synth)
-- Underlying_Type (synth)
-- all classification attributes (synth)
@@ -3800,6 +3954,7 @@ package Einfo is
-- 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)
@@ -3881,12 +4036,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
@@ -3900,11 +4055,12 @@ package Einfo is
-- 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)
@@ -3918,18 +4074,20 @@ package Einfo is
-- Is_Atomic (Flag85)
-- Is_Tag (Flag78)
-- Is_Volatile (Flag16)
- -- Next_Component (synth)
+ -- Treat_As_Volatile (Flag41)
-- Is_Protected_Private (synth)
+ -- Next_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)
-- Interface_Name (Node21)
-- Has_Alignment_Clause (Flag46)
-- Has_Atomic_Components (Flag86)
@@ -3941,7 +4099,8 @@ package Einfo is
-- Is_Psected (Flag153)
-- Is_True_Constant (Flag163)
-- Is_Volatile (Flag16)
- -- Not_Source_Assigned (Flag115)
+ -- Never_Set_In_Source (Flag115)
+ -- Treat_As_Volatile (Flag41)
-- Address_Clause (synth)
-- Alignment_Clause (synth)
-- Constant_Value (synth)
@@ -3962,11 +4121,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,7 +4136,7 @@ package Einfo is
-- Original_Record_Component (Node22)
-- CR_Discriminant (Node23)
-- Next_Discriminant (synth)
- -- Next_Girder_Discriminant (synth)
+ -- Next_Stored_Discriminant (synth)
-- E_Entry
-- E_Entry_Family
@@ -3989,7 +4149,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)
@@ -4001,6 +4160,7 @@ package Einfo is
-- First_Formal (synth)
-- Entry_Index_Type (synth)
-- Number_Formals (synth)
+ -- Scope_Depth (synth)
-- E_Entry_Index_Parameter
-- Entry_Index_Constant (Node18)
@@ -4021,6 +4181,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)
@@ -4028,6 +4189,7 @@ package Einfo is
-- (plus type attributes)
-- E_Exception
+ -- Alignment (Uint14)
-- Renamed_Entity (Node18)
-- Register_Exception_Call (Node20)
-- Interface_Name (Node21)
@@ -4042,8 +4204,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)
@@ -4066,10 +4228,10 @@ 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)
+ -- Body_Needed_For_SAL (Flag40)
-- Elaboration_Entity_Required (Flag174)
-- Function_Returns_With_DSP (Flag169)
-- Default_Expressions_Processed (Flag108)
@@ -4088,12 +4250,12 @@ package Einfo is
-- 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_Visible_Child_Unit (Flag116)
@@ -4105,6 +4267,7 @@ package Einfo is
-- Address_Clause (synth)
-- First_Formal (synth)
-- Number_Formals (synth)
+ -- Scope_Depth (synth)
-- E_General_Access_Type
-- Storage_Size_Variable (Node15) (base type only)
@@ -4116,6 +4279,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)
@@ -4126,17 +4290,19 @@ package Einfo is
-- Parameter_Mode (synth)
-- E_Incomplete_Type
+ -- 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) (always Empty for IN case)
-- Discriminal_Link (Node10) (discriminals only)
-- Entry_Component (Node11)
-- Esize (Uint12)
@@ -4154,7 +4320,7 @@ package Einfo is
-- Is_Controlling_Formal (Flag97)
-- Is_Entry_Formal (Flag52)
-- Is_Optional_Parameter (Flag134)
- -- Not_Source_Assigned (Flag115)
+ -- Never_Set_In_Source (Flag115)
-- Parameter_Mode (synth)
-- E_Label
@@ -4169,11 +4335,11 @@ 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
@@ -4205,6 +4371,7 @@ 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)
@@ -4221,8 +4388,10 @@ package Einfo is
-- E_Package
-- E_Generic_Package
-- Dependent_Instances (Elist8) (for an instance)
+ -- Non_Limited_Views (Elist8) (non-generic, not 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)
@@ -4234,10 +4403,11 @@ 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_Views (Elist23) (non-generic, not instance)
-- Delay_Subprogram_Descriptors (Flag50)
+ -- Body_Needed_For_SAL (Flag40)
-- Discard_Names (Flag88)
-- Elaborate_All_Desirable (Flag146)
-- Elaboration_Entity_Required (Flag174)
@@ -4254,9 +4424,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)
@@ -4274,13 +4446,13 @@ 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
@@ -4304,6 +4476,7 @@ package Einfo is
-- Generic_Renamings (Elist23) (for an instance)
-- Inner_Instances (Elist23) (for a generic procedure)
-- Privals_Chain (Elist23) (for a protected procedure)
+ -- Body_Needed_For_SAL (Flag40)
-- Elaboration_Entity_Required (Flag174)
-- Function_Returns_With_DSP (Flag169) (always False for procedure)
-- Default_Expressions_Processed (Flag108)
@@ -4321,13 +4494,13 @@ package Einfo is
-- 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_Private_Descendant (Flag53)
-- Is_Pure (Flag44)
-- Is_Valued_Procedure (Flag127)
@@ -4356,7 +4529,7 @@ package Einfo is
-- Discriminant_Constraint (Elist21)
-- Scope_Depth_Value (Uint22)
-- Scope_Depth (synth)
- -- Girder_Constraint (Elist23)
+ -- Stored_Constraint (Elist23)
-- Has_Controlled_Component (Flag43) (base type only)
-- Has_Interrupt_Handler (synth)
-- Sec_Stack_Needed_For_Return (Flag167) ???
@@ -4375,19 +4548,20 @@ package Einfo is
-- Last_Entity (Node20)
-- Discriminant_Constraint (Elist21)
-- Corresponding_Remote_Type (Node22)
- -- Girder_Constraint (Elist23)
+ -- Stored_Constraint (Elist23)
-- 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)
+ -- Is_Class_Wide_Equivalent_Type (Flag35)
-- Is_Concurrent_Record_Type (Flag20)
-- Is_Constrained (Flag12)
-- Is_Controlled (Flag42) (base type only)
-- Reverse_Bit_Order (Flag164) (base type only)
-- First_Component (synth)
-- First_Discriminant (synth)
- -- First_Girder_Discriminant (synth)
+ -- First_Stored_Discriminant (synth)
-- Tag_Component (synth)
-- (plus type attributes)
@@ -4401,7 +4575,7 @@ 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)
-- Has_Controlled_Component (Flag43) (base type only)
@@ -4413,7 +4587,7 @@ package Einfo is
-- Reverse_Bit_Order (Flag164) (base type only)
-- First_Component (synth)
-- First_Discriminant (synth)
- -- First_Girder_Discriminant (synth)
+ -- First_Stored_Discriminant (synth)
-- Tag_Component (synth)
-- (plus type attributes)
@@ -4469,7 +4643,7 @@ package Einfo is
-- Discriminant_Constraint (Elist21)
-- Scope_Depth_Value (Uint22)
-- Scope_Depth (synth)
- -- Girder_Constraint (Elist23)
+ -- Stored_Constraint (Elist23)
-- Delay_Cleanups (Flag114)
-- Has_Master_Entity (Flag21)
-- Has_Storage_Size_Clause (Flag23) (base type only)
@@ -4481,7 +4655,7 @@ package Einfo is
-- E_Variable
-- Hiding_Loop_Variable (Node8)
- -- Size_Check_Code (Node9)
+ -- Current_Value (Node9)
-- Esize (Uint12)
-- Extra_Accessibility (Node13)
-- Alignment (Uint14)
@@ -4489,6 +4663,7 @@ package Einfo is
-- Unset_Reference (Node16)
-- Actual_Subtype (Node17)
-- Renamed_Object (Node18)
+ -- Size_Check_Code (Node19)
-- Interface_Name (Node21)
-- Shared_Var_Assign_Proc (Node22)
-- Extra_Constrained (Node23)
@@ -4503,9 +4678,11 @@ package Einfo is
-- Is_Shared_Passive (Flag60)
-- Is_True_Constant (Flag163)
-- Is_Volatile (Flag16)
- -- Not_Source_Assigned (Flag115)
+ -- Never_Set_In_Source (Flag115)
+ -- Treat_As_Volatile (Flag41)
-- Address_Clause (synth)
-- Alignment_Clause (synth)
+ -- Constant_Value (synth)
-- Size_Clause (synth)
-- E_Void
@@ -4574,22 +4751,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)
-
- -- 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.
+ -- 1. At the command line level
+ -- 2. At the scope level.
+ -- 3. At the entity level.
- -- 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 --
@@ -4760,8 +4927,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;
@@ -4774,6 +4944,7 @@ 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_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;
@@ -4830,8 +5001,8 @@ 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;
@@ -4842,6 +5013,7 @@ package Einfo is
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_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;
@@ -4881,8 +5053,9 @@ package Einfo is
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;
@@ -4899,6 +5072,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;
@@ -4907,7 +5081,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;
@@ -4927,6 +5100,7 @@ package Einfo is
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_Valid (Id : E) return B;
function Is_Limited_Composite (Id : E) return B;
function Is_Machine_Code_Subprogram (Id : E) return B;
@@ -4958,7 +5132,11 @@ package Einfo is
function Is_Visible_Child_Unit (Id : E) return B;
function Is_Volatile (Id : E) return B;
function Is_Wrapper_Package (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 Last_Entity (Id : E) return E;
+ function Limited_Views (Id : E) return L;
function Lit_Indexes (Id : E) return E;
function Lit_Strings (Id : E) return E;
function Machine_Radix_10 (Id : E) return B;
@@ -4968,15 +5146,17 @@ package Einfo is
function Modulus (Id : E) return U;
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 Non_Binary_Modulus (Id : E) return B;
+ function Non_Limited_View (Id : E) return E;
+ function Non_Limited_Views (Id : E) return L;
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 Original_Array_Type (Id : E) return E;
function Original_Record_Component (Id : E) return E;
@@ -4993,6 +5173,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;
@@ -5016,23 +5197,14 @@ 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 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;
@@ -5068,8 +5240,9 @@ package Einfo is
function Is_Formal (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_Integer_Type (Id : E) return B;
function Is_Limited_Record (Id : E) return B;
@@ -5079,6 +5252,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;
@@ -5107,7 +5281,7 @@ 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_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;
@@ -5133,8 +5307,8 @@ package Einfo is
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;
@@ -5221,8 +5395,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);
@@ -5235,6 +5412,7 @@ 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_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);
@@ -5290,8 +5468,8 @@ 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);
@@ -5302,6 +5480,7 @@ package Einfo is
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_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);
@@ -5341,6 +5520,7 @@ package Einfo is
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);
@@ -5359,6 +5539,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);
@@ -5368,7 +5549,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);
@@ -5391,6 +5571,7 @@ package Einfo is
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_Valid (Id : E; V : B := True);
procedure Set_Is_Limited_Composite (Id : E; V : B := True);
procedure Set_Is_Limited_Record (Id : E; V : B := True);
@@ -5398,6 +5579,7 @@ package Einfo is
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_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);
@@ -5422,7 +5604,11 @@ package Einfo is
procedure Set_Is_Valued_Procedure (Id : E; V : B := True);
procedure Set_Is_Visible_Child_Unit (Id : E; V : B := True);
procedure Set_Is_Volatile (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_Last_Entity (Id : E; V : E);
+ procedure Set_Limited_Views (Id : E; V : L);
procedure Set_Lit_Indexes (Id : E; V : E);
procedure Set_Lit_Strings (Id : E; V : E);
procedure Set_Machine_Radix_10 (Id : E; V : B := True);
@@ -5432,15 +5618,17 @@ package Einfo is
procedure Set_Modulus (Id : E; V : U);
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_Non_Binary_Modulus (Id : E; V : B := True);
+ procedure Set_Non_Limited_View (Id : E; V : E);
+ procedure Set_Non_Limited_Views (Id : E; V : L);
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_Original_Array_Type (Id : E; V : E);
procedure Set_Original_Record_Component (Id : E; V : E);
@@ -5457,6 +5645,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);
@@ -5480,23 +5669,14 @@ 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_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);
@@ -5572,19 +5752,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;
@@ -5598,9 +5778,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;
@@ -5610,6 +5787,9 @@ package Einfo is
procedure Next_Literal (N : in out Node_Id)
renames Proc_Next_Literal;
+ procedure Next_Stored_Discriminant (N : in out Node_Id)
+ renames Proc_Next_Stored_Discriminant;
+
-------------------------------
-- Miscellaneous Subprograms --
-------------------------------
@@ -5706,8 +5886,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);
@@ -5719,6 +5902,7 @@ package Einfo is
pragma Inline (Corresponding_Equality);
pragma Inline (Corresponding_Record_Type);
pragma Inline (Corresponding_Remote_Type);
+ pragma Inline (Current_Value);
pragma Inline (Debug_Info_Off);
pragma Inline (Debug_Renaming_Link);
pragma Inline (DTC_Entity);
@@ -5774,8 +5958,8 @@ 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);
@@ -5786,6 +5970,7 @@ package Einfo is
pragma Inline (Has_Completion_In_Body);
pragma Inline (Has_Complex_Representation);
pragma Inline (Has_Component_Size_Clause);
+ pragma Inline (Has_Contiguous_Rep);
pragma Inline (Has_Controlled_Component);
pragma Inline (Has_Controlling_Result);
pragma Inline (Has_Convention_Pragma);
@@ -5825,6 +6010,7 @@ package Einfo is
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);
@@ -5845,6 +6031,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);
@@ -5859,7 +6046,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);
@@ -5880,6 +6066,7 @@ package Einfo is
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);
@@ -5894,6 +6081,7 @@ package Einfo is
pragma Inline (Is_Interrupt_Handler);
pragma Inline (Is_Intrinsic_Subprogram);
pragma Inline (Is_Itype);
+ pragma Inline (Is_Known_Non_Null);
pragma Inline (Is_Known_Valid);
pragma Inline (Is_Limited_Composite);
pragma Inline (Is_Limited_Record);
@@ -5908,6 +6096,7 @@ package Einfo is
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);
@@ -5939,8 +6128,11 @@ 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 (Kill_Elaboration_Checks);
+ pragma Inline (Kill_Range_Checks);
+ pragma Inline (Kill_Tag_Checks);
pragma Inline (Last_Entity);
+ pragma Inline (Limited_Views);
pragma Inline (Lit_Indexes);
pragma Inline (Lit_Strings);
pragma Inline (Machine_Radix_10);
@@ -5950,17 +6142,19 @@ package Einfo is
pragma Inline (Modulus);
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 (Non_Binary_Modulus);
+ pragma Inline (Non_Limited_View);
+ pragma Inline (Non_Limited_Views);
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 (Original_Array_Type);
pragma Inline (Original_Record_Component);
@@ -5978,6 +6172,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);
@@ -6001,23 +6196,14 @@ 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 (Treat_As_Volatile);
pragma Inline (Underlying_Full_View);
pragma Inline (Unset_Reference);
pragma Inline (Uses_Sec_Stack);
@@ -6044,8 +6230,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);
@@ -6057,6 +6246,7 @@ package Einfo is
pragma Inline (Set_Corresponding_Equality);
pragma Inline (Set_Corresponding_Record_Type);
pragma Inline (Set_Corresponding_Remote_Type);
+ pragma Inline (Set_Current_Value);
pragma Inline (Set_Debug_Info_Off);
pragma Inline (Set_Debug_Renaming_Link);
pragma Inline (Set_DTC_Entity);
@@ -6109,8 +6299,8 @@ 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);
@@ -6121,6 +6311,7 @@ package Einfo is
pragma Inline (Set_Has_Completion_In_Body);
pragma Inline (Set_Has_Complex_Representation);
pragma Inline (Set_Has_Component_Size_Clause);
+ pragma Inline (Set_Has_Contiguous_Rep);
pragma Inline (Set_Has_Controlled_Component);
pragma Inline (Set_Has_Controlling_Result);
pragma Inline (Set_Has_Convention_Pragma);
@@ -6160,6 +6351,7 @@ package Einfo is
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);
@@ -6178,6 +6370,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);
@@ -6187,7 +6380,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);
@@ -6210,6 +6402,7 @@ package Einfo is
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_Valid);
pragma Inline (Set_Is_Limited_Composite);
pragma Inline (Set_Is_Limited_Record);
@@ -6217,6 +6410,7 @@ package Einfo is
pragma Inline (Set_Is_Non_Static_Subtype);
pragma Inline (Set_Is_Null_Init_Proc);
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);
@@ -6241,7 +6435,11 @@ package Einfo is
pragma Inline (Set_Is_Valued_Procedure);
pragma Inline (Set_Is_Visible_Child_Unit);
pragma Inline (Set_Is_Volatile);
+ pragma Inline (Set_Kill_Elaboration_Checks);
+ pragma Inline (Set_Kill_Range_Checks);
+ pragma Inline (Set_Kill_Tag_Checks);
pragma Inline (Set_Last_Entity);
+ pragma Inline (Set_Limited_Views);
pragma Inline (Set_Lit_Indexes);
pragma Inline (Set_Lit_Strings);
pragma Inline (Set_Machine_Radix_10);
@@ -6251,15 +6449,17 @@ package Einfo is
pragma Inline (Set_Modulus);
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_Non_Binary_Modulus);
+ pragma Inline (Set_Non_Limited_View);
+ pragma Inline (Set_Non_Limited_Views);
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_Original_Array_Type);
pragma Inline (Set_Original_Record_Component);
@@ -6276,6 +6476,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);
@@ -6299,23 +6500,14 @@ 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_Treat_As_Volatile);
pragma Inline (Set_Underlying_Full_View);
pragma Inline (Set_Unset_Reference);
pragma Inline (Set_Uses_Sec_Stack);