diff options
-rw-r--r-- | gcc/ada/einfo.adb | 15 | ||||
-rw-r--r-- | gcc/ada/einfo.ads | 292 | ||||
-rw-r--r-- | gcc/ada/exp_attr.adb | 12 | ||||
-rw-r--r-- | gcc/ada/exp_ch6.adb | 128 | ||||
-rw-r--r-- | gcc/ada/sem_ch6.adb | 31 | ||||
-rw-r--r-- | gcc/ada/sinfo.adb | 32 | ||||
-rw-r--r-- | gcc/ada/sinfo.ads | 50 |
7 files changed, 382 insertions, 178 deletions
diff --git a/gcc/ada/einfo.adb b/gcc/ada/einfo.adb index fad1780..013fab9 100644 --- a/gcc/ada/einfo.adb +++ b/gcc/ada/einfo.adb @@ -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)); diff --git a/gcc/ada/einfo.ads b/gcc/ada/einfo.ads index b95165b..0a6b35a 100644 --- a/gcc/ada/einfo.ads +++ b/gcc/ada/einfo.ads @@ -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. +-- 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,12 +4595,11 @@ 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) -- Number_Dimensions (synth) - -- (plus type attributes) + -- (plus type attributes) -- E_Block -- Block_Node (Node11) @@ -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); diff --git a/gcc/ada/exp_attr.adb b/gcc/ada/exp_attr.adb index 272d8e2..8564bea 100644 --- a/gcc/ada/exp_attr.adb +++ b/gcc/ada/exp_attr.adb @@ -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). diff --git a/gcc/ada/exp_ch6.adb b/gcc/ada/exp_ch6.adb index 161c863..7296b8a 100644 --- a/gcc/ada/exp_ch6.adb +++ b/gcc/ada/exp_ch6.adb @@ -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 @@ -1998,8 +2001,9 @@ package body Exp_Ch6 is -- We also generate any required range checks for actuals as we go -- through the loop, since this is a convenient place to do this. - Formal := First_Formal (Subp); - Actual := First_Actual (N); + 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 diff --git a/gcc/ada/sem_ch6.adb b/gcc/ada/sem_ch6.adb index 8d23318..2cb621b 100644 --- a/gcc/ada/sem_ch6.adb +++ b/gcc/ada/sem_ch6.adb @@ -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); diff --git a/gcc/ada/sinfo.adb b/gcc/ada/sinfo.adb index f664f92..b7bf39e 100644 --- a/gcc/ada/sinfo.adb +++ b/gcc/ada/sinfo.adb @@ -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 diff --git a/gcc/ada/sinfo.ads b/gcc/ada/sinfo.ads index 749dd80..8528156 100644 --- a/gcc/ada/sinfo.ads +++ b/gcc/ada/sinfo.ads @@ -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); |