1------------------------------------------------------------------------------
2--                                                                          --
3--                         GNAT COMPILER COMPONENTS                         --
4--                                                                          --
5--                         G E N _ I L . F I E L D S                        --
6--                                                                          --
7--                                 S p e c                                  --
8--                                                                          --
9--          Copyright (C) 2020-2021, Free Software Foundation, Inc.         --
10--                                                                          --
11-- GNAT is free software;  you can  redistribute it  and/or modify it under --
12-- terms of the  GNU General Public License as published  by the Free Soft- --
13-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
14-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
15-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
16-- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
17-- for  more details.  You should have  received  a copy of the GNU General --
18-- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
19-- http://www.gnu.org/licenses for a complete copy of the license.          --
20--                                                                          --
21-- GNAT was originally developed  by the GNAT team at  New York University. --
22-- Extensive contributions were provided by Ada Core Technologies Inc.      --
23--                                                                          --
24------------------------------------------------------------------------------
25
26package Gen_IL.Fields is
27
28   --  The following is "optional field enumeration" -- i.e. it is Field_Enum
29   --  (declared below) plus the special null value No_Field. See the spec of
30   --  Gen_IL.Gen for how to modify this. (Of course, in Ada we have to define
31   --  this backwards from the above conceptual description.)
32
33   --  Note that there are various subranges of this type declared below,
34   --  which might need to be kept in sync when modifying this.
35
36   --  Be sure to put new fields in the appropriate subrange (Field_Enum,
37   --  Node_Field, Entity_Field -- search for comments below).
38
39   type Opt_Field_Enum is
40     (No_Field,
41
42      --  Start of node fields:
43
44      Nkind,
45      Sloc,
46      In_List,
47      Rewrite_Ins,
48      Comes_From_Source,
49      Analyzed,
50      Error_Posted,
51      Small_Paren_Count,
52      Check_Actuals,
53      Has_Aspects,
54      Is_Ignored_Ghost_Node,
55      Link,
56
57      Abort_Present,
58      Abortable_Part,
59      Abstract_Present,
60      Accept_Handler_Records,
61      Accept_Statement,
62      Access_Definition,
63      Access_To_Subprogram_Definition,
64      Access_Types_To_Process,
65      Actions,
66      Activation_Chain_Entity,
67      Acts_As_Spec,
68      Actual_Designated_Subtype,
69      Address_Warning_Posted,
70      Aggregate_Bounds,
71      Aliased_Present,
72      Alloc_For_BIP_Return,
73      All_Others,
74      All_Present,
75      Alternatives,
76      Ancestor_Part,
77      Atomic_Sync_Required,
78      Array_Aggregate,
79      Aspect_On_Partial_View,
80      Aspect_Rep_Item,
81      Assignment_OK,
82      Attribute_Name,
83      At_End_Proc,
84      Aux_Decls_Node,
85      Backwards_OK,
86      Bad_Is_Detected,
87      Binding_Chars,
88      Body_Required,
89      Body_To_Inline,
90      Box_Present,
91      By_Ref,
92      Char_Literal_Value,
93      Chars,
94      Check_Address_Alignment,
95      Choice_Parameter,
96      Choices,
97      Class_Present,
98      Classifications,
99      Cleanup_Actions,
100      Comes_From_Extended_Return_Statement,
101      Compile_Time_Known_Aggregate,
102      Component_Associations,
103      Component_Clauses,
104      Component_Definition,
105      Component_Items,
106      Component_List,
107      Component_Name,
108      Componentwise_Assignment,
109      Condition,
110      Condition_Actions,
111      Config_Pragmas,
112      Constant_Present,
113      Constraint,
114      Constraints,
115      Context_Installed,
116      Context_Items,
117      Context_Pending,
118      Contract_Test_Cases,
119      Controlling_Argument,
120      Conversion_OK,
121      Convert_To_Return_False,
122      Corresponding_Aspect,
123      Corresponding_Body,
124      Corresponding_Entry_Body,
125      Corresponding_Formal_Spec,
126      Corresponding_Generic_Association,
127      Corresponding_Integer_Value,
128      Corresponding_Spec,
129      Corresponding_Spec_Of_Stub,
130      Corresponding_Stub,
131      Dcheck_Function,
132      Declarations,
133      Default_Expression,
134      Default_Storage_Pool,
135      Default_Name,
136      Default_Subtype_Mark,
137      Defining_Identifier,
138      Defining_Unit_Name,
139      Delay_Alternative,
140      Delay_Statement,
141      Delta_Expression,
142      Digits_Expression,
143      Discr_Check_Funcs_Built,
144      Discrete_Choices,
145      Discrete_Range,
146      Discrete_Subtype_Definition,
147      Discrete_Subtype_Definitions,
148      Discriminant_Specifications,
149      Discriminant_Type,
150      Do_Discriminant_Check,
151      Do_Division_Check,
152      Do_Length_Check,
153      Do_Overflow_Check,
154      Do_Range_Check,
155      Do_Storage_Check,
156      Elaborate_All_Desirable,
157      Elaborate_All_Present,
158      Elaborate_Desirable,
159      Elaborate_Present,
160      Else_Actions,
161      Else_Statements,
162      Elsif_Parts,
163      Enclosing_Variant,
164      End_Label,
165      End_Span,
166      Entity_Or_Associated_Node,
167      Entry_Body_Formal_Part,
168      Entry_Call_Alternative,
169      Entry_Call_Statement,
170      Entry_Direct_Name,
171      Entry_Index,
172      Entry_Index_Specification,
173      Etype,
174      Exception_Choices,
175      Exception_Handlers,
176      Exception_Junk,
177      Exception_Label,
178      Expansion_Delayed,
179      Explicit_Actual_Parameter,
180      Explicit_Generic_Actual_Parameter,
181      Expression,
182      Expression_Copy,
183      Expressions,
184      First_Bit,
185      First_Inlined_Subprogram,
186      First_Name,
187      First_Named_Actual,
188      First_Real_Statement,
189      First_Subtype_Link,
190      Float_Truncate,
191      Formal_Type_Definition,
192      Forwards_OK,
193      From_Aspect_Specification,
194      From_At_End,
195      From_At_Mod,
196      From_Conditional_Expression,
197      From_Default,
198      Generalized_Indexing,
199      Generic_Associations,
200      Generic_Formal_Declarations,
201      Generic_Parent,
202      Generic_Parent_Type,
203      Handled_Statement_Sequence,
204      Handler_List_Entry,
205      Has_Created_Identifier,
206      Has_Dereference_Action,
207      Has_Dynamic_Length_Check,
208      Has_Init_Expression,
209      Has_Local_Raise,
210      Has_No_Elaboration_Code,
211      Has_Pragma_Suppress_All,
212      Has_Private_View,
213      Has_Relative_Deadline_Pragma,
214      Has_Self_Reference,
215      Has_SP_Choice,
216      Has_Storage_Size_Pragma,
217      Has_Target_Names,
218      Has_Wide_Character,
219      Has_Wide_Wide_Character,
220      Header_Size_Added,
221      Hidden_By_Use_Clause,
222      High_Bound,
223      Identifier,
224      Interface_List,
225      Interface_Present,
226      Implicit_With,
227      Import_Interface_Present,
228      In_Present,
229      Includes_Infinities,
230      Incomplete_View,
231      Inherited_Discriminant,
232      Instance_Spec,
233      Intval,
234      Is_Abort_Block,
235      Is_Accessibility_Actual,
236      Is_Analyzed_Pragma,
237      Is_Asynchronous_Call_Block,
238      Is_Boolean_Aspect,
239      Is_Checked,
240      Is_Checked_Ghost_Pragma,
241      Is_Component_Left_Opnd,
242      Is_Component_Right_Opnd,
243      Is_Controlling_Actual,
244      Is_Declaration_Level_Node,
245      Is_Delayed_Aspect,
246      Is_Disabled,
247      Is_Dispatching_Call,
248      Is_Dynamic_Coextension,
249      Is_Effective_Use_Clause,
250      Is_Elaboration_Checks_OK_Node,
251      Is_Elaboration_Code,
252      Is_Elaboration_Warnings_OK_Node,
253      Is_Elsif,
254      Is_Entry_Barrier_Function,
255      Is_Expanded_Build_In_Place_Call,
256      Is_Expanded_Contract,
257      Is_Finalization_Wrapper,
258      Is_Folded_In_Parser,
259      Is_Generic_Contract_Pragma,
260      Is_Homogeneous_Aggregate,
261      Is_Parenthesis_Aggregate,
262      Is_Enum_Array_Aggregate,
263      Is_Ignored,
264      Is_Ignored_Ghost_Pragma,
265      Is_In_Discriminant_Check,
266      Is_Inherited_Pragma,
267      Is_Initialization_Block,
268      Is_Known_Guaranteed_ABE,
269      Is_Machine_Number,
270      Is_Null_Loop,
271      Is_Overloaded,
272      Is_Power_Of_2_For_Shift,
273      Is_Preelaborable_Call,
274      Is_Prefixed_Call,
275      Is_Protected_Subprogram_Body,
276      Is_Qualified_Universal_Literal,
277      Is_Read,
278      Is_Source_Call,
279      Is_SPARK_Mode_On_Node,
280      Is_Static_Coextension,
281      Is_Static_Expression,
282      Is_Subprogram_Descriptor,
283      Is_Task_Allocation_Block,
284      Is_Task_Body_Procedure,
285      Is_Task_Master,
286      Is_Write,
287      Iterator_Filter,
288      Iteration_Scheme,
289      Iterator_Specification,
290      Itype,
291      Key_Expression,
292      Kill_Range_Check,
293      Last_Bit,
294      Last_Name,
295      Library_Unit,
296      Label_Construct,
297      Left_Opnd,
298      Limited_View_Installed,
299      Limited_Present,
300      Literals,
301      Local_Raise_Not_OK,
302      Local_Raise_Statements,
303      Loop_Actions,
304      Loop_Parameter_Specification,
305      Low_Bound,
306      Mod_Clause,
307      More_Ids,
308      Multidefined_Bindings,
309      Must_Be_Byte_Aligned,
310      Must_Not_Freeze,
311      Must_Not_Override,
312      Must_Override,
313      Name,
314      Names,
315      Next_Entity,
316      Next_Exit_Statement,
317      Next_Implicit_With,
318      Next_Named_Actual,
319      Next_Pragma,
320      Next_Rep_Item,
321      Next_Use_Clause,
322      No_Ctrl_Actions,
323      No_Elaboration_Check,
324      No_Entities_Ref_In_Spec,
325      No_Initialization,
326      No_Minimize_Eliminate,
327      No_Side_Effect_Removal,
328      No_Truncation,
329      Null_Excluding_Subtype,
330      Null_Exclusion_Present,
331      Null_Exclusion_In_Return_Present,
332      Null_Present,
333      Null_Record_Present,
334      Null_Statement,
335      Object_Definition,
336      Of_Present,
337      Original_Discriminant,
338      Original_Entity,
339      Others_Discrete_Choices,
340      Out_Present,
341      Parameter_Associations,
342      Parameter_Specifications,
343      Parameter_Type,
344      Parent_Spec,
345      Parent_With,
346      Position,
347      Pragma_Argument_Associations,
348      Pragma_Identifier,
349      Pragmas_After,
350      Pragmas_Before,
351      Pre_Post_Conditions,
352      Prefix,
353      Premature_Use,
354      Present_Expr,
355      Prev_Ids,
356      Prev_Use_Clause,
357      Print_In_Hex,
358      Private_Declarations,
359      Private_Present,
360      Procedure_To_Call,
361      Proper_Body,
362      Protected_Definition,
363      Protected_Present,
364      Raises_Constraint_Error,
365      Range_Constraint,
366      Range_Expression,
367      Real_Range_Specification,
368      Realval,
369      Reason,
370      Record_Extension_Part,
371      Redundant_Use,
372      Renaming_Exception,
373      Result_Definition,
374      Return_Object_Declarations,
375      Return_Statement_Entity,
376      Reverse_Present,
377      Right_Opnd,
378      Rounded_Result,
379      Save_Invocation_Graph_Of_Body,
380      SCIL_Controlling_Tag,
381      SCIL_Entity,
382      SCIL_Tag_Value,
383      SCIL_Target_Prim,
384      Scope,
385      Select_Alternatives,
386      Selector_Name,
387      Selector_Names,
388      Shift_Count_OK,
389      Source_Type,
390      Specification,
391      Split_PPC,
392      Statements,
393      Storage_Pool,
394      Subpool_Handle_Name,
395      Strval,
396      Subtype_Indication,
397      Subtype_Mark,
398      Subtype_Marks,
399      Suppress_Assignment_Checks,
400      Suppress_Loop_Warnings,
401      Synchronized_Present,
402      Tagged_Present,
403      Target,
404      Target_Type,
405      Task_Definition,
406      Task_Present,
407      Then_Actions,
408      Then_Statements,
409      Triggering_Alternative,
410      Triggering_Statement,
411      TSS_Elist,
412      Type_Definition,
413      Uneval_Old_Accept,
414      Uneval_Old_Warn,
415      Unit,
416      Unknown_Discriminants_Present,
417      Unreferenced_In_Spec,
418      Variant_Part,
419      Variants,
420      Visible_Declarations,
421      Uninitialized_Variable,
422      Used_Operations,
423      Was_Attribute_Reference,
424      Was_Default_Init_Box_Association,
425      Was_Expression_Function,
426      Was_Originally_Stub,
427
428      --  End of node fields.
429
430      Between_Node_And_Entity_Fields,
431
432      --  Start of entity fields:
433
434      Ekind,
435      Basic_Convention,
436      Abstract_States,
437      Accept_Address,
438      Access_Disp_Table,
439      Access_Disp_Table_Elab_Flag,
440      Access_Subprogram_Wrapper,
441      Activation_Record_Component,
442      Actual_Subtype,
443      Address_Taken,
444      Alignment,
445      Anonymous_Designated_Type,
446      Anonymous_Masters,
447      Anonymous_Object,
448      Associated_Entity,
449      Associated_Formal_Package,
450      Associated_Node_For_Itype,
451      Associated_Storage_Pool,
452      Barrier_Function,
453      BIP_Initialization_Call,
454      Block_Node,
455      Body_Entity,
456      Body_Needed_For_Inlining,
457      Body_Needed_For_SAL,
458      Body_References,
459      C_Pass_By_Copy,
460      Can_Never_Be_Null,
461      Can_Use_Internal_Rep,
462      Checks_May_Be_Suppressed,
463      Class_Postconditions,
464      Class_Preconditions,
465      Class_Preconditions_Subprogram,
466      Class_Wide_Type,
467      Cloned_Subtype,
468      Component_Alignment,
469      Component_Bit_Offset,
470      Component_Clause,
471      Component_Size,
472      Component_Type,
473      Contract,
474      Contract_Wrapper,
475      Corresponding_Concurrent_Type,
476      Corresponding_Discriminant,
477      Corresponding_Equality,
478      Corresponding_Function,
479      Corresponding_Procedure,
480      Corresponding_Record_Component,
481      Corresponding_Record_Type,
482      Corresponding_Remote_Type,
483      CR_Discriminant,
484      Current_Use_Clause,
485      Current_Value,
486      Debug_Info_Off,
487      Debug_Renaming_Link,
488      Default_Aspect_Component_Value,
489      Default_Aspect_Value,
490      Default_Expr_Function,
491      Default_Expressions_Processed,
492      Default_Value,
493      Delay_Cleanups,
494      Delay_Subprogram_Descriptors,
495      Delta_Value,
496      Dependent_Instances,
497      Depends_On_Private,
498      Derived_Type_Link,
499      Digits_Value,
500      Predicated_Parent,
501      Predicates_Ignored,
502      Direct_Primitive_Operations,
503      Directly_Designated_Type,
504      Disable_Controlled,
505      Discard_Names,
506      Discriminal,
507      Discriminal_Link,
508      Discriminant_Checking_Func,
509      Discriminant_Constraint,
510      Discriminant_Default_Value,
511      Discriminant_Number,
512      Dispatch_Table_Wrappers,
513      Dynamic_Call_Helper,
514      DT_Entry_Count,
515      DT_Offset_To_Top_Func,
516      DT_Position,
517      DTC_Entity,
518      Elaborate_Body_Desirable,
519      Elaboration_Entity,
520      Elaboration_Entity_Required,
521      Encapsulating_State,
522      Enclosing_Scope,
523      Entry_Accepted,
524      Entry_Bodies_Array,
525      Entry_Cancel_Parameter,
526      Entry_Component,
527      Entry_Formal,
528      Entry_Index_Constant,
529      Entry_Max_Queue_Lengths_Array,
530      Entry_Parameters_Type,
531      Enum_Pos_To_Rep,
532      Enumeration_Pos,
533      Enumeration_Rep,
534      Enumeration_Rep_Expr,
535      Equivalent_Type,
536      Esize,
537      Extra_Accessibility,
538      Extra_Accessibility_Of_Result,
539      Extra_Constrained,
540      Extra_Formal,
541      Extra_Formals,
542      Finalization_Master,
543      Finalize_Storage_Only,
544      Finalizer,
545      First_Entity,
546      First_Exit_Statement,
547      First_Index,
548      First_Literal,
549      First_Private_Entity,
550      First_Rep_Item,
551      Freeze_Node,
552      From_Limited_With,
553      Full_View,
554      Generic_Homonym,
555      Generic_Renamings,
556      Handler_Records,
557      Has_Aliased_Components,
558      Has_Alignment_Clause,
559      Has_All_Calls_Remote,
560      Has_Atomic_Components,
561      Has_Biased_Representation,
562      Has_Completion,
563      Has_Completion_In_Body,
564      Has_Complex_Representation,
565      Has_Component_Size_Clause,
566      Has_Constrained_Partial_View,
567      Has_Contiguous_Rep,
568      Has_Controlled_Component,
569      Has_Controlling_Result,
570      Has_Convention_Pragma,
571      Has_Default_Aspect,
572      Has_Delayed_Aspects,
573      Has_Delayed_Freeze,
574      Has_Delayed_Rep_Aspects,
575      Has_Discriminants,
576      Has_Dispatch_Table,
577      Has_Dynamic_Predicate_Aspect,
578      Has_Enumeration_Rep_Clause,
579      Has_Exit,
580      Has_Expanded_Contract,
581      Has_Forward_Instantiation,
582      Has_Fully_Qualified_Name,
583      Has_Gigi_Rep_Item,
584      Has_Homonym,
585      Has_Implicit_Dereference,
586      Has_Independent_Components,
587      Has_Inheritable_Invariants,
588      Has_Inherited_DIC,
589      Has_Inherited_Invariants,
590      Has_Initial_Value,
591      Has_Loop_Entry_Attributes,
592      Has_Machine_Radix_Clause,
593      Has_Master_Entity,
594      Has_Missing_Return,
595      Has_Nested_Block_With_Handler,
596      Has_Nested_Subprogram,
597      Has_Non_Standard_Rep,
598      Has_Object_Size_Clause,
599      Has_Out_Or_In_Out_Parameter,
600      Has_Own_DIC,
601      Has_Own_Invariants,
602      Has_Partial_Visible_Refinement,
603      Has_Per_Object_Constraint,
604      Has_Pragma_Controlled,
605      Has_Pragma_Elaborate_Body,
606      Has_Pragma_Inline,
607      Has_Pragma_Inline_Always,
608      Has_Pragma_No_Inline,
609      Has_Pragma_Ordered,
610      Has_Pragma_Pack,
611      Has_Pragma_Preelab_Init,
612      Has_Pragma_Pure,
613      Has_Pragma_Pure_Function,
614      Has_Pragma_Thread_Local_Storage,
615      Has_Pragma_Unmodified,
616      Has_Pragma_Unreferenced,
617      Has_Pragma_Unreferenced_Objects,
618      Has_Pragma_Unused,
619      Has_Predicates,
620      Has_Primitive_Operations,
621      Has_Private_Ancestor,
622      Has_Private_Declaration,
623      Has_Private_Extension,
624      Has_Protected,
625      Has_Qualified_Name,
626      Has_RACW,
627      Has_Record_Rep_Clause,
628      Has_Recursive_Call,
629      Has_Shift_Operator,
630      Has_Size_Clause,
631      Has_Small_Clause,
632      Has_Specified_Layout,
633      Has_Specified_Stream_Input,
634      Has_Specified_Stream_Output,
635      Has_Specified_Stream_Read,
636      Has_Specified_Stream_Write,
637      Has_Static_Discriminants,
638      Has_Static_Predicate,
639      Has_Static_Predicate_Aspect,
640      Has_Storage_Size_Clause,
641      Has_Stream_Size_Clause,
642      Has_Task,
643      Has_Timing_Event,
644      Has_Thunks,
645      Has_Unchecked_Union,
646      Has_Unknown_Discriminants,
647      Has_Visible_Refinement,
648      Has_Volatile_Components,
649      Has_Xref_Entry,
650      Has_Yield_Aspect,
651      Hiding_Loop_Variable,
652      Hidden_In_Formal_Instance,
653      Homonym,
654      Ignored_Class_Postconditions,
655      Ignored_Class_Preconditions,
656      Ignore_SPARK_Mode_Pragmas,
657      Import_Pragma,
658      Incomplete_Actuals,
659      Indirect_Call_Wrapper,
660      In_Package_Body,
661      In_Private_Part,
662      In_Use,
663      Initialization_Statements,
664      Inner_Instances,
665      Interface_Alias,
666      Interface_Name,
667      Interfaces,
668      Is_Abstract_Subprogram,
669      Is_Abstract_Type,
670      Is_Access_Constant,
671      Is_Activation_Record,
672      Is_Actual_Subtype,
673      Is_Ada_2005_Only,
674      Is_Ada_2012_Only,
675      Is_Ada_2022_Only,
676      Is_Aliased,
677      Is_Asynchronous,
678      Is_Atomic,
679      Is_Bit_Packed_Array,
680      Is_Called,
681      Is_Character_Type,
682      Is_Checked_Ghost_Entity,
683      Is_Child_Unit,
684      Is_Class_Wide_Equivalent_Type,
685      Is_Class_Wide_Wrapper,
686      Is_Compilation_Unit,
687      Is_Completely_Hidden,
688      Is_Concurrent_Record_Type,
689      Is_Constr_Subt_For_U_Nominal,
690      Is_Constr_Subt_For_UN_Aliased,
691      Is_Constrained,
692      Is_Constructor,
693      Is_Controlled_Active,
694      Is_Controlling_Formal,
695      Is_CPP_Class,
696      Is_CUDA_Kernel,
697      Is_Descendant_Of_Address,
698      Is_DIC_Procedure,
699      Is_Discrim_SO_Function,
700      Is_Discriminant_Check_Function,
701      Is_Dispatch_Table_Entity,
702      Is_Dispatch_Table_Wrapper,
703      Is_Dispatching_Operation,
704      Is_Elaboration_Checks_OK_Id,
705      Is_Elaboration_Warnings_OK_Id,
706      Is_Eliminated,
707      Is_Entry_Formal,
708      Is_Entry_Wrapper,
709      Is_Exception_Handler,
710      Is_Exported,
711      Is_Finalized_Transient,
712      Is_First_Subtype,
713      Is_Fixed_Lower_Bound_Array_Subtype,
714      Is_Fixed_Lower_Bound_Index_Subtype,
715      Is_Formal_Subprogram,
716      Is_Frozen,
717      Is_Generic_Actual_Subprogram,
718      Is_Generic_Actual_Type,
719      Is_Generic_Instance,
720      Is_Generic_Type,
721      Is_Hidden,
722      Is_Hidden_Non_Overridden_Subpgm,
723      Is_Hidden_Open_Scope,
724      Is_Ignored_Ghost_Entity,
725      Is_Ignored_Transient,
726      Is_Immediately_Visible,
727      Is_Implementation_Defined,
728      Is_Imported,
729      Is_Independent,
730      Is_Initial_Condition_Procedure,
731      Is_Inlined,
732      Is_Inlined_Always,
733      Is_Instantiated,
734      Is_Interface,
735      Is_Internal,
736      Is_Interrupt_Handler,
737      Is_Intrinsic_Subprogram,
738      Is_Invariant_Procedure,
739      Is_Itype,
740      Is_Known_Non_Null,
741      Is_Known_Null,
742      Is_Known_Valid,
743      Is_Limited_Composite,
744      Is_Limited_Interface,
745      Is_Limited_Record,
746      Is_Local_Anonymous_Access,
747      Is_Loop_Parameter,
748      Is_Machine_Code_Subprogram,
749      Is_Non_Static_Subtype,
750      Is_Null_Init_Proc,
751      Is_Obsolescent,
752      Is_Only_Out_Parameter,
753      Is_Package_Body_Entity,
754      Is_Packed,
755      Is_Packed_Array_Impl_Type,
756      Is_Param_Block_Component_Type,
757      Is_Partial_Invariant_Procedure,
758      Is_Potentially_Use_Visible,
759      Is_Predicate_Function,
760      Is_Predicate_Function_M,
761      Is_Preelaborated,
762      Is_Primitive,
763      Is_Primitive_Wrapper,
764      Is_Private_Composite,
765      Is_Private_Descendant,
766      Is_Private_Primitive,
767      Is_Public,
768      Is_Pure,
769      Is_Pure_Unit_Access_Type,
770      Is_RACW_Stub_Type,
771      Is_Raised,
772      Is_Remote_Call_Interface,
773      Is_Remote_Types,
774      Is_Renaming_Of_Object,
775      Is_Return_Object,
776      Is_Safe_To_Reevaluate,
777      Is_Shared_Passive,
778      Is_Static_Type,
779      Is_Statically_Allocated,
780      Is_Tag,
781      Is_Tagged_Type,
782      Is_Thunk,
783      Is_Trivial_Subprogram,
784      Is_True_Constant,
785      Is_Unchecked_Union,
786      Is_Underlying_Full_View,
787      Is_Underlying_Record_View,
788      Is_Unimplemented,
789      Is_Unsigned_Type,
790      Is_Uplevel_Referenced_Entity,
791      Is_Valued_Procedure,
792      Is_Visible_Formal,
793      Is_Visible_Lib_Unit,
794      Is_Volatile_Type,
795      Is_Volatile_Object,
796      Is_Volatile_Full_Access,
797      Is_Wrapper,
798      Itype_Printed,
799      Kill_Elaboration_Checks,
800      Kill_Range_Checks,
801      Known_To_Have_Preelab_Init,
802      Last_Aggregate_Assignment,
803      Last_Assignment,
804      Last_Entity,
805      Limited_View,
806      Linker_Section_Pragma,
807      Lit_Hash,
808      Lit_Indexes,
809      Lit_Strings,
810      Low_Bound_Tested,
811      LSP_Subprogram,
812      Machine_Radix_10,
813      Master_Id,
814      Materialize_Entity,
815      May_Inherit_Delayed_Rep_Aspects,
816      Mechanism,
817      Minimum_Accessibility,
818      Modulus,
819      Must_Be_On_Byte_Boundary,
820      Must_Have_Preelab_Init,
821      Needs_Activation_Record,
822      Needs_Debug_Info,
823      Needs_No_Actuals,
824      Never_Set_In_Source,
825      Next_Inlined_Subprogram,
826      No_Dynamic_Predicate_On_Actual,
827      No_Pool_Assigned,
828      No_Predicate_On_Actual,
829      No_Reordering,
830      No_Return,
831      No_Strict_Aliasing,
832      No_Tagged_Streams_Pragma,
833      Non_Binary_Modulus,
834      Non_Limited_View,
835      Nonzero_Is_True,
836      Normalized_First_Bit,
837      Normalized_Position,
838      OK_To_Rename,
839      Optimize_Alignment_Space,
840      Optimize_Alignment_Time,
841      Original_Access_Type,
842      Original_Array_Type,
843      Original_Protected_Subprogram,
844      Original_Record_Component,
845      Overlays_Constant,
846      Overridden_Operation,
847      Package_Instantiation,
848      Packed_Array_Impl_Type,
849      Parent_Subtype,
850      Part_Of_Constituents,
851      Part_Of_References,
852      Partial_View_Has_Unknown_Discr,
853      Pending_Access_Types,
854      Postconditions_Proc,
855      Prev_Entity,
856      Prival,
857      Prival_Link,
858      Private_Dependents,
859      Protected_Body_Subprogram,
860      Protected_Formal,
861      Protected_Subprogram,
862      Protection_Object,
863      Reachable,
864      Receiving_Entry,
865      Referenced,
866      Referenced_As_LHS,
867      Referenced_As_Out_Parameter,
868      Refinement_Constituents,
869      Register_Exception_Call,
870      Related_Array_Object,
871      Related_Expression,
872      Related_Instance,
873      Related_Type,
874      Relative_Deadline_Variable,
875      Renamed_In_Spec,
876      Renamed_Or_Alias, -- Shared among Alias, Renamed_Entity, Renamed_Object
877      Requires_Overriding,
878      Return_Applies_To,
879      Return_Present,
880      Return_Statement,
881      Returns_By_Ref,
882      Reverse_Bit_Order,
883      Reverse_Storage_Order,
884      Rewritten_For_C,
885      RM_Size,
886      Scalar_Range,
887      Scale_Value,
888      Scope_Depth_Value,
889      Sec_Stack_Needed_For_Return,
890      Shared_Var_Procs_Instance,
891      Size_Check_Code,
892      Size_Depends_On_Discriminant,
893      Size_Known_At_Compile_Time,
894      Small_Value,
895      SPARK_Aux_Pragma,
896      SPARK_Aux_Pragma_Inherited,
897      SPARK_Pragma,
898      SPARK_Pragma_Inherited,
899      Spec_Entity,
900      SSO_Set_High_By_Default,
901      SSO_Set_Low_By_Default,
902      Static_Call_Helper,
903      Static_Discrete_Predicate,
904      Static_Elaboration_Desired,
905      Static_Initialization,
906      Static_Real_Or_String_Predicate,
907      Status_Flag_Or_Transient_Decl,
908      Storage_Size_Variable,
909      Stored_Constraint,
910      Stores_Attribute_Old_Prefix,
911      Strict_Alignment,
912      String_Literal_Length,
913      String_Literal_Low_Bound,
914      Subprograms_For_Type,
915      Subps_Index,
916      Suppress_Elaboration_Warnings,
917      Suppress_Initialization,
918      Suppress_Style_Checks,
919      Suppress_Value_Tracking_On_Call,
920      Task_Body_Procedure,
921      Thunk_Entity,
922      Treat_As_Volatile,
923      Underlying_Full_View,
924      Underlying_Record_View,
925      Universal_Aliasing,
926      Unset_Reference,
927      Used_As_Generic_Actual,
928      Uses_Lock_Free,
929      Uses_Sec_Stack,
930      Validated_Object,
931      Warnings_Off,
932      Warnings_Off_Used,
933      Warnings_Off_Used_Unmodified,
934      Warnings_Off_Used_Unreferenced,
935      Was_Hidden,
936      Wrapped_Entity
937
938      --  End of entity fields.
939     ); -- Opt_Field_Enum
940
941   subtype Field_Enum is Opt_Field_Enum
942     range Opt_Field_Enum'Succ (No_Field) .. Opt_Field_Enum'Last;
943   --  Enumeration of fields -- Opt_Field_Enum without the special null value
944   --  No_Field.
945
946end Gen_IL.Fields;
947