-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2009, 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- --
--- ware Foundation; either version 2, or (at your option) any later ver- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
--- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
--- for more details. You should have received a copy of the GNU General --
--- Public License distributed with GNAT; see file COPYING. If not, write --
--- to the Free Software Foundation, 51 Franklin Street, Fifth Floor, --
--- Boston, MA 02110-1301, USA. --
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
-- --
--- As a special exception, if other files instantiate generics from this --
--- unit, or you link this unit with other files to produce an executable, --
--- this unit does not by itself cause the resulting executable to be --
--- covered by the GNU General Public License. This exception does not --
--- however invalidate any other reasons why the executable file might be --
--- covered by the GNU Public License. --
+-- As a special exception under Section 7 of GPL version 3, you are granted --
+-- additional permissions described in the GCC Runtime Library Exception, --
+-- version 3.1, as published by the Free Software Foundation. --
+-- --
+-- You should have received a copy of the GNU General Public License and --
+-- a copy of the GCC Runtime Library Exception along with this program; --
+-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
+-- <http://www.gnu.org/licenses/>. --
-- --
-- GNAT was originally developed by the GNAT team at New York University. --
-- Extensive contributions were provided by Ada Core Technologies Inc. --
-- package provides a basic tree structure. Sinfo describes how this structure
-- is used to represent the syntax of an Ada program.
--- The grammar in the RM is followed very closely in the tree
--- design, and is repeated as part of this source file.
+-- The grammar in the RM is followed very closely in the tree design, and is
+-- repeated as part of this source file.
-- The tree contains not only the full syntactic representation of the
-- program, but also the results of semantic analysis. In particular, the
-- A flag present in the N_Assignment_Statement node. It is used only
-- if the type being assigned is an array type, and is set if analysis
-- determines that it is definitely safe to do the copy backwards, i.e.
- -- starting at the highest addressed element. Note that if neither of the
- -- flags Forwards_OK or Backwards_OK is set, it means that the front end
- -- could not determine that either direction is definitely safe, and a
- -- runtime check may be required if the backend cannot figure it out.
+ -- starting at the highest addressed element. This is the case if either
+ -- the operands do not overlap, or they may overlap, but if they do,
+ -- then the left operand is at a higher address than the right operand.
+ --
+ -- Note: If neither of the flags Forwards_OK or Backwards_OK is set, it
+ -- means that the front end could not determine that either direction is
+ -- definitely safe, and a runtime check may be required if the backend
+ -- cannot figure it out. If both flags Forwards_OK and Backwards_OK are
+ -- set, it means that the front end can assure no overlap of operands.
-- Body_To_Inline (Node3-Sem)
-- present in subprogram declarations. Denotes analyzed but unexpanded
-- Comes_From_Extended_Return_Statement (Flag18-Sem)
-- Present in N_Simple_Return_Statement nodes. True if this node was
-- constructed as part of the N_Extended_Return_Statement expansion.
- -- .
-- Compile_Time_Known_Aggregate (Flag18-Sem)
-- Present in N_Aggregate nodes. Set for aggregates which can be fully
-- Sem_Aggr for the specific conditions under which an aggregate has this
-- flag set. See also the flag Static_Processing_OK.
+ -- Componentwise_Assignment (Flag14-Sem)
+ -- Present in N_Assignment_Statement nodes. Set for a record assignment
+ -- where all that needs doing is to expand it into component-by-component
+ -- assignments. This is used internally for the case of tagged types with
+ -- rep clauses, where we need to avoid recursion (we don't want to try to
+ -- generate a call to the primitive operation, because this is the case
+ -- where we are compiling the primitive operation). Note that when we are
+ -- expanding component assignments in this case, we never assign the _tag
+ -- field, but we recursively assign components of the parent type.
+
-- Condition_Actions (List3-Sem)
-- This field appears in else-if nodes and in the iteration scheme node
-- for while loops. This field is only used during semantic processing to
-- package Exp_Util, and also the expansion routines for the relevant
-- nodes.
+ -- Context_Pending (Flag16-Sem)
+ -- This field appears in Compilation_Unit nodes, to indicate that the
+ -- context of the unit is being compiled. Used to detect circularities
+ -- that are not otherwise detected by the loading mechanism. Such
+ -- circularities can occur in the presence of limited and non-limited
+ -- with_clauses that mention the same units.
+
-- Controlling_Argument (Node1-Sem)
-- This field is set in procedure and function call nodes if the call
-- is a dispatching call (it is Empty for a non-dispatching call). It
-- 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.
+ -- range. Note that this flag is not set for modular types.
-- Do_Range_Check (Flag9-Sem)
-- This flag is set on an expression which appears in a context where a
-- Expansion_Delayed (Flag11-Sem)
-- Set on aggregates and extension aggregates that need a top-down rather
- -- than bottom up expansion. Typically aggregate expansion happens bottom
+ -- than bottom-up expansion. Typically aggregate expansion happens bottom
-- up. For nested aggregates the expansion is delayed until the enclosing
-- aggregate itself is expanded, e.g. in the context of a declaration. To
-- delay it we set this flag. This is done to avoid creating a temporary
-- A flag present in the N_Assignment_Statement node. It is used only
-- if the type being assigned is an array type, and is set if analysis
-- determines that it is definitely safe to do the copy forwards, i.e.
- -- starting at the lowest addressed element. Note that if neither of the
- -- flags Forwards_OK or Backwards_OK is set, it means that the front end
- -- could not determine that either direction is definitely safe, and a
- -- runtime check is required.
+ -- starting at the lowest addressed element. This is the case if either
+ -- the operands do not overlap, or they may overlap, but if they do,
+ -- then the left operand is at a lower address than the right operand.
+ --
+ -- Note: If neither of the flags Forwards_OK or Backwards_OK is set, it
+ -- means that the front end could not determine that either direction is
+ -- definitely safe, and a runtime check may be required if the backend
+ -- cannot figure it out. If both flags Forwards_OK and Backwards_OK are
+ -- set, it means that the front end can assure no overlap of operands.
-- From_At_End (Flag4-Sem)
-- This flag is set on an N_Raise_Statement node if it corresponds to
-- This flag is set in the N_With_Clause node that is implicitly
-- generated for runtime units that are loaded by the expander, and also
-- for package System, if it is loaded implicitly by a use of the
- -- 'Address or 'Tag attribute.
+ -- 'Address or 'Tag attribute. ???There are other implicit with clauses
+ -- as well.
-- Includes_Infinities (Flag11-Sem)
-- This flag is present in N_Range nodes. It is set for the range of
-- Is_Null_Loop (Flag16-Sem)
-- This flag is set in an N_Loop_Statement node if the corresponding loop
- -- can be determined to be null at compile time. This is used to suppress
- -- any warnings that would otherwise be issued inside the loop since they
- -- are probably not useful.
+ -- can be determined to be null at compile time. This is used to remove
+ -- the loop entirely at expansion time.
-- Is_Overloaded (Flag5-Sem)
-- A flag present in all expression nodes. Used temporarily during
--
-- In a compilation unit node, the usage depends on the unit type:
--
- -- For a subprogram body, Library_Unit points to the compilation unit
- -- node of the corresponding spec, unless Acts_As_Spec is set, in which
- -- case it points to itself.
+ -- For a library unit body, Library_Unit points to the compilation unit
+ -- node of the corresponding spec, unless it's a subprogram body with
+ -- Acts_As_Spec set, in which case it points to itself.
--
- -- For a package body, Library_Unit points to the compilation unit of
- -- the corresponding package spec.
- --
- -- For a subprogram spec to which pragma Inline applies, Library_Unit
- -- points to the compilation unit node of the corresponding body, if
- -- inlining is active.
- --
- -- For a generic declaration, Library_Unit points to the compilation
- -- unit node of the corresponding generic body.
+ -- For a spec, Library_Unit points to the compilation unit node of the
+ -- corresponding body, if present. The body will be present if the spec
+ -- is or contains generics that we needed to instantiate. Similarly, the
+ -- body will be present if we needed it for inlining purposes. Thus, if
+ -- we have a spec/body pair, both of which are present, they point to
+ -- each other via Library_Unit.
--
-- For a subunit, Library_Unit points to the compilation unit node of
-- the parent body.
-- scope are chained, and this field is used as the forward pointer for
-- this list. See Einfo for further details.
+ -- Next_Implicit_With (Node3-Sem)
+ -- Present in N_With_Clause. Part of a chain of with_clauses generated
+ -- in rtsfind to indicate implicit dependencies on predefined units. Used
+ -- to prevent multiple with_clauses for the same unit in a given context.
+ -- A postorder traversal of the tree whose nodes are units and whose
+ -- links are with_clauses defines the order in which Inspector must
+ -- examine a compiled unit and its full context. This ordering ensures
+ -- that any subprogram call is examined after the subprogram declartion
+ -- has been seen.
+
-- Next_Named_Actual (Node4-Sem)
-- Present in parameter association node. Set during semantic analysis to
-- point to the next named parameter, where parameters are ordered by
-- is undefined and should not be read).
-- No_Ctrl_Actions (Flag7-Sem)
- -- Present in N_Assignment_Statement to indicate that no finalize nor nor
+ -- Present in N_Assignment_Statement to indicate that no finalize nor
-- adjust should take place on this assignment even though the rhs is
-- controlled. This is used in init procs and aggregate expansions where
-- the generated assignments are more initialisations than real
-- and N_Extended_Return_Statement nodes. References the entity for the
-- storage pool to be used for the allocate or free call or for the
-- allocation of the returned value from function. Empty indicates that
- -- the global default default pool is to be used. Note that in the case
+ -- the global default pool is to be used. Note that in the case
-- of a return statement, this field is set only if the function returns
-- value of a type whose size is not known at compile time on the
-- secondary stack.
+ -- Suppress_Loop_Warnings (Flag17-Sem)
+ -- Used in N_Loop_Statement node to indicate that warnings within the
+ -- body of the loop should be suppressed. This is set when the range
+ -- of a FOR loop is known to be null, or is probably null (loop would
+ -- only execute if invalid values are present).
+
-- Target_Type (Node2-Sem)
-- Used in an N_Validate_Unchecked_Conversion node to point to the target
-- type entity for the unchecked conversion instantiation which gigi must
-- Note: the back end places some restrictions on the form of the
-- Expression field. If the object being declared is Atomic, then
-- the Expression may not have the form of an aggregate (since this
- -- might cause the back end to generate separate assignments). It
- -- also cannot be a reference to an object marked as a true constant
- -- (Is_True_Constant flag set), where the object is itself initialized
- -- with an aggregate. If necessary the front end must generate an
- -- extra temporary (with Is_True_Constant set False), and initialize
+ -- might cause the back end to generate separate assignments). In this
+ -- case the front end must generate an extra temporary and initialize
-- this temporary as required (the temporary itself is not atomic).
-- Note: there is not node kind for object definition. Instead, the
-- Aliased_Present (Flag4) set if ALIASED appears
-- Constant_Present (Flag17) set if CONSTANT appears
-- Null_Exclusion_Present (Flag11)
- -- Object_Definition (Node4) subtype indic./array type def./ access def.
+ -- Object_Definition (Node4) subtype indic./array type def./access def.
-- Expression (Node3) (set to Empty if not present)
-- Handler_List_Entry (Node2-Sem)
-- Corresponding_Generic_Association (Node5-Sem)
-- N_Access_Function_Definition
-- Sloc points to ACCESS
-- Null_Exclusion_Present (Flag11)
+ -- Null_Exclusion_In_Return_Present (Flag14)
-- Protected_Present (Flag6)
-- Parameter_Specifications (List3) (set to No_List if no formal part)
-- Result_Definition (Node4) result subtype (subtype mark or access def)
-- to Ada 2005 (AI-287).
----------------------------------
- -- 4.3.1 Cmmponent Choice List --
+ -- 4.3.1 Component Choice List --
----------------------------------
-- COMPONENT_CHOICE_LIST ::=
-- SIMPLE_EXPRESSION [not] in RANGE
-- | SIMPLE_EXPRESSION [not] in SUBTYPE_MARK
- -- Note: although the grammar above allows only a range or a
- -- subtype mark, the parser in fact will accept any simple
- -- expression in place of a subtype mark. This means that the
- -- semantic analyzer must be prepared to deal with, and diagnose
- -- a simple expression other than a name for the right operand.
- -- This simplifies error recovery in the parser.
+ -- Note: although the grammar above allows only a range or a subtype
+ -- mark, the parser in fact will accept any simple expression in place
+ -- of a subtype mark. This means that the semantic analyzer must be able
+ -- to deal with, and diagnose a simple expression other than a name for
+ -- the right operand. This simplifies error recovery in the parser.
+
+ -- If extensions are enabled, the grammar is as follows:
+
+ -- RELATION ::=
+ -- SIMPLE_EXPRESSION [not] in SET_ALTERNATIVE {| SET_ALTERNATIVE}
+
+ -- SET_ALTERNATIVE ::= RANGE | SUBTYPE_MARK
+
+ -- The Alternatives field below is present only if there is more than
+ -- one Set_Alternative present, in which case Right_Opnd is set to
+ -- Empty, and Alternatives contains the list of alternatives. In the
+ -- tree passed to the back end, Alternatives is always No_List, and
+ -- Right_Opnd is set (i.e. the expansion circuitry expands out the
+ -- complex set membership case using simple membership operations).
-- N_In
-- Sloc points to IN
-- Left_Opnd (Node2)
-- Right_Opnd (Node3)
+ -- Alternatives (List4) (set to No_List if only one set alternative)
-- plus fields for expression
-- N_Not_In
-- Sloc points to NOT of NOT IN
-- Left_Opnd (Node2)
-- Right_Opnd (Node3)
+ -- Alternatives (List4) (set to No_List if only one set alternative)
-- plus fields for expression
--------------------
-- Is_Dynamic_Coextension (Flag18-Sem)
-- plus fields for expression
+ -- Note: like all nodes, the N_Allocator has the Comes_From_Source flag.
+ -- This flag has a special function in conjunction with the restriction
+ -- No_Implicit_Heap_Allocations, which will be triggered if this flag
+ -- is not set. This means that if a source allocator is replaced with
+ -- a constructed allocator, the Comes_From_Source flag should be copied
+ -- to the newly created allocator.
+
---------------------------------
-- 5.1 Sequence Of Statements --
---------------------------------
-- Forwards_OK (Flag5-Sem)
-- Backwards_OK (Flag6-Sem)
-- No_Ctrl_Actions (Flag7-Sem)
+ -- Componentwise_Assignment (Flag14-Sem)
-- Note: if a range check is required, then the Do_Range_Check flag
-- is set in the Expression (right hand side), with the check being
-- Note: the back end places some restrictions on the form of the
-- Expression field. If the object being assigned to is Atomic, then
-- the Expression may not have the form of an aggregate (since this
- -- might cause the back end to generate separate assignments). It
- -- also cannot be a reference to an object marked as a true constant
- -- (Is_True_Constant flag set), where the object is itself initialized
- -- with an aggregate. If necessary the front end must generate an
- -- extra temporary (with Is_True_Constant set False), and initialize
+ -- might cause the back end to generate separate assignments). In this
+ -- case the front end must generate an extra temporary and initialize
-- this temporary as required (the temporary itself is not atomic).
-----------------------
-- End_Label (Node4)
-- Has_Created_Identifier (Flag15)
-- Is_Null_Loop (Flag16)
+ -- Suppress_Loop_Warnings (Flag17)
--------------------------
-- 5.5 Iteration Scheme --
-- There is no explicit node in the tree for a compilation, since in
-- general the compiler is processing only a single compilation unit
-- at a time. It is possible to parse multiple units in syntax check
- -- only mode, but they the trees are discarded in any case.
+ -- only mode, but the trees are discarded in that case.
------------------------------
-- 10.1.1 Compilation Unit --
-- 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)
-- N_Compilation_Unit_Aux
-- There is no explicit node in the tree for library item, instead
-- the declaration or body, and the flag for private if present,
- -- appear in the N_Compilation_Unit clause.
+ -- appear in the N_Compilation_Unit node.
--------------------------------------
-- 10.1.1 Library Unit Declaration --
-- N_With_Clause
-- Sloc points to first token of library unit name
-- Name (Node2)
+ -- Next_Implicit_With (Node3-Sem)
-- Library_Unit (Node4-Sem)
-- Corresponding_Spec (Node5-Sem)
-- First_Name (Flag5) (set to True if first name or only one name)
-- reconstructed tree printed by Sprint, and the node descriptions here
-- show this syntax.
+ -- Note: Conditional_Expression is in this section for historical reasons.
+ -- We will move it to its appropriate place when it is officially approved
+ -- as an extension (and then we will know what the exact grammar and place
+ -- in the Reference Manual is!)
+
----------------------------
-- Conditional Expression --
----------------------------
-- No_List in the tree passed to Gigi. These fields are used only
-- for temporary processing purposes in the expander.
- -- Sprint syntax: (if expr then expr else expr)
+ -- The Ada language does not permit conditional expressions, however
+ -- this is under discussion as a possible extension by the ARG, and we
+ -- have implemented a form of this capability in GNAT under control of
+ -- the -gnatX switch. The syntax is:
+
+ -- CONDITIONAL_EXPRESSION ::=
+ -- if EXPRESSION then EXPRESSION
+ -- {elsif EXPRESSION then EXPRESSION}
+ -- [else EXPRESSION]
+
+ -- And we add the additional constructs
+
+ -- PRIMARY ::= ( CONDITIONAL_EXPRESION )
+ -- PRAGMA_ARGUMENT_ASSOCIATION ::= CONDITIONAL_EXPRESSION
+
+ -- Note: if we have (IF x1 THEN x2 ELSIF x3 THEN x4 ELSE x5) then it
+ -- is represented as (IF x1 THEN x2 ELSE (IF x3 THEN x4 ELSE x5)) and
+ -- the Is_Elsif flag is set on the inner conditional expression.
-- N_Conditional_Expression
- -- Sloc points to related node
+ -- Sloc points to IF or ELSIF keyword
-- Expressions (List1)
-- Then_Actions (List2-Sem)
-- Else_Actions (List3-Sem)
+ -- Is_Elsif (Flag13) (set if comes from ELSIF)
-- plus fields for expression
- -- Note: in the case where a debug source file is generated, the Sloc
- -- for this node points to the IF keyword in the Sprint file output.
-
-------------------
-- Expanded_Name --
-------------------
-- in the declarations of the innermost enclosing block as specified
-- in RM section 5.1 (3).
- -- The Defining_Identifier is the actual identifier for the
- -- statement identifier. Note that the occurrence of the label
- -- is a reference, NOT the defining occurrence. The defining
- -- occurrence occurs at the head of the innermost enclosing
- -- block, and is represented by this node.
+ -- The Defining_Identifier is the actual identifier for the statement
+ -- identifier. Note that the occurrence of the label is a reference, NOT
+ -- the defining occurrence. The defining occurrence occurs at the head
+ -- of the innermost enclosing block, and is represented by this node.
-- Note: from the grammar, this might better be called an implicit
-- statement identifier declaration, but the term we choose seems
-- called labels in both cases (i.e. when used in labels, and when
-- used as the identifiers of blocks and loops).
- -- Note: although this is logically a semantic node, since it does
- -- not correspond directly to a source syntax construction, these
- -- nodes are actually created by the parser in a post pass done just
- -- after parsing is complete, before semantic analysis is started (see
- -- the Par.Labl subunit in file par-labl.adb).
+ -- Note: although this is logically a semantic node, since it does not
+ -- correspond directly to a source syntax construction, these nodes are
+ -- actually created by the parser in a post pass done just after parsing
+ -- is complete, before semantic analysis is started (see Par.Labl).
-- Sprint syntax: labelname : label;
-- Itype_Reference --
---------------------
- -- This node is used to create a reference to an Itype. The only
- -- purpose is to make sure that the Itype is defined if this is the
- -- first reference.
+ -- This node is used to create a reference to an Itype. The only purpose
+ -- is to make sure the Itype is defined if this is the first reference.
-- A typical use of this node is when an Itype is to be referenced in
- -- two branches of an if statement. In this case it is important that
- -- the first use of the Itype not be inside the conditional, since
- -- then it might not be defined if the wrong branch of the if is
- -- taken in the case where the definition generates elaboration code.
+ -- two branches of an IF statement. In this case it is important that
+ -- the first use of the Itype not be inside the conditional, since then
+ -- it might not be defined if the other branch of the IF is taken, in
+ -- the case where the definition generates elaboration code.
-- The Itype field points to the referenced Itype
- -- sprint syntax: reference itype-name
+ -- Sprint syntax: reference itype-name
-- N_Itype_Reference
-- Sloc points to the node generating the reference
N_In,
N_Not_In,
- -- N_Subexpr, N_Has_Etype
+ -- N_Subexpr, N_Has_Etype, N_Short_Circuit
N_And_Then,
+ N_Or_Else,
+
+ -- N_Subexpr, N_Has_Etype
+
N_Conditional_Expression,
N_Explicit_Dereference,
N_Function_Call,
N_Indexed_Component,
N_Integer_Literal,
N_Null,
- N_Or_Else,
N_Procedure_Call_Statement,
N_Qualified_Expression,
N_At_Clause ..
N_Attribute_Definition_Clause;
+ subtype N_Short_Circuit is Node_Kind range
+ N_And_Then ..
+ N_Or_Else;
+
subtype N_Statement_Other_Than_Procedure_Call is Node_Kind range
N_Abort_Statement ..
N_If_Statement;
function Component_Name
(N : Node_Id) return Node_Id; -- Node1
+ function Componentwise_Assignment
+ (N : Node_Id) return Boolean; -- Flag14
+
function Condition
(N : Node_Id) return Node_Id; -- Node1
function Context_Installed
(N : Node_Id) return Boolean; -- Flag13
+ function Context_Pending
+ (N : Node_Id) return Boolean; -- Flag16
+
function Context_Items
(N : Node_Id) return List_Id; -- List1
function Is_Dynamic_Coextension
(N : Node_Id) return Boolean; -- Flag18
+ function Is_Elsif
+ (N : Node_Id) return Boolean; -- Flag13
+
function Is_Entry_Barrier_Function
(N : Node_Id) return Boolean; -- Flag8
function Next_Entity
(N : Node_Id) return Node_Id; -- Node2
+ function Next_Implicit_With
+ (N : Node_Id) return Node_Id; -- Node3
+
function Next_Named_Actual
(N : Node_Id) return Node_Id; -- Node4
function Null_Exclusion_Present
(N : Node_Id) return Boolean; -- Flag11
+ function Null_Exclusion_In_Return_Present
+ (N : Node_Id) return Boolean; -- Flag14
+
function Null_Record_Present
(N : Node_Id) return Boolean; -- Flag17
function Subtype_Marks
(N : Node_Id) return List_Id; -- List2
+ function Suppress_Loop_Warnings
+ (N : Node_Id) return Boolean; -- Flag17
+
function Synchronized_Present
(N : Node_Id) return Boolean; -- Flag7
procedure Set_Component_Name
(N : Node_Id; Val : Node_Id); -- Node1
+ procedure Set_Componentwise_Assignment
+ (N : Node_Id; Val : Boolean := True); -- Flag14
+
procedure Set_Condition
(N : Node_Id; Val : Node_Id); -- Node1
procedure Set_Context_Items
(N : Node_Id; Val : List_Id); -- List1
+ procedure Set_Context_Pending
+ (N : Node_Id; Val : Boolean := True); -- Flag16
+
procedure Set_Controlling_Argument
(N : Node_Id; Val : Node_Id); -- Node1
procedure Set_Is_Dynamic_Coextension
(N : Node_Id; Val : Boolean := True); -- Flag18
+ procedure Set_Is_Elsif
+ (N : Node_Id; Val : Boolean := True); -- Flag13
+
procedure Set_Is_Entry_Barrier_Function
(N : Node_Id; Val : Boolean := True); -- Flag8
procedure Set_Next_Entity
(N : Node_Id; Val : Node_Id); -- Node2
+ procedure Set_Next_Implicit_With
+ (N : Node_Id; Val : Node_Id); -- Node3
+
procedure Set_Next_Named_Actual
(N : Node_Id; Val : Node_Id); -- Node4
procedure Set_Null_Exclusion_Present
(N : Node_Id; Val : Boolean := True); -- Flag11
+ procedure Set_Null_Exclusion_In_Return_Present
+ (N : Node_Id; Val : Boolean := True); -- Flag14
+
procedure Set_Null_Record_Present
(N : Node_Id; Val : Boolean := True); -- Flag17
procedure Set_Subtype_Marks
(N : Node_Id; Val : List_Id); -- List2
+ procedure Set_Suppress_Loop_Warnings
+ (N : Node_Id; Val : Boolean := True); -- Flag17
+
procedure Set_Synchronized_Present
(N : Node_Id; Val : Boolean := True); -- Flag7
V7 : Node_Kind;
V8 : Node_Kind) return Boolean;
+ 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) return Boolean;
+
pragma Inline (Nkind_In);
-- Inline all above functions
(1 => False, -- unused
2 => True, -- Left_Opnd (Node2)
3 => True, -- Right_Opnd (Node3)
- 4 => False, -- unused
+ 4 => True, -- Alternatives (List4)
5 => False), -- Etype (Node5-Sem)
N_Not_In =>
(1 => False, -- unused
2 => True, -- Left_Opnd (Node2)
3 => True, -- Right_Opnd (Node3)
- 4 => False, -- unused
+ 4 => True, -- Alternatives (List4)
5 => False), -- Etype (Node5-Sem)
N_Op_And =>
pragma Inline (Component_Items);
pragma Inline (Component_List);
pragma Inline (Component_Name);
+ pragma Inline (Componentwise_Assignment);
pragma Inline (Condition);
pragma Inline (Condition_Actions);
pragma Inline (Config_Pragmas);
pragma Inline (Constraints);
pragma Inline (Context_Installed);
pragma Inline (Context_Items);
+ pragma Inline (Context_Pending);
pragma Inline (Controlling_Argument);
pragma Inline (Conversion_OK);
pragma Inline (Corresponding_Body);
pragma Inline (Is_Component_Right_Opnd);
pragma Inline (Is_Controlling_Actual);
pragma Inline (Is_Dynamic_Coextension);
+ pragma Inline (Is_Elsif);
pragma Inline (Is_Entry_Barrier_Function);
pragma Inline (Is_Expanded_Build_In_Place_Call);
pragma Inline (Is_Folded_In_Parser);
pragma Inline (Name);
pragma Inline (Names);
pragma Inline (Next_Entity);
+ pragma Inline (Next_Implicit_With);
pragma Inline (Next_Named_Actual);
pragma Inline (Next_Pragma);
pragma Inline (Next_Rep_Item);
pragma Inline (No_Truncation);
pragma Inline (Null_Present);
pragma Inline (Null_Exclusion_Present);
+ pragma Inline (Null_Exclusion_In_Return_Present);
pragma Inline (Null_Record_Present);
pragma Inline (Object_Definition);
pragma Inline (Original_Discriminant);
pragma Inline (Subtype_Indication);
pragma Inline (Subtype_Mark);
pragma Inline (Subtype_Marks);
+ pragma Inline (Suppress_Loop_Warnings);
pragma Inline (Synchronized_Present);
pragma Inline (Tagged_Present);
pragma Inline (Target_Type);
pragma Inline (Set_Component_Items);
pragma Inline (Set_Component_List);
pragma Inline (Set_Component_Name);
+ pragma Inline (Set_Componentwise_Assignment);
pragma Inline (Set_Condition);
pragma Inline (Set_Condition_Actions);
pragma Inline (Set_Config_Pragmas);
pragma Inline (Set_Constraints);
pragma Inline (Set_Context_Installed);
pragma Inline (Set_Context_Items);
+ pragma Inline (Set_Context_Pending);
pragma Inline (Set_Controlling_Argument);
pragma Inline (Set_Conversion_OK);
pragma Inline (Set_Corresponding_Body);
pragma Inline (Set_Is_Component_Right_Opnd);
pragma Inline (Set_Is_Controlling_Actual);
pragma Inline (Set_Is_Dynamic_Coextension);
+ 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_Folded_In_Parser);
pragma Inline (Set_Name);
pragma Inline (Set_Names);
pragma Inline (Set_Next_Entity);
+ pragma Inline (Set_Next_Implicit_With);
pragma Inline (Set_Next_Named_Actual);
pragma Inline (Set_Next_Pragma);
pragma Inline (Set_Next_Rep_Item);
pragma Inline (Set_No_Truncation);
pragma Inline (Set_Null_Present);
pragma Inline (Set_Null_Exclusion_Present);
+ pragma Inline (Set_Null_Exclusion_In_Return_Present);
pragma Inline (Set_Null_Record_Present);
pragma Inline (Set_Object_Definition);
pragma Inline (Set_Original_Discriminant);
pragma Inline (Set_Subtype_Indication);
pragma Inline (Set_Subtype_Mark);
pragma Inline (Set_Subtype_Marks);
+ pragma Inline (Set_Suppress_Loop_Warnings);
pragma Inline (Set_Synchronized_Present);
pragma Inline (Set_Tagged_Present);
pragma Inline (Set_Target_Type);