------------------------------------------------------------------------------ -- -- -- GNAT COMPILER COMPONENTS -- -- -- -- G E N _ I L . F I E L D S -- -- -- -- S p e c -- -- -- -- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- -- ware Foundation; either version 3, or (at your option) any later ver- -- -- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- -- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -- -- for more details. You should have received a copy of the GNU General -- -- Public License distributed with GNAT; see file COPYING3. If not, go to -- -- http://www.gnu.org/licenses for a complete copy of the license. -- -- -- -- GNAT was originally developed by the GNAT team at New York University. -- -- Extensive contributions were provided by Ada Core Technologies Inc. -- -- -- ------------------------------------------------------------------------------ package Gen_IL.Fields is -- The following is "optional field enumeration" -- i.e. it is Field_Enum -- (declared below) plus the special null value No_Field. See the spec of -- Gen_IL.Gen for how to modify this. (Of course, in Ada we have to define -- this backwards from the above conceptual description.) -- Note that there are various subranges of this type declared below, -- which might need to be kept in sync when modifying this. -- Be sure to put new fields in the appropriate subrange (Field_Enum, -- Node_Field, Entity_Field -- search for comments below). type Opt_Field_Enum is (No_Field, -- Start of node fields: Nkind, Sloc, In_List, Rewrite_Ins, Comes_From_Source, Analyzed, Error_Posted, Small_Paren_Count, Check_Actuals, Has_Aspects, Is_Ignored_Ghost_Node, Link, Abort_Present, Abortable_Part, Abstract_Present, Accept_Handler_Records, Accept_Statement, Access_Definition, Access_To_Subprogram_Definition, Access_Types_To_Process, Actions, Activation_Chain_Entity, Acts_As_Spec, Actual_Designated_Subtype, Address_Warning_Posted, Aggregate_Bounds, Aliased_Present, Alloc_For_BIP_Return, All_Others, All_Present, Alternatives, Ancestor_Part, Atomic_Sync_Required, Array_Aggregate, Aspect_On_Partial_View, Aspect_Rep_Item, Assignment_OK, Attribute_Name, At_End_Proc, Aux_Decls_Node, Backwards_OK, Bad_Is_Detected, Binding_Chars, Body_Required, Body_To_Inline, Box_Present, Char_Literal_Value, Chars, Check_Address_Alignment, Choice_Parameter, Choices, Class_Present, Classifications, Cleanup_Actions, Comes_From_Check_Or_Contract, Comes_From_Extended_Return_Statement, Compile_Time_Known_Aggregate, Component_Associations, Component_Clauses, Component_Definition, Component_Items, Component_List, Component_Name, Componentwise_Assignment, Condition, Condition_Actions, Config_Pragmas, Constant_Present, Constraint, Constraints, Context_Installed, Context_Items, Context_Pending, Contract_Test_Cases, Controlling_Argument, Conversion_OK, Corresponding_Aspect, Corresponding_Body, Corresponding_Entry_Body, Corresponding_Formal_Spec, Corresponding_Generic_Association, Corresponding_Integer_Value, Corresponding_Spec, Corresponding_Spec_Of_Stub, Corresponding_Stub, Dcheck_Function, Declarations, Default_Expression, Default_Storage_Pool, Default_Name, Default_Subtype_Mark, Defining_Identifier, Defining_Unit_Name, Delay_Alternative, Delay_Statement, Delta_Expression, Digits_Expression, Discr_Check_Funcs_Built, Discrete_Choices, Discrete_Range, Discrete_Subtype_Definition, Discrete_Subtype_Definitions, Discriminant_Specifications, Discriminant_Type, Do_Discriminant_Check, Do_Division_Check, Do_Length_Check, Do_Overflow_Check, Do_Range_Check, Do_Storage_Check, Elaborate_All_Desirable, Elaborate_All_Present, Elaborate_Desirable, Elaborate_Present, Else_Actions, Else_Statements, Elsif_Parts, Enclosing_Variant, End_Label, End_Span, Entity_Or_Associated_Node, Entry_Body_Formal_Part, Entry_Call_Alternative, Entry_Call_Statement, Entry_Direct_Name, Entry_Index, Entry_Index_Specification, Etype, Exception_Choices, Exception_Handlers, Exception_Junk, Exception_Label, Expansion_Delayed, Explicit_Actual_Parameter, Explicit_Generic_Actual_Parameter, Expression, Expression_Copy, Expressions, First_Bit, First_Inlined_Subprogram, First_Name, First_Named_Actual, First_Subtype_Link, Float_Truncate, Formal_Type_Definition, Forwards_OK, From_Aspect_Specification, From_At_Mod, From_Conditional_Expression, From_Default, Generalized_Indexing, Generic_Associations, Generic_Formal_Declarations, Generic_Parent, Generic_Parent_Type, Handled_Statement_Sequence, Handler_List_Entry, Has_Created_Identifier, Has_Dereference_Action, Has_Dynamic_Length_Check, Has_Init_Expression, Has_Local_Raise, Has_No_Elaboration_Code, Has_Pragma_Suppress_All, Has_Private_View, Has_Relative_Deadline_Pragma, Has_Self_Reference, Has_SP_Choice, Has_Storage_Size_Pragma, Has_Target_Names, Has_Wide_Character, Has_Wide_Wide_Character, Header_Size_Added, Hidden_By_Use_Clause, High_Bound, Identifier, Interface_List, Interface_Present, Implicit_With, Import_Interface_Present, In_Present, Includes_Infinities, Incomplete_View, Inherited_Discriminant, Instance_Spec, Intval, Is_Abort_Block, Is_Accessibility_Actual, Is_Analyzed_Pragma, Is_Asynchronous_Call_Block, Is_Boolean_Aspect, Is_Checked, Is_Checked_Ghost_Pragma, Is_Component_Left_Opnd, Is_Component_Right_Opnd, Is_Controlling_Actual, Is_Declaration_Level_Node, Is_Delayed_Aspect, Is_Disabled, Is_Dispatching_Call, Is_Dynamic_Coextension, Is_Effective_Use_Clause, Is_Elaboration_Checks_OK_Node, Is_Elaboration_Code, Is_Elaboration_Warnings_OK_Node, Is_Elsif, Is_Entry_Barrier_Function, Is_Expanded_Build_In_Place_Call, Is_Expanded_Contract, Is_Finalization_Wrapper, Is_Folded_In_Parser, Is_Generic_Contract_Pragma, Is_Homogeneous_Aggregate, Is_Parenthesis_Aggregate, Is_Enum_Array_Aggregate, Is_Ignored, Is_Ignored_Ghost_Pragma, Is_In_Discriminant_Check, Is_Inherited_Pragma, Is_Initialization_Block, Is_Known_Guaranteed_ABE, Is_Machine_Number, Is_Null_Loop, Is_Overloaded, Is_Power_Of_2_For_Shift, Is_Preelaborable_Call, Is_Prefixed_Call, Is_Protected_Subprogram_Body, Is_Qualified_Universal_Literal, Is_Read, Is_Source_Call, Is_SPARK_Mode_On_Node, Is_Static_Coextension, Is_Static_Expression, Is_Subprogram_Descriptor, Is_Task_Allocation_Block, Is_Task_Body_Procedure, Is_Task_Master, Is_Write, Iterator_Filter, Iteration_Scheme, Iterator_Specification, Itype, Key_Expression, Kill_Range_Check, Last_Bit, Last_Name, Library_Unit, Label_Construct, Left_Opnd, Limited_View_Installed, Limited_Present, Literals, Local_Raise_Not_OK, Local_Raise_Statements, Loop_Actions, Loop_Parameter_Specification, Low_Bound, Mod_Clause, More_Ids, Multidefined_Bindings, Must_Be_Byte_Aligned, Must_Not_Freeze, Must_Not_Override, Must_Override, Name, Names, Next_Entity, Next_Exit_Statement, Next_Implicit_With, Next_Named_Actual, Next_Pragma, Next_Rep_Item, Next_Use_Clause, No_Ctrl_Actions, No_Elaboration_Check, No_Entities_Ref_In_Spec, No_Initialization, No_Minimize_Eliminate, No_Side_Effect_Removal, No_Truncation, Null_Excluding_Subtype, Null_Exclusion_Present, Null_Exclusion_In_Return_Present, Null_Present, Null_Record_Present, Null_Statement, Object_Definition, Of_Present, Original_Discriminant, Original_Entity, Others_Discrete_Choices, Out_Present, Parameter_Associations, Parameter_Specifications, Parameter_Type, Parent_Spec, Parent_With, Position, Pragma_Argument_Associations, Pragma_Identifier, Pragmas_After, Pragmas_Before, Pre_Post_Conditions, Prefix, Premature_Use, Present_Expr, Prev_Ids, Prev_Use_Clause, Print_In_Hex, Private_Declarations, Private_Present, Procedure_To_Call, Proper_Body, Protected_Definition, Protected_Present, Raises_Constraint_Error, Range_Constraint, Range_Expression, Real_Range_Specification, Realval, Reason, Record_Extension_Part, Redundant_Use, Renaming_Exception, Result_Definition, Return_Object_Declarations, Return_Statement_Entity, Reverse_Present, Right_Opnd, Rounded_Result, Save_Invocation_Graph_Of_Body, SCIL_Controlling_Tag, SCIL_Entity, SCIL_Tag_Value, SCIL_Target_Prim, Scope, Select_Alternatives, Selector_Name, Selector_Names, Shift_Count_OK, Source_Type, Specification, Split_PPC, Statements, Storage_Pool, Subpool_Handle_Name, Strval, Subtype_Indication, Subtype_Mark, Subtype_Marks, Suppress_Assignment_Checks, Suppress_Loop_Warnings, Synchronized_Present, Tagged_Present, Target, Target_Type, Task_Definition, Task_Present, Then_Actions, Then_Statements, Triggering_Alternative, Triggering_Statement, TSS_Elist, Type_Definition, Uneval_Old_Accept, Uneval_Old_Warn, Unit, Unknown_Discriminants_Present, Unreferenced_In_Spec, Variant_Part, Variants, Visible_Declarations, Uninitialized_Variable, Used_Operations, Was_Attribute_Reference, Was_Default_Init_Box_Association, Was_Expression_Function, Was_Originally_Stub, -- End of node fields. Between_Node_And_Entity_Fields, -- Start of entity fields: Ekind, Basic_Convention, Abstract_States, Accept_Address, Access_Disp_Table, Access_Disp_Table_Elab_Flag, Access_Subprogram_Wrapper, Activation_Record_Component, Actual_Subtype, Address_Taken, Alignment, Anonymous_Designated_Type, Anonymous_Masters, Anonymous_Object, Associated_Entity, Associated_Formal_Package, Associated_Node_For_Itype, Associated_Storage_Pool, Barrier_Function, BIP_Initialization_Call, Block_Node, Body_Entity, Body_Needed_For_Inlining, Body_Needed_For_SAL, Body_References, C_Pass_By_Copy, Can_Never_Be_Null, Can_Use_Internal_Rep, Checks_May_Be_Suppressed, Class_Postconditions, Class_Preconditions, Class_Preconditions_Subprogram, Class_Wide_Type, Cloned_Subtype, Component_Alignment, Component_Bit_Offset, Component_Clause, Component_Size, Component_Type, Contract, Contract_Wrapper, Corresponding_Concurrent_Type, Corresponding_Discriminant, Corresponding_Equality, Corresponding_Function, Corresponding_Procedure, Corresponding_Record_Component, Corresponding_Record_Type, Corresponding_Remote_Type, CR_Discriminant, Current_Use_Clause, Current_Value, Debug_Info_Off, Debug_Renaming_Link, Default_Aspect_Component_Value, Default_Aspect_Value, Default_Expr_Function, Default_Expressions_Processed, Default_Value, Delay_Cleanups, Delay_Subprogram_Descriptors, Delta_Value, Dependent_Instances, Depends_On_Private, Derived_Type_Link, Digits_Value, Predicated_Parent, Predicates_Ignored, Direct_Primitive_Operations, Directly_Designated_Type, Disable_Controlled, Discard_Names, Discriminal, Discriminal_Link, Discriminant_Checking_Func, Discriminant_Constraint, Discriminant_Default_Value, Discriminant_Number, Dispatch_Table_Wrappers, Dynamic_Call_Helper, DT_Entry_Count, DT_Offset_To_Top_Func, DT_Position, DTC_Entity, Elaborate_Body_Desirable, Elaboration_Entity, Elaboration_Entity_Required, Encapsulating_State, Enclosing_Scope, Entry_Accepted, Entry_Bodies_Array, Entry_Cancel_Parameter, Entry_Component, Entry_Formal, Entry_Index_Constant, Entry_Max_Queue_Lengths_Array, Entry_Parameters_Type, Enum_Pos_To_Rep, Enumeration_Pos, Enumeration_Rep, Enumeration_Rep_Expr, Equivalent_Type, Esize, Extra_Accessibility, Extra_Accessibility_Of_Result, Extra_Constrained, Extra_Formal, Extra_Formals, Finalization_Master, Finalize_Storage_Only, Finalizer, First_Entity, First_Exit_Statement, First_Index, First_Literal, First_Private_Entity, First_Rep_Item, Freeze_Node, From_Limited_With, Full_View, Generic_Homonym, Generic_Renamings, Handler_Records, Has_Aliased_Components, Has_Alignment_Clause, Has_All_Calls_Remote, Has_Atomic_Components, Has_Biased_Representation, Has_Completion, Has_Completion_In_Body, Has_Complex_Representation, Has_Component_Size_Clause, Has_Constrained_Partial_View, Has_Contiguous_Rep, Has_Controlled_Component, Has_Controlling_Result, Has_Convention_Pragma, Has_Default_Aspect, Has_Delayed_Aspects, Has_Delayed_Freeze, Has_Delayed_Rep_Aspects, Has_Discriminants, Has_Dispatch_Table, Has_Dynamic_Predicate_Aspect, Has_Enumeration_Rep_Clause, Has_Exit, Has_Expanded_Contract, Has_Forward_Instantiation, Has_Fully_Qualified_Name, Has_Gigi_Rep_Item, Has_Homonym, Has_Implicit_Dereference, Has_Independent_Components, Has_Inheritable_Invariants, Has_Inherited_DIC, Has_Inherited_Invariants, Has_Initial_Value, Has_Loop_Entry_Attributes, Has_Machine_Radix_Clause, Has_Master_Entity, Has_Missing_Return, Has_Nested_Block_With_Handler, Has_Nested_Subprogram, Has_Non_Standard_Rep, Has_Object_Size_Clause, Has_Out_Or_In_Out_Parameter, Has_Own_DIC, Has_Own_Invariants, Has_Partial_Visible_Refinement, Has_Per_Object_Constraint, Has_Pragma_Controlled, Has_Pragma_Elaborate_Body, Has_Pragma_Inline, Has_Pragma_Inline_Always, Has_Pragma_No_Inline, Has_Pragma_Ordered, Has_Pragma_Pack, Has_Pragma_Preelab_Init, Has_Pragma_Pure, Has_Pragma_Pure_Function, Has_Pragma_Thread_Local_Storage, Has_Pragma_Unmodified, Has_Pragma_Unreferenced, Has_Pragma_Unreferenced_Objects, Has_Pragma_Unused, Has_Predicates, Has_Primitive_Operations, Has_Private_Ancestor, Has_Private_Declaration, Has_Private_Extension, Has_Protected, Has_Qualified_Name, Has_RACW, Has_Record_Rep_Clause, Has_Recursive_Call, Has_Shift_Operator, Has_Size_Clause, Has_Small_Clause, Has_Specified_Layout, Has_Specified_Stream_Input, Has_Specified_Stream_Output, Has_Specified_Stream_Read, Has_Specified_Stream_Write, Has_Static_Discriminants, Has_Static_Predicate, Has_Static_Predicate_Aspect, Has_Storage_Size_Clause, Has_Stream_Size_Clause, Has_Task, Has_Timing_Event, Has_Thunks, Has_Unchecked_Union, Has_Unknown_Discriminants, Has_Visible_Refinement, Has_Volatile_Components, Has_Xref_Entry, Has_Yield_Aspect, Hiding_Loop_Variable, Hidden_In_Formal_Instance, Homonym, Ignored_Class_Postconditions, Ignored_Class_Preconditions, Ignore_SPARK_Mode_Pragmas, Import_Pragma, Incomplete_Actuals, Indirect_Call_Wrapper, In_Package_Body, In_Private_Part, In_Use, Initialization_Statements, Inner_Instances, Interface_Alias, Interface_Name, Interfaces, Is_Abstract_Subprogram, Is_Abstract_Type, Is_Access_Constant, Is_Activation_Record, Is_Actual_Subtype, Is_Ada_2005_Only, Is_Ada_2012_Only, Is_Ada_2022_Only, Is_Aliased, Is_Asynchronous, Is_Atomic, Is_Bit_Packed_Array, Is_Called, Is_Character_Type, Is_Checked_Ghost_Entity, Is_Child_Unit, Is_Class_Wide_Equivalent_Type, Is_Class_Wide_Wrapper, Is_Compilation_Unit, Is_Completely_Hidden, Is_Concurrent_Record_Type, Is_Constr_Subt_For_U_Nominal, Is_Constr_Subt_For_UN_Aliased, Is_Constrained, Is_Constructor, Is_Controlled_Active, Is_Controlling_Formal, Is_CPP_Class, Is_CUDA_Kernel, Is_Descendant_Of_Address, Is_DIC_Procedure, Is_Discrim_SO_Function, Is_Discriminant_Check_Function, Is_Dispatch_Table_Entity, Is_Dispatch_Table_Wrapper, Is_Dispatching_Operation, Is_Elaboration_Checks_OK_Id, Is_Elaboration_Warnings_OK_Id, Is_Eliminated, Is_Entry_Formal, Is_Entry_Wrapper, Is_Exception_Handler, Is_Exported, Is_Finalized_Transient, Is_First_Subtype, Is_Fixed_Lower_Bound_Array_Subtype, Is_Fixed_Lower_Bound_Index_Subtype, Is_Formal_Subprogram, Is_Frozen, Is_Generic_Actual_Subprogram, Is_Generic_Actual_Type, Is_Generic_Instance, Is_Generic_Type, Is_Hidden, Is_Hidden_Non_Overridden_Subpgm, Is_Hidden_Open_Scope, Is_Ignored_Ghost_Entity, Is_Ignored_Transient, Is_Immediately_Visible, Is_Implementation_Defined, Is_Imported, Is_Independent, Is_Initial_Condition_Procedure, Is_Inlined, Is_Inlined_Always, Is_Instantiated, Is_Interface, Is_Internal, Is_Interrupt_Handler, Is_Intrinsic_Subprogram, Is_Invariant_Procedure, Is_Itype, Is_Known_Non_Null, Is_Known_Null, Is_Known_Valid, Is_Limited_Composite, Is_Limited_Interface, Is_Limited_Record, Is_Local_Anonymous_Access, Is_Loop_Parameter, Is_Machine_Code_Subprogram, Is_Non_Static_Subtype, Is_Null_Init_Proc, Is_Obsolescent, Is_Only_Out_Parameter, Is_Package_Body_Entity, Is_Packed, Is_Packed_Array_Impl_Type, Is_Param_Block_Component_Type, Is_Partial_Invariant_Procedure, Is_Potentially_Use_Visible, Is_Predicate_Function, Is_Preelaborated, Is_Primitive, Is_Primitive_Wrapper, Is_Private_Composite, Is_Private_Descendant, Is_Private_Primitive, Is_Public, Is_Pure, Is_Pure_Unit_Access_Type, Is_RACW_Stub_Type, Is_Raised, Is_Remote_Call_Interface, Is_Remote_Types, Is_Renaming_Of_Object, Is_Return_Object, Is_Safe_To_Reevaluate, Is_Shared_Passive, Is_Static_Type, Is_Statically_Allocated, Is_Tag, Is_Tagged_Type, Is_Thunk, Is_Trivial_Subprogram, Is_True_Constant, Is_Unchecked_Union, Is_Underlying_Full_View, Is_Underlying_Record_View, Is_Unimplemented, Is_Unsigned_Type, Is_Uplevel_Referenced_Entity, Is_Valued_Procedure, Is_Visible_Formal, Is_Visible_Lib_Unit, Is_Volatile_Type, Is_Volatile_Object, Is_Volatile_Full_Access, Is_Wrapper, Itype_Printed, Kill_Elaboration_Checks, Kill_Range_Checks, Known_To_Have_Preelab_Init, Last_Aggregate_Assignment, Last_Assignment, Last_Entity, Limited_View, Linker_Section_Pragma, Lit_Hash, Lit_Indexes, Lit_Strings, Low_Bound_Tested, LSP_Subprogram, Machine_Radix_10, Master_Id, Materialize_Entity, May_Inherit_Delayed_Rep_Aspects, Mechanism, Minimum_Accessibility, Modulus, Must_Be_On_Byte_Boundary, Must_Have_Preelab_Init, Needs_Activation_Record, Needs_Debug_Info, Needs_No_Actuals, Never_Set_In_Source, Next_Inlined_Subprogram, No_Dynamic_Predicate_On_Actual, No_Pool_Assigned, No_Predicate_On_Actual, No_Reordering, No_Return, No_Strict_Aliasing, No_Tagged_Streams_Pragma, Non_Binary_Modulus, Non_Limited_View, Nonzero_Is_True, Normalized_First_Bit, Normalized_Position, OK_To_Rename, Optimize_Alignment_Space, Optimize_Alignment_Time, Original_Access_Type, Original_Array_Type, Original_Protected_Subprogram, Original_Record_Component, Overlays_Constant, Overridden_Operation, Package_Instantiation, Packed_Array_Impl_Type, Parent_Subtype, Part_Of_Constituents, Part_Of_References, Partial_View_Has_Unknown_Discr, Pending_Access_Types, Postconditions_Proc, Predicate_Expression, Prev_Entity, Prival, Prival_Link, Private_Dependents, Protected_Body_Subprogram, Protected_Formal, Protected_Subprogram, Protection_Object, Reachable, Receiving_Entry, Referenced, Referenced_As_LHS, Referenced_As_Out_Parameter, Refinement_Constituents, Register_Exception_Call, Related_Array_Object, Related_Expression, Related_Instance, Related_Type, Relative_Deadline_Variable, Renamed_In_Spec, Renamed_Or_Alias, -- Shared among Alias, Renamed_Entity, Renamed_Object Requires_Overriding, Return_Applies_To, Return_Present, Return_Statement, Returns_By_Ref, Reverse_Bit_Order, Reverse_Storage_Order, Rewritten_For_C, RM_Size, Scalar_Range, Scale_Value, Scope_Depth_Value, Sec_Stack_Needed_For_Return, Shared_Var_Procs_Instance, Size_Check_Code, Size_Depends_On_Discriminant, Size_Known_At_Compile_Time, Small_Value, SPARK_Aux_Pragma, SPARK_Aux_Pragma_Inherited, SPARK_Pragma, SPARK_Pragma_Inherited, Spec_Entity, SSO_Set_High_By_Default, SSO_Set_Low_By_Default, Static_Call_Helper, Static_Discrete_Predicate, Static_Elaboration_Desired, Static_Initialization, Static_Real_Or_String_Predicate, Status_Flag_Or_Transient_Decl, Storage_Size_Variable, Stored_Constraint, Stores_Attribute_Old_Prefix, Strict_Alignment, String_Literal_Length, String_Literal_Low_Bound, Subprograms_For_Type, Subps_Index, Suppress_Elaboration_Warnings, Suppress_Initialization, Suppress_Style_Checks, Suppress_Value_Tracking_On_Call, Task_Body_Procedure, Thunk_Entity, Treat_As_Volatile, Underlying_Full_View, Underlying_Record_View, Universal_Aliasing, Unset_Reference, Used_As_Generic_Actual, Uses_Lock_Free, Uses_Sec_Stack, Validated_Object, Warnings_Off, Warnings_Off_Used, Warnings_Off_Used_Unmodified, Warnings_Off_Used_Unreferenced, Was_Hidden, Wrapped_Entity, Wrapped_Statements -- End of entity fields. ); -- Opt_Field_Enum subtype Field_Enum is Opt_Field_Enum range Opt_Field_Enum'Succ (No_Field) .. Opt_Field_Enum'Last; -- Enumeration of fields -- Opt_Field_Enum without the special null value -- No_Field. end Gen_IL.Fields;