-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2017, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2019, 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- --
-- The SPARK RM 6.9 defines two classes of constructs - Ghost entities and
-- Ghost statements. The intent of the feature is to treat Ghost constructs
-- as non-existent when Ghost assertion policy Ignore is in effect.
-
+ --
-- The corresponding nodes which map to Ghost constructs are:
-
+ --
-- Ghost entities
-- Declaration nodes
-- N_Package_Body
-- N_Subprogram_Body
-
+ --
-- Ghost statements
-- N_Assignment_Statement
-- N_Procedure_Call_Statement
-- N_Pragma
-
+ --
-- In addition, the compiler treats instantiations as Ghost entities
-
+ --
-- To achieve the removal of ignored Ghost constructs, the compiler relies
- -- on global variable Ghost_Mode and a mechanism called "Ghost regions".
- -- The values of the global variable are as follows:
-
+ -- on global variables Ghost_Mode and Ignored_Ghost_Region, which comprise
+ -- a mechanism called "Ghost regions".
+ --
+ -- The values of Ghost_Mode are as follows:
+ --
-- 1. Check - All static semantics as defined in SPARK RM 6.9 are in
-- effect. The Ghost region has mode Check.
-
+ --
-- 2. Ignore - Same as Check, ignored Ghost code is not present in ALI
-- files, object files, and the final executable. The Ghost region
-- has mode Ignore.
-
+ --
-- 3. None - No Ghost region is in effect
-
+ --
+ -- The value of Ignored_Ghost_Region captures the node which initiates an
+ -- ignored Ghost region.
+ --
-- A Ghost region is a compiler operating mode, similar to Check_Syntax,
-- however a region is much more finely grained and depends on the policy
-- in effect. The region starts prior to the analysis of a Ghost construct
-- and ends immediately after its expansion. The region is established as
-- follows:
-
+ --
-- 1. Declarations - Prior to analysis, if the declaration is subject to
-- pragma Ghost.
-
+ --
-- 2. Renaming declarations - Same as 1) or when the renamed entity is
-- Ghost.
-
+ --
-- 3. Completing declarations - Same as 1) or when the declaration is
-- partially analyzed and the declaration completes a Ghost entity.
-
+ --
-- 4. N_Package_Body, N_Subprogram_Body - Same as 1) or when the body is
-- partially analyzed and completes a Ghost entity.
-
+ --
-- 5. N_Assignment_Statement - After the left hand side is analyzed and
-- references a Ghost entity.
-
+ --
-- 6. N_Procedure_Call_Statement - After the name is analyzed and denotes
-- a Ghost procedure.
-
+ --
-- 7. N_Pragma - During analysis, when the related entity is Ghost or the
-- pragma encloses a Ghost entity.
-
+ --
-- 8. Instantiations - Save as 1) or when the instantiation is partially
-- analyzed and the generic template is Ghost.
-
- -- Routines Mark_And_Set_Ghost_xxx and Set_Ghost_Mode install a new Ghost
- -- region and routine Restore_Ghost_Mode ends a Ghost region. A region may
- -- be reinstalled similarly to scopes for decoupled expansion such as the
- -- generation of dispatch tables or the creation of a predicate function.
-
+ --
+ -- The following routines install a new Ghost region:
+ --
+ -- Install_Ghost_Region
+ -- Mark_And_Set_Ghost_xxx
+ -- Set_Ghost_Mode
+ --
+ -- The following routine ends a Ghost region:
+ --
+ -- Restore_Ghost_Region
+ --
+ -- A region may be reinstalled similarly to scopes for decoupled expansion
+ -- such as the generation of dispatch tables or the creation of a predicate
+ -- function.
+ --
-- If the mode of a Ghost region is Ignore, any newly created nodes as well
-- as source entities are marked as ignored Ghost. In additon, the marking
-- process signals all enclosing scopes that an ignored Ghost node resides
-- within. The compilation unit where the node resides is also added to an
-- auxiliary table for post processing.
-
+ --
-- After the analysis and expansion of all compilation units takes place
-- as well as the instantiation of all inlined [generic] bodies, the GNAT
-- driver initiates a separate pass which removes all ignored Ghost nodes
-- The tree after this light expansion should be fully analyzed
-- semantically, which sometimes requires the insertion of semantic
- -- pre-analysis, for example for subprogram contracts and pragma
+ -- preanalysis, for example for subprogram contracts and pragma
-- check/assert. In particular, all expression must have their proper type,
-- and semantic links should be set between tree nodes (partial to full
-- view, etc.) Some kinds of nodes should be either absent, or can be
-- GNATprove mode. As a special case, the front end does not insert a
-- Do_Division_Check flag on float exponentiation expressions, for the case
-- where the value is 0.0 and the exponent is negative, although this case
- -- does lead to a division check failure.
+ -- does lead to a division check failure. As another special case,
+ -- the front end does not insert a Do_Range_Check on an allocator where
+ -- the designated type is scalar, and the designated type is more
+ -- constrained than the type of the initialized allocator value or the type
+ -- of the default value for an uninitialized allocator.
- -- Note: the expander always takes care of the Do_Range check case,
- -- so this flag will never be set in the expanded tree passed to the
- -- back end code generator.
+ -- Note that the expander always takes care of the Do_Range_Check case, so
+ -- this flag will never be set in the expanded tree passed to the back end.
+ -- For the other two flags, the check can be generated either by the back
+ -- end or by the front end, depending on the setting of a target parameter.
-- Note that this accounts for all nodes that trigger the corresponding
-- checks, except for range checks on subtype_indications, which may be
-- is used for translation of the at end handler into a normal exception
-- handler.
+ -- Aspect_On_Partial_View (Flag18)
+ -- Present on an N_Aspect_Specification node. For an aspect that applies
+ -- to a type entity, indicates whether the specification appears on the
+ -- partial view of a private type or extension. Undefined for aspects
+ -- that apply to other entities.
+
-- Aspect_Rep_Item (Node2-Sem)
-- Present in N_Aspect_Specification nodes. Points to the corresponding
-- pragma/attribute definition node used to process the aspect.
-- Corresponding_Generic_Association (Node5-Sem)
-- This field is defined for object declarations and object renaming
-- declarations. It is set for the declarations within an instance that
- -- map generic formals to their actuals. If set, the field points to
- -- a generic_association which is the original parent of the expression
- -- or name appearing in the declaration. This simplifies ASIS queries.
+ -- map generic formals to their actuals. If set, the field points either
+ -- to a copy of a default expression for an actual of mode IN or to a
+ -- generic_association which is the original parent of the expression or
+ -- name appearing in the declaration. This simplifies ASIS and GNATprove
+ -- queries.
-- Corresponding_Integer_Value (Uint4-Sem)
-- This field is set in real literals of fixed-point types (it is not
-- conversion nodes (and set if the conversion requires a check).
-- Do_Division_Check (Flag13-Sem)
- -- This flag is set on a division operator (/ mod rem) to indicate
- -- that a zero divide check is required. The actual check is dealt
- -- with by the backend (all the front end does is to set the flag).
+ -- This flag is set on a division operator (/ mod rem) to indicate that
+ -- a zero divide check is required. The actual check is either dealt with
+ -- by the back end if Backend_Divide_Checks is set to true, or by the
+ -- front end itself if it is set to false.
-- Do_Length_Check (Flag4-Sem)
-- This flag is set in an N_Assignment_Statement, N_Op_And, N_Op_Or,
-- Do_Overflow_Check (Flag17-Sem)
-- This flag is set on an operator where an overflow check is required on
- -- the operation. The actual check is dealt with by the backend (all the
- -- front end does is to set the flag). The other cases where this flag is
- -- used is on a Type_Conversion node and for attribute reference nodes.
+ -- the operation. The actual check is either dealt with by the back end
+ -- if Backend_Overflow_Checks is set to true, or by the front end itself
+ -- if it is set to false. The other cases where this flag is used is on a
+ -- Type_Conversion node as well on if and case expression nodes.
-- For a type conversion, it means that the conversion is from one base
-- type to another, and the value may not fit in the target base type.
- -- See also the description of Do_Range_Check for this case. The only
- -- attribute references which use this flag are Pred and Succ, where it
- -- means that the result should be checked for going outside the base
- -- range. Note that this flag is not set for modular types. This flag is
+ -- See also the description of Do_Range_Check for this case. This flag is
-- also set on if and case expression nodes if we are operating in either
-- MINIMIZED or ELIMINATED overflow checking mode (to make sure that we
-- properly process overflow checking for dependent expressions).
-- range check is required. The target type is clear from the context.
-- The contexts in which this flag can appear are the following:
- -- Right side of an assignment. In this case the target type is
- -- taken from the left side of the assignment, which is referenced
- -- by the Name of the N_Assignment_Statement node.
+ -- Right side of an assignment. In this case the target type is taken
+ -- from the left side of the assignment, which is referenced by the
+ -- Name of the N_Assignment_Statement node.
-- Subscript expressions in an indexed component. In this case the
-- target type is determined from the type of the array, which is
-- listed above (e.g. in a return statement), an additional type
-- conversion node is introduced to represent the required check.
- -- A special case arises for the arguments of the Pred/Succ attributes.
- -- Here the range check needed is against First + 1 .. Last (Pred) or
- -- First .. Last - 1 (Succ) of the corresponding base type. Essentially
- -- these checks are what would be performed within the implicit body of
- -- the functions that correspond to these attributes. In these cases,
- -- the Do_Range check flag is set on the argument to the attribute
- -- function, and the back end must special case the appropriate range
- -- to check against.
-
-- Do_Storage_Check (Flag17-Sem)
-- This flag is set in an N_Allocator node to indicate that a storage
-- check is required for the allocation, or in an N_Subprogram_Body node
-- expansion of the same attribute in the said context.
-- Hidden_By_Use_Clause (Elist5-Sem)
- -- An entity list present in use clauses that appear within
- -- instantiations. For the resolution of local entities, entities
- -- introduced by these use clauses have priority over global ones, and
- -- outer entities must be explicitly hidden/restored on exit.
+ -- An entity list present in use clauses that appear within
+ -- instantiations. For the resolution of local entities, entities
+ -- introduced by these use clauses have priority over global ones,
+ -- and outer entities must be explicitly hidden/restored on exit.
-- Implicit_With (Flag16-Sem)
- -- This flag is set in the N_With_Clause node that is implicitly
- -- generated for runtime units that are loaded by the expander or in
- -- GNATprove mode, and also for package System, if it is loaded
- -- implicitly by a use of the 'Address or 'Tag attribute.
- -- ??? There are other implicit with clauses as well.
-
- -- Implicit_With_From_Instantiation (Flag12-Sem)
- -- Set in N_With_Clause nodes from generic instantiations.
+ -- Present in N_With_Clause nodes. The flag indicates that the clause
+ -- does not comes from source and introduces an implicit dependency on
+ -- a particular unit. Such implicit with clauses are generated by:
+ --
+ -- * ABE mechanism - The static elaboration model of both the default
+ -- and the legacy ABE mechanism use with clauses to encode implicit
+ -- Elaborate[_All] pragmas.
+ --
+ -- * Analysis - A with clause for child unit A.B.C is equivalent to
+ -- a series of clauses that with A, A.B, and A.B.C. Manipulation of
+ -- contexts utilizes implicit with clauses to emulate the visibility
+ -- of a particular unit.
+ --
+ -- * RTSfind - The compiler generates code which references entities
+ -- from the runtime.
-- Import_Interface_Present (Flag16-Sem)
- -- This flag is set in an Interface or Import pragma if a matching
- -- pragma of the other kind is also present. This is used to avoid
- -- generating some unwanted error messages.
+ -- This flag is set in an Interface or Import pragma if a matching
+ -- pragma of the other kind is also present. This is used to avoid
+ -- generating some unwanted error messages.
-- Includes_Infinities (Flag11-Sem)
-- This flag is present in N_Range nodes. It is set for the range of
-- If this flag is set, the aspect or policy is not analyzed for semantic
-- correctness, so any expressions etc will not be marked as analyzed.
- -- Is_Dispatching_Call (Flag3-Sem)
+ -- Is_Dispatching_Call (Flag6-Sem)
-- Present in call marker nodes. Set when the related call which prompted
-- the creation of the marker is dispatching.
-- Present in allocator nodes, to indicate that this is an allocator
-- for an access discriminant of a dynamically allocated object. The
-- coextension must be deallocated and finalized at the same time as
- -- the enclosing object.
+ -- the enclosing object. The partner flag Is_Static_Coextension must
+ -- be cleared before setting this flag to True.
-- Is_Effective_Use_Clause (Flag1-Sem)
-- Present in both N_Use_Type_Clause and N_Use_Package_Clause to indicate
-- a use clause is "used" in the current source.
-- Is_Elaboration_Checks_OK_Node (Flag1-Sem)
- -- Present in nodes which represent an elaboration scenario. Those are
- -- assignment statement, attribute reference, call marker, entry call
- -- statement, expanded name, function call, identifier, instantiation,
- -- procedure call statement, and requeue statement nodes. Set when the
- -- node appears within a context which allows for the generation of
- -- run-time ABE checks. This flag detemines whether the ABE Processing
+ -- Present in the following nodes:
+ --
+ -- assignment statement
+ -- attribute reference
+ -- call marker
+ -- entry call statement
+ -- expanded name
+ -- function call
+ -- function instantiation
+ -- identifier
+ -- package instantiation
+ -- procedure call statement
+ -- procedure instantiation
+ -- requeue statement
+ -- variable reference marker
+ --
+ -- Set when the node appears within a context which allows the generation
+ -- of run-time ABE checks. This flag detemines whether the ABE Processing
-- phase generates conditional ABE checks and guaranteed ABE failures.
-- Is_Elaboration_Code (Flag9-Sem)
-- the elaboration flag of a package or subprogram when the corresponding
-- body is successfully elaborated.
+ -- Is_Elaboration_Warnings_OK_Node (Flag3-Sem)
+ -- Present in the following nodes:
+ --
+ -- attribute reference
+ -- call marker
+ -- entry call statement
+ -- expanded name
+ -- function call
+ -- function instantiation
+ -- identifier
+ -- package instantiation
+ -- procedure call statement
+ -- procedure instantiation
+ -- requeue statement
+ -- variable reference marker
+ --
+ -- Set when the node appears within a context where elaboration warnings
+ -- are enabled. This flag determines whether the ABE processing phase
+ -- generates diagnostics on various elaboration issues.
+
-- Is_Entry_Barrier_Function (Flag8-Sem)
-- This flag is set on N_Subprogram_Declaration and N_Subprogram_Body
-- nodes which emulate the barrier function of a protected entry body.
-- Refined_State
-- Test_Case
+ -- Is_Homogeneous_Aggregate (Flag14)
+ -- A flag set on an Ada 2020 aggregate that uses square brackets as
+ -- delimiters, and thus denotes an array or container aggregate, or
+ -- the prefix of a reduction attribute.
+
-- Is_Ignored (Flag9-Sem)
-- A flag set in an N_Aspect_Specification or N_Pragma node if there was
-- a Check_Policy or Assertion_Policy (or in the case of a Debug_Pragma)
-- finalization actions in initialization contexts.
-- Is_Known_Guaranteed_ABE (Flag18-Sem)
- -- Present in call markers and instantiations. Set when the elaboration
- -- or evaluation of the scenario results in a guaranteed ABE. The flag
- -- is used to suppress the instantiation of generic bodies because gigi
- -- cannot handle certain forms of premature instantiation, as well as to
- -- prevent the reexamination of the node by the ABE Processing phase.
+ -- NOTE: this flag is shared between the legacy ABE mechanism and the
+ -- default ABE mechanism.
+ --
+ -- Present in the following nodes:
+ --
+ -- call marker
+ -- formal package declaration
+ -- function call
+ -- function instantiation
+ -- package instantiation
+ -- procedure call statement
+ -- procedure instantiation
+ --
+ -- Set when the elaboration or evaluation of the scenario results in
+ -- a guaranteed ABE. The flag is used to suppress the instantiation of
+ -- generic bodies because gigi cannot handle certain forms of premature
+ -- instantiation, as well as to prevent the reexamination of the node by
+ -- the ABE Processing phase.
-- Is_Machine_Number (Flag11-Sem)
-- This flag is set in an N_Real_Literal node to indicate that the value
-- can be determined to be null at compile time. This is used to remove
-- the loop entirely at expansion time.
+ -- Is_OpenAcc_Environment (Flag13-Sem)
+ -- This flag is set in an N_Loop_Statement node if it contains an
+ -- Acc_Data, Acc_Parallel or Add_Kernels pragma.
+
+ -- Is_OpenAcc_Loop (Flag14-Sem)
+ -- This flag is set in an N_Loop_Statement node if it contains an
+ -- OpenAcc_Loop pragma.
+
-- Is_Overloaded (Flag5-Sem)
-- A flag present in all expression nodes. Used temporarily during
-- overloading determination. The setting of this flag is not relevant
-- the resolution of accidental overloading of binary or unary operators
-- which may occur in instances.
- -- Is_Read (Flag1-Sem)
+ -- Is_Read (Flag4-Sem)
-- Present in variable reference markers. Set when the original variable
-- reference constitues a read of the variable.
-- source.
-- Is_SPARK_Mode_On_Node (Flag2-Sem)
- -- Present in nodes which represent an elaboration scenario. Those are
- -- assignment statement, attribute reference, call marker, entry call
- -- statement, expanded name, function call, identifier, instantiation,
- -- procedure call statement, and requeue statement nodes. Set when the
- -- node appears within a context subject to SPARK_Mode On. This flag
- -- determines when the SPARK model of elaboration be activated by the
- -- ABE Processing phase.
+ -- Present in the following nodes:
+ --
+ -- assignment statement
+ -- attribute reference
+ -- call marker
+ -- entry call statement
+ -- expanded name
+ -- function call
+ -- function instantiation
+ -- identifier
+ -- package instantiation
+ -- procedure call statement
+ -- procedure instantiation
+ -- requeue statement
+ -- variable reference marker
+ --
+ -- Set when the node appears within a context subject to SPARK_Mode On.
+ -- This flag determines when the SPARK model of elaboration be activated
+ -- by the ABE Processing phase.
-- Is_Static_Coextension (Flag14-Sem)
-- Present in N_Allocator nodes. Set if the allocator is a coextension
- -- of an object allocated on the stack rather than the heap.
+ -- of an object allocated on the stack rather than the heap. The partner
+ -- flag Is_Dynamic_Coextension must be cleared before setting this flag
+ -- to True.
-- Is_Static_Expression (Flag6-Sem)
-- Indicates that an expression is a static expression according to the
- -- rules in (RM 4.9). Note that it is possible for this flag to be set
- -- when Raises_Constraint_Error is also set. In practice almost all cases
- -- where a static expression is required do not allow an expression which
- -- raises Constraint_Error, so almost always, callers should call the
- -- Is_Ok_Static_Expression routine instead of testing this flag. See
- -- spec of package Sem_Eval for full details on the use of this flag.
+ -- rules in RM-4.9. See Sem_Eval for details.
-- Is_Subprogram_Descriptor (Flag16-Sem)
-- Present in N_Object_Declaration, and set only for the object
-- indicate that the construct is a task master (i.e. has declared tasks
-- or declares an access to a task type).
- -- Is_Write (Flag2-Sem)
+ -- Is_Write (Flag5-Sem)
-- Present in variable reference markers. Set when the original variable
-- reference constitues a write of the variable.
-- expansions where the generated assignments are initializations, not
-- real assignments.
+ -- No_Elaboration_Check (Flag4-Sem)
+ -- NOTE: this flag is relevant only for the legacy ABE mechanism and
+ -- should not be used outside of that context.
+ --
+ -- Present in N_Function_Call and N_Procedure_Call_Statement. Indicates
+ -- that no elaboration check is needed on the call, because it appears in
+ -- the context of a local Suppress pragma. This is used on calls within
+ -- task bodies, where the actual elaboration checks are applied after
+ -- analysis, when the local scope stack is not present
+
-- No_Entities_Ref_In_Spec (Flag8-Sem)
-- Present in N_With_Clause nodes. Set if the with clause is on the
-- package or subprogram spec where the main unit is the corresponding
-- package specification. This field is Empty for library bodies (the
-- parent spec in this case can be found from the corresponding spec).
+ -- Parent_With (Flag1-Sem)
+ -- Present in N_With_Clause nodes. The flag indicates that the clause
+ -- was generated for an ancestor unit to provide proper visibility. A
+ -- with clause for child unit A.B.C produces two implicit parent with
+ -- clauses for A and A.B.
+
-- Premature_Use (Node5-Sem)
-- Present in N_Incomplete_Type_Declaration node. Used for improved
-- error diagnostics: if there is a premature usage of an incomplete
-- Raises_Constraint_Error (Flag7-Sem)
-- Set on an expression whose evaluation will definitely fail constraint
- -- error check. In the case of static expressions, this flag must be set
- -- accurately (and if it is set, the expression is typically illegal
- -- unless it appears as a non-elaborated branch of a short-circuit form).
- -- For a non-static expression, this flag may be set whenever an
- -- expression (e.g. an aggregate) is known to raise constraint error. If
- -- set, the expression definitely will raise CE if elaborated at runtime.
- -- If not set, the expression may or may not raise CE. In other words, on
- -- static expressions, the flag is set accurately, on non-static
- -- expressions it is set conservatively.
+ -- error check. See Sem_Eval for details.
-- Redundant_Use (Flag13-Sem)
-- Present in nodes that can appear as an operand in a use clause or use
-- Present in N_Extended_Return_Statement. Points to a list initially
-- containing a single N_Object_Declaration representing the return
-- object. We use a list (instead of just a pointer to the object decl)
- -- because Analyze wants to insert extra actions on this list.
+ -- because Analyze wants to insert extra actions on this list, before the
+ -- N_Object_Declaration, which always remains last on the list.
-- Rounded_Result (Flag18-Sem)
-- Present in N_Type_Conversion, N_Op_Divide, and N_Op_Multiply nodes.
-- are the result of expansion of rounded fixed-point divide, conversion
-- and multiplication operations.
+ -- Save_Invocation_Graph_Of_Body (Flag1-Sem)
+ -- Present in compilation unit nodes. Set when the elaboration mechanism
+ -- must record all invocation constructs and invocation relations within
+ -- the body of the compilation unit.
+ --
-- SCIL_Entity (Node4-Sem)
-- Present in SCIL nodes. References the specific tagged type associated
-- with the SCIL node (for an N_SCIL_Dispatching_Call node, this is
-- Split_PPC (Flag17)
-- When a Pre or Post aspect specification is processed, it is broken
- -- into AND THEN sections. The left most section has Split_PPC set to
+ -- into AND THEN sections. The leftmost section has Split_PPC set to
-- False, indicating that it is the original specification (e.g. for
-- posting errors). For other sections, Split_PPC is set to True.
-- This flag is set in both the N_Aspect_Specification node itself,
-- need for this field, so in the tree passed to Gigi, this field is
-- always set to No_List.
- -- Treat_Fixed_As_Integer (Flag14-Sem)
- -- This flag appears in operator nodes for divide, multiply, mod, and rem
- -- on fixed-point operands. It indicates that the operands are to be
- -- treated as integer values, ignoring small values. This flag is only
- -- set as a result of expansion of fixed-point operations. Typically a
- -- fixed-point multiplication in the source generates subsidiary
- -- multiplication and division operations that work with the underlying
- -- integer values and have this flag set. Note that this flag is not
- -- needed on other arithmetic operations (add, neg, subtract etc.) since
- -- in these cases it is always the case that fixed is treated as integer.
- -- The Etype field MUST be set if this flag is set. The analyzer knows to
- -- leave such nodes alone, and whoever makes them must set the correct
- -- Etype value.
-
-- TSS_Elist (Elist3-Sem)
-- Present in N_Freeze_Entity nodes. Holds an element list containing
-- entries for each TSS (type support subprogram) associated with the
-- Original_Node here because of the case of nested instantiations where
-- the substituted node can be copied.
- -- Withed_Body (Node1-Sem)
- -- Present in N_With_Clause nodes. Set if the unit in whose context
- -- the with_clause appears instantiates a generic contained in the
- -- library unit of the with_clause and as a result loads its body.
- -- Used for a more precise unit traversal for CodePeer.
-
--------------------------------------------------
-- Note on Use of End_Label and End_Span Fields --
--------------------------------------------------
-- Original_Discriminant (Node2-Sem)
-- Is_Elaboration_Checks_OK_Node (Flag1-Sem)
-- Is_SPARK_Mode_On_Node (Flag2-Sem)
+ -- Is_Elaboration_Warnings_OK_Node (Flag3-Sem)
-- Has_Private_View (Flag11-Sem) (set in generic units)
-- Redundant_Use (Flag13-Sem)
-- Atomic_Sync_Required (Flag14-Sem)
-- Einfo.
-- Note: N_Defining_Identifier is an extended node whose fields are
- -- deliberate layed out to match the layout of fields in an ordinary
+ -- deliberately laid out to match the layout of fields in an ordinary
-- N_Identifier node allowing for easy alteration of an identifier
-- node into a defining identifier node. For details, see procedure
-- Sinfo.CN.Change_Identifier_To_Defining_Identifier.
-- in package Einfo.
-- Note: N_Defining_Character_Literal is an extended node whose fields
- -- are deliberate layed out to match the layout of fields in an ordinary
- -- N_Character_Literal node allowing for easy alteration of a character
+ -- are deliberately laid out to match layout of fields in an ordinary
+ -- N_Character_Literal node, allowing for easy alteration of a character
-- literal node into a defining character literal node. For details, see
-- Sinfo.CN.Change_Character_Literal_To_Defining_Character_Literal.
-- Associated_Node (Node4-Sem)
-- Is_Elaboration_Checks_OK_Node (Flag1-Sem)
-- Is_SPARK_Mode_On_Node (Flag2-Sem)
+ -- Is_Elaboration_Warnings_OK_Node (Flag3-Sem)
-- Header_Size_Added (Flag11-Sem)
-- Redundant_Use (Flag13-Sem)
-- Must_Be_Byte_Aligned (Flag14-Sem)
-- Compile_Time_Known_Aggregate (Flag18-Sem)
-- Expansion_Delayed (Flag11-Sem)
-- Has_Self_Reference (Flag13-Sem)
+ -- Is_Homogeneous_Aggregate (Flag14)
-- plus fields for expression
-- Note: this structure is used for both record and array aggregates
-- makes no attempt to enforce consistency here, so it is up to the
-- semantic phase to make sure that the aggregate is consistent (i.e.
-- that it is not a "half-and-half" case that mixes record and array
- -- syntax. In particular, for a record aggregate, the expressions
+ -- syntax). In particular, for a record aggregate, the expressions
-- field will be set if there are positional associations.
-- Note: N_Aggregate is not used for all aggregates; in particular,
-- HIGHEST_PRECEDENCE_OPERATOR ::= ** | abs | not
- -- Sprint syntax if Treat_Fixed_As_Integer is set:
-
- -- x #* y
- -- x #/ y
- -- x #mod y
- -- x #rem y
-
- -- Gigi restriction: For * / mod rem with fixed-point operands, Gigi
- -- will only be given nodes with the Treat_Fixed_As_Integer flag set.
- -- All handling of smalls for multiplication and division is handled
- -- by the front end (mod and rem result only from expansion). Gigi
- -- thus never needs to worry about small values (for other operators
- -- operating on fixed-point, e.g. addition, the small value does not
- -- have any semantic effect anyway, these are always integer operations.
+ -- Gigi restriction: Gigi will never be given * / mod rem nodes with
+ -- fixed-point operands. All handling of smalls for multiplication and
+ -- division is handled by the front end (mod and rem result only from
+ -- expansion). Gigi thus never needs to worry about small values (for
+ -- other operators operating on fixed-point, e.g. addition, the small
+ -- value does not have any semantic effect anyway, these are always
+ -- integer operations.
-- Gigi restriction: For all operators taking Boolean operands, the
-- type is always Standard.Boolean. The expander inserts the required
-- N_Op_Multiply
-- Sloc points to *
- -- Treat_Fixed_As_Integer (Flag14-Sem)
-- Rounded_Result (Flag18-Sem)
-- plus fields for binary operator
-- plus fields for expression
-- N_Op_Divide
-- Sloc points to /
- -- Treat_Fixed_As_Integer (Flag14-Sem)
-- Do_Division_Check (Flag13-Sem)
-- Rounded_Result (Flag18-Sem)
-- plus fields for binary operator
-- N_Op_Mod
-- Sloc points to MOD
- -- Treat_Fixed_As_Integer (Flag14-Sem)
-- Do_Division_Check (Flag13-Sem)
-- plus fields for binary operator
-- plus fields for expression
-- N_Op_Rem
-- Sloc points to REM
- -- Treat_Fixed_As_Integer (Flag14-Sem)
-- Do_Division_Check (Flag13-Sem)
-- plus fields for binary operator
-- plus fields for expression
-- the semantics is to treat these simply as integer operations, with
-- the small values being ignored (the bounds are already stored in
-- units of small, so that constraint checking works as usual). For the
- -- case of multiply/divide/rem/mod operations, Gigi will only see fixed
- -- point operands if the Treat_Fixed_As_Integer flag is set and will
- -- thus treat these nodes in identical manner, ignoring small values.
+ -- case of multiply/divide/rem/mod operations, Gigi will never see them.
-- Note on equality/inequality tests for records. In the expanded tree,
-- record comparisons are always expanded to be a series of component
--------------------------
-- 4.5.7 If Expression --
- ----------------------------
+ --------------------------
-- IF_EXPRESSION ::=
-- if CONDITION then DEPENDENT_EXPRESSION
-- since the expander converts case expressions into case statements.
---------------------------------
- -- 4.5.9 Quantified Expression --
+ -- 4.5.8 Quantified Expression --
---------------------------------
-- QUANTIFIED_EXPRESSION ::=
-- Iteration_Scheme (Node2) (set to Empty if no iteration scheme)
-- Statements (List3)
-- End_Label (Node4)
+ -- Is_OpenAcc_Environment (Flag13-Sem)
+ -- Is_OpenAcc_Loop (Flag14-Sem)
-- Has_Created_Identifier (Flag15)
-- Is_Null_Loop (Flag16)
-- Suppress_Loop_Warnings (Flag17)
-- in package Einfo.
-- Note: N_Defining_Operator_Symbol is an extended node whose fields
- -- are deliberately layed out to match the layout of fields in an
+ -- are deliberately laid out to match the layout of fields in an
-- ordinary N_Operator_Symbol node allowing for easy alteration of
-- an operator symbol node into a defining operator symbol node.
-- See Sinfo.CN.Change_Operator_Symbol_To_Defining_Operator_Symbol
-- Controlling_Argument (Node1-Sem) (set to Empty if not dispatching)
-- Is_Elaboration_Checks_OK_Node (Flag1-Sem)
-- Is_SPARK_Mode_On_Node (Flag2-Sem)
+ -- Is_Elaboration_Warnings_OK_Node (Flag3-Sem)
+ -- No_Elaboration_Check (Flag4-Sem)
-- Do_Tag_Check (Flag13-Sem)
+ -- Is_Known_Guaranteed_ABE (Flag18-Sem)
-- plus fields for expression
-- If any IN parameter requires a range check, then the corresponding
-- Controlling_Argument (Node1-Sem) (set to Empty if not dispatching)
-- Is_Elaboration_Checks_OK_Node (Flag1-Sem)
-- Is_SPARK_Mode_On_Node (Flag2-Sem)
+ -- Is_Elaboration_Warnings_OK_Node (Flag3-Sem)
+ -- No_Elaboration_Check (Flag4-Sem)
-- Is_Expanded_Build_In_Place_Call (Flag11-Sem)
-- Do_Tag_Check (Flag13-Sem)
-- No_Side_Effect_Removal (Flag17-Sem)
+ -- Is_Known_Guaranteed_ABE (Flag18-Sem)
-- plus fields for expression
--------------------------------
-- 6.4 Actual Parameter --
---------------------------
- -- EXPLICIT_ACTUAL_PARAMETER ::= EXPRESSION | variable_NAME
+ -- EXPLICIT_ACTUAL_PARAMETER ::=
+ -- EXPRESSION | variable_NAME | REDUCTION_EXPRESSION_PARAMETER
---------------------------
-- 6.5 Return Statement --
-- First_Named_Actual (Node4-Sem)
-- Is_Elaboration_Checks_OK_Node (Flag1-Sem)
-- Is_SPARK_Mode_On_Node (Flag2-Sem)
+ -- Is_Elaboration_Warnings_OK_Node (Flag3-Sem)
------------------------------
-- 9.5.4 Requeue Statement --
-- Abort_Present (Flag15)
-- Is_Elaboration_Checks_OK_Node (Flag1-Sem)
-- Is_SPARK_Mode_On_Node (Flag2-Sem)
+ -- Is_Elaboration_Warnings_OK_Node (Flag3-Sem)
--------------------------
-- 9.6 Delay Statement --
-- N_Compilation_Unit
-- Sloc points to first token of defining unit name
- -- Library_Unit (Node4-Sem) corresponding/parent spec/body
-- Context_Items (List1) context items and pragmas preceding unit
-- Private_Present (Flag15) set if library unit has private keyword
-- Unit (Node2) library item or subunit
-- Aux_Decls_Node (Node5) points to the N_Compilation_Unit_Aux node
- -- Has_No_Elaboration_Code (Flag17-Sem)
- -- Body_Required (Flag13-Sem) set for spec if body is required
- -- Acts_As_Spec (Flag4-Sem) flag for subprogram body with no spec
- -- Context_Pending (Flag16-Sem)
-- First_Inlined_Subprogram (Node3-Sem)
+ -- Library_Unit (Node4-Sem) corresponding/parent spec/body
+ -- Save_Invocation_Graph_Of_Body (Flag1-Sem)
+ -- Acts_As_Spec (Flag4-Sem) flag for subprogram body with no spec
+ -- Body_Required (Flag13-Sem) set for spec if body is required
-- Has_Pragma_Suppress_All (Flag14-Sem)
+ -- Context_Pending (Flag16-Sem)
+ -- Has_No_Elaboration_Code (Flag17-Sem)
-- N_Compilation_Unit_Aux
-- Sloc is a copy of the Sloc from the N_Compilation_Unit node
-- N_With_Clause
-- Sloc points to first token of library unit name
- -- Withed_Body (Node1-Sem)
-- Name (Node2)
+ -- Private_Present (Flag15) set if with_clause has private keyword
+ -- Limited_Present (Flag17) set if LIMITED is present
-- Next_Implicit_With (Node3-Sem)
-- Library_Unit (Node4-Sem)
-- Corresponding_Spec (Node5-Sem)
-- Elaborate_All_Present (Flag14-Sem)
-- Elaborate_All_Desirable (Flag9-Sem)
-- Elaborate_Desirable (Flag11-Sem)
- -- Private_Present (Flag15) set if with_clause has private keyword
-- Implicit_With (Flag16-Sem)
- -- Implicit_With_From_Instantiation (Flag12-Sem)
- -- Limited_Present (Flag17) set if LIMITED is present
-- Limited_View_Installed (Flag18-Sem)
+ -- Parent_With (Flag1-Sem)
-- Unreferenced_In_Spec (Flag7-Sem)
-- No_Entities_Ref_In_Spec (Flag8-Sem)
-- Instance_Spec (Node5-Sem)
-- Is_Elaboration_Checks_OK_Node (Flag1-Sem)
-- Is_SPARK_Mode_On_Node (Flag2-Sem)
+ -- Is_Elaboration_Warnings_OK_Node (Flag3-Sem)
-- Is_Declaration_Level_Node (Flag5-Sem)
-- Is_Known_Guaranteed_ABE (Flag18-Sem)
-- Instance_Spec (Node5-Sem)
-- Is_Elaboration_Checks_OK_Node (Flag1-Sem)
-- Is_SPARK_Mode_On_Node (Flag2-Sem)
+ -- Is_Elaboration_Warnings_OK_Node (Flag3-Sem)
-- Is_Declaration_Level_Node (Flag5-Sem)
-- Must_Override (Flag14) set if overriding indicator present
-- Must_Not_Override (Flag15) set if not_overriding indicator present
-- Instance_Spec (Node5-Sem)
-- Is_Elaboration_Checks_OK_Node (Flag1-Sem)
-- Is_SPARK_Mode_On_Node (Flag2-Sem)
+ -- Is_Elaboration_Warnings_OK_Node (Flag3-Sem)
-- Is_Declaration_Level_Node (Flag5-Sem)
-- Must_Override (Flag14) set if overriding indicator present
-- Must_Not_Override (Flag15) set if not_overriding indicator present
-- empty generic actual part)
-- Box_Present (Flag15)
-- Instance_Spec (Node5-Sem)
+ -- Is_Known_Guaranteed_ABE (Flag18-Sem)
--------------------------------------
-- 12.7 Formal Package Actual Part --
-- Is_Disabled (Flag15-Sem)
-- Is_Boolean_Aspect (Flag16-Sem)
-- Split_PPC (Flag17) Set if split pre/post attribute
+ -- Aspect_On_Partial_View (Flag18-Sem)
-- Note: Aspect_Specification is an Ada 2012 feature
-- Target (Node1-Sem)
-- Is_Elaboration_Checks_OK_Node (Flag1-Sem)
-- Is_SPARK_Mode_On_Node (Flag2-Sem)
- -- Is_Dispatching_Call (Flag3-Sem)
+ -- Is_Elaboration_Warnings_OK_Node (Flag3-Sem)
-- Is_Source_Call (Flag4-Sem)
-- Is_Declaration_Level_Node (Flag5-Sem)
+ -- Is_Dispatching_Call (Flag6-Sem)
-- Is_Known_Guaranteed_ABE (Flag18-Sem)
------------------------
-- of this node, leaving the N_Selected_Component node used only when
-- the prefix is a record or protected type.
- -- The fields of the N_Expanded_Name node are layed out identically
+ -- The fields of the N_Expanded_Name node are laid out identically
-- to those of the N_Selected_Component node, allowing conversion of
-- an expanded name node to a selected component node to be done
-- easily, see Sinfo.CN.Change_Selected_Component_To_Expanded_Name.
-- Associated_Node (Node4-Sem)
-- Is_Elaboration_Checks_OK_Node (Flag1-Sem)
-- Is_SPARK_Mode_On_Node (Flag2-Sem)
+ -- Is_Elaboration_Warnings_OK_Node (Flag3-Sem)
-- Has_Private_View (Flag11-Sem) set in generic units
-- Redundant_Use (Flag13-Sem)
-- Atomic_Sync_Required (Flag14-Sem)
-- N_Variable_Reference_Marker
-- Sloc points to Sloc of original variable reference
-- Target (Node1-Sem)
- -- Is_Read (Flag1-Sem)
- -- Is_Write (Flag2-Sem)
+ -- Is_Elaboration_Checks_OK_Node (Flag1-Sem)
+ -- Is_SPARK_Mode_On_Node (Flag2-Sem)
+ -- Is_Elaboration_Warnings_OK_Node (Flag3-Sem)
+ -- Is_Read (Flag4-Sem)
+ -- Is_Write (Flag5-Sem)
-----------
-- Empty --
N_Op_Expon,
N_Op_Subtract,
- -- N_Binary_Op, N_Op, N_Subexpr, N_Has_Treat_Fixed_As_Integer
+ -- N_Binary_Op, N_Op, N_Subexpr,
-- N_Has_Etype, N_Has_Chars, N_Has_Entity, N_Multiplying_Operator
N_Op_Divide,
N_Error ..
N_Subtype_Indication;
- subtype N_Has_Treat_Fixed_As_Integer is Node_Kind range
- N_Op_Divide ..
- N_Op_Rem;
-
subtype N_Multiplying_Operator is Node_Kind range
N_Op_Divide ..
N_Op_Rem;
function Array_Aggregate
(N : Node_Id) return Node_Id; -- Node3
+ function Aspect_On_Partial_View
+ (N : Node_Id) return Boolean; -- Flag18
+
function Aspect_Rep_Item
(N : Node_Id) return Node_Id; -- Node2
function Implicit_With
(N : Node_Id) return Boolean; -- Flag16
- function Implicit_With_From_Instantiation
- (N : Node_Id) return Boolean; -- Flag12
-
function Import_Interface_Present
(N : Node_Id) return Boolean; -- Flag16
(N : Node_Id) return Boolean; -- Flag15
function Is_Dispatching_Call
- (N : Node_Id) return Boolean; -- Flag3
+ (N : Node_Id) return Boolean; -- Flag6
function Is_Dynamic_Coextension
(N : Node_Id) return Boolean; -- Flag18
function Is_Elaboration_Code
(N : Node_Id) return Boolean; -- Flag9
+ function Is_Elaboration_Warnings_OK_Node
+ (N : Node_Id) return Boolean; -- Flag3
+
function Is_Elsif
(N : Node_Id) return Boolean; -- Flag13
function Is_Generic_Contract_Pragma
(N : Node_Id) return Boolean; -- Flag2
+ function Is_Homogeneous_Aggregate
+ (N : Node_Id) return Boolean; -- Flag14
+
function Is_Ignored
(N : Node_Id) return Boolean; -- Flag9
function Is_Null_Loop
(N : Node_Id) return Boolean; -- Flag16
+ function Is_OpenAcc_Environment
+ (N : Node_Id) return Boolean; -- Flag13
+
+ function Is_OpenAcc_Loop
+ (N : Node_Id) return Boolean; -- Flag14
+
function Is_Overloaded
(N : Node_Id) return Boolean; -- Flag5
(N : Node_Id) return Boolean; -- Flag4
function Is_Read
- (N : Node_Id) return Boolean; -- Flag1
+ (N : Node_Id) return Boolean; -- Flag4
function Is_Source_Call
(N : Node_Id) return Boolean; -- Flag4
(N : Node_Id) return Boolean; -- Flag5
function Is_Write
- (N : Node_Id) return Boolean; -- Flag2
+ (N : Node_Id) return Boolean; -- Flag5
function Iteration_Scheme
(N : Node_Id) return Node_Id; -- Node2
function No_Ctrl_Actions
(N : Node_Id) return Boolean; -- Flag7
+ function No_Elaboration_Check
+ (N : Node_Id) return Boolean; -- Flag4
+
function No_Entities_Ref_In_Spec
(N : Node_Id) return Boolean; -- Flag8
function Parent_Spec
(N : Node_Id) return Node_Id; -- Node4
+ function Parent_With
+ (N : Node_Id) return Boolean; -- Flag1
+
function Position
(N : Node_Id) return Node_Id; -- Node2
function Rounded_Result
(N : Node_Id) return Boolean; -- Flag18
+ function Save_Invocation_Graph_Of_Body
+ (N : Node_Id) return Boolean; -- Flag1
+
function SCIL_Controlling_Tag
(N : Node_Id) return Node_Id; -- Node5
function Then_Statements
(N : Node_Id) return List_Id; -- List2
- function Treat_Fixed_As_Integer
- (N : Node_Id) return Boolean; -- Flag14
-
function Triggering_Alternative
(N : Node_Id) return Node_Id; -- Node1
function Was_Originally_Stub
(N : Node_Id) return Boolean; -- Flag13
- function Withed_Body
- (N : Node_Id) return Node_Id; -- Node1
-
-- End functions (note used by xsinfo utility program to end processing)
----------------------------
-- tree pointers (List1-4), the parent pointer of the Val node is set to
-- point back to node N. This automates the setting of the parent pointer.
+ -- WARNING: There is a matching C declaration of a few subprograms in fe.h
+
procedure Set_Abort_Present
(N : Node_Id; Val : Boolean := True); -- Flag15
procedure Set_Array_Aggregate
(N : Node_Id; Val : Node_Id); -- Node3
+ procedure Set_Aspect_On_Partial_View
+ (N : Node_Id; Val : Boolean := True); -- Flag18
+
procedure Set_Aspect_Rep_Item
(N : Node_Id; Val : Node_Id); -- Node2
procedure Set_Implicit_With
(N : Node_Id; Val : Boolean := True); -- Flag16
- procedure Set_Implicit_With_From_Instantiation
- (N : Node_Id; Val : Boolean := True); -- Flag12
-
procedure Set_Import_Interface_Present
(N : Node_Id; Val : Boolean := True); -- Flag16
(N : Node_Id; Val : Boolean := True); -- Flag15
procedure Set_Is_Dispatching_Call
- (N : Node_Id; Val : Boolean := True); -- Flag3
+ (N : Node_Id; Val : Boolean := True); -- Flag6
procedure Set_Is_Dynamic_Coextension
(N : Node_Id; Val : Boolean := True); -- Flag18
procedure Set_Is_Elaboration_Code
(N : Node_Id; Val : Boolean := True); -- Flag9
+ procedure Set_Is_Elaboration_Warnings_OK_Node
+ (N : Node_Id; Val : Boolean := True); -- Flag3
+
procedure Set_Is_Elsif
(N : Node_Id; Val : Boolean := True); -- Flag13
procedure Set_Is_Generic_Contract_Pragma
(N : Node_Id; Val : Boolean := True); -- Flag2
+ procedure Set_Is_Homogeneous_Aggregate
+ (N : Node_Id; Val : Boolean := True); -- Flag14
+
procedure Set_Is_Ignored
(N : Node_Id; Val : Boolean := True); -- Flag9
procedure Set_Is_Null_Loop
(N : Node_Id; Val : Boolean := True); -- Flag16
+ procedure Set_Is_OpenAcc_Environment
+ (N : Node_Id; Val : Boolean := True); -- Flag13
+
+ procedure Set_Is_OpenAcc_Loop
+ (N : Node_Id; Val : Boolean := True); -- Flag14
+
procedure Set_Is_Overloaded
(N : Node_Id; Val : Boolean := True); -- Flag5
(N : Node_Id; Val : Boolean := True); -- Flag4
procedure Set_Is_Read
- (N : Node_Id; Val : Boolean := True); -- Flag1
+ (N : Node_Id; Val : Boolean := True); -- Flag4
procedure Set_Is_Source_Call
(N : Node_Id; Val : Boolean := True); -- Flag4
(N : Node_Id; Val : Boolean := True); -- Flag5
procedure Set_Is_Write
- (N : Node_Id; Val : Boolean := True); -- Flag2
+ (N : Node_Id; Val : Boolean := True); -- Flag5
procedure Set_Iteration_Scheme
(N : Node_Id; Val : Node_Id); -- Node2
procedure Set_No_Ctrl_Actions
(N : Node_Id; Val : Boolean := True); -- Flag7
+ procedure Set_No_Elaboration_Check
+ (N : Node_Id; Val : Boolean := True); -- Flag4
+
procedure Set_No_Entities_Ref_In_Spec
(N : Node_Id; Val : Boolean := True); -- Flag8
procedure Set_Parent_Spec
(N : Node_Id; Val : Node_Id); -- Node4
+ procedure Set_Parent_With
+ (N : Node_Id; Val : Boolean := True); -- Flag1
+
procedure Set_Position
(N : Node_Id; Val : Node_Id); -- Node2
procedure Set_Rounded_Result
(N : Node_Id; Val : Boolean := True); -- Flag18
+ procedure Set_Save_Invocation_Graph_Of_Body
+ (N : Node_Id; Val : Boolean := True); -- Flag1
+
procedure Set_SCIL_Controlling_Tag
(N : Node_Id; Val : Node_Id); -- Node5
procedure Set_Then_Statements
(N : Node_Id; Val : List_Id); -- List2
- procedure Set_Treat_Fixed_As_Integer
- (N : Node_Id; Val : Boolean := True); -- Flag14
-
procedure Set_Triggering_Alternative
(N : Node_Id; Val : Node_Id); -- Node1
procedure Set_Was_Originally_Stub
(N : Node_Id; Val : Boolean := True); -- Flag13
- procedure Set_Withed_Body
- (N : Node_Id; Val : Node_Id); -- Node1
-
-------------------------
-- Iterator Procedures --
-------------------------
-- returns the location of the IF token in the END IF sequence by
-- translating the value of the End_Span field.
+ -- WARNING: There is a matching C declaration of this subprogram in fe.h
+
procedure Set_End_Location (N : Node_Id; S : Source_Ptr);
-- N is an N_If_Statement or N_Case_Statement node. This procedure sets
-- the End_Span field to correspond to the given value S. In other words,
V10 : Node_Kind;
V11 : Node_Kind) return Boolean;
+ -- 12..15-parameter versions are not yet needed
+
+ function Nkind_In
+ (T : Node_Kind;
+ V1 : Node_Kind;
+ V2 : Node_Kind;
+ V3 : Node_Kind;
+ V4 : Node_Kind;
+ V5 : Node_Kind;
+ V6 : Node_Kind;
+ V7 : Node_Kind;
+ V8 : Node_Kind;
+ V9 : Node_Kind;
+ V10 : Node_Kind;
+ V11 : Node_Kind;
+ V12 : Node_Kind;
+ V13 : Node_Kind;
+ V14 : Node_Kind;
+ V15 : Node_Kind;
+ V16 : Node_Kind) return Boolean;
+
pragma Inline (Nkind_In);
-- Inline all above functions
N_Iterated_Component_Association =>
(1 => True, -- Defining_Identifier (Node1)
- 2 => False, -- unused
+ 2 => True, -- Loop_Actions (List2-Sem)
3 => True, -- Expression (Node3)
4 => True, -- Discrete_Choices (List4)
5 => False), -- unused
pragma Inline (Ancestor_Part);
pragma Inline (Atomic_Sync_Required);
pragma Inline (Array_Aggregate);
+ pragma Inline (Aspect_On_Partial_View);
pragma Inline (Aspect_Rep_Item);
pragma Inline (Assignment_OK);
pragma Inline (Associated_Node);
pragma Inline (High_Bound);
pragma Inline (Identifier);
pragma Inline (Implicit_With);
- pragma Inline (Implicit_With_From_Instantiation);
pragma Inline (Interface_List);
pragma Inline (Interface_Present);
pragma Inline (Includes_Infinities);
pragma Inline (Is_Effective_Use_Clause);
pragma Inline (Is_Elaboration_Checks_OK_Node);
pragma Inline (Is_Elaboration_Code);
+ pragma Inline (Is_Elaboration_Warnings_OK_Node);
pragma Inline (Is_Elsif);
pragma Inline (Is_Entry_Barrier_Function);
pragma Inline (Is_Expanded_Build_In_Place_Call);
pragma Inline (Is_Finalization_Wrapper);
pragma Inline (Is_Folded_In_Parser);
pragma Inline (Is_Generic_Contract_Pragma);
+ pragma Inline (Is_Homogeneous_Aggregate);
pragma Inline (Is_Ignored);
pragma Inline (Is_Ignored_Ghost_Pragma);
pragma Inline (Is_In_Discriminant_Check);
pragma Inline (Is_Known_Guaranteed_ABE);
pragma Inline (Is_Machine_Number);
pragma Inline (Is_Null_Loop);
+ pragma Inline (Is_OpenAcc_Environment);
+ pragma Inline (Is_OpenAcc_Loop);
pragma Inline (Is_Overloaded);
pragma Inline (Is_Power_Of_2_For_Shift);
pragma Inline (Is_Prefixed_Call);
pragma Inline (Next_Rep_Item);
pragma Inline (Next_Use_Clause);
pragma Inline (No_Ctrl_Actions);
+ pragma Inline (No_Elaboration_Check);
pragma Inline (No_Entities_Ref_In_Spec);
pragma Inline (No_Initialization);
pragma Inline (No_Minimize_Eliminate);
pragma Inline (Parameter_Specifications);
pragma Inline (Parameter_Type);
pragma Inline (Parent_Spec);
+ pragma Inline (Parent_With);
pragma Inline (Position);
pragma Inline (Pragma_Argument_Associations);
pragma Inline (Pragma_Identifier);
pragma Inline (Reverse_Present);
pragma Inline (Right_Opnd);
pragma Inline (Rounded_Result);
+ pragma Inline (Save_Invocation_Graph_Of_Body);
pragma Inline (SCIL_Controlling_Tag);
pragma Inline (SCIL_Entity);
pragma Inline (SCIL_Tag_Value);
pragma Inline (Then_Statements);
pragma Inline (Triggering_Alternative);
pragma Inline (Triggering_Statement);
- pragma Inline (Treat_Fixed_As_Integer);
pragma Inline (TSS_Elist);
pragma Inline (Type_Definition);
pragma Inline (Uneval_Old_Accept);
pragma Inline (Was_Attribute_Reference);
pragma Inline (Was_Expression_Function);
pragma Inline (Was_Originally_Stub);
- pragma Inline (Withed_Body);
pragma Inline (Set_Abort_Present);
pragma Inline (Set_Abortable_Part);
pragma Inline (Set_Alternatives);
pragma Inline (Set_Ancestor_Part);
pragma Inline (Set_Array_Aggregate);
+ pragma Inline (Set_Aspect_On_Partial_View);
pragma Inline (Set_Aspect_Rep_Item);
pragma Inline (Set_Assignment_OK);
pragma Inline (Set_Associated_Node);
pragma Inline (Set_Is_Effective_Use_Clause);
pragma Inline (Set_Is_Elaboration_Checks_OK_Node);
pragma Inline (Set_Is_Elaboration_Code);
+ pragma Inline (Set_Is_Elaboration_Warnings_OK_Node);
pragma Inline (Set_Is_Elsif);
pragma Inline (Set_Is_Entry_Barrier_Function);
pragma Inline (Set_Is_Expanded_Build_In_Place_Call);
pragma Inline (Set_Is_Finalization_Wrapper);
pragma Inline (Set_Is_Folded_In_Parser);
pragma Inline (Set_Is_Generic_Contract_Pragma);
+ pragma Inline (Set_Is_Homogeneous_Aggregate);
pragma Inline (Set_Is_Ignored);
pragma Inline (Set_Is_Ignored_Ghost_Pragma);
pragma Inline (Set_Is_In_Discriminant_Check);
pragma Inline (Set_Is_Known_Guaranteed_ABE);
pragma Inline (Set_Is_Machine_Number);
pragma Inline (Set_Is_Null_Loop);
+ pragma Inline (Set_Is_OpenAcc_Environment);
+ pragma Inline (Set_Is_OpenAcc_Loop);
pragma Inline (Set_Is_Overloaded);
pragma Inline (Set_Is_Power_Of_2_For_Shift);
pragma Inline (Set_Is_Prefixed_Call);
pragma Inline (Set_Next_Rep_Item);
pragma Inline (Set_Next_Use_Clause);
pragma Inline (Set_No_Ctrl_Actions);
+ pragma Inline (Set_No_Elaboration_Check);
pragma Inline (Set_No_Entities_Ref_In_Spec);
pragma Inline (Set_No_Initialization);
pragma Inline (Set_No_Minimize_Eliminate);
pragma Inline (Set_Parameter_Specifications);
pragma Inline (Set_Parameter_Type);
pragma Inline (Set_Parent_Spec);
+ pragma Inline (Set_Parent_With);
pragma Inline (Set_Position);
pragma Inline (Set_Pragma_Argument_Associations);
pragma Inline (Set_Pragma_Identifier);
pragma Inline (Set_Reverse_Present);
pragma Inline (Set_Right_Opnd);
pragma Inline (Set_Rounded_Result);
+ pragma Inline (Set_Save_Invocation_Graph_Of_Body);
pragma Inline (Set_SCIL_Controlling_Tag);
pragma Inline (Set_SCIL_Entity);
pragma Inline (Set_SCIL_Tag_Value);
pragma Inline (Set_Task_Present);
pragma Inline (Set_Then_Actions);
pragma Inline (Set_Then_Statements);
- pragma Inline (Set_Treat_Fixed_As_Integer);
pragma Inline (Set_Triggering_Alternative);
pragma Inline (Set_Triggering_Statement);
pragma Inline (Set_Type_Definition);
pragma Inline (Set_Was_Attribute_Reference);
pragma Inline (Set_Was_Expression_Function);
pragma Inline (Set_Was_Originally_Stub);
- pragma Inline (Set_Withed_Body);
end Sinfo;