aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/einfo.ads
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/ada/einfo.ads')
-rw-r--r--gcc/ada/einfo.ads96
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);