Commit fdce4bb7 by Javier Miranda Committed by Arnaud Charlet

einfo.adb (Is_Thunk): New attribute applicable to subprograms.

2007-09-26  Javier Miranda  <miranda@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>

	* einfo.adb (Is_Thunk): New attribute applicable to subprograms. True
	for thunks associated with interface types.

	* einfo.ads: Improve documentatation of Is_Internal
	(Is_Thunk): New attribute applicable to subprograms. True for thunks
	associated with interface types.
	Extensive comment fixes regarding flags that appear in all entities. The
	documentation is now consistent for all such flags (there were a number
	of errors in the documentation in this regard).

	* exp_attr.adb (Expand_N_Attribute_Reference): Minor code cleanup.

	* exp_ch6.adb (Make_Build_In_Place_Call_*): Return immediately if any
	of these procedures are passed a function call that already has
	build-in-place actuals (testing new flag
	Is_Expanded_Build_In_Place_Call). Set the flag on the function call in
	the case where processing continues.
	(Expand_Call): If the call is generated from a thunk body then we
	propagate the extra actuals associated with the accessibility
	level of the access type actuals.

	* sem_ch6.adb (Analyze_Subprogram_Body): Set the Protected_Formal field
	of each extra formal of a protected operation to reference the
	corresponding extra formal of the subprogram denoted by the
	operation's Protected_Body_Subprogram.
	
	* sinfo.ads, sinfo.adb (Is_Expanded_Build_In_Place_Call): New flag on
	N_Function_Call nodes.

From-SVN: r128786
parent 2642f998
......@@ -483,7 +483,8 @@ package body Einfo is
-- Used_As_Generic_Actual Flag222
-- Is_Descendent_Of_Address Flag223
-- Is_Raised Flag224
-- (unused) Flag225
-- Is_Thunk Flag225
--
-- (unused) Flag226
-- (unused) Flag227
-- (unused) Flag228
......@@ -1966,6 +1967,12 @@ package body Einfo is
return Flag200 (Id);
end Is_Task_Interface;
function Is_Thunk (Id : E) return B is
begin
pragma Assert (Is_Subprogram (Id));
return Flag225 (Id);
end Is_Thunk;
function Is_True_Constant (Id : E) return B is
begin
return Flag163 (Id);
......@@ -4291,6 +4298,11 @@ package body Einfo is
Set_Flag200 (Id, V);
end Set_Is_Task_Interface;
procedure Set_Is_Thunk (Id : E; V : B := True) is
begin
Set_Flag225 (Id, V);
end Set_Is_Thunk;
procedure Set_Is_True_Constant (Id : E; V : B := True) is
begin
Set_Flag163 (Id, V);
......@@ -7264,6 +7276,7 @@ package body Einfo is
W ("Is_Tag", Flag78 (Id));
W ("Is_Tagged_Type", Flag55 (Id));
W ("Is_Task_Interface", Flag200 (Id));
W ("Is_Thunk", Flag225 (Id));
W ("Is_True_Constant", Flag163 (Id));
W ("Is_Unchecked_Union", Flag117 (Id));
W ("Is_Unsigned_Type", Flag144 (Id));
......
......@@ -1383,9 +1383,9 @@ package Einfo is
-- or Is_Controlled is set for at least one component).
-- Has_Convention_Pragma (Flag119)
-- Present in an entity for which a Convention, Import, or Export
-- pragma has been given. Used to prevent more than one such pragma
-- appearing for a given entity (RM B.1(45)).
-- Present in all entities. Set true for an entity for which a valid
-- Convention, Import, or Export pragma has been given. Used to prevent
-- more than one such pragma appearing for a given entity (RM B.1(45)).
-- Has_Delayed_Freeze (Flag18)
-- Present in all entities. Set to indicate that an explicit freeze
......@@ -1446,10 +1446,10 @@ package Einfo is
-- flag and also the related flag Has_Qualified_Name.
-- Has_Gigi_Rep_Item (Flag82)
-- This flag is set if the rep item chain (referenced by First_Rep_Item
-- and linked through the Next_Rep_Item chain) contains a representation
-- item that needs to be specially processed by Gigi, i.e. one of the
-- following items:
-- Present in all entities. Set if the rep item chain (referenced by
-- First_Rep_Item and linked through the Next_Rep_Item chain) contains a
-- representation item that needs to be specially processed by Gigi, i.e.
-- one of the following items:
--
-- Machine_Attribute pragma
-- Linker_Alias pragma
......@@ -1597,15 +1597,6 @@ package Einfo is
-- (but unlike the case with pragma Unreferenced, it is ok to reference
-- such an object and no warning is generated.
-- Known_To_Have_Preelab_Init (Flag207)
-- Present in all type and subtype entities. If set, then the type is
-- known to have preelaborable initialization. In the case of a partial
-- view of a private type, it is only possible for this to be set if a
-- pragma Preelaborable_Initialization is given for the type. For other
-- types, it is never set if the type does not have preelaborable
-- initialization, it may or may not be set if the type does have
-- preelaborable initialization.
-- Has_Primitive_Operations (Flag120) [base type only]
-- Present in all type entities. Set if at least one primitive operation
-- is defined for the type.
......@@ -1697,10 +1688,10 @@ package Einfo is
-- storage size clause cannot be given to a derived type.
-- Has_Stream_Size_Clause (Flag184)
-- This flag is present in all entities. It is set for types which have a
-- Stream_Size clause attribute. Used to prevent multiple Stream_Size
-- clauses for a given entity, and also whether it is necessary to check
-- for a stream size clause.
-- Present in all entities. It is set for types which have a Stream_Size
-- clause attribute. Used to prevent multiple Stream_Size clauses for a
-- given entity, and also whether it is necessary to check for a stream
-- size clause.
-- Has_Subprogram_Descriptor (Flag93)
-- This flag is set on entities for which zero-cost exception subprogram
......@@ -1725,17 +1716,17 @@ package Einfo is
-- the flag Has_Unchecked_Union set.
-- Has_Unknown_Discriminants (Flag72)
-- Present in all type entities. Types can have unknown discriminants
-- either from their declaration or through type derivation. The use
-- of this flag exactly meets the spec in RM 3.7(26). Note that all
-- class-wide types are considered to have unknown discriminants.
-- Note that both Has_Discriminants and Has_Unknown_Discriminants may
-- be true for a type. Class-wide types and their subtypes have
-- unknown discriminants and can have declared ones as well. Private
-- types declared with unknown discriminants may have a full view that
-- has explicit discriminants, and both flag will be set on the partial
-- view, to insure that discriminants are properly inherited in certain
-- contexts.
-- Present in all entities. Set for types with unknown discriminants.
-- Types can have unknown discriminants either from their declaration or
-- through type derivation. The use of this flag exactly meets the spec
-- in RM 3.7(26). Note that all class-wide types are considered to have
-- unknown discriminants. Note that both Has_Discriminants and
-- Has_Unknown_Discriminants may be true for a type. Class-wide types and
-- their subtypes have unknown discriminants and can have declared ones
-- as well. Private types declared with unknown discriminants may have a
-- full view that has explicit discriminants, and both flag will be set
-- on the partial view, to insure that discriminants are properly
-- inherited in certain contexts.
-- Has_Volatile_Components (Flag87) [implementation base type only]
-- Present in all types and objects. Set only for an array type or
......@@ -1749,13 +1740,13 @@ package Einfo is
-- 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).
-- Present in all entities. 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
......@@ -1780,9 +1771,10 @@ package Einfo is
-- returns the entity unchanged.
-- In_Package_Body (Flag48)
-- Set on the entity that denotes the package (the defining occurrence
-- of the package declaration) while analyzing and expanding the package
-- body. Reset on completion of analysis/expansion.
-- Present in package entities. Set on the entity that denotes the
-- package (the defining occurrence of the package declaration) while
-- analyzing and expanding the package body. Reset on completion of
-- analysis/expansion.
-- In_Private_Part (Flag45)
-- Present in all entities. Can be set only in package entities and
......@@ -1854,7 +1846,7 @@ package Einfo is
-- Applies to all entities, true for access types and subtypes
-- Is_Ada_2005_Only (Flag185)
-- Applies to all entities, true if a valid pragma Ada_05 applies to the
-- Present in all entities, true if a valid pragma Ada_05 applies to the
-- entity which specifically names the entity, indicating that the entity
-- is Ada 2005 only. Note that this flag is not set if the entity is part
-- of a unit compiled with the normal no-argument form of pragma Ada_05.
......@@ -1914,7 +1906,7 @@ package Einfo is
-- inlining.
-- Is_Character_Type (Flag63)
-- Present in all entities, true for character types and subtypes,
-- Present in all entities. Set for character types and subtypes,
-- i.e. enumeration types that have at least one character literal.
-- Is_Child_Unit (Flag73)
......@@ -1936,13 +1928,13 @@ package Einfo is
-- parent, we do not consider them to be separate units for this flag).
-- Is_Completely_Hidden (Flag103)
-- A flag set on an E_Discriminant entity. This flag can be set only
-- for girder discriminants of untagged types. When set, the entity
-- is a girder discriminant of a derived untagged type which is not
-- 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 (e.g. the discriminants of a root type).
-- Present in all entities. This flag can be set only for E_Discriminant
-- entities. This flag can be set only for girder discriminants of
-- untagged types. When set, the entity is a girder discriminant of a
-- derived untagged type which is not directly visible in the derived
-- type because the derived type or one of its ancestors have renamed the
-- discriminants in the root type. Note: there are girder discriminants
-- which are not Completely_Hidden (e.g. discriminants of a root type).
-- Is_Composite_Type (synthesized)
-- Applies to all entities, true for all composite types and
......@@ -1974,9 +1966,10 @@ package Einfo is
-- that the constructed subtype itself will be constrained.
-- Is_Constr_Subt_For_UN_Aliased (Flag141)
-- This flag can only be set if Is_Constr_Subt_For_U_Nominal is set. It
-- indicates that in addition the object concerned is aliased. This flag
-- is used by Gigi to determine whether a template must be constructed.
-- Present in all types and subtypes. This flag can be set only if
-- Is_Constr_Subt_For_U_Nominal is also set. It indicates that in
-- addition the object concerned is aliased. This flag is used by
-- Gigi to determine whether a template must be constructed.
-- Is_Constructor (Flag76)
-- Present in function and procedure entities. Set if a pragma
......@@ -1988,7 +1981,7 @@ package Einfo is
-- Ada.Finalization.Limited_Controlled.
-- Is_Controlling_Formal (Flag97)
-- Present in all Formal_Kind entity. Marks the controlling parameters
-- Present in all Formal_Kind entities. Marks the controlling parameters
-- of dispatching operations.
-- Is_CPP_Class (Flag74)
......@@ -2004,10 +1997,10 @@ package Einfo is
-- Always false if argument is not a type.
-- Is_Descendent_Of_Address (Flag223)
-- Applies to all types. Indicates that a type is an address type that
-- is visibly a numeric type. Used for semantic checks on VMS to remove
-- ambiguities in universal integer expressions that may have an address
-- interpretation
-- Present in all type and subtype entities. Indicates that a type is an
-- address type that is visibly a numeric type. Used for semantic checks
-- on VMS to remove ambiguities in universal integer expressions that may
-- have an address interpretation
-- Is_Discrete_Type (synthesized)
-- Applies to all entities, true for all discrete types and subtypes
......@@ -2017,7 +2010,7 @@ package Einfo is
-- and all fixed-point types and subtypes.
-- Is_Discrim_SO_Function (Flag176)
-- Present in all entities, set only in E_Function entities that Layout
-- Present in all entities. Set only in E_Function entities that Layout
-- creates to compute discriminant-dependent dynamic size/offset values.
-- Is_Dispatching_Operation (Flag6)
......@@ -2081,7 +2074,7 @@ package Einfo is
-- Applies to all entities, true for generic IN and IN OUT parameters
-- Is_Formal_Subprogram (Flag111)
-- Defined on all entities, true for generic formal subprograms.
-- Present in all entities. Set for generic formal subprograms.
-- Is_For_Access_Subtype (Flag118)
-- Present in E_Private_Subtype and E_Record_Subtype entities.
......@@ -2090,12 +2083,13 @@ package Einfo is
-- because the type may not have been found or frozen yet.
-- Is_Frozen (Flag4)
-- Present in all type entities. Set if the type has been frozen.
-- Present in all type and subtype entities. Set if type or subtype has
-- been frozen.
-- Is_Generic_Actual_Type (Flag94)
-- Present in the subtype declaration that renames the generic formal
-- as a subtype of the actual. Guarantees that the subtype is not static
-- within the instance.
-- Present in all type and subtype entities. Set in the subtype
-- declaration that renames the generic formal as a subtype of the
-- actual. Guarantees that the subtype is not static within the instance.
-- Is_Generic_Instance (Flag130)
-- Present in all entities. Set to indicate that the entity is an
......@@ -2171,7 +2165,7 @@ package Einfo is
-- Applies to all entities, true for integer types and subtypes
-- Is_Interface (Flag186)
-- Present in record types and subtypes to indicate that the current
-- Present in record types and subtypes. Set to indicate that the current
-- entity corresponds with an abstract interface. Because abstract
-- interfaces are conceptually a special kind of abstract tagged types
-- we represent them by means of tagged record types and subtypes
......@@ -2182,10 +2176,11 @@ package Einfo is
-- Is_Internal (Flag17)
-- Present in all entities. Set to indicate an entity created during
-- semantic processing (e.g. an implicit type, or a temporary). The
-- current uses of this flag are: 1) to indicate that temporaries
-- generated for the result of an inlined function call need not be
-- initialized, even when scalars are initialized or normalized, and
-- 2) to indicate object declarations generated by the expander that are
-- current uses of this flag are: 1) to indicate that internal entities
-- (such as temporaries generated for the result of an inlined function
-- call or dummy variables generated for the debugger) need not be
-- initialized, even when scalars are initialized or normalized, and 2)
-- to indicate object declarations generated by the expander that are
-- implicitly imported or exported, so that they can be appropriately
-- marked in Sprint output.
......@@ -2205,14 +2200,14 @@ package Einfo is
-- to intrinsic, which causes intrinsic code to be generated.
-- Is_Itype (Flag91)
-- Present in all entities, set for Itypes. If it is set, then the
-- declaration for the type does not appear explicitly in the tree.
-- Instead gigi will elaborate the type when it is first used.
-- Has_Delayed_Freeze can be set for Itypes, and the meaning is that
-- the first use (the one which causes the type to be defined) will
-- be the freeze node. Note that an important restriction on Itypes
-- 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.
-- Present in all entities. Set to indicate that a type is an Itype,
-- which means that the declaration for the type does not appear
-- explicitly in the tree. Instead gigi will elaborate the type when it
-- is first used. Has_Delayed_Freeze can be set for Itypes, and the
-- meaning is that the first use (the one which causes the type to be
-- defined) will be the freeze node. Note that an important restriction
-- on Itypes 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
......@@ -2280,7 +2275,7 @@ package Einfo is
-- 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
-- Present in all entities. Set for composite types that have a
-- limited component. Used to enforce the rule that operations on
-- the composite type that depend on the full view of the component
-- do not become visible until the immediate scope of the composite
......@@ -2312,20 +2307,20 @@ package Einfo is
-- 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
-- some (but not all) cases in which a subtype is known to be non-static.
-- Before this flag was added, the computation of whether a subtype was
-- static was entirely synthesized, by looking at the bounds, and the
-- immediate subtype parent. However, this method does not work for some
-- Itypes that have no parent set (and the only way to find the immediate
-- Present in all type and subtype entities. It is set in some (but not
-- all) cases in which a subtype is known to be non-static. Before this
-- flag was added, the computation of whether a subtype was static was
-- entirely synthesized, by looking at the bounds, and the immediate
-- subtype parent. However, this method does not work for some Itypes
-- that have no parent set (and the only way to find the immediate
-- subtype parent is to go through the tree). For now, this flay is set
-- conservatively, i.e. if it is set then for sure the subtype is non-
-- static, but if it is not set, then the type may or may not be static.
-- Thus the test for a static subtype is that this flag is clear AND
-- that the bounds are static AND that the parent subtype (if available
-- to be tested) is static. Eventually we should make sure this flag
-- is always set right, at which point, these comments can be removed,
-- and the tests for static subtypes greatly simplified.
-- Thus the test for a static subtype is that this flag is clear AND that
-- the bounds are static AND that the parent subtype (if available to be
-- tested) is static. Eventually we should make sure this flag is always
-- set right, at which point, these comments can be removed, and the
-- tests for static subtypes greatly simplified.
-- Is_Null_Init_Proc (Flag178)
-- Present in procedure entities. Set for generated init proc procedures
......@@ -2436,9 +2431,9 @@ package Einfo is
-- indicators in bodies.
-- Is_Primitive_Wrapper (Flag195)
-- Present in E_Procedures. Primitive wrappers are Expander-generated
-- procedures that wrap entries of protected or task types implementing
-- a limited interface.
-- Present in all entities. Set for procedure entries that are used as
-- primitive wrappers. which are generated by the expander to wrap
-- entries of protected or task types implementing a limited interface.
-- Is_Private_Composite (Flag107)
-- Present in composite types that have a private component. Used to
......@@ -2505,12 +2500,12 @@ package Einfo is
-- includes class-wide types and subtypes (which are also records)
-- Is_Remote_Call_Interface (Flag62)
-- Present in all entities, set in E_Package and E_Generic_Package
-- Present in all entities. Set in E_Package and E_Generic_Package
-- entities to which a pragma Remote_Call_Interace is applied, and
-- also in all entities within such packages.
-- Is_Remote_Types (Flag61)
-- Present in all entities, set in E_Package and E_Generic_Package
-- Present in all entities. Set in E_Package and E_Generic_Package
-- entities to which a pragma Remote_Types is applied, and also in
-- all entities within such packages.
......@@ -2530,14 +2525,14 @@ package Einfo is
-- calls. Note that build-in-place is allowed for other types, too.
-- Is_Return_Object (Flag209)
-- Applies to all object entities. True if the object is the return
-- Present in all object entities. True if the object is the return
-- object of an extended_return_statement; False otherwise.
-- Is_Scalar_Type (synthesized)
-- Applies to all entities, true for scalar types and subtypes
-- Is_Shared_Passive (Flag60)
-- Present in all entities, set in E_Package and E_Generic_Package
-- Present in all entities. Set in E_Package and E_Generic_Package
-- entities to which a pragma Shared_Passive is applied, and also in
-- all entities within such packages.
......@@ -2573,33 +2568,43 @@ package Einfo is
-- interface.
-- Is_Tag (Flag78)
-- Present in E_Component. For regular tagged type this flag is set on
-- the tag component (whose name is Name_uTag) and for CPP_Class tagged
-- types, this flag marks the pointer to the main vtable (i.e. the one
-- to be extended by derivation)
-- Present in E_Component entities. For regular tagged type this flag is
-- set on the tag component (whose name is Name_uTag) and for CPP_Class
-- tagged types, this flag marks the pointer to the main vtable (i.e. the
-- one to be extended by derivation)
-- Is_Tagged_Type (Flag55)
-- Present in all entities, true for an entity for a tagged type.
-- Present in all entities. Set for an entity for a tagged type.
-- Is_Task_Interface (Flag200)
-- Present in types that are interfaces. True is interface is declared
-- as such, or if it is derived from task interfaces.
-- Is_Task_Record_Type (synthesized)
-- Applies to all entities, true if Is_Concurrent_Record_Type
-- Applies to all entities. True if Is_Concurrent_Record_Type
-- Corresponding_Concurrent_Type is a task type.
-- Is_Task_Type (synthesized)
-- Applies to all entities, true for task types and subtypes
-- Applies to all entities. True for task types and subtypes
-- Is_Thunk (Flag225)
-- True for subprograms that are thunks. Thunks are small subprograms
-- built by the expander for tagged types that cover interface types;
-- at run-time thunks displace the pointer to the object (pointer named
-- "this" in the C++ terminology) from a secondary dispatch table to the
-- primary dispatch table associated with a given tagged type. Set by
-- Expand_Interface_Thunk and used by Expand_Call to handle extra
-- actuals associated with accessibility level.
-- Is_True_Constant (Flag163)
-- This flag is set in constants and variables which have an initial
-- value specified but which are never assigned, partially or in the
-- whole. For variables, it means that the variable was initialized
-- but never modified, and hence can be treated as a constant by the
-- 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.
-- This flag applies to all entities for constants and variables. Set
-- in constants and variables which have an initial value specified but
-- which are never assigned, partially or in the whole. For variables, it
-- means that the variable was initialized but never modified, and hence
-- can be treated as a constant by the 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
......@@ -2672,8 +2677,9 @@ package Einfo is
-- created as a wrapper for a subprogram instantiation.
-- Itype_Printed (Flag202)
-- Set in Itypes if the Itype has been printed by Sprint. This is used to
-- avoid printing an Itype more than once.
-- Present in all type and subtype entities. Set in Itypes if the Itype
-- has been printed by Sprint. This is used to avoid printing an Itype
-- more than once.
-- Kill_Elaboration_Checks (Flag32)
-- Present in all entities. Set by the expander to kill elaboration
......@@ -2696,6 +2702,15 @@ package Einfo is
-- that the result is permanent and cannot be undone by a subsequent
-- pragma Unsuppress.
-- Known_To_Have_Preelab_Init (Flag207)
-- Present in all type and subtype entities. If set, then the type is
-- known to have preelaborable initialization. In the case of a partial
-- view of a private type, it is only possible for this to be set if a
-- pragma Preelaborable_Initialization is given for the type. For other
-- types, it is never set if the type does not have preelaborable
-- initialization, it may or may not be set if the type does have
-- preelaborable initialization.
-- Last_Assignment (Node20)
-- Present in entities for variables. Set for a local variable to point
-- to the left side of an assignment statement assigning a value to the
......@@ -2810,7 +2825,7 @@ package Einfo is
-- used to resolve various cases of entry calls.
--
-- Never_Set_In_Source (Flag115)
-- Present in all entities, but relevant only for variables and
-- Present in all entities, but can be set only for variables and
-- parameters. This flag is set if the object is never assigned a value
-- in user source code, either by assignment or by being used as an out
-- or in out parameter. Note that this flag is not reset from using an
......@@ -3147,16 +3162,17 @@ package Einfo is
-- which a goto to that label is legal.
-- Referenced (Flag156)
-- Present in all entities, set if the entity is referenced, except
-- 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.
-- Present in all entities. 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
......@@ -3426,7 +3442,7 @@ package Einfo is
-- or a copy of the low bound of the index base type if not.
-- Suppress_Elaboration_Warnings (Flag148)
-- Present in all entities, relevant only for subprogram entities and
-- Present in all entities, can be set only for subprogram entities and
-- for variables. If this flag is set then Sem_Elab will not generate
-- elaboration warnings for the subprogram or variable. Suppression of
-- such warnings is automatic for subprograms for which elaboration
......@@ -3537,9 +3553,9 @@ package Einfo is
-- must be released on exit unless Sec_Stack_Needed_For_Return is set.
-- Vax_Float (Flag151) [base type only]
-- Present in all type entities. Set only on the base type of float
-- types with Vax format. The particular format is determined by the
-- Digits_Value value which is 6,9,15 for F_Float, D_Float, G_Float.
-- Present in all type and subtype entities. Set only on the base type of
-- float types with Vax format. The particular format is determined by
-- the Digits_Value value which is 6,9,15 for F_Float, D_Float, G_Float.
-- Warnings_Off (Flag96)
-- Present in all entities. Set if a pragma Warnings (Off, entity-name)
......@@ -4364,20 +4380,25 @@ package Einfo is
-- Has_Persistent_BSS (Flag188)
-- Has_Pragma_Elaborate_Body (Flag150)
-- Has_Pragma_Inline (Flag157)
-- Has_Pragma_Pack (Flag121) (base type only)
-- Has_Pragma_Pure (Flag203)
-- Has_Pragma_Pure_Function (Flag179)
-- Has_Pragma_Unreferenced (Flag180)
-- Has_Private_Declaration (Flag155)
-- Has_Qualified_Name (Flag161)
-- Has_Stream_Size_Clause (Flag184)
-- Has_Unknown_Discriminants (Flag72)
-- Has_Xref_Entry (Flag182)
-- In_Private_Part (Flag45)
-- Is_Ada_2005_Only (Flag185)
-- Is_Bit_Packed_Array (Flag122) (base type only)
-- Is_Character_Type (Flag63)
-- Is_Child_Unit (Flag73)
-- Is_Compilation_Unit (Flag149)
-- Is_Completely_Hidden (Flag103)
-- Is_Discrim_SO_Function (Flag176)
-- Is_Dispatching_Operation (Flag6)
-- Is_Entry_Formal (Flag52)
-- Is_Exported (Flag99)
-- Is_First_Subtype (Flag70)
-- Is_Formal_Subprogram (Flag111)
......@@ -4404,8 +4425,10 @@ package Einfo is
-- Is_Pure (Flag44)
-- Is_Remote_Call_Interface (Flag62)
-- Is_Remote_Types (Flag61)
-- Is_Renaming_Of_Object (Flag112)
-- Is_Shared_Passive (Flag60)
-- Is_Statically_Allocated (Flag28)
-- Is_Tagged_Type (Flag55)
-- Is_Unchecked_Union (Flag117)
-- Is_Visible_Formal (Flag206)
-- Is_VMS_Exception (Flag133)
......@@ -4415,6 +4438,7 @@ package Einfo is
-- Low_Bound_Known (Flag205)
-- Materialize_Entity (Flag168)
-- Needs_Debug_Info (Flag147)
-- Never_Set_In_Source (Flag115)
-- No_Return (Flag113)
-- Referenced (Flag156)
-- Referenced_As_LHS (Flag36)
......@@ -4422,6 +4446,7 @@ package Einfo is
-- Suppress_Style_Checks (Flag165)
-- Suppress_Value_Tracking_On_Call (Flag217)
-- Used_As_Generic_Actual (Flag222)
-- Warnings_Off (Flag96)
-- Was_Hidden (Flag196)
-- Declaration_Node (synth)
......@@ -4467,7 +4492,6 @@ package Einfo is
-- Has_Specified_Stream_Output (Flag191)
-- Has_Specified_Stream_Read (Flag192)
-- Has_Specified_Stream_Write (Flag193)
-- Has_Stream_Size_Clause (Flag184)
-- Has_Task (Flag30) (base type only)
-- Has_Unchecked_Union (Flag123) (base type only)
-- Has_Volatile_Components (Flag87) (base type only)
......@@ -4488,8 +4512,6 @@ package Einfo is
-- Is_Non_Static_Subtype (Flag109)
-- Is_Packed (Flag51) (base type only)
-- Is_Private_Composite (Flag107)
-- Is_Renaming_Of_Object (Flag112)
-- Is_Tagged_Type (Flag55)
-- Is_Unsigned_Type (Flag144)
-- Is_Volatile (Flag16)
-- Itype_Printed (Flag202) (itypes only)
......@@ -4573,7 +4595,6 @@ package Einfo is
-- Packed_Array_Type (Node23)
-- Component_Alignment (special) (base type only)
-- Has_Component_Size_Clause (Flag68) (base type only)
-- Has_Pragma_Pack (Flag121) (base type only)
-- Is_Aliased (Flag15)
-- Is_Constrained (Flag12)
-- Next_Index (synth)
......@@ -4655,12 +4676,10 @@ package Einfo is
-- Has_Size_Clause (Flag29)
-- Has_Up_Level_Access (Flag215)
-- Has_Volatile_Components (Flag87)
-- In_Private_Part (Flag45)
-- Is_Atomic (Flag85)
-- Is_Eliminated (Flag124)
-- Is_True_Constant (Flag163)
-- Is_Volatile (Flag16)
-- Never_Set_In_Source (Flag115)
-- Treat_As_Volatile (Flag41)
-- Is_Return_Object (Flag209)
-- Address_Clause (synth)
......@@ -4826,6 +4845,7 @@ package Einfo is
-- Is_Primitive (Flag218)
-- Is_Private_Descendant (Flag53)
-- Is_Pure (Flag44)
-- Is_Thunk (Flag225)
-- Is_Visible_Child_Unit (Flag116)
-- Needs_No_Actuals (Flag22)
-- Requires_Overriding (Flag213) (non-generic case only)
......@@ -4856,7 +4876,6 @@ package Einfo is
-- Default_Value (Node20)
-- Protected_Formal (Node22)
-- Is_Controlling_Formal (Flag97)
-- Is_Entry_Formal (Flag52)
-- Is_Return_Object (Flag209)
-- Parameter_Mode (synth)
......@@ -4891,10 +4910,8 @@ package Einfo is
-- Extra_Constrained (Node23)
-- Has_Initial_Value (Flag219)
-- Is_Controlling_Formal (Flag97)
-- Is_Entry_Formal (Flag52)
-- Is_Optional_Parameter (Flag134)
-- Low_Bound_Known (Flag205)
-- Never_Set_In_Source (Flag115)
-- Is_Return_Object (Flag209)
-- Parameter_Mode (synth)
......@@ -4947,6 +4964,7 @@ package Einfo is
-- Is_Intrinsic_Subprogram (Flag64)
-- Is_Overriding_Operation (Flag39)
-- Is_Primitive (Flag218)
-- Is_Thunk (Flag225)
-- Default_Expressions_Processed (Flag108)
-- E_Ordinary_Fixed_Point_Type
......@@ -4994,7 +5012,6 @@ package Einfo is
-- Has_RACW (Flag214) (non-generic case only)
-- Has_Subprogram_Descriptor (Flag93)
-- In_Package_Body (Flag48)
-- In_Private_Part (Flag45)
-- In_Use (Flag8)
-- Is_Instantiated (Flag126)
-- Is_Private_Descendant (Flag53)
......@@ -5085,6 +5102,7 @@ package Einfo is
-- Is_Primitive_Wrapper (Flag195) (non-generic case only)
-- Is_Private_Descendant (Flag53)
-- Is_Pure (Flag44)
-- Is_Thunk (Flag225)
-- Is_Valued_Procedure (Flag127)
-- Is_Visible_Child_Unit (Flag116)
-- Needs_No_Actuals (Flag22)
......@@ -5275,13 +5293,11 @@ package Einfo is
-- Has_Initial_Value (Flag219)
-- Has_Size_Clause (Flag29)
-- Has_Volatile_Components (Flag87)
-- In_Private_Part (Flag45)
-- Is_Atomic (Flag85)
-- Is_Eliminated (Flag124)
-- Is_Shared_Passive (Flag60)
-- Is_True_Constant (Flag163)
-- Is_Volatile (Flag16)
-- Never_Set_In_Source (Flag115)
-- Treat_As_Volatile (Flag41)
-- Is_Return_Object (Flag209)
-- Has_Up_Level_Access (Flag215)
......@@ -5926,6 +5942,7 @@ package Einfo is
function Is_Signed_Integer_Type (Id : E) return B;
function Is_Subprogram (Id : E) return B;
function Is_Task_Type (Id : E) return B;
function Is_Thunk (Id : E) return B;
function Is_Type (Id : E) return B;
-------------------------------------
......@@ -6306,6 +6323,7 @@ package Einfo is
procedure Set_Is_Tag (Id : E; V : B := True);
procedure Set_Is_Tagged_Type (Id : E; V : B := True);
procedure Set_Is_Task_Interface (Id : E; V : B := True);
procedure Set_Is_Thunk (Id : E; V : B := True);
procedure Set_Is_True_Constant (Id : E; V : B := True);
procedure Set_Is_Unchecked_Union (Id : E; V : B := True);
procedure Set_Is_Unsigned_Type (Id : E; V : B := True);
......@@ -6940,6 +6958,7 @@ package Einfo is
pragma Inline (Is_Task_Interface);
pragma Inline (Is_True_Constant);
pragma Inline (Is_Task_Type);
pragma Inline (Is_Thunk);
pragma Inline (Is_Type);
pragma Inline (Is_Unchecked_Union);
pragma Inline (Is_Unsigned_Type);
......@@ -7305,6 +7324,7 @@ package Einfo is
pragma Inline (Set_Is_Tag);
pragma Inline (Set_Is_Tagged_Type);
pragma Inline (Set_Is_Task_Interface);
pragma Inline (Set_Is_Thunk);
pragma Inline (Set_Is_True_Constant);
pragma Inline (Set_Is_Unchecked_Union);
pragma Inline (Set_Is_Unsigned_Type);
......
......@@ -637,12 +637,10 @@ package body Exp_Attr is
pragma Assert (Present (Formal));
Rewrite (N,
Unchecked_Convert_To
(Typ, New_Occurrence_Of (Formal, Loc)));
Unchecked_Convert_To (Typ,
New_Occurrence_Of (Formal, Loc)));
Set_Etype (N, Typ);
return;
-- The expression must appear in a default expression, (which
-- in the initialization procedure is the right-hand side of an
-- assignment), and not in a discriminant constraint.
......@@ -667,8 +665,6 @@ package body Exp_Attr is
Analyze_And_Resolve (N, Typ);
end if;
return;
end if;
end;
......@@ -702,8 +698,8 @@ package body Exp_Attr is
-- Note: Limit the expansion of an attribute applied to a
-- dereference of an access parameter so that it's only done
-- for 'Access. This fixes a problem with 'Unrestricted_Access
-- that leads to errors in the case where the attribute
-- type is access-to-variable and the access parameter is
-- that leads to errors in the case where the attribute type
-- is access-to-variable and the access parameter is
-- access-to-constant. The conversion is only done to get
-- accessibility checks, so it makes sense to limit it to
-- 'Access (and consistent with existing comment).
......
......@@ -1679,25 +1679,8 @@ package body Exp_Ch6 is
procedure Expand_Call (N : Node_Id) is
Loc : constant Source_Ptr := Sloc (N);
Remote : constant Boolean := Is_Remote_Call (N);
Subp : Entity_Id;
Orig_Subp : Entity_Id := Empty;
Parent_Subp : Entity_Id;
Parent_Formal : Entity_Id;
Actual : Node_Id;
Formal : Entity_Id;
Prev : Node_Id := Empty;
Prev_Orig : Node_Id;
-- Original node for an actual, which may have been rewritten. If the
-- actual is a function call that has been transformed from a selected
-- component, the original node is unanalyzed. Otherwise, it carries
-- semantic information used to generate additional actuals.
Scop : Entity_Id;
Extra_Actuals : List_Id := No_List;
CW_Interface_Formals_Present : Boolean := False;
Prev : Node_Id := Empty;
procedure Add_Actual_Parameter (Insert_Param : Node_Id);
-- Adds one entry to the end of the actual parameter list. Used for
......@@ -1878,6 +1861,26 @@ package body Exp_Ch6 is
raise Program_Error;
end Inherited_From_Formal;
-- Local variables
Remote : constant Boolean := Is_Remote_Call (N);
Actual : Node_Id;
Formal : Entity_Id;
Orig_Subp : Entity_Id := Empty;
Param_Count : Natural := 0;
Parent_Formal : Entity_Id;
Parent_Subp : Entity_Id;
Scop : Entity_Id;
Subp : Entity_Id;
Prev_Orig : Node_Id;
-- Original node for an actual, which may have been rewritten. If the
-- actual is a function call that has been transformed from a selected
-- component, the original node is unanalyzed. Otherwise, it carries
-- semantic information used to generate additional actuals.
CW_Interface_Formals_Present : Boolean := False;
-- Start of processing for Expand_Call
begin
......@@ -2000,6 +2003,7 @@ package body Exp_Ch6 is
Formal := First_Formal (Subp);
Actual := First_Actual (N);
Param_Count := 1;
while Present (Formal) loop
-- Generate range check if required (not activated yet ???)
......@@ -2136,7 +2140,35 @@ package body Exp_Ch6 is
Prev_Orig := Prev;
end if;
if Is_Entity_Name (Prev_Orig) then
-- Ada 2005 (AI-251): Thunks must propagate the extra actuals
-- of accessibility levels.
if Ekind (Current_Scope) in Subprogram_Kind
and then Is_Thunk (Current_Scope)
then
declare
Parm_Ent : Entity_Id;
begin
if Is_Controlling_Actual (Actual) then
-- Find the corresponding actual of the thunk
Parm_Ent := First_Entity (Current_Scope);
for J in 2 .. Param_Count loop
Next_Entity (Parm_Ent);
end loop;
else pragma Assert (Is_Entity_Name (Actual));
Parm_Ent := Entity (Actual);
end if;
Add_Extra_Actual
(New_Occurrence_Of (Extra_Accessibility (Parm_Ent), Loc),
Extra_Accessibility (Formal));
end;
elsif Is_Entity_Name (Prev_Orig) then
-- When passing an access parameter, or a renaming of an access
-- parameter, as the actual to another access parameter we need
......@@ -2191,11 +2223,12 @@ package body Exp_Ch6 is
Extra_Accessibility (Formal));
end if;
-- All cases other than thunks
else
case Nkind (Prev_Orig) is
when N_Attribute_Reference =>
case Get_Attribute_Id (Attribute_Name (Prev_Orig)) is
-- For X'Access, pass on the level of the prefix X
......@@ -2411,6 +2444,7 @@ package body Exp_Ch6 is
<<Skip_Extra_Actual_Generation>>
Param_Count := Param_Count + 1;
Next_Actual (Actual);
Next_Formal (Formal);
end loop;
......@@ -5038,6 +5072,18 @@ package body Exp_Ch6 is
Func_Call := Expression (Func_Call);
end if;
-- If the call has already been processed to add build-in-place actuals
-- then return. This should not normally occur in an allocator context,
-- but we add the protection as a defensive measure.
if Is_Expanded_Build_In_Place_Call (Func_Call) then
return;
end if;
-- Mark the call as processed as a build-in-place call
Set_Is_Expanded_Build_In_Place_Call (Func_Call);
Loc := Sloc (Function_Call);
if Is_Entity_Name (Name (Func_Call)) then
......@@ -5179,6 +5225,20 @@ package body Exp_Ch6 is
Func_Call := Expression (Func_Call);
end if;
-- If the call has already been processed to add build-in-place actuals
-- then return. One place this can occur is for calls to build-in-place
-- functions that occur within a call to a protected operation, where
-- due to rewriting and expansion of the protected call there can be
-- more than one call to Expand_Actuals for the same set of actuals.
if Is_Expanded_Build_In_Place_Call (Func_Call) then
return;
end if;
-- Mark the call as processed as a build-in-place call
Set_Is_Expanded_Build_In_Place_Call (Func_Call);
Loc := Sloc (Function_Call);
if Is_Entity_Name (Name (Func_Call)) then
......@@ -5293,6 +5353,18 @@ package body Exp_Ch6 is
Func_Call := Expression (Func_Call);
end if;
-- If the call has already been processed to add build-in-place actuals
-- then return. This should not normally occur in an assignment context,
-- but we add the protection as a defensive measure.
if Is_Expanded_Build_In_Place_Call (Func_Call) then
return;
end if;
-- Mark the call as processed as a build-in-place call
Set_Is_Expanded_Build_In_Place_Call (Func_Call);
Loc := Sloc (Function_Call);
if Is_Entity_Name (Name (Func_Call)) then
......@@ -5403,6 +5475,18 @@ package body Exp_Ch6 is
Func_Call := Expression (Func_Call);
end if;
-- If the call has already been processed to add build-in-place actuals
-- then return. This should not normally occur in an object declaration,
-- but we add the protection as a defensive measure.
if Is_Expanded_Build_In_Place_Call (Func_Call) then
return;
end if;
-- Mark the call as processed as a build-in-place call
Set_Is_Expanded_Build_In_Place_Call (Func_Call);
Loc := Sloc (Function_Call);
if Is_Entity_Name (Name (Func_Call)) then
......
......@@ -1961,6 +1961,37 @@ package body Sem_Ch6 is
Check_Anonymous_Return;
-- Set the Protected_Formal field of each extra formal of the protected
-- subprogram to reference the corresponding extra formal of the
-- subprogram that implements it. For regular formals this occurs when
-- the protected subprogram's declaration is expanded, but the extra
-- formals don't get created until the subprogram is frozen. We need to
-- do this before analyzing the protected subprogram's body so that any
-- references to the original subprogram's extra formals will be changed
-- refer to the implementing subprogram's formals (see Expand_Formal).
if Present (Spec_Id)
and then Is_Protected_Type (Scope (Spec_Id))
and then Present (Protected_Body_Subprogram (Spec_Id))
then
declare
Impl_Subp : constant Entity_Id :=
Protected_Body_Subprogram (Spec_Id);
Prot_Ext_Formal : Entity_Id := Extra_Formals (Spec_Id);
Impl_Ext_Formal : Entity_Id := Extra_Formals (Impl_Subp);
begin
while Present (Prot_Ext_Formal) loop
pragma Assert (Present (Impl_Ext_Formal));
Set_Protected_Formal (Prot_Ext_Formal, Impl_Ext_Formal);
Next_Formal_With_Extras (Prot_Ext_Formal);
Next_Formal_With_Extras (Impl_Ext_Formal);
end loop;
end;
end if;
-- Now we can go on to analyze the body
HSS := Handled_Statement_Sequence (N);
......
......@@ -185,6 +185,14 @@ package body Sinfo is
return Node4 (N);
end Actual_Designated_Subtype;
function Address_Warning_Posted
(N : Node_Id) return Boolean is
begin
pragma Assert (False
or else NT (N).Nkind = N_Attribute_Definition_Clause);
return Flag18 (N);
end Address_Warning_Posted;
function Aggregate_Bounds
(N : Node_Id) return Node_Id is
begin
......@@ -1590,6 +1598,14 @@ package body Sinfo is
return Flag8 (N);
end Is_Entry_Barrier_Function;
function Is_Expanded_Build_In_Place_Call
(N : Node_Id) return Boolean is
begin
pragma Assert (False
or else NT (N).Nkind = N_Function_Call);
return Flag11 (N);
end Is_Expanded_Build_In_Place_Call;
function Is_Folded_In_Parser
(N : Node_Id) return Boolean is
begin
......@@ -2901,6 +2917,14 @@ package body Sinfo is
Set_Node4 (N, Val);
end Set_Actual_Designated_Subtype;
procedure Set_Address_Warning_Posted
(N : Node_Id; Val : Boolean := True) is
begin
pragma Assert (False
or else NT (N).Nkind = N_Attribute_Definition_Clause);
Set_Flag18 (N, Val);
end Set_Address_Warning_Posted;
procedure Set_Aggregate_Bounds
(N : Node_Id; Val : Node_Id) is
begin
......@@ -4297,6 +4321,14 @@ package body Sinfo is
Set_Flag8 (N, Val);
end Set_Is_Entry_Barrier_Function;
procedure Set_Is_Expanded_Build_In_Place_Call
(N : Node_Id; Val : Boolean := True) is
begin
pragma Assert (False
or else NT (N).Nkind = N_Function_Call);
Set_Flag11 (N, Val);
end Set_Is_Expanded_Build_In_Place_Call;
procedure Set_Is_Folded_In_Parser
(N : Node_Id; Val : Boolean := True) is
begin
......
......@@ -475,17 +475,6 @@ package Sinfo is
-- refers to a node or is posted on its source location, and has the
-- effect of inhibiting further messages involving this same node.
-- Local_Raise_Statements (Elist1)
-- This field is present in exception handler nodes. It is set to
-- No_Elist in the normal case. If there is at least one raise statement
-- which can potentially be handled as a local raise, then this field
-- points to a list of raise nodes, which are calls to a routine to raise
-- an exception. These are raise nodes which can be optimized into gotos
-- if the handler turns out to meet the conditions which permit this
-- transformation. Note that this does NOT include instances of the
-- N_Raise_xxx_Error nodes since the transformation of these nodes is
-- handled by the back end (using the N_Push/N_Pop mechanism).
-- Has_Dynamic_Length_Check (Flag10-Sem)
-- This flag is present on all nodes. It is set to indicate that one of
-- the routines in unit Checks has generated a length check action which
......@@ -573,6 +562,11 @@ package Sinfo is
-- the designated type is an unconstrained packed array and the
-- dereference is the prefix of a 'Size attribute reference.
-- Address_Warning_Posted (Flag18-Sem)
-- Present in N_Attribute_Definition nodes. Set to indicate that we have
-- posted a warning for the address clause regarding size or alignment
-- issues. Used to inhibit multiple redundant messages.
-- Aggregate_Bounds (Node3-Sem)
-- Present in array N_Aggregate nodes. If the aggregate contains
-- component associations this field points to an N_Range node whose
......@@ -1167,6 +1161,11 @@ package Sinfo is
-- of an entry barrier from a protected entry body. It is used for the
-- circuitry checking for incorrect use of Current_Task.
-- Is_Expanded_Build_In_Place_Call (Flag11-Sem)
-- This flag is set in an N_Function_Call node to indicate that the extra
-- actuals to support a build-in-place style of call have been added to
-- the call.
-- Is_In_Discriminant_Check (Flag11-Sem)
-- This flag is present in a selected component, and is used to indicate
-- that the reference occurs within a discriminant check. The
......@@ -1282,6 +1281,17 @@ package Sinfo is
-- described above). Instead for a child unit, implicit with's are
-- generated for all parents.
-- Local_Raise_Statements (Elist1)
-- This field is present in exception handler nodes. It is set to
-- No_Elist in the normal case. If there is at least one raise statement
-- which can potentially be handled as a local raise, then this field
-- points to a list of raise nodes, which are calls to a routine to raise
-- an exception. These are raise nodes which can be optimized into gotos
-- if the handler turns out to meet the conditions which permit this
-- transformation. Note that this does NOT include instances of the
-- N_Raise_xxx_Error nodes since the transformation of these nodes is
-- handled by the back end (using the N_Push/N_Pop mechanism).
-- Loop_Actions (List2-Sem)
-- A list present in Component_Association nodes in array aggregates.
-- Used to collect actions that must be executed within the loop because
......@@ -4295,6 +4305,7 @@ package Sinfo is
-- actual parameter part)
-- First_Named_Actual (Node4-Sem)
-- Controlling_Argument (Node1-Sem) (set to Empty if not dispatching)
-- Is_Expanded_Build_In_Place_Call (Flag11-Sem)
-- Do_Tag_Check (Flag13-Sem)
-- No_Elaboration_Check (Flag14-Sem)
-- Parameter_List_Truncated (Flag17-Sem)
......@@ -6114,6 +6125,7 @@ package Sinfo is
-- Next_Rep_Item (Node5-Sem)
-- From_At_Mod (Flag4-Sem)
-- Check_Address_Alignment (Flag11-Sem)
-- Address_Warning_Posted (Flag18-Sem)
---------------------------------------------
-- 13.4 Enumeration representation clause --
......@@ -7426,6 +7438,9 @@ package Sinfo is
function Actual_Designated_Subtype
(N : Node_Id) return Node_Id; -- Node4
function Address_Warning_Posted
(N : Node_Id) return Boolean; -- Flag18
function Aggregate_Bounds
(N : Node_Id) return Node_Id; -- Node3
......@@ -7873,6 +7888,9 @@ package Sinfo is
function Is_Entry_Barrier_Function
(N : Node_Id) return Boolean; -- Flag8
function Is_Expanded_Build_In_Place_Call
(N : Node_Id) return Boolean; -- Flag11
function Is_Folded_In_Parser
(N : Node_Id) return Boolean; -- Flag4
......@@ -8287,6 +8305,9 @@ package Sinfo is
procedure Set_Actual_Designated_Subtype
(N : Node_Id; Val : Node_Id); -- Node4
procedure Set_Address_Warning_Posted
(N : Node_Id; Val : Boolean := True); -- Flag18
procedure Set_Aggregate_Bounds
(N : Node_Id; Val : Node_Id); -- Node3
......@@ -8731,6 +8752,9 @@ package Sinfo is
procedure Set_Is_Entry_Barrier_Function
(N : Node_Id; Val : Boolean := True); -- Flag8
procedure Set_Is_Expanded_Build_In_Place_Call
(N : Node_Id; Val : Boolean := True); -- Flag11
procedure Set_Is_Folded_In_Parser
(N : Node_Id; Val : Boolean := True); -- Flag4
......@@ -10677,6 +10701,7 @@ package Sinfo is
pragma Inline (Activation_Chain_Entity);
pragma Inline (Acts_As_Spec);
pragma Inline (Actual_Designated_Subtype);
pragma Inline (Address_Warning_Posted);
pragma Inline (Aggregate_Bounds);
pragma Inline (Aliased_Present);
pragma Inline (All_Others);
......@@ -10826,6 +10851,7 @@ package Sinfo is
pragma Inline (Is_Controlling_Actual);
pragma Inline (Is_Dynamic_Coextension);
pragma Inline (Is_Entry_Barrier_Function);
pragma Inline (Is_Expanded_Build_In_Place_Call);
pragma Inline (Is_Folded_In_Parser);
pragma Inline (Is_In_Discriminant_Check);
pragma Inline (Is_Machine_Number);
......@@ -10961,6 +10987,7 @@ package Sinfo is
pragma Inline (Set_Activation_Chain_Entity);
pragma Inline (Set_Acts_As_Spec);
pragma Inline (Set_Actual_Designated_Subtype);
pragma Inline (Set_Address_Warning_Posted);
pragma Inline (Set_Aggregate_Bounds);
pragma Inline (Set_Aliased_Present);
pragma Inline (Set_All_Others);
......@@ -11108,6 +11135,7 @@ package Sinfo is
pragma Inline (Set_Is_Controlling_Actual);
pragma Inline (Set_Is_Dynamic_Coextension);
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_Is_In_Discriminant_Check);
pragma Inline (Set_Is_Machine_Number);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment