diff options
Diffstat (limited to 'gcc/ada/einfo.ads')
-rw-r--r-- | gcc/ada/einfo.ads | 96 |
1 files changed, 74 insertions, 22 deletions
diff --git a/gcc/ada/einfo.ads b/gcc/ada/einfo.ads index 573539f..8218d9c 100644 --- a/gcc/ada/einfo.ads +++ b/gcc/ada/einfo.ads @@ -286,6 +286,17 @@ package Einfo is -- and if assertions are enabled, an attempt to set the attribute on a -- subtype will raise an assert error. +-- Abstract_Interfaces (Elist24) +-- Present in record types and subtypes. List of abstract interfaces +-- implemented by a tagged type that are not already implemented by the +-- ancestors (Ada 2005: AI-251). + +-- Abstract_Interface_Alias (Node25) +-- Present in subprograms that cover a primitive operation of an abstract +-- interface type. Points to its associated interface subprogram. It is +-- used to register the subprogram in secondary dispatch table of the +-- interface (Ada 2005: AI-251). + -- Accept_Address (Elist21) -- Present in entries. If an accept has a statement sequence, then an -- address variable is created, which is used to hold the address of the @@ -313,9 +324,9 @@ package Einfo is -- rather irregular, and the semantic checks that depend on the nominal -- subtype being unconstrained use flag Is_Constr_Subt_For_U_Nominal(qv). --- Access_Disp_Table (Node16) [implementation base type only] +-- Access_Disp_Table (Elist16) [implementation base type only] -- Present in record type entities. For a tagged type, points to the --- dispatch table associated with the tagged type. For a non-tagged +-- dispatch tables associated with the tagged type. For a non-tagged -- record, contains Empty. -- Address_Clause (synthesized) @@ -1279,10 +1290,10 @@ package Einfo is -- function of a tagged type which can dispatch on result -- Has_Controlled_Component (Flag43) [base type only] --- Present in composite type entities. Indicates that the type has a --- component that either is a controlled type, or itself contains a --- controlled component (i.e. either Has_Controlled_Component or --- Is_Controlled is set for at least one component). +-- Present in all entities. Set only for composite type entities which +-- contain a component that either is a controlled type, or itself +-- contains controlled component (i.e. either Has_Controlled_Component +-- 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 @@ -1959,6 +1970,15 @@ package Einfo is -- Is_Integer_Type (synthesized) -- Applies to all entities, true for integer types and subtypes +-- Is_Interface (Flag186) +-- Present in record types and subtypes 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 +-- marked with this attribute. This allows us to reuse most of the +-- compiler support for abstract tagged types to implement interfaces +-- (Ada 2005: AI-251). + -- Is_Internal (Flag17) -- Present in all entities. Set to indicate an entity created during -- semantic processing (e.g. an implicit type). Need more documentation @@ -2472,7 +2492,8 @@ package Einfo is -- accurately a storage unit boundary). The front end checks that -- component clauses respect this rule, and the back end ensures -- that record packing does not violate this rule. Currently the --- flag is set only for packed arrays longer than 64 bits. +-- flag is set only for packed arrays longer than 64 bits where +-- the component size is not a power of 2. -- Needs_Debug_Info (Flag147) -- Present in all entities. Set if the entity requires debugging @@ -3070,9 +3091,19 @@ package Einfo is -- Present in all entities. Suppresses any style checks specifically -- associated with the given entity if set. --- Tag_Component (synthesized) --- Applies to tagged record types, returns the entity for the _Tag --- field in this record, which must be present. +-- Task_Body_Procedure (Node24) +-- Present in task types and subtypes. Points to the entity for +-- the task body procedure (as further described in Exp_Ch9, task +-- bodies are expanded into procedures). A convenient function to +-- retrieve this field is Sem_Util.Get_Task_Body_Procedure. + +-- First_Tag_Component (synthesized) +-- Applies to tagged record types, returns the entity for the first +-- _Tag field in this record. + +-- Next_Tag_Component (synthesized) +-- Applies to components of tagged record types. Given a _Tag field +-- of a record, returns the next _Tag field in this record. -- Treat_As_Volatile (Flag41) -- Present in all type entities, and also in constants, components and @@ -3921,6 +3952,7 @@ package Einfo is -- Can_Never_Be_Null (Flag38) -- Checks_May_Be_Suppressed (Flag31) -- Debug_Info_Off (Flag166) + -- Has_Controlled_Component (Flag43) (base type only) -- Has_Convention_Pragma (Flag119) -- Has_Delayed_Freeze (Flag18) -- Has_Fully_Qualified_Name (Flag173) @@ -4108,7 +4140,6 @@ package Einfo is -- Packed_Array_Type (Node23) -- Component_Alignment (special) (base type only) -- Has_Component_Size_Clause (Flag68) (base type only) - -- Has_Controlled_Component (Flag43) (base type only) -- Has_Pragma_Pack (Flag121) (base type only) -- Is_Aliased (Flag15) -- Is_Constrained (Flag12) @@ -4137,7 +4168,6 @@ package Einfo is -- First_Entity (Node17) -- Equivalent_Type (Node18) (always Empty in type case) -- Last_Entity (Node20) - -- Has_Controlled_Component (Flag43) (base type only) -- First_Component (synth) -- (plus type attributes) @@ -4165,6 +4195,7 @@ package Einfo is -- Treat_As_Volatile (Flag41) -- Is_Protected_Private (synth) -- Next_Component (synth) + -- Next_Tag_Component (synth) -- E_Constant -- E_Loop_Parameter @@ -4320,6 +4351,7 @@ package Einfo is -- Inner_Instances (Elist23) (for a generic function) -- Privals_Chain (Elist23) (for a protected function) -- Obsolescent_Warning (Node24) + -- Abstract_Interface_Alias (Node25) -- Body_Needed_For_SAL (Flag40) -- Elaboration_Entity_Required (Flag174) -- Function_Returns_With_DSP (Flag169) @@ -4567,6 +4599,7 @@ package Einfo is -- Inner_Instances (Elist23) (for a generic procedure) -- Privals_Chain (Elist23) (for a protected procedure) -- Obsolescent_Warning (Node24) + -- Abstract_Interface_Alias (Node25) -- Body_Needed_For_SAL (Flag40) -- Elaboration_Entity_Required (Flag174) -- Function_Returns_With_DSP (Flag169) (always False for procedure) @@ -4623,7 +4656,6 @@ package Einfo is -- Scope_Depth_Value (Uint22) -- Scope_Depth (synth) -- Stored_Constraint (Elist23) - -- Has_Controlled_Component (Flag43) (base type only) -- Has_Interrupt_Handler (synth) -- Sec_Stack_Needed_For_Return (Flag167) ??? -- Uses_Sec_Stack (Flag95) ??? @@ -4633,7 +4665,7 @@ package Einfo is -- E_Record_Type -- E_Record_Subtype -- Primitive_Operations (Elist15) - -- Access_Disp_Table (Node16) (base type only) + -- Access_Disp_Table (Elist16) (base type only) -- Cloned_Subtype (Node16) (subtype case only) -- First_Entity (Node17) -- Corresponding_Concurrent_Type (Node18) @@ -4642,26 +4674,27 @@ package Einfo is -- Discriminant_Constraint (Elist21) -- Corresponding_Remote_Type (Node22) -- Stored_Constraint (Elist23) + -- Abstract_Interfaces (Elist24) -- Component_Alignment (special) (base type only) -- C_Pass_By_Copy (Flag125) (base type only) - -- Has_Controlled_Component (Flag43) (base type only) -- Has_External_Tag_Rep_Clause (Flag110) -- Has_Record_Rep_Clause (Flag65) (base type only) -- Is_Class_Wide_Equivalent_Type (Flag35) -- Is_Concurrent_Record_Type (Flag20) -- Is_Constrained (Flag12) -- Is_Controlled (Flag42) (base type only) + -- Is_Interface (Flag186) -- Reverse_Bit_Order (Flag164) (base type only) -- First_Component (synth) -- First_Discriminant (synth) -- First_Stored_Discriminant (synth) - -- Tag_Component (synth) + -- First_Tag_Component (synth) -- (plus type attributes) -- E_Record_Type_With_Private -- E_Record_Subtype_With_Private -- Primitive_Operations (Elist15) - -- Access_Disp_Table (Node16) (base type only) + -- Access_Disp_Table (Elist16) (base type only) -- First_Entity (Node17) -- Private_Dependents (Elist18) -- Underlying_Full_View (Node19) @@ -4669,19 +4702,20 @@ package Einfo is -- Discriminant_Constraint (Elist21) -- Private_View (Node22) -- Stored_Constraint (Elist23) + -- Abstract_Interfaces (Elist24) -- Has_Completion (Flag26) -- Has_Completion_In_Body (Flag71) - -- Has_Controlled_Component (Flag43) (base type only) -- Has_Record_Rep_Clause (Flag65) (base type only) -- Has_External_Tag_Rep_Clause (Flag110) -- Is_Concurrent_Record_Type (Flag20) -- Is_Constrained (Flag12) -- Is_Controlled (Flag42) (base type only) + -- Is_Interface (Flag186) -- Reverse_Bit_Order (Flag164) (base type only) -- First_Component (synth) -- First_Discriminant (synth) -- First_Stored_Discriminant (synth) - -- Tag_Component (synth) + -- First_Tag_Component (synth) -- (plus type attributes) -- E_Signed_Integer_Type @@ -4737,6 +4771,7 @@ package Einfo is -- Scope_Depth_Value (Uint22) -- Scope_Depth (synth) -- Stored_Constraint (Elist23) + -- Task_Body_Procedure (Node24) -- Delay_Cleanups (Flag114) -- Has_Master_Entity (Flag21) -- Has_Storage_Size_Clause (Flag23) (base type only) @@ -5006,11 +5041,13 @@ package Einfo is -- section contains the functions used to obtain attribute values which -- correspond to values in fields or flags in the entity itself. + function Abstract_Interfaces (Id : E) return L; function Accept_Address (Id : E) return L; - function Access_Disp_Table (Id : E) return E; + function Access_Disp_Table (Id : E) return L; function Actual_Subtype (Id : E) return E; function Address_Taken (Id : E) return B; function Alias (Id : E) return E; + function Abstract_Interface_Alias (Id : E) return E; function Alignment (Id : E) return U; function Associated_Final_Chain (Id : E) return E; function Associated_Formal_Package (Id : E) return E; @@ -5189,6 +5226,7 @@ package Einfo is function Is_Immediately_Visible (Id : E) return B; function Is_Imported (Id : E) return B; function Is_Inlined (Id : E) return B; + function Is_Interface (Id : E) return B; function Is_Instantiated (Id : E) return B; function Is_Internal (Id : E) return B; function Is_Interrupt_Handler (Id : E) return B; @@ -5302,6 +5340,7 @@ package Einfo is function Suppress_Elaboration_Warnings (Id : E) return B; function Suppress_Init_Proc (Id : E) return B; function Suppress_Style_Checks (Id : E) return B; + function Task_Body_Procedure (Id : E) return N; function Treat_As_Volatile (Id : E) return B; function Underlying_Full_View (Id : E) return E; function Unset_Reference (Id : E) return N; @@ -5416,7 +5455,8 @@ package Einfo is function Scope_Depth_Set (Id : E) return B; function Size_Clause (Id : E) return N; function Stream_Size_Clause (Id : E) return N; - function Tag_Component (Id : E) return E; + function First_Tag_Component (Id : E) return E; + function Next_Tag_Component (Id : E) return E; function Type_High_Bound (Id : E) return N; function Type_Low_Bound (Id : E) return N; function Underlying_Type (Id : E) return E; @@ -5481,11 +5521,13 @@ package Einfo is -- Attribute Set Procedures -- ------------------------------ + procedure Set_Abstract_Interfaces (Id : E; V : L); procedure Set_Accept_Address (Id : E; V : L); - procedure Set_Access_Disp_Table (Id : E; V : E); + procedure Set_Access_Disp_Table (Id : E; V : L); procedure Set_Actual_Subtype (Id : E; V : E); procedure Set_Address_Taken (Id : E; V : B := True); procedure Set_Alias (Id : E; V : E); + procedure Set_Abstract_Interface_Alias (Id : E; V : E); procedure Set_Alignment (Id : E; V : U); procedure Set_Associated_Final_Chain (Id : E; V : E); procedure Set_Associated_Formal_Package (Id : E; V : E); @@ -5667,6 +5709,7 @@ package Einfo is procedure Set_Is_Immediately_Visible (Id : E; V : B := True); procedure Set_Is_Imported (Id : E; V : B := True); procedure Set_Is_Inlined (Id : E; V : B := True); + procedure Set_Is_Interface (Id : E; V : B := True); procedure Set_Is_Instantiated (Id : E; V : B := True); procedure Set_Is_Internal (Id : E; V : B := True); procedure Set_Is_Interrupt_Handler (Id : E; V : B := True); @@ -5781,6 +5824,7 @@ package Einfo is procedure Set_Suppress_Elaboration_Warnings (Id : E; V : B := True); procedure Set_Suppress_Init_Proc (Id : E; V : B := True); procedure Set_Suppress_Style_Checks (Id : E; V : B := True); + procedure Set_Task_Body_Procedure (Id : E; V : N); procedure Set_Treat_As_Volatile (Id : E; V : B := True); procedure Set_Underlying_Full_View (Id : E; V : E); procedure Set_Unset_Reference (Id : E; V : N); @@ -6012,10 +6056,12 @@ package Einfo is -- subprograms meeting the requirements documented in the section on -- XEINFO may be referenced in this section. + pragma Inline (Abstract_Interfaces); pragma Inline (Accept_Address); pragma Inline (Access_Disp_Table); pragma Inline (Actual_Subtype); pragma Inline (Address_Taken); + pragma Inline (Abstract_Interface_Alias); pragma Inline (Alias); pragma Inline (Alignment); pragma Inline (Associated_Final_Chain); @@ -6216,6 +6262,7 @@ package Einfo is pragma Inline (Is_Imported); pragma Inline (Is_Incomplete_Or_Private_Type); pragma Inline (Is_Inlined); + pragma Inline (Is_Interface); pragma Inline (Is_Instantiated); pragma Inline (Is_Integer_Type); pragma Inline (Is_Internal); @@ -6348,6 +6395,7 @@ package Einfo is pragma Inline (Suppress_Elaboration_Warnings); pragma Inline (Suppress_Init_Proc); pragma Inline (Suppress_Style_Checks); + pragma Inline (Task_Body_Procedure); pragma Inline (Treat_As_Volatile); pragma Inline (Underlying_Full_View); pragma Inline (Unset_Reference); @@ -6362,10 +6410,12 @@ package Einfo is pragma Inline (Init_Esize); pragma Inline (Init_RM_Size); + pragma Inline (Set_Abstract_Interfaces); pragma Inline (Set_Accept_Address); pragma Inline (Set_Access_Disp_Table); pragma Inline (Set_Actual_Subtype); pragma Inline (Set_Address_Taken); + pragma Inline (Set_Abstract_Interface_Alias); pragma Inline (Set_Alias); pragma Inline (Set_Alignment); pragma Inline (Set_Associated_Final_Chain); @@ -6543,6 +6593,7 @@ package Einfo is pragma Inline (Set_Is_Immediately_Visible); pragma Inline (Set_Is_Imported); pragma Inline (Set_Is_Inlined); + pragma Inline (Set_Is_Interface); pragma Inline (Set_Is_Instantiated); pragma Inline (Set_Is_Internal); pragma Inline (Set_Is_Interrupt_Handler); @@ -6657,6 +6708,7 @@ package Einfo is pragma Inline (Set_Suppress_Elaboration_Warnings); pragma Inline (Set_Suppress_Init_Proc); pragma Inline (Set_Suppress_Style_Checks); + pragma Inline (Set_Task_Body_Procedure); pragma Inline (Set_Treat_As_Volatile); pragma Inline (Set_Underlying_Full_View); pragma Inline (Set_Unset_Reference); |