From d41df0366e6dfbdc3a5a50577462a9b6689ebbfb Mon Sep 17 00:00:00 2001 From: Bob Duff Date: Fri, 13 Jan 2023 14:48:46 -0500 Subject: [PATCH] ada: Use Inline aspect instead of pragma in Einfo.Utils This package was using the Ada 83 renaming idiom for inlining Next_Component and other Next_... procedures without inlining the same-named functions. Using the Inline aspect avoids that sort of horsing around. We change all the other pragmas Inline in this package to aspects as well, which is a more-minor improvement. Fix too-long lines without wrapping lines. gcc/ada/ * einfo-utils.ads, einfo-utils.adb: Get rid of the Proc_Next_... procedures. Use Inline aspect instead of pragma Inline. Is_Discrete_Or_Fixed_Point_Type did not have pragma Inline, but now has the aspect; this was probably an oversight (which illustrates why aspects are better). --- gcc/ada/einfo-utils.adb | 43 +++-- gcc/ada/einfo-utils.ads | 432 +++++++++++++++++------------------------------- 2 files changed, 176 insertions(+), 299 deletions(-) diff --git a/gcc/ada/einfo-utils.adb b/gcc/ada/einfo-utils.adb index a8220e2d133..febc80a3858 100644 --- a/gcc/ada/einfo-utils.adb +++ b/gcc/ada/einfo-utils.adb @@ -1505,11 +1505,10 @@ package body Einfo.Utils is Kind : constant Node_Kind := Nkind (N); begin - -- Identifiers, operator symbols, expanded names are entity names + -- Identifiers, operator symbols, expanded names are entity names. + -- (But not N_Character_Literal.) - return Kind = N_Identifier - or else Kind = N_Operator_Symbol - or else Kind = N_Expanded_Name + return Kind in N_Identifier | N_Operator_Symbol | N_Expanded_Name -- Attribute references are entity names if they refer to an entity. -- Note that we don't do this by testing for the presence of the @@ -3212,49 +3211,49 @@ package body Einfo.Utils is -- Iterator Procedures -- ------------------------- - procedure Proc_Next_Component (N : in out Node_Id) is + procedure Next_Component (N : in out Node_Id) is begin N := Next_Component (N); - end Proc_Next_Component; + end Next_Component; - procedure Proc_Next_Component_Or_Discriminant (N : in out Node_Id) is + procedure Next_Component_Or_Discriminant (N : in out Node_Id) is begin N := Next_Component_Or_Discriminant (N); - end Proc_Next_Component_Or_Discriminant; + end Next_Component_Or_Discriminant; - procedure Proc_Next_Discriminant (N : in out Node_Id) is + procedure Next_Discriminant (N : in out Node_Id) is begin N := Next_Discriminant (N); - end Proc_Next_Discriminant; + end Next_Discriminant; - procedure Proc_Next_Formal (N : in out Node_Id) is + procedure Next_Formal (N : in out Node_Id) is begin N := Next_Formal (N); - end Proc_Next_Formal; + end Next_Formal; - procedure Proc_Next_Formal_With_Extras (N : in out Node_Id) is + procedure Next_Formal_With_Extras (N : in out Node_Id) is begin N := Next_Formal_With_Extras (N); - end Proc_Next_Formal_With_Extras; + end Next_Formal_With_Extras; - procedure Proc_Next_Index (N : in out Node_Id) is + procedure Next_Index (N : in out Node_Id) is begin N := Next_Index (N); - end Proc_Next_Index; + end Next_Index; - procedure Proc_Next_Inlined_Subprogram (N : in out Node_Id) is + procedure Next_Inlined_Subprogram (N : in out Node_Id) is begin N := Next_Inlined_Subprogram (N); - end Proc_Next_Inlined_Subprogram; + end Next_Inlined_Subprogram; - procedure Proc_Next_Literal (N : in out Node_Id) is + procedure Next_Literal (N : in out Node_Id) is begin N := Next_Literal (N); - end Proc_Next_Literal; + end Next_Literal; - procedure Proc_Next_Stored_Discriminant (N : in out Node_Id) is + procedure Next_Stored_Discriminant (N : in out Node_Id) is begin N := Next_Stored_Discriminant (N); - end Proc_Next_Stored_Discriminant; + end Next_Stored_Discriminant; end Einfo.Utils; diff --git a/gcc/ada/einfo-utils.ads b/gcc/ada/einfo-utils.ads index 896d8f0de19..028665439bb 100644 --- a/gcc/ada/einfo-utils.ads +++ b/gcc/ada/einfo-utils.ads @@ -43,32 +43,24 @@ package Einfo.Utils is -- expressions, but those use different mechanisms; the fields here are not -- used. - function Alias (N : Entity_Id) return Entity_Id; - procedure Set_Alias (N : Entity_Id; Val : Entity_Id); - function Renamed_Entity (N : Entity_Id) return Entity_Id; - procedure Set_Renamed_Entity (N : Entity_Id; Val : Entity_Id); - function Renamed_Object (N : Entity_Id) return Node_Id; - procedure Set_Renamed_Object (N : Entity_Id; Val : Node_Id); - - function Renamed_Entity_Or_Object (N : Entity_Id) return Node_Id; + function Alias (N : Entity_Id) return Entity_Id with Inline; + procedure Set_Alias (N : Entity_Id; Val : Entity_Id) with Inline; + function Renamed_Entity (N : Entity_Id) return Entity_Id with Inline; + procedure Set_Renamed_Entity (N : Entity_Id; Val : Entity_Id) with Inline; + function Renamed_Object (N : Entity_Id) return Node_Id with Inline; + procedure Set_Renamed_Object (N : Entity_Id; Val : Node_Id) with Inline; + + function Renamed_Entity_Or_Object (N : Entity_Id) return Node_Id + with Inline; -- This getter is used when we don't know statically whether we want to -- call Renamed_Entity or Renamed_Object. procedure Set_Renamed_Object_Of_Possibly_Void - (N : Entity_Id; Val : Node_Id); + (N : Entity_Id; Val : Node_Id) with Inline; -- Set_Renamed_Object doesn't allow Void; this is used in the rare cases -- where we set the field of an entity that might be Void. It might be a -- good idea to get rid of calls to this. - pragma Inline (Alias); - pragma Inline (Set_Alias); - pragma Inline (Renamed_Entity); - pragma Inline (Set_Renamed_Entity); - pragma Inline (Renamed_Object); - pragma Inline (Set_Renamed_Object); - pragma Inline (Renamed_Entity_Or_Object); - pragma Inline (Set_Renamed_Object_Of_Possibly_Void); - ------------------- -- Type Synonyms -- ------------------- @@ -100,100 +92,53 @@ package Einfo.Utils is -- Is_Generic_Type where the Ekind does not provide the needed -- information). - function Is_Access_Object_Type (Id : E) return B; - function Is_Access_Type (Id : E) return B; - function Is_Access_Protected_Subprogram_Type (Id : E) return B; - function Is_Access_Subprogram_Type (Id : E) return B; - function Is_Aggregate_Type (Id : E) return B; - function Is_Anonymous_Access_Type (Id : E) return B; - function Is_Array_Type (Id : E) return B; - function Is_Assignable (Id : E) return B; - function Is_Class_Wide_Type (Id : E) return B; - function Is_Composite_Type (Id : E) return B; - function Is_Concurrent_Body (Id : E) return B; - function Is_Concurrent_Type (Id : E) return B; - function Is_Decimal_Fixed_Point_Type (Id : E) return B; - function Is_Digits_Type (Id : E) return B; - function Is_Discrete_Or_Fixed_Point_Type (Id : E) return B; - function Is_Discrete_Type (Id : E) return B; - function Is_Elementary_Type (Id : E) return B; - function Is_Entry (Id : E) return B; - function Is_Enumeration_Type (Id : E) return B; - function Is_Fixed_Point_Type (Id : E) return B; - function Is_Floating_Point_Type (Id : E) return B; - function Is_Formal (Id : E) return B; - function Is_Formal_Object (Id : E) return B; - function Is_Generic_Subprogram (Id : E) return B; - function Is_Generic_Unit (Id : E) return B; - function Is_Ghost_Entity (Id : E) return B; - function Is_Incomplete_Or_Private_Type (Id : E) return B; - function Is_Incomplete_Type (Id : E) return B; - function Is_Integer_Type (Id : E) return B; - function Is_Modular_Integer_Type (Id : E) return B; - function Is_Named_Access_Type (Id : E) return B; - function Is_Named_Number (Id : E) return B; - function Is_Numeric_Type (Id : E) return B; - function Is_Object (Id : E) return B; - function Is_Ordinary_Fixed_Point_Type (Id : E) return B; - function Is_Overloadable (Id : E) return B; - function Is_Private_Type (Id : E) return B; - function Is_Protected_Type (Id : E) return B; - function Is_Real_Type (Id : E) return B; - function Is_Record_Type (Id : E) return B; - function Is_Scalar_Type (Id : E) return B; - function Is_Signed_Integer_Type (Id : E) return B; - function Is_Subprogram (Id : E) return B; - function Is_Subprogram_Or_Entry (Id : E) return B; - function Is_Subprogram_Or_Generic_Subprogram (Id : E) return B; - function Is_Task_Type (Id : E) return B; - function Is_Type (Id : E) return B; - - pragma Inline (Is_Access_Object_Type); - pragma Inline (Is_Access_Type); - pragma Inline (Is_Access_Protected_Subprogram_Type); - pragma Inline (Is_Access_Subprogram_Type); - pragma Inline (Is_Aggregate_Type); - pragma Inline (Is_Anonymous_Access_Type); - pragma Inline (Is_Array_Type); - pragma Inline (Is_Assignable); - pragma Inline (Is_Class_Wide_Type); - pragma Inline (Is_Composite_Type); - pragma Inline (Is_Concurrent_Body); - pragma Inline (Is_Concurrent_Type); - pragma Inline (Is_Decimal_Fixed_Point_Type); - pragma Inline (Is_Digits_Type); - pragma Inline (Is_Discrete_Type); - pragma Inline (Is_Elementary_Type); - pragma Inline (Is_Entry); - pragma Inline (Is_Enumeration_Type); - pragma Inline (Is_Fixed_Point_Type); - pragma Inline (Is_Floating_Point_Type); - pragma Inline (Is_Formal); - pragma Inline (Is_Formal_Object); - pragma Inline (Is_Generic_Subprogram); - pragma Inline (Is_Generic_Unit); - pragma Inline (Is_Ghost_Entity); - pragma Inline (Is_Incomplete_Or_Private_Type); - pragma Inline (Is_Incomplete_Type); - pragma Inline (Is_Integer_Type); - pragma Inline (Is_Modular_Integer_Type); - pragma Inline (Is_Named_Access_Type); - pragma Inline (Is_Named_Number); - pragma Inline (Is_Numeric_Type); - pragma Inline (Is_Object); - pragma Inline (Is_Ordinary_Fixed_Point_Type); - pragma Inline (Is_Overloadable); - pragma Inline (Is_Private_Type); - pragma Inline (Is_Protected_Type); - pragma Inline (Is_Real_Type); - pragma Inline (Is_Record_Type); - pragma Inline (Is_Scalar_Type); - pragma Inline (Is_Signed_Integer_Type); - pragma Inline (Is_Subprogram); - pragma Inline (Is_Subprogram_Or_Entry); - pragma Inline (Is_Subprogram_Or_Generic_Subprogram); - pragma Inline (Is_Task_Type); - pragma Inline (Is_Type); + function Is_Access_Object_Type (Id : E) return B with Inline; + function Is_Access_Type (Id : E) return B with Inline; + function Is_Access_Protected_Subprogram_Type (Id : E) return B with Inline; + function Is_Access_Subprogram_Type (Id : E) return B with Inline; + function Is_Aggregate_Type (Id : E) return B with Inline; + function Is_Anonymous_Access_Type (Id : E) return B with Inline; + function Is_Array_Type (Id : E) return B with Inline; + function Is_Assignable (Id : E) return B with Inline; + function Is_Class_Wide_Type (Id : E) return B with Inline; + function Is_Composite_Type (Id : E) return B with Inline; + function Is_Concurrent_Body (Id : E) return B with Inline; + function Is_Concurrent_Type (Id : E) return B with Inline; + function Is_Decimal_Fixed_Point_Type (Id : E) return B with Inline; + function Is_Digits_Type (Id : E) return B with Inline; + function Is_Discrete_Or_Fixed_Point_Type (Id : E) return B with Inline; + function Is_Discrete_Type (Id : E) return B with Inline; + function Is_Elementary_Type (Id : E) return B with Inline; + function Is_Entry (Id : E) return B with Inline; + function Is_Enumeration_Type (Id : E) return B with Inline; + function Is_Fixed_Point_Type (Id : E) return B with Inline; + function Is_Floating_Point_Type (Id : E) return B with Inline; + function Is_Formal (Id : E) return B with Inline; + function Is_Formal_Object (Id : E) return B with Inline; + function Is_Generic_Subprogram (Id : E) return B with Inline; + function Is_Generic_Unit (Id : E) return B with Inline; + function Is_Ghost_Entity (Id : E) return B with Inline; + function Is_Incomplete_Or_Private_Type (Id : E) return B with Inline; + function Is_Incomplete_Type (Id : E) return B with Inline; + function Is_Integer_Type (Id : E) return B with Inline; + function Is_Modular_Integer_Type (Id : E) return B with Inline; + function Is_Named_Access_Type (Id : E) return B with Inline; + function Is_Named_Number (Id : E) return B with Inline; + function Is_Numeric_Type (Id : E) return B with Inline; + function Is_Object (Id : E) return B with Inline; + function Is_Ordinary_Fixed_Point_Type (Id : E) return B with Inline; + function Is_Overloadable (Id : E) return B with Inline; + function Is_Private_Type (Id : E) return B with Inline; + function Is_Protected_Type (Id : E) return B with Inline; + function Is_Real_Type (Id : E) return B with Inline; + function Is_Record_Type (Id : E) return B with Inline; + function Is_Scalar_Type (Id : E) return B with Inline; + function Is_Signed_Integer_Type (Id : E) return B with Inline; + function Is_Subprogram (Id : E) return B with Inline; + function Is_Subprogram_Or_Entry (Id : E) return B with Inline; + function Is_Subprogram_Or_Generic_Subprogram (Id : E) return B with Inline; + function Is_Task_Type (Id : E) return B with Inline; + function Is_Type (Id : E) return B with Inline; ------------------------------------- -- Synthesized Attribute Functions -- @@ -202,17 +147,17 @@ package Einfo.Utils is -- The functions in this section synthesize attributes from the tree, -- so they do not correspond to defined fields in the entity itself. - function Address_Clause (Id : E) return Node_Id; - function Aft_Value (Id : E) return U; - function Alignment_Clause (Id : E) return Node_Id; - function Base_Type (Id : E) return E; - function Declaration_Node (Id : E) return Node_Id; - function Designated_Type (Id : E) return E; - function Entry_Index_Type (Id : E) return E; - function First_Component (Id : E) return Entity_Id; - function First_Component_Or_Discriminant (Id : E) return Entity_Id; - function First_Formal (Id : E) return Entity_Id; - function First_Formal_With_Extras (Id : E) return Entity_Id; + function Address_Clause (Id : E) return Node_Id with Inline; + function Aft_Value (Id : E) return U; + function Alignment_Clause (Id : E) return Node_Id with Inline; + function Base_Type (Id : E) return E with Inline; + function Declaration_Node (Id : E) return Node_Id; + function Designated_Type (Id : E) return E; + function Entry_Index_Type (Id : E) return E; + function First_Component (Id : E) return Entity_Id; + function First_Component_Or_Discriminant (Id : E) return Entity_Id; + function First_Formal (Id : E) return Entity_Id; + function First_Formal_With_Extras (Id : E) return Entity_Id; function Float_Rep (N : Entity_Id) return F with Inline, Pre => @@ -223,117 +168,89 @@ package Einfo.Utils is Ignore_N in E_Void_Id | Float_Kind_Id; - function Has_Attach_Handler (Id : E) return B; - function Has_DIC (Id : E) return B; - function Has_Entries (Id : E) return B; - function Has_Foreign_Convention (Id : E) return B; - function Has_Interrupt_Handler (Id : E) return B; - function Has_Invariants (Id : E) return B; - function Has_Limited_View (Id : E) return B; - function Has_Non_Limited_View (Id : E) return B; - function Has_Non_Null_Abstract_State (Id : E) return B; - function Has_Non_Null_Visible_Refinement (Id : E) return B; - function Has_Null_Abstract_State (Id : E) return B; - function Has_Null_Visible_Refinement (Id : E) return B; - function Implementation_Base_Type (Id : E) return E; - function Is_Base_Type (Id : E) return B; + function Has_Attach_Handler (Id : E) return B; + function Has_DIC (Id : E) return B; + function Has_Entries (Id : E) return B; + function Has_Foreign_Convention (Id : E) return B with Inline; + function Has_Interrupt_Handler (Id : E) return B; + function Has_Invariants (Id : E) return B; + function Has_Limited_View (Id : E) return B; + function Has_Non_Limited_View (Id : E) return B with Inline; + function Has_Non_Null_Abstract_State (Id : E) return B; + function Has_Non_Null_Visible_Refinement (Id : E) return B; + function Has_Null_Abstract_State (Id : E) return B; + function Has_Null_Visible_Refinement (Id : E) return B; + function Implementation_Base_Type (Id : E) return E; + function Is_Base_Type (Id : E) return B with Inline; -- Note that Is_Base_Type returns True for nontypes - function Is_Boolean_Type (Id : E) return B; - function Is_Constant_Object (Id : E) return B; - function Is_Controlled (Id : E) return B; - function Is_Discriminal (Id : E) return B; - function Is_Dynamic_Scope (Id : E) return B; - function Is_Elaboration_Target (Id : E) return B; - function Is_External_State (Id : E) return B; - function Is_Finalizer (Id : E) return B; - function Is_Full_Access (Id : E) return B; - function Is_Null_State (Id : E) return B; - function Is_Package_Or_Generic_Package (Id : E) return B; - function Is_Packed_Array (Id : E) return B; - function Is_Prival (Id : E) return B; - function Is_Protected_Component (Id : E) return B; - function Is_Protected_Interface (Id : E) return B; - function Is_Protected_Record_Type (Id : E) return B; - function Is_Relaxed_Initialization_State (Id : E) return B; - function Is_Standard_Character_Type (Id : E) return B; - function Is_Standard_String_Type (Id : E) return B; - function Is_String_Type (Id : E) return B; - function Is_Synchronized_Interface (Id : E) return B; - function Is_Synchronized_State (Id : E) return B; - function Is_Task_Interface (Id : E) return B; - function Is_Task_Record_Type (Id : E) return B; - function Is_Wrapper_Package (Id : E) return B; - function Last_Formal (Id : E) return Entity_Id; - function Machine_Emax_Value (Id : E) return U; - function Machine_Emin_Value (Id : E) return U; - function Machine_Mantissa_Value (Id : E) return U; - function Machine_Radix_Value (Id : E) return U; - function Model_Emin_Value (Id : E) return U; - function Model_Epsilon_Value (Id : E) return R; - function Model_Mantissa_Value (Id : E) return U; - function Model_Small_Value (Id : E) return R; - function Next_Component (Id : E) return Entity_Id; - function Next_Component_Or_Discriminant (Id : E) return Entity_Id; - function Next_Discriminant (Id : E) return Entity_Id; - function Next_Formal (Id : E) return Entity_Id; - function Next_Formal_With_Extras (Id : E) return Entity_Id; - function Next_Index (Id : N) return Node_Id; - function Next_Literal (Id : E) return Entity_Id; - function Next_Stored_Discriminant (Id : E) return Entity_Id; - function Number_Dimensions (Id : E) return Pos; - function Number_Entries (Id : E) return Nat; - function Number_Formals (Id : E) return Pos; - function Object_Size_Clause (Id : E) return Node_Id; - function Parameter_Mode (Id : E) return Formal_Kind; - function Partial_Refinement_Constituents (Id : E) return L; - function Primitive_Operations (Id : E) return L; - function Root_Type (Id : E) return E; - function Safe_Emax_Value (Id : E) return U; - function Safe_First_Value (Id : E) return R; - function Safe_Last_Value (Id : E) return R; - function Size_Clause (Id : E) return Node_Id; - function Stream_Size_Clause (Id : E) return N; - function Type_High_Bound (Id : E) return N; - function Type_Low_Bound (Id : E) return N; - function Underlying_Type (Id : E) return Entity_Id; - - function Scope_Depth (Id : E) return U; - function Scope_Depth_Set (Id : E) return B; - - function Scope_Depth_Default_0 (Id : E) return U; + function Is_Boolean_Type (Id : E) return B with Inline; + function Is_Constant_Object (Id : E) return B with Inline; + function Is_Controlled (Id : E) return B with Inline; + function Is_Discriminal (Id : E) return B with Inline; + function Is_Dynamic_Scope (Id : E) return B; + function Is_Elaboration_Target (Id : E) return B; + function Is_External_State (Id : E) return B; + function Is_Finalizer (Id : E) return B with Inline; + function Is_Full_Access (Id : E) return B with Inline; + function Is_Null_State (Id : E) return B; + function Is_Package_Or_Generic_Package (Id : E) return B with Inline; + function Is_Packed_Array (Id : E) return B with Inline; + function Is_Prival (Id : E) return B with Inline; + function Is_Protected_Component (Id : E) return B with Inline; + function Is_Protected_Interface (Id : E) return B; + function Is_Protected_Record_Type (Id : E) return B with Inline; + function Is_Relaxed_Initialization_State (Id : E) return B; + function Is_Standard_Character_Type (Id : E) return B; + function Is_Standard_String_Type (Id : E) return B; + function Is_String_Type (Id : E) return B with Inline; + function Is_Synchronized_Interface (Id : E) return B; + function Is_Synchronized_State (Id : E) return B; + function Is_Task_Interface (Id : E) return B; + function Is_Task_Record_Type (Id : E) return B with Inline; + function Is_Wrapper_Package (Id : E) return B with Inline; + function Last_Formal (Id : E) return Entity_Id; + function Machine_Emax_Value (Id : E) return U; + function Machine_Emin_Value (Id : E) return U; + function Machine_Mantissa_Value (Id : E) return U; + function Machine_Radix_Value (Id : E) return U; + function Model_Emin_Value (Id : E) return U; + function Model_Epsilon_Value (Id : E) return R; + function Model_Mantissa_Value (Id : E) return U; + function Model_Small_Value (Id : E) return R; + function Next_Component (Id : E) return Entity_Id; + function Next_Component_Or_Discriminant (Id : E) return Entity_Id; + function Next_Discriminant (Id : E) return Entity_Id; + function Next_Formal (Id : E) return Entity_Id; + function Next_Formal_With_Extras (Id : E) return Entity_Id; + function Next_Index (Id : N) return Node_Id; + function Next_Literal (Id : E) return Entity_Id; + function Next_Stored_Discriminant (Id : E) return Entity_Id; + function Number_Dimensions (Id : E) return Pos; + function Number_Entries (Id : E) return Nat; + function Number_Formals (Id : E) return Pos; + function Object_Size_Clause (Id : E) return Node_Id; + function Parameter_Mode (Id : E) return Formal_Kind; + function Partial_Refinement_Constituents (Id : E) return L; + function Primitive_Operations (Id : E) return L; + function Root_Type (Id : E) return E; + function Safe_Emax_Value (Id : E) return U; + function Safe_First_Value (Id : E) return R; + function Safe_Last_Value (Id : E) return R; + function Size_Clause (Id : E) return Node_Id with Inline; + function Stream_Size_Clause (Id : E) return N with Inline; + function Type_High_Bound (Id : E) return N with Inline; + function Type_Low_Bound (Id : E) return N with Inline; + function Underlying_Type (Id : E) return Entity_Id; + + function Scope_Depth (Id : E) return U with Inline; + function Scope_Depth_Set (Id : E) return B with Inline; + + function Scope_Depth_Default_0 (Id : E) return U; -- In rare cases, the Scope_Depth_Value (queried by Scope_Depth) is -- not correctly set before querying it; this may be used instead of -- Scope_Depth in such cases. It returns Uint_0 if the Scope_Depth_Value -- has not been set. See documentation in Einfo. - pragma Inline (Address_Clause); - pragma Inline (Alignment_Clause); - pragma Inline (Base_Type); - pragma Inline (Has_Foreign_Convention); - pragma Inline (Has_Non_Limited_View); - pragma Inline (Is_Base_Type); - pragma Inline (Is_Boolean_Type); - pragma Inline (Is_Constant_Object); - pragma Inline (Is_Controlled); - pragma Inline (Is_Discriminal); - pragma Inline (Is_Finalizer); - pragma Inline (Is_Full_Access); - pragma Inline (Is_Null_State); - pragma Inline (Is_Package_Or_Generic_Package); - pragma Inline (Is_Packed_Array); - pragma Inline (Is_Prival); - pragma Inline (Is_Protected_Component); - pragma Inline (Is_Protected_Record_Type); - pragma Inline (Is_String_Type); - pragma Inline (Is_Task_Record_Type); - pragma Inline (Is_Wrapper_Package); - pragma Inline (Scope_Depth); - pragma Inline (Scope_Depth_Set); - pragma Inline (Size_Clause); - pragma Inline (Stream_Size_Clause); - pragma Inline (Type_High_Bound); - pragma Inline (Type_Low_Bound); - ------------------------------------------ -- Type Representation Attribute Fields -- ------------------------------------------ @@ -455,52 +372,15 @@ package Einfo.Utils is -- We define the set of Proc_Next_xxx routines simply for the purposes -- of inlining them without necessarily inlining the function. - procedure Proc_Next_Component (N : in out Node_Id); - procedure Proc_Next_Component_Or_Discriminant (N : in out Node_Id); - procedure Proc_Next_Discriminant (N : in out Node_Id); - procedure Proc_Next_Formal (N : in out Node_Id); - procedure Proc_Next_Formal_With_Extras (N : in out Node_Id); - procedure Proc_Next_Index (N : in out Node_Id); - procedure Proc_Next_Inlined_Subprogram (N : in out Node_Id); - procedure Proc_Next_Literal (N : in out Node_Id); - procedure Proc_Next_Stored_Discriminant (N : in out Node_Id); - - pragma Inline (Proc_Next_Component); - pragma Inline (Proc_Next_Component_Or_Discriminant); - pragma Inline (Proc_Next_Discriminant); - pragma Inline (Proc_Next_Formal); - pragma Inline (Proc_Next_Formal_With_Extras); - pragma Inline (Proc_Next_Index); - pragma Inline (Proc_Next_Inlined_Subprogram); - pragma Inline (Proc_Next_Literal); - pragma Inline (Proc_Next_Stored_Discriminant); - - procedure Next_Component (N : in out Node_Id) - renames Proc_Next_Component; - - procedure Next_Component_Or_Discriminant (N : in out Node_Id) - renames Proc_Next_Component_Or_Discriminant; - - procedure Next_Discriminant (N : in out Node_Id) - renames Proc_Next_Discriminant; - - procedure Next_Formal (N : in out Node_Id) - renames Proc_Next_Formal; - - procedure Next_Formal_With_Extras (N : in out Node_Id) - renames Proc_Next_Formal_With_Extras; - - procedure Next_Index (N : in out Node_Id) - renames Proc_Next_Index; - - procedure Next_Inlined_Subprogram (N : in out Node_Id) - renames Proc_Next_Inlined_Subprogram; - - procedure Next_Literal (N : in out Node_Id) - renames Proc_Next_Literal; - - procedure Next_Stored_Discriminant (N : in out Node_Id) - renames Proc_Next_Stored_Discriminant; + procedure Next_Component (N : in out Node_Id) with Inline; + procedure Next_Component_Or_Discriminant (N : in out Node_Id) with Inline; + procedure Next_Discriminant (N : in out Node_Id) with Inline; + procedure Next_Formal (N : in out Node_Id) with Inline; + procedure Next_Formal_With_Extras (N : in out Node_Id) with Inline; + procedure Next_Index (N : in out Node_Id) with Inline; + procedure Next_Inlined_Subprogram (N : in out Node_Id) with Inline; + procedure Next_Literal (N : in out Node_Id) with Inline; + procedure Next_Stored_Discriminant (N : in out Node_Id) with Inline; --------------------------- -- Testing Warning Flags -- @@ -622,7 +502,7 @@ package Einfo.Utils is -- is the name of a class_wide type whose root is incomplete, return the -- corresponding full declaration, else return T itself. - function Is_Entity_Name (N : Node_Id) return Boolean; + function Is_Entity_Name (N : Node_Id) return Boolean with Inline; -- Test if the node N is the name of an entity (i.e. is an identifier, -- expanded name, or an attribute reference that returns an entity). @@ -661,8 +541,6 @@ package Einfo.Utils is -- Also, if the Etype of E is set and is an anonymous access type with -- no convention set, this anonymous type inherits the convention of E. - pragma Inline (Is_Entity_Name); - ---------------------------------- -- Debugging Output Subprograms -- ---------------------------------- -- 2.11.4.GIT