OSDN Git Service

2010-06-17 Robert Dewar <dewar@adacore.com>
[pf3gnuchains/gcc-fork.git] / gcc / ada / einfo.adb
1 ------------------------------------------------------------------------------
2 --                                                                          --
3 --                         GNAT COMPILER COMPONENTS                         --
4 --                                                                          --
5 --                                E I N F O                                 --
6 --                                                                          --
7 --                                 B o d y                                  --
8 --                                                                          --
9 --          Copyright (C) 1992-2009, 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.                                     --
17 --                                                                          --
18 -- As a special exception under Section 7 of GPL version 3, you are granted --
19 -- additional permissions described in the GCC Runtime Library Exception,   --
20 -- version 3.1, as published by the Free Software Foundation.               --
21 --                                                                          --
22 -- You should have received a copy of the GNU General Public License and    --
23 -- a copy of the GCC Runtime Library Exception along with this program;     --
24 -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
25 -- <http://www.gnu.org/licenses/>.                                          --
26 --                                                                          --
27 -- GNAT was originally developed  by the GNAT team at  New York University. --
28 -- Extensive contributions were provided by Ada Core Technologies Inc.      --
29 --                                                                          --
30 ------------------------------------------------------------------------------
31
32 pragma Style_Checks (All_Checks);
33 --  Turn off subprogram ordering, not used for this unit
34
35 with Atree;  use Atree;
36 with Nlists; use Nlists;
37 with Output; use Output;
38 with Sinfo;  use Sinfo;
39 with Stand;  use Stand;
40
41 package body Einfo is
42
43    use Atree.Unchecked_Access;
44    --  This is one of the packages that is allowed direct untyped access to
45    --  the fields in a node, since it provides the next level abstraction
46    --  which incorporates appropriate checks.
47
48    ----------------------------------------------
49    -- Usage of Fields in Defining Entity Nodes --
50    ----------------------------------------------
51
52    --  Four of these fields are defined in Sinfo, since they in are the base
53    --  part of the node. The access routines for these four fields and the
54    --  corresponding set procedures are defined in Sinfo. These fields are
55    --  present in all entities. Note that Homonym is also in the base part of
56    --  the node, but has access routines that are more properly part of Einfo,
57    --  which is why they are defined here.
58
59    --    Chars                           Name1
60    --    Next_Entity                     Node2
61    --    Scope                           Node3
62    --    Etype                           Node5
63
64    --   Remaining fields are present only in extended nodes (i.e. entities)
65
66    --  The following fields are present in all entities
67
68    --    Homonym                         Node4
69    --    First_Rep_Item                  Node6
70    --    Freeze_Node                     Node7
71
72    --  The usage of other fields (and the entity kinds to which it applies)
73    --  depends on the particular field (see Einfo spec for details).
74
75    --    Associated_Node_For_Itype       Node8
76    --    Dependent_Instances             Elist8
77    --    Hiding_Loop_Variable            Node8
78    --    Mechanism                       Uint8 (but returns Mechanism_Type)
79    --    Normalized_First_Bit            Uint8
80    --    Postcondition_Proc              Node8
81    --    Return_Applies_To               Node8
82    --    First_Exit_Statement            Node8
83
84    --    Class_Wide_Type                 Node9
85    --    Current_Value                   Node9
86    --    Renaming_Map                    Uint9
87
88    --    Discriminal_Link                Node10
89    --    Handler_Records                 List10
90    --    Normalized_Position_Max         Uint10
91    --    Referenced_Object               Node10
92
93    --    Component_Bit_Offset            Uint11
94    --    Full_View                       Node11
95    --    Entry_Component                 Node11
96    --    Enumeration_Pos                 Uint11
97    --    Generic_Homonym                 Node11
98    --    Protected_Body_Subprogram       Node11
99    --    Block_Node                      Node11
100
101    --    Barrier_Function                Node12
102    --    Enumeration_Rep                 Uint12
103    --    Esize                           Uint12
104    --    Next_Inlined_Subprogram         Node12
105
106    --    Corresponding_Equality          Node13
107    --    Component_Clause                Node13
108    --    Elaboration_Entity              Node13
109    --    Extra_Accessibility             Node13
110    --    RM_Size                         Uint13
111
112    --    Alignment                       Uint14
113    --    First_Optional_Parameter        Node14
114    --    Normalized_Position             Uint14
115    --    Shadow_Entities                 List14
116
117    --    Discriminant_Number             Uint15
118    --    DT_Position                     Uint15
119    --    DT_Entry_Count                  Uint15
120    --    Entry_Bodies_Array              Node15
121    --    Entry_Parameters_Type           Node15
122    --    Extra_Formal                    Node15
123    --    Lit_Indexes                     Node15
124    --    Primitive_Operations            Elist15
125    --    Related_Instance                Node15
126    --    Scale_Value                     Uint15
127    --    Storage_Size_Variable           Node15
128    --    String_Literal_Low_Bound        Node15
129
130    --    Access_Disp_Table               Elist16
131    --    Cloned_Subtype                  Node16
132    --    DTC_Entity                      Node16
133    --    Entry_Formal                    Node16
134    --    First_Private_Entity            Node16
135    --    Lit_Strings                     Node16
136    --    String_Literal_Length           Uint16
137    --    Unset_Reference                 Node16
138
139    --    Actual_Subtype                  Node17
140    --    Digits_Value                    Uint17
141    --    Discriminal                     Node17
142    --    First_Entity                    Node17
143    --    First_Index                     Node17
144    --    First_Literal                   Node17
145    --    Master_Id                       Node17
146    --    Modulus                         Uint17
147    --    Non_Limited_View                Node17
148    --    Prival                          Node17
149
150    --    Alias                           Node18
151    --    Corresponding_Concurrent_Type   Node18
152    --    Corresponding_Record_Type       Node18
153    --    Delta_Value                     Ureal18
154    --    Enclosing_Scope                 Node18
155    --    Equivalent_Type                 Node18
156    --    Private_Dependents              Elist18
157    --    Renamed_Entity                  Node18
158    --    Renamed_Object                  Node18
159
160    --    Body_Entity                     Node19
161    --    Corresponding_Discriminant      Node19
162    --    Finalization_Chain_Entity       Node19
163    --    Parent_Subtype                  Node19
164    --    Related_Array_Object            Node19
165    --    Size_Check_Code                 Node19
166    --    Spec_Entity                     Node19
167    --    Underlying_Full_View            Node19
168
169    --    Component_Type                  Node20
170    --    Default_Value                   Node20
171    --    Directly_Designated_Type        Node20
172    --    Discriminant_Checking_Func      Node20
173    --    Discriminant_Default_Value      Node20
174    --    Last_Entity                     Node20
175    --    Prival_Link                     Node20
176    --    Register_Exception_Call         Node20
177    --    Scalar_Range                    Node20
178
179    --    Accept_Address                  Elist21
180    --    Default_Expr_Function           Node21
181    --    Discriminant_Constraint         Elist21
182    --    Interface_Name                  Node21
183    --    Original_Array_Type             Node21
184    --    Small_Value                     Ureal21
185
186    --    Associated_Storage_Pool         Node22
187    --    Component_Size                  Uint22
188    --    Corresponding_Remote_Type       Node22
189    --    Enumeration_Rep_Expr            Node22
190    --    Exception_Code                  Uint22
191    --    Original_Record_Component       Node22
192    --    Private_View                    Node22
193    --    Protected_Formal                Node22
194    --    Scope_Depth_Value               Uint22
195    --    Shared_Var_Procs_Instance       Node22
196
197    --    Associated_Final_Chain          Node23
198    --    CR_Discriminant                 Node23
199    --    Entry_Cancel_Parameter          Node23
200    --    Enum_Pos_To_Rep                 Node23
201    --    Extra_Constrained               Node23
202    --    Generic_Renamings               Elist23
203    --    Inner_Instances                 Elist23
204    --    Limited_View                    Node23
205    --    Packed_Array_Type               Node23
206    --    Protection_Object               Node23
207    --    Stored_Constraint               Elist23
208
209    --    Related_Expression              Node24
210    --    Spec_PPC_List                   Node24
211    --    Underlying_Record_View          Node24
212
213    --    Interface_Alias                 Node25
214    --    Interfaces                      Elist25
215    --    Debug_Renaming_Link             Node25
216    --    DT_Offset_To_Top_Func           Node25
217    --    Task_Body_Procedure             Node25
218
219    --    Dispatch_Table_Wrappers         Elist26
220    --    Last_Assignment                 Node26
221    --    Overridden_Operation            Node26
222    --    Package_Instantiation           Node26
223    --    Related_Type                    Node26
224    --    Relative_Deadline_Variable      Node26
225    --    Static_Initialization           Node26
226
227    --    Current_Use_Clause              Node27
228    --    Wrapped_Entity                  Node27
229
230    --    Extra_Formals                   Node28
231
232    ---------------------------------------------
233    -- Usage of Flags in Defining Entity Nodes --
234    ---------------------------------------------
235
236    --  All flags are unique, there is no overlaying, so each flag is physically
237    --  present in every entity. However, for many of the flags, it only makes
238    --  sense for them to be set true for certain subsets of entity kinds. See
239    --  the spec of Einfo for further details.
240
241    --  Note: Flag1-Flag3 are absent from this list, since these flag positions
242    --  are used for the flags Analyzed, Comes_From_Source, and Error_Posted,
243    --  which are common to all nodes, including entity nodes.
244
245    --    Is_Frozen                       Flag4
246    --    Has_Discriminants               Flag5
247    --    Is_Dispatching_Operation        Flag6
248    --    Is_Immediately_Visible          Flag7
249    --    In_Use                          Flag8
250    --    Is_Potentially_Use_Visible      Flag9
251    --    Is_Public                       Flag10
252
253    --    Is_Inlined                      Flag11
254    --    Is_Constrained                  Flag12
255    --    Is_Generic_Type                 Flag13
256    --    Depends_On_Private              Flag14
257    --    Is_Aliased                      Flag15
258    --    Is_Volatile                     Flag16
259    --    Is_Internal                     Flag17
260    --    Has_Delayed_Freeze              Flag18
261    --    Is_Abstract_Subprogram          Flag19
262    --    Is_Concurrent_Record_Type       Flag20
263
264    --    Has_Master_Entity               Flag21
265    --    Needs_No_Actuals                Flag22
266    --    Has_Storage_Size_Clause         Flag23
267    --    Is_Imported                     Flag24
268    --    Is_Limited_Record               Flag25
269    --    Has_Completion                  Flag26
270    --    Has_Pragma_Controlled           Flag27
271    --    Is_Statically_Allocated         Flag28
272    --    Has_Size_Clause                 Flag29
273    --    Has_Task                        Flag30
274
275    --    Checks_May_Be_Suppressed        Flag31
276    --    Kill_Elaboration_Checks         Flag32
277    --    Kill_Range_Checks               Flag33
278    --    Kill_Tag_Checks                 Flag34
279    --    Is_Class_Wide_Equivalent_Type   Flag35
280    --    Referenced_As_LHS               Flag36
281    --    Is_Known_Non_Null               Flag37
282    --    Can_Never_Be_Null               Flag38
283    --    Is_Overriding_Operation         Flag39
284    --    Body_Needed_For_SAL             Flag40
285
286    --    Treat_As_Volatile               Flag41
287    --    Is_Controlled                   Flag42
288    --    Has_Controlled_Component        Flag43
289    --    Is_Pure                         Flag44
290    --    In_Private_Part                 Flag45
291    --    Has_Alignment_Clause            Flag46
292    --    Has_Exit                        Flag47
293    --    In_Package_Body                 Flag48
294    --    Reachable                       Flag49
295    --    Delay_Subprogram_Descriptors    Flag50
296
297    --    Is_Packed                       Flag51
298    --    Is_Entry_Formal                 Flag52
299    --    Is_Private_Descendant           Flag53
300    --    Return_Present                  Flag54
301    --    Is_Tagged_Type                  Flag55
302    --    Has_Homonym                     Flag56
303    --    Is_Hidden                       Flag57
304    --    Non_Binary_Modulus              Flag58
305    --    Is_Preelaborated                Flag59
306    --    Is_Shared_Passive               Flag60
307
308    --    Is_Remote_Types                 Flag61
309    --    Is_Remote_Call_Interface        Flag62
310    --    Is_Character_Type               Flag63
311    --    Is_Intrinsic_Subprogram         Flag64
312    --    Has_Record_Rep_Clause           Flag65
313    --    Has_Enumeration_Rep_Clause      Flag66
314    --    Has_Small_Clause                Flag67
315    --    Has_Component_Size_Clause       Flag68
316    --    Is_Access_Constant              Flag69
317    --    Is_First_Subtype                Flag70
318
319    --    Has_Completion_In_Body          Flag71
320    --    Has_Unknown_Discriminants       Flag72
321    --    Is_Child_Unit                   Flag73
322    --    Is_CPP_Class                    Flag74
323    --    Has_Non_Standard_Rep            Flag75
324    --    Is_Constructor                  Flag76
325    --    Static_Elaboration_Desired      Flag77
326    --    Is_Tag                          Flag78
327    --    Has_All_Calls_Remote            Flag79
328    --    Is_Constr_Subt_For_U_Nominal    Flag80
329
330    --    Is_Asynchronous                 Flag81
331    --    Has_Gigi_Rep_Item               Flag82
332    --    Has_Machine_Radix_Clause        Flag83
333    --    Machine_Radix_10                Flag84
334    --    Is_Atomic                       Flag85
335    --    Has_Atomic_Components           Flag86
336    --    Has_Volatile_Components         Flag87
337    --    Discard_Names                   Flag88
338    --    Is_Interrupt_Handler            Flag89
339    --    Returns_By_Ref                  Flag90
340
341    --    Is_Itype                        Flag91
342    --    Size_Known_At_Compile_Time      Flag92
343    --    Has_Subprogram_Descriptor       Flag93
344    --    Is_Generic_Actual_Type          Flag94
345    --    Uses_Sec_Stack                  Flag95
346    --    Warnings_Off                    Flag96
347    --    Is_Controlling_Formal           Flag97
348    --    Has_Controlling_Result          Flag98
349    --    Is_Exported                     Flag99
350    --    Has_Specified_Layout            Flag100
351
352    --    Has_Nested_Block_With_Handler   Flag101
353    --    Is_Called                       Flag102
354    --    Is_Completely_Hidden            Flag103
355    --    Address_Taken                   Flag104
356    --    Suppress_Init_Proc              Flag105
357    --    Is_Limited_Composite            Flag106
358    --    Is_Private_Composite            Flag107
359    --    Default_Expressions_Processed   Flag108
360    --    Is_Non_Static_Subtype           Flag109
361    --    Has_External_Tag_Rep_Clause     Flag110
362
363    --    Is_Formal_Subprogram            Flag111
364    --    Is_Renaming_Of_Object           Flag112
365    --    No_Return                       Flag113
366    --    Delay_Cleanups                  Flag114
367    --    Never_Set_In_Source             Flag115
368    --    Is_Visible_Child_Unit           Flag116
369    --    Is_Unchecked_Union              Flag117
370    --    Is_For_Access_Subtype           Flag118
371    --    Has_Convention_Pragma           Flag119
372    --    Has_Primitive_Operations        Flag120
373
374    --    Has_Pragma_Pack                 Flag121
375    --    Is_Bit_Packed_Array             Flag122
376    --    Has_Unchecked_Union             Flag123
377    --    Is_Eliminated                   Flag124
378    --    C_Pass_By_Copy                  Flag125
379    --    Is_Instantiated                 Flag126
380    --    Is_Valued_Procedure             Flag127
381    --    (used for Component_Alignment)  Flag128
382    --    (used for Component_Alignment)  Flag129
383    --    Is_Generic_Instance             Flag130
384
385    --    No_Pool_Assigned                Flag131
386    --    Is_AST_Entry                    Flag132
387    --    Is_VMS_Exception                Flag133
388    --    Is_Optional_Parameter           Flag134
389    --    Has_Aliased_Components          Flag135
390    --    No_Strict_Aliasing              Flag136
391    --    Is_Machine_Code_Subprogram      Flag137
392    --    Is_Packed_Array_Type            Flag138
393    --    Has_Biased_Representation       Flag139
394    --    Has_Complex_Representation      Flag140
395
396    --    Is_Constr_Subt_For_UN_Aliased   Flag141
397    --    Has_Missing_Return              Flag142
398    --    Has_Recursive_Call              Flag143
399    --    Is_Unsigned_Type                Flag144
400    --    Strict_Alignment                Flag145
401    --    Is_Abstract_Type                Flag146
402    --    Needs_Debug_Info                Flag147
403    --    Suppress_Elaboration_Warnings   Flag148
404    --    Is_Compilation_Unit             Flag149
405    --    Has_Pragma_Elaborate_Body       Flag150
406
407    --    Vax_Float                       Flag151
408    --    Entry_Accepted                  Flag152
409    --    Is_Obsolescent                  Flag153
410    --    Has_Per_Object_Constraint       Flag154
411    --    Has_Private_Declaration         Flag155
412    --    Referenced                      Flag156
413    --    Has_Pragma_Inline               Flag157
414    --    Finalize_Storage_Only           Flag158
415    --    From_With_Type                  Flag159
416    --    Is_Package_Body_Entity          Flag160
417
418    --    Has_Qualified_Name              Flag161
419    --    Nonzero_Is_True                 Flag162
420    --    Is_True_Constant                Flag163
421    --    Reverse_Bit_Order               Flag164
422    --    Suppress_Style_Checks           Flag165
423    --    Debug_Info_Off                  Flag166
424    --    Sec_Stack_Needed_For_Return     Flag167
425    --    Materialize_Entity              Flag168
426    --    Has_Pragma_Thread_Local_Storage Flag169
427    --    Is_Known_Valid                  Flag170
428
429    --    Is_Hidden_Open_Scope            Flag171
430    --    Has_Object_Size_Clause          Flag172
431    --    Has_Fully_Qualified_Name        Flag173
432    --    Elaboration_Entity_Required     Flag174
433    --    Has_Forward_Instantiation       Flag175
434    --    Is_Discrim_SO_Function          Flag176
435    --    Size_Depends_On_Discriminant    Flag177
436    --    Is_Null_Init_Proc               Flag178
437    --    Has_Pragma_Pure_Function        Flag179
438    --    Has_Pragma_Unreferenced         Flag180
439
440    --    Has_Contiguous_Rep              Flag181
441    --    Has_Xref_Entry                  Flag182
442    --    Must_Be_On_Byte_Boundary        Flag183
443    --    Has_Stream_Size_Clause          Flag184
444    --    Is_Ada_2005_Only                Flag185
445    --    Is_Interface                    Flag186
446    --    Has_Constrained_Partial_View    Flag187
447    --    Has_Persistent_BSS              Flag188
448    --    Is_Pure_Unit_Access_Type        Flag189
449    --    Has_Specified_Stream_Input      Flag190
450
451    --    Has_Specified_Stream_Output     Flag191
452    --    Has_Specified_Stream_Read       Flag192
453    --    Has_Specified_Stream_Write      Flag193
454    --    Is_Local_Anonymous_Access       Flag194
455    --    Is_Primitive_Wrapper            Flag195
456    --    Was_Hidden                      Flag196
457    --    Is_Limited_Interface            Flag197
458    --    Is_Protected_Interface          Flag198
459    --    Is_Synchronized_Interface       Flag199
460    --    Is_Task_Interface               Flag200
461
462    --    Has_Anon_Block_Suffix           Flag201
463    --    Itype_Printed                   Flag202
464    --    Has_Pragma_Pure                 Flag203
465    --    Is_Known_Null                   Flag204
466    --    Low_Bound_Tested                Flag205
467    --    Is_Visible_Formal               Flag206
468    --    Known_To_Have_Preelab_Init      Flag207
469    --    Must_Have_Preelab_Init          Flag208
470    --    Is_Return_Object                Flag209
471    --    Elaborate_Body_Desirable        Flag210
472
473    --    Has_Static_Discriminants        Flag211
474    --    Has_Pragma_Unreferenced_Objects Flag212
475    --    Requires_Overriding             Flag213
476    --    Has_RACW                        Flag214
477    --    Has_Up_Level_Access             Flag215
478    --    Universal_Aliasing              Flag216
479    --    Suppress_Value_Tracking_On_Call Flag217
480    --    Is_Primitive                    Flag218
481    --    Has_Initial_Value               Flag219
482    --    Has_Dispatch_Table              Flag220
483
484    --    Has_Pragma_Preelab_Init         Flag221
485    --    Used_As_Generic_Actual          Flag222
486    --    Is_Descendent_Of_Address        Flag223
487    --    Is_Raised                       Flag224
488    --    Is_Thunk                        Flag225
489    --    Is_Only_Out_Parameter           Flag226
490    --    Referenced_As_Out_Parameter     Flag227
491    --    Has_Thunks                      Flag228
492    --    Can_Use_Internal_Rep            Flag229
493    --    Has_Pragma_Inline_Always        Flag230
494
495    --    Renamed_In_Spec                 Flag231
496    --    Implemented_By_Entry            Flag232
497    --    Has_Pragma_Unmodified           Flag233
498    --    Is_Dispatch_Table_Entity        Flag234
499    --    Is_Trivial_Subprogram           Flag235
500    --    Warnings_Off_Used               Flag236
501    --    Warnings_Off_Used_Unmodified    Flag237
502    --    Warnings_Off_Used_Unreferenced  Flag238
503    --    OK_To_Reorder_Components        Flag239
504    --    Has_Postconditions              Flag240
505
506    --    Optimize_Alignment_Space        Flag241
507    --    Optimize_Alignment_Time         Flag242
508    --    Overlays_Constant               Flag243
509    --    Is_RACW_Stub_Type               Flag244
510    --    Is_Private_Primitive            Flag245
511    --    Is_Underlying_Record_View       Flag246
512    --    OK_To_Rename                    Flag247
513
514    -----------------------
515    -- Local subprograms --
516    -----------------------
517
518    function Rep_Clause (Id : E; Rep_Name : Name_Id) return N;
519    --  Returns the attribute definition clause for Id whose name is Rep_Name.
520    --  Returns Empty if no matching attribute definition clause found for Id.
521
522    ----------------
523    -- Rep_Clause --
524    ----------------
525
526    function Rep_Clause (Id : E; Rep_Name : Name_Id) return N is
527       Ritem : Node_Id;
528
529    begin
530       Ritem := First_Rep_Item (Id);
531       while Present (Ritem) loop
532          if Nkind (Ritem) = N_Attribute_Definition_Clause
533            and then Chars (Ritem) = Rep_Name
534          then
535             return Ritem;
536          else
537             Ritem := Next_Rep_Item (Ritem);
538          end if;
539       end loop;
540
541       return Empty;
542    end Rep_Clause;
543
544    --------------------------------
545    -- Attribute Access Functions --
546    --------------------------------
547
548    function Accept_Address (Id : E) return L is
549    begin
550       return Elist21 (Id);
551    end Accept_Address;
552
553    function Access_Disp_Table (Id : E) return L is
554    begin
555       pragma Assert (Is_Tagged_Type (Id));
556       return Elist16 (Implementation_Base_Type (Id));
557    end Access_Disp_Table;
558
559    function Actual_Subtype (Id : E) return E is
560    begin
561       pragma Assert
562          (Ekind_In (Id, E_Constant, E_Variable, E_Generic_In_Out_Parameter)
563            or else Is_Formal (Id));
564       return Node17 (Id);
565    end Actual_Subtype;
566
567    function Address_Taken (Id : E) return B is
568    begin
569       return Flag104 (Id);
570    end Address_Taken;
571
572    function Alias (Id : E) return E is
573    begin
574       pragma Assert
575         (Is_Overloadable (Id) or else Ekind (Id) = E_Subprogram_Type);
576       return Node18 (Id);
577    end Alias;
578
579    function Alignment (Id : E) return U is
580    begin
581       pragma Assert (Is_Type (Id)
582                        or else Is_Formal (Id)
583                        or else Ekind_In (Id, E_Loop_Parameter,
584                                              E_Constant,
585                                              E_Exception,
586                                              E_Variable));
587       return Uint14 (Id);
588    end Alignment;
589
590    function Associated_Final_Chain (Id : E) return E is
591    begin
592       pragma Assert (Is_Access_Type (Id));
593       return Node23 (Id);
594    end Associated_Final_Chain;
595
596    function Associated_Formal_Package (Id : E) return E is
597    begin
598       pragma Assert (Ekind (Id) = E_Package);
599       return Node12 (Id);
600    end Associated_Formal_Package;
601
602    function Associated_Node_For_Itype (Id : E) return N is
603    begin
604       return Node8 (Id);
605    end Associated_Node_For_Itype;
606
607    function Associated_Storage_Pool (Id : E) return E is
608    begin
609       pragma Assert (Is_Access_Type (Id));
610       return Node22 (Root_Type (Id));
611    end Associated_Storage_Pool;
612
613    function Barrier_Function (Id : E) return N is
614    begin
615       pragma Assert (Is_Entry (Id));
616       return Node12 (Id);
617    end Barrier_Function;
618
619    function Block_Node (Id : E) return N is
620    begin
621       pragma Assert (Ekind (Id) = E_Block);
622       return Node11 (Id);
623    end Block_Node;
624
625    function Body_Entity (Id : E) return E is
626    begin
627       pragma Assert (Ekind_In (Id, E_Package, E_Generic_Package));
628       return Node19 (Id);
629    end Body_Entity;
630
631    function Body_Needed_For_SAL (Id : E) return B is
632    begin
633       pragma Assert
634         (Ekind (Id) = E_Package
635            or else Is_Subprogram (Id)
636            or else Is_Generic_Unit (Id));
637       return Flag40 (Id);
638    end Body_Needed_For_SAL;
639
640    function C_Pass_By_Copy (Id : E) return B is
641    begin
642       pragma Assert (Is_Record_Type (Id));
643       return Flag125 (Implementation_Base_Type (Id));
644    end C_Pass_By_Copy;
645
646    function Can_Never_Be_Null (Id : E) return B is
647    begin
648       return Flag38 (Id);
649    end Can_Never_Be_Null;
650
651    function Checks_May_Be_Suppressed (Id : E) return B is
652    begin
653       return Flag31 (Id);
654    end Checks_May_Be_Suppressed;
655
656    function Class_Wide_Type (Id : E) return E is
657    begin
658       pragma Assert (Is_Type (Id));
659       return Node9 (Id);
660    end Class_Wide_Type;
661
662    function Cloned_Subtype (Id : E) return E is
663    begin
664       pragma Assert (Ekind_In (Id, E_Record_Subtype, E_Class_Wide_Subtype));
665       return Node16 (Id);
666    end Cloned_Subtype;
667
668    function Component_Bit_Offset (Id : E) return U is
669    begin
670       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
671       return Uint11 (Id);
672    end Component_Bit_Offset;
673
674    function Component_Clause (Id : E) return N is
675    begin
676       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
677       return Node13 (Id);
678    end Component_Clause;
679
680    function Component_Size (Id : E) return U is
681    begin
682       pragma Assert (Is_Array_Type (Id));
683       return Uint22 (Implementation_Base_Type (Id));
684    end Component_Size;
685
686    function Component_Type (Id : E) return E is
687    begin
688       pragma Assert (Is_Array_Type (Id) or else Is_String_Type (Id));
689       return Node20 (Implementation_Base_Type (Id));
690    end Component_Type;
691
692    function Corresponding_Concurrent_Type (Id : E) return E is
693    begin
694       pragma Assert (Ekind (Id) = E_Record_Type);
695       return Node18 (Id);
696    end Corresponding_Concurrent_Type;
697
698    function Corresponding_Discriminant (Id : E) return E is
699    begin
700       pragma Assert (Ekind (Id) = E_Discriminant);
701       return Node19 (Id);
702    end Corresponding_Discriminant;
703
704    function Corresponding_Equality (Id : E) return E is
705    begin
706       pragma Assert
707         (Ekind (Id) = E_Function
708           and then not Comes_From_Source (Id)
709           and then Chars (Id) = Name_Op_Ne);
710       return Node13 (Id);
711    end Corresponding_Equality;
712
713    function Corresponding_Record_Type (Id : E) return E is
714    begin
715       pragma Assert (Is_Concurrent_Type (Id));
716       return Node18 (Id);
717    end Corresponding_Record_Type;
718
719    function Corresponding_Remote_Type (Id : E) return E is
720    begin
721       return Node22 (Id);
722    end Corresponding_Remote_Type;
723
724    function Current_Use_Clause (Id : E) return E is
725    begin
726       pragma Assert (Ekind (Id) = E_Package or else Is_Type (Id));
727       return Node27 (Id);
728    end Current_Use_Clause;
729
730    function Current_Value (Id : E) return N is
731    begin
732       pragma Assert (Ekind (Id) in Object_Kind);
733       return Node9 (Id);
734    end Current_Value;
735
736    function CR_Discriminant (Id : E) return E is
737    begin
738       return Node23 (Id);
739    end CR_Discriminant;
740
741    function Debug_Info_Off (Id : E) return B is
742    begin
743       return Flag166 (Id);
744    end Debug_Info_Off;
745
746    function Debug_Renaming_Link (Id : E) return E is
747    begin
748       return Node25 (Id);
749    end Debug_Renaming_Link;
750
751    function Default_Expr_Function (Id : E) return E is
752    begin
753       pragma Assert (Is_Formal (Id));
754       return Node21 (Id);
755    end Default_Expr_Function;
756
757    function Default_Expressions_Processed (Id : E) return B is
758    begin
759       return Flag108 (Id);
760    end Default_Expressions_Processed;
761
762    function Default_Value (Id : E) return N is
763    begin
764       pragma Assert (Is_Formal (Id));
765       return Node20 (Id);
766    end Default_Value;
767
768    function Delay_Cleanups (Id : E) return B is
769    begin
770       return Flag114 (Id);
771    end Delay_Cleanups;
772
773    function Delay_Subprogram_Descriptors (Id : E) return B is
774    begin
775       return Flag50 (Id);
776    end Delay_Subprogram_Descriptors;
777
778    function Delta_Value (Id : E) return R is
779    begin
780       pragma Assert (Is_Fixed_Point_Type (Id));
781       return Ureal18 (Id);
782    end Delta_Value;
783
784    function Dependent_Instances (Id : E) return L is
785    begin
786       pragma Assert (Is_Generic_Instance (Id));
787       return Elist8 (Id);
788    end Dependent_Instances;
789
790    function Depends_On_Private (Id : E) return B is
791    begin
792       pragma Assert (Nkind (Id) in N_Entity);
793       return Flag14 (Id);
794    end Depends_On_Private;
795
796    function Digits_Value (Id : E) return U is
797    begin
798       pragma Assert
799         (Is_Floating_Point_Type (Id)
800           or else Is_Decimal_Fixed_Point_Type (Id));
801       return Uint17 (Id);
802    end Digits_Value;
803
804    function Directly_Designated_Type (Id : E) return E is
805    begin
806       pragma Assert (Is_Access_Type (Id));
807       return Node20 (Id);
808    end Directly_Designated_Type;
809
810    function Discard_Names (Id : E) return B is
811    begin
812       return Flag88 (Id);
813    end Discard_Names;
814
815    function Discriminal (Id : E) return E is
816    begin
817       pragma Assert (Ekind (Id) = E_Discriminant);
818       return Node17 (Id);
819    end Discriminal;
820
821    function Discriminal_Link (Id : E) return N is
822    begin
823       return Node10 (Id);
824    end Discriminal_Link;
825
826    function Discriminant_Checking_Func (Id : E) return E is
827    begin
828       pragma Assert (Ekind (Id) = E_Component);
829       return Node20 (Id);
830    end Discriminant_Checking_Func;
831
832    function Discriminant_Constraint (Id : E) return L is
833    begin
834       pragma Assert (Is_Composite_Type (Id) and then Has_Discriminants (Id));
835       return Elist21 (Id);
836    end Discriminant_Constraint;
837
838    function Discriminant_Default_Value (Id : E) return N is
839    begin
840       pragma Assert (Ekind (Id) = E_Discriminant);
841       return Node20 (Id);
842    end Discriminant_Default_Value;
843
844    function Discriminant_Number (Id : E) return U is
845    begin
846       pragma Assert (Ekind (Id) = E_Discriminant);
847       return Uint15 (Id);
848    end Discriminant_Number;
849
850    function Dispatch_Table_Wrappers (Id : E) return L is
851    begin
852       pragma Assert (Is_Tagged_Type (Id));
853       return Elist26 (Implementation_Base_Type (Id));
854    end Dispatch_Table_Wrappers;
855
856    function DT_Entry_Count (Id : E) return U is
857    begin
858       pragma Assert (Ekind (Id) = E_Component and then Is_Tag (Id));
859       return Uint15 (Id);
860    end DT_Entry_Count;
861
862    function DT_Offset_To_Top_Func (Id : E) return E is
863    begin
864       pragma Assert (Ekind (Id) = E_Component and then Is_Tag (Id));
865       return Node25 (Id);
866    end DT_Offset_To_Top_Func;
867
868    function DT_Position (Id : E) return U is
869    begin
870       pragma Assert (Ekind_In (Id, E_Function, E_Procedure)
871                        and then Present (DTC_Entity (Id)));
872       return Uint15 (Id);
873    end DT_Position;
874
875    function DTC_Entity (Id : E) return E is
876    begin
877       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
878       return Node16 (Id);
879    end DTC_Entity;
880
881    function Elaborate_Body_Desirable (Id : E) return B is
882    begin
883       pragma Assert (Ekind (Id) = E_Package);
884       return Flag210 (Id);
885    end Elaborate_Body_Desirable;
886
887    function Elaboration_Entity (Id : E) return E is
888    begin
889       pragma Assert
890         (Is_Subprogram (Id)
891            or else
892          Ekind (Id) = E_Package
893            or else
894          Is_Generic_Unit (Id));
895       return Node13 (Id);
896    end Elaboration_Entity;
897
898    function Elaboration_Entity_Required (Id : E) return B is
899    begin
900       pragma Assert
901         (Is_Subprogram (Id)
902            or else
903          Ekind (Id) = E_Package
904            or else
905          Is_Generic_Unit (Id));
906       return Flag174 (Id);
907    end Elaboration_Entity_Required;
908
909    function Enclosing_Scope (Id : E) return E is
910    begin
911       return Node18 (Id);
912    end Enclosing_Scope;
913
914    function Entry_Accepted (Id : E) return B is
915    begin
916       pragma Assert (Is_Entry (Id));
917       return Flag152 (Id);
918    end Entry_Accepted;
919
920    function Entry_Bodies_Array (Id : E) return E is
921    begin
922       return Node15 (Id);
923    end Entry_Bodies_Array;
924
925    function Entry_Cancel_Parameter (Id : E) return E is
926    begin
927       return Node23 (Id);
928    end Entry_Cancel_Parameter;
929
930    function Entry_Component (Id : E) return E is
931    begin
932       return Node11 (Id);
933    end Entry_Component;
934
935    function Entry_Formal (Id : E) return E is
936    begin
937       return Node16 (Id);
938    end Entry_Formal;
939
940    function Entry_Index_Constant (Id : E) return N is
941    begin
942       pragma Assert (Ekind (Id) = E_Entry_Index_Parameter);
943       return Node18 (Id);
944    end Entry_Index_Constant;
945
946    function Entry_Parameters_Type (Id : E) return E is
947    begin
948       return Node15 (Id);
949    end Entry_Parameters_Type;
950
951    function Enum_Pos_To_Rep (Id : E) return E is
952    begin
953       pragma Assert (Ekind (Id) = E_Enumeration_Type);
954       return Node23 (Id);
955    end Enum_Pos_To_Rep;
956
957    function Enumeration_Pos (Id : E) return Uint is
958    begin
959       pragma Assert (Ekind (Id) = E_Enumeration_Literal);
960       return Uint11 (Id);
961    end Enumeration_Pos;
962
963    function Enumeration_Rep (Id : E) return U is
964    begin
965       pragma Assert (Ekind (Id) = E_Enumeration_Literal);
966       return Uint12 (Id);
967    end Enumeration_Rep;
968
969    function Enumeration_Rep_Expr (Id : E) return N is
970    begin
971       pragma Assert (Ekind (Id) = E_Enumeration_Literal);
972       return Node22 (Id);
973    end Enumeration_Rep_Expr;
974
975    function Equivalent_Type (Id : E) return E is
976    begin
977       pragma Assert
978         (Ekind_In (Id, E_Class_Wide_Subtype,
979                        E_Access_Protected_Subprogram_Type,
980                        E_Anonymous_Access_Protected_Subprogram_Type,
981                        E_Access_Subprogram_Type,
982                        E_Exception_Type));
983       return Node18 (Id);
984    end Equivalent_Type;
985
986    function Esize (Id : E) return Uint is
987    begin
988       return Uint12 (Id);
989    end Esize;
990
991    function Exception_Code (Id : E) return Uint is
992    begin
993       pragma Assert (Ekind (Id) = E_Exception);
994       return Uint22 (Id);
995    end Exception_Code;
996
997    function Extra_Accessibility (Id : E) return E is
998    begin
999       pragma Assert (Is_Formal (Id) or else Ekind (Id) = E_Variable);
1000       return Node13 (Id);
1001    end Extra_Accessibility;
1002
1003    function Extra_Constrained (Id : E) return E is
1004    begin
1005       pragma Assert (Is_Formal (Id) or else Ekind (Id) = E_Variable);
1006       return Node23 (Id);
1007    end Extra_Constrained;
1008
1009    function Extra_Formal (Id : E) return E is
1010    begin
1011       return Node15 (Id);
1012    end Extra_Formal;
1013
1014    function Extra_Formals (Id : E) return E is
1015    begin
1016       pragma Assert
1017         (Is_Overloadable (Id)
1018           or else Ekind_In (Id, E_Entry_Family,
1019                                 E_Subprogram_Body,
1020                                 E_Subprogram_Type));
1021       return Node28 (Id);
1022    end Extra_Formals;
1023
1024    function Can_Use_Internal_Rep (Id : E) return B is
1025    begin
1026       pragma Assert (Is_Access_Subprogram_Type (Base_Type (Id)));
1027       return Flag229 (Base_Type (Id));
1028    end Can_Use_Internal_Rep;
1029
1030    function Finalization_Chain_Entity (Id : E) return E is
1031    begin
1032       return Node19 (Id);
1033    end Finalization_Chain_Entity;
1034
1035    function Finalize_Storage_Only (Id : E) return B is
1036    begin
1037       pragma Assert (Is_Type (Id));
1038       return Flag158 (Base_Type (Id));
1039    end Finalize_Storage_Only;
1040
1041    function First_Entity (Id : E) return E is
1042    begin
1043       return Node17 (Id);
1044    end First_Entity;
1045
1046    function First_Exit_Statement (Id : E) return N is
1047    begin
1048       pragma Assert (Ekind (Id) = E_Loop);
1049       return Node8 (Id);
1050    end First_Exit_Statement;
1051
1052    function First_Index (Id : E) return N is
1053    begin
1054       pragma Assert (Is_Array_Type (Id) or else Is_String_Type (Id));
1055       return Node17 (Id);
1056    end First_Index;
1057
1058    function First_Literal (Id : E) return E is
1059    begin
1060       pragma Assert (Is_Enumeration_Type (Id));
1061       return Node17 (Id);
1062    end First_Literal;
1063
1064    function First_Optional_Parameter (Id : E) return E is
1065    begin
1066       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
1067       return Node14 (Id);
1068    end First_Optional_Parameter;
1069
1070    function First_Private_Entity (Id : E) return E is
1071    begin
1072       pragma Assert (Ekind_In (Id, E_Package, E_Generic_Package)
1073                        or else Ekind (Id) in Concurrent_Kind);
1074       return Node16 (Id);
1075    end First_Private_Entity;
1076
1077    function First_Rep_Item (Id : E) return E is
1078    begin
1079       return Node6 (Id);
1080    end First_Rep_Item;
1081
1082    function Freeze_Node (Id : E) return N is
1083    begin
1084       return Node7 (Id);
1085    end Freeze_Node;
1086
1087    function From_With_Type (Id : E) return B is
1088    begin
1089       return Flag159 (Id);
1090    end From_With_Type;
1091
1092    function Full_View (Id : E) return E is
1093    begin
1094       pragma Assert (Is_Type (Id) or else Ekind (Id) = E_Constant);
1095       return Node11 (Id);
1096    end Full_View;
1097
1098    function Generic_Homonym (Id : E) return E is
1099    begin
1100       pragma Assert (Ekind (Id) = E_Generic_Package);
1101       return Node11 (Id);
1102    end Generic_Homonym;
1103
1104    function Generic_Renamings (Id : E) return L is
1105    begin
1106       return Elist23 (Id);
1107    end Generic_Renamings;
1108
1109    function Handler_Records (Id : E) return S is
1110    begin
1111       return List10 (Id);
1112    end Handler_Records;
1113
1114    function Has_Aliased_Components (Id : E) return B is
1115    begin
1116       return Flag135 (Implementation_Base_Type (Id));
1117    end Has_Aliased_Components;
1118
1119    function Has_Alignment_Clause (Id : E) return B is
1120    begin
1121       return Flag46 (Id);
1122    end Has_Alignment_Clause;
1123
1124    function Has_All_Calls_Remote (Id : E) return B is
1125    begin
1126       return Flag79 (Id);
1127    end Has_All_Calls_Remote;
1128
1129    function Has_Anon_Block_Suffix (Id : E) return B is
1130    begin
1131       return Flag201 (Id);
1132    end Has_Anon_Block_Suffix;
1133
1134    function Has_Atomic_Components (Id : E) return B is
1135    begin
1136       return Flag86 (Implementation_Base_Type (Id));
1137    end Has_Atomic_Components;
1138
1139    function Has_Biased_Representation (Id : E) return B is
1140    begin
1141       return Flag139 (Id);
1142    end Has_Biased_Representation;
1143
1144    function Has_Completion (Id : E) return B is
1145    begin
1146       return Flag26 (Id);
1147    end Has_Completion;
1148
1149    function Has_Completion_In_Body (Id : E) return B is
1150    begin
1151       pragma Assert (Is_Type (Id));
1152       return Flag71 (Id);
1153    end Has_Completion_In_Body;
1154
1155    function Has_Complex_Representation (Id : E) return B is
1156    begin
1157       pragma Assert (Is_Type (Id));
1158       return Flag140 (Implementation_Base_Type (Id));
1159    end Has_Complex_Representation;
1160
1161    function Has_Component_Size_Clause (Id : E) return B is
1162    begin
1163       pragma Assert (Is_Array_Type (Id));
1164       return Flag68 (Implementation_Base_Type (Id));
1165    end Has_Component_Size_Clause;
1166
1167    function Has_Constrained_Partial_View (Id : E) return B is
1168    begin
1169       pragma Assert (Is_Type (Id));
1170       return Flag187 (Id);
1171    end Has_Constrained_Partial_View;
1172
1173    function Has_Controlled_Component (Id : E) return B is
1174    begin
1175       return Flag43 (Base_Type (Id));
1176    end Has_Controlled_Component;
1177
1178    function Has_Contiguous_Rep (Id : E) return B is
1179    begin
1180       return Flag181 (Id);
1181    end Has_Contiguous_Rep;
1182
1183    function Has_Controlling_Result (Id : E) return B is
1184    begin
1185       return Flag98 (Id);
1186    end Has_Controlling_Result;
1187
1188    function Has_Convention_Pragma (Id : E) return B is
1189    begin
1190       return Flag119 (Id);
1191    end Has_Convention_Pragma;
1192
1193    function Has_Delayed_Freeze (Id : E) return B is
1194    begin
1195       pragma Assert (Nkind (Id) in N_Entity);
1196       return Flag18 (Id);
1197    end Has_Delayed_Freeze;
1198
1199    function Has_Discriminants (Id : E) return B is
1200    begin
1201       pragma Assert (Nkind (Id) in N_Entity);
1202       return Flag5 (Id);
1203    end Has_Discriminants;
1204
1205    function Has_Dispatch_Table (Id : E) return B is
1206    begin
1207       pragma Assert (Is_Tagged_Type (Id));
1208       return Flag220 (Id);
1209    end Has_Dispatch_Table;
1210
1211    function Has_Enumeration_Rep_Clause (Id : E) return B is
1212    begin
1213       pragma Assert (Is_Enumeration_Type (Id));
1214       return Flag66 (Id);
1215    end Has_Enumeration_Rep_Clause;
1216
1217    function Has_Exit (Id : E) return B is
1218    begin
1219       return Flag47 (Id);
1220    end Has_Exit;
1221
1222    function Has_External_Tag_Rep_Clause (Id : E) return B is
1223    begin
1224       pragma Assert (Is_Tagged_Type (Id));
1225       return Flag110 (Id);
1226    end Has_External_Tag_Rep_Clause;
1227
1228    function Has_Forward_Instantiation (Id : E) return B is
1229    begin
1230       return Flag175 (Id);
1231    end Has_Forward_Instantiation;
1232
1233    function Has_Fully_Qualified_Name (Id : E) return B is
1234    begin
1235       return Flag173 (Id);
1236    end Has_Fully_Qualified_Name;
1237
1238    function Has_Gigi_Rep_Item (Id : E) return B is
1239    begin
1240       return Flag82 (Id);
1241    end Has_Gigi_Rep_Item;
1242
1243    function Has_Homonym (Id : E) return B is
1244    begin
1245       return Flag56 (Id);
1246    end Has_Homonym;
1247
1248    function Has_Initial_Value (Id : E) return B is
1249    begin
1250       pragma Assert
1251         (Ekind (Id) = E_Variable or else Is_Formal (Id));
1252       return Flag219 (Id);
1253    end Has_Initial_Value;
1254
1255    function Has_Machine_Radix_Clause (Id : E) return B is
1256    begin
1257       pragma Assert (Is_Decimal_Fixed_Point_Type (Id));
1258       return Flag83 (Id);
1259    end Has_Machine_Radix_Clause;
1260
1261    function Has_Master_Entity (Id : E) return B is
1262    begin
1263       return Flag21 (Id);
1264    end Has_Master_Entity;
1265
1266    function Has_Missing_Return (Id : E) return B is
1267    begin
1268       pragma Assert (Ekind_In (Id, E_Function, E_Generic_Function));
1269       return Flag142 (Id);
1270    end Has_Missing_Return;
1271
1272    function Has_Nested_Block_With_Handler (Id : E) return B is
1273    begin
1274       return Flag101 (Id);
1275    end Has_Nested_Block_With_Handler;
1276
1277    function Has_Non_Standard_Rep (Id : E) return B is
1278    begin
1279       return Flag75 (Implementation_Base_Type (Id));
1280    end Has_Non_Standard_Rep;
1281
1282    function Has_Object_Size_Clause (Id : E) return B is
1283    begin
1284       pragma Assert (Is_Type (Id));
1285       return Flag172 (Id);
1286    end Has_Object_Size_Clause;
1287
1288    function Has_Per_Object_Constraint (Id : E) return B is
1289    begin
1290       return Flag154 (Id);
1291    end Has_Per_Object_Constraint;
1292
1293    function Has_Persistent_BSS (Id : E) return B is
1294    begin
1295       return Flag188 (Id);
1296    end Has_Persistent_BSS;
1297
1298    function Has_Postconditions (Id : E) return B is
1299    begin
1300       pragma Assert (Is_Subprogram (Id));
1301       return Flag240 (Id);
1302    end Has_Postconditions;
1303
1304    function Has_Pragma_Controlled (Id : E) return B is
1305    begin
1306       pragma Assert (Is_Access_Type (Id));
1307       return Flag27 (Implementation_Base_Type (Id));
1308    end Has_Pragma_Controlled;
1309
1310    function Has_Pragma_Elaborate_Body (Id : E) return B is
1311    begin
1312       return Flag150 (Id);
1313    end Has_Pragma_Elaborate_Body;
1314
1315    function Has_Pragma_Inline (Id : E) return B is
1316    begin
1317       return Flag157 (Id);
1318    end Has_Pragma_Inline;
1319
1320    function Has_Pragma_Inline_Always (Id : E) return B is
1321    begin
1322       return Flag230 (Id);
1323    end Has_Pragma_Inline_Always;
1324
1325    function Has_Pragma_Pack (Id : E) return B is
1326    begin
1327       pragma Assert (Is_Record_Type (Id) or else Is_Array_Type (Id));
1328       return Flag121 (Implementation_Base_Type (Id));
1329    end Has_Pragma_Pack;
1330
1331    function Has_Pragma_Preelab_Init (Id : E) return B is
1332    begin
1333       return Flag221 (Id);
1334    end Has_Pragma_Preelab_Init;
1335
1336    function Has_Pragma_Pure (Id : E) return B is
1337    begin
1338       return Flag203 (Id);
1339    end Has_Pragma_Pure;
1340
1341    function Has_Pragma_Pure_Function (Id : E) return B is
1342    begin
1343       return Flag179 (Id);
1344    end Has_Pragma_Pure_Function;
1345
1346    function Has_Pragma_Thread_Local_Storage (Id : E) return B is
1347    begin
1348       return Flag169 (Id);
1349    end Has_Pragma_Thread_Local_Storage;
1350
1351    function Has_Pragma_Unmodified (Id : E) return B is
1352    begin
1353       return Flag233 (Id);
1354    end Has_Pragma_Unmodified;
1355
1356    function Has_Pragma_Unreferenced (Id : E) return B is
1357    begin
1358       return Flag180 (Id);
1359    end Has_Pragma_Unreferenced;
1360
1361    function Has_Pragma_Unreferenced_Objects (Id : E) return B is
1362    begin
1363       pragma Assert (Is_Type (Id));
1364       return Flag212 (Id);
1365    end Has_Pragma_Unreferenced_Objects;
1366
1367    function Has_Primitive_Operations (Id : E) return B is
1368    begin
1369       pragma Assert (Is_Type (Id));
1370       return Flag120 (Base_Type (Id));
1371    end Has_Primitive_Operations;
1372
1373    function Has_Private_Declaration (Id : E) return B is
1374    begin
1375       return Flag155 (Id);
1376    end Has_Private_Declaration;
1377
1378    function Has_Qualified_Name (Id : E) return B is
1379    begin
1380       return Flag161 (Id);
1381    end Has_Qualified_Name;
1382
1383    function Has_RACW (Id : E) return B is
1384    begin
1385       pragma Assert (Ekind (Id) = E_Package);
1386       return Flag214 (Id);
1387    end Has_RACW;
1388
1389    function Has_Record_Rep_Clause (Id : E) return B is
1390    begin
1391       pragma Assert (Is_Record_Type (Id));
1392       return Flag65 (Implementation_Base_Type (Id));
1393    end Has_Record_Rep_Clause;
1394
1395    function Has_Recursive_Call (Id : E) return B is
1396    begin
1397       pragma Assert (Is_Subprogram (Id));
1398       return Flag143 (Id);
1399    end Has_Recursive_Call;
1400
1401    function Has_Size_Clause (Id : E) return B is
1402    begin
1403       return Flag29 (Id);
1404    end Has_Size_Clause;
1405
1406    function Has_Small_Clause (Id : E) return B is
1407    begin
1408       return Flag67 (Id);
1409    end Has_Small_Clause;
1410
1411    function Has_Specified_Layout (Id : E) return B is
1412    begin
1413       pragma Assert (Is_Type (Id));
1414       return Flag100 (Implementation_Base_Type (Id));
1415    end Has_Specified_Layout;
1416
1417    function Has_Specified_Stream_Input (Id : E) return B is
1418    begin
1419       pragma Assert (Is_Type (Id));
1420       return Flag190 (Id);
1421    end Has_Specified_Stream_Input;
1422
1423    function Has_Specified_Stream_Output (Id : E) return B is
1424    begin
1425       pragma Assert (Is_Type (Id));
1426       return Flag191 (Id);
1427    end Has_Specified_Stream_Output;
1428
1429    function Has_Specified_Stream_Read (Id : E) return B is
1430    begin
1431       pragma Assert (Is_Type (Id));
1432       return Flag192 (Id);
1433    end Has_Specified_Stream_Read;
1434
1435    function Has_Specified_Stream_Write (Id : E) return B is
1436    begin
1437       pragma Assert (Is_Type (Id));
1438       return Flag193 (Id);
1439    end Has_Specified_Stream_Write;
1440
1441    function Has_Static_Discriminants (Id : E) return B is
1442    begin
1443       pragma Assert (Is_Type (Id));
1444       return Flag211 (Id);
1445    end Has_Static_Discriminants;
1446
1447    function Has_Storage_Size_Clause (Id : E) return B is
1448    begin
1449       pragma Assert (Is_Access_Type (Id) or else Is_Task_Type (Id));
1450       return Flag23 (Implementation_Base_Type (Id));
1451    end Has_Storage_Size_Clause;
1452
1453    function Has_Stream_Size_Clause (Id : E) return B is
1454    begin
1455       return Flag184 (Id);
1456    end Has_Stream_Size_Clause;
1457
1458    function Has_Subprogram_Descriptor (Id : E) return B is
1459    begin
1460       return Flag93 (Id);
1461    end Has_Subprogram_Descriptor;
1462
1463    function Has_Task (Id : E) return B is
1464    begin
1465       return Flag30 (Base_Type (Id));
1466    end Has_Task;
1467
1468    function Has_Thunks (Id : E) return B is
1469    begin
1470       pragma Assert (Ekind (Id) = E_Constant);
1471       return Flag228 (Id);
1472    end Has_Thunks;
1473
1474    function Has_Unchecked_Union (Id : E) return B is
1475    begin
1476       return Flag123 (Base_Type (Id));
1477    end Has_Unchecked_Union;
1478
1479    function Has_Unknown_Discriminants (Id : E) return B is
1480    begin
1481       pragma Assert (Is_Type (Id));
1482       return Flag72 (Id);
1483    end Has_Unknown_Discriminants;
1484
1485    function Has_Up_Level_Access (Id : E) return B is
1486    begin
1487       pragma Assert
1488         (Ekind_In (Id, E_Variable, E_Constant, E_Loop_Parameter));
1489       return Flag215 (Id);
1490    end Has_Up_Level_Access;
1491
1492    function Has_Volatile_Components (Id : E) return B is
1493    begin
1494       return Flag87 (Implementation_Base_Type (Id));
1495    end Has_Volatile_Components;
1496
1497    function Has_Xref_Entry (Id : E) return B is
1498    begin
1499       return Flag182 (Implementation_Base_Type (Id));
1500    end Has_Xref_Entry;
1501
1502    function Hiding_Loop_Variable (Id : E) return E is
1503    begin
1504       pragma Assert (Ekind (Id) = E_Variable);
1505       return Node8 (Id);
1506    end Hiding_Loop_Variable;
1507
1508    function Homonym (Id : E) return E is
1509    begin
1510       return Node4 (Id);
1511    end Homonym;
1512
1513    function Implemented_By_Entry (Id : E) return B is
1514    begin
1515       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
1516       return Flag232 (Id);
1517    end Implemented_By_Entry;
1518
1519    function Interfaces (Id : E) return L is
1520    begin
1521       pragma Assert (Is_Record_Type (Id));
1522       return Elist25 (Id);
1523    end Interfaces;
1524
1525    function Interface_Alias (Id : E) return E is
1526    begin
1527       pragma Assert (Is_Subprogram (Id));
1528       return Node25 (Id);
1529    end Interface_Alias;
1530
1531    function In_Package_Body (Id : E) return B is
1532    begin
1533       return Flag48 (Id);
1534    end In_Package_Body;
1535
1536    function In_Private_Part (Id : E) return B is
1537    begin
1538       return Flag45 (Id);
1539    end In_Private_Part;
1540
1541    function In_Use (Id : E) return B is
1542    begin
1543       pragma Assert (Nkind (Id) in N_Entity);
1544       return Flag8 (Id);
1545    end In_Use;
1546
1547    function Inner_Instances (Id : E) return L is
1548    begin
1549       return Elist23 (Id);
1550    end Inner_Instances;
1551
1552    function Interface_Name (Id : E) return N is
1553    begin
1554       return Node21 (Id);
1555    end Interface_Name;
1556
1557    function Is_Abstract_Subprogram (Id : E) return B is
1558    begin
1559       pragma Assert (Is_Overloadable (Id));
1560       return Flag19 (Id);
1561    end Is_Abstract_Subprogram;
1562
1563    function Is_Abstract_Type (Id : E) return B is
1564    begin
1565       pragma Assert (Is_Type (Id));
1566       return Flag146 (Id);
1567    end Is_Abstract_Type;
1568
1569    function Is_Local_Anonymous_Access (Id : E) return B is
1570    begin
1571       pragma Assert (Is_Access_Type (Id));
1572       return Flag194 (Id);
1573    end Is_Local_Anonymous_Access;
1574
1575    function Is_Access_Constant (Id : E) return B is
1576    begin
1577       pragma Assert (Is_Access_Type (Id));
1578       return Flag69 (Id);
1579    end Is_Access_Constant;
1580
1581    function Is_Ada_2005_Only (Id : E) return B is
1582    begin
1583       return Flag185 (Id);
1584    end Is_Ada_2005_Only;
1585
1586    function Is_Aliased (Id : E) return B is
1587    begin
1588       pragma Assert (Nkind (Id) in N_Entity);
1589       return Flag15 (Id);
1590    end Is_Aliased;
1591
1592    function Is_AST_Entry (Id : E) return B is
1593    begin
1594       pragma Assert (Is_Entry (Id));
1595       return Flag132 (Id);
1596    end Is_AST_Entry;
1597
1598    function Is_Asynchronous (Id : E) return B is
1599    begin
1600       pragma Assert (Ekind (Id) = E_Procedure or else Is_Type (Id));
1601       return Flag81 (Id);
1602    end Is_Asynchronous;
1603
1604    function Is_Atomic (Id : E) return B is
1605    begin
1606       return Flag85 (Id);
1607    end Is_Atomic;
1608
1609    function Is_Bit_Packed_Array (Id : E) return B is
1610    begin
1611       return Flag122 (Implementation_Base_Type (Id));
1612    end Is_Bit_Packed_Array;
1613
1614    function Is_Called (Id : E) return B is
1615    begin
1616       pragma Assert (Ekind_In (Id, E_Procedure, E_Function));
1617       return Flag102 (Id);
1618    end Is_Called;
1619
1620    function Is_Character_Type (Id : E) return B is
1621    begin
1622       return Flag63 (Id);
1623    end Is_Character_Type;
1624
1625    function Is_Child_Unit (Id : E) return B is
1626    begin
1627       return Flag73 (Id);
1628    end Is_Child_Unit;
1629
1630    function Is_Class_Wide_Equivalent_Type (Id : E) return B is
1631    begin
1632       return Flag35 (Id);
1633    end Is_Class_Wide_Equivalent_Type;
1634
1635    function Is_Compilation_Unit (Id : E) return B is
1636    begin
1637       return Flag149 (Id);
1638    end Is_Compilation_Unit;
1639
1640    function Is_Completely_Hidden (Id : E) return B is
1641    begin
1642       pragma Assert (Ekind (Id) = E_Discriminant);
1643       return Flag103 (Id);
1644    end Is_Completely_Hidden;
1645
1646    function Is_Constr_Subt_For_U_Nominal (Id : E) return B is
1647    begin
1648       return Flag80 (Id);
1649    end Is_Constr_Subt_For_U_Nominal;
1650
1651    function Is_Constr_Subt_For_UN_Aliased (Id : E) return B is
1652    begin
1653       return Flag141 (Id);
1654    end Is_Constr_Subt_For_UN_Aliased;
1655
1656    function Is_Constrained (Id : E) return B is
1657    begin
1658       pragma Assert (Nkind (Id) in N_Entity);
1659       return Flag12 (Id);
1660    end Is_Constrained;
1661
1662    function Is_Constructor (Id : E) return B is
1663    begin
1664       return Flag76 (Id);
1665    end Is_Constructor;
1666
1667    function Is_Controlled (Id : E) return B is
1668    begin
1669       return Flag42 (Base_Type (Id));
1670    end Is_Controlled;
1671
1672    function Is_Controlling_Formal (Id : E) return B is
1673    begin
1674       pragma Assert (Is_Formal (Id));
1675       return Flag97 (Id);
1676    end Is_Controlling_Formal;
1677
1678    function Is_CPP_Class (Id : E) return B is
1679    begin
1680       return Flag74 (Id);
1681    end Is_CPP_Class;
1682
1683    function Is_Descendent_Of_Address (Id : E) return B is
1684    begin
1685       pragma Assert (Is_Type (Id));
1686       return Flag223 (Id);
1687    end Is_Descendent_Of_Address;
1688
1689    function Is_Discrim_SO_Function (Id : E) return B is
1690    begin
1691       return Flag176 (Id);
1692    end Is_Discrim_SO_Function;
1693
1694    function Is_Dispatch_Table_Entity (Id : E) return B is
1695    begin
1696       return Flag234 (Id);
1697    end Is_Dispatch_Table_Entity;
1698
1699    function Is_Dispatching_Operation (Id : E) return B is
1700    begin
1701       pragma Assert (Nkind (Id) in N_Entity);
1702       return Flag6 (Id);
1703    end Is_Dispatching_Operation;
1704
1705    function Is_Eliminated (Id : E) return B is
1706    begin
1707       return Flag124 (Id);
1708    end Is_Eliminated;
1709
1710    function Is_Entry_Formal (Id : E) return B is
1711    begin
1712       return Flag52 (Id);
1713    end Is_Entry_Formal;
1714
1715    function Is_Exported (Id : E) return B is
1716    begin
1717       return Flag99 (Id);
1718    end Is_Exported;
1719
1720    function Is_First_Subtype (Id : E) return B is
1721    begin
1722       return Flag70 (Id);
1723    end Is_First_Subtype;
1724
1725    function Is_For_Access_Subtype (Id : E) return B is
1726    begin
1727       pragma Assert (Ekind_In (Id, E_Record_Subtype, E_Private_Subtype));
1728       return Flag118 (Id);
1729    end Is_For_Access_Subtype;
1730
1731    function Is_Formal_Subprogram (Id : E) return B is
1732    begin
1733       return Flag111 (Id);
1734    end Is_Formal_Subprogram;
1735
1736    function Is_Frozen (Id : E) return B is
1737    begin
1738       return Flag4 (Id);
1739    end Is_Frozen;
1740
1741    function Is_Generic_Actual_Type (Id : E) return B is
1742    begin
1743       pragma Assert (Is_Type (Id));
1744       return Flag94 (Id);
1745    end Is_Generic_Actual_Type;
1746
1747    function Is_Generic_Instance (Id : E) return B is
1748    begin
1749       return Flag130 (Id);
1750    end Is_Generic_Instance;
1751
1752    function Is_Generic_Type (Id : E) return B is
1753    begin
1754       pragma Assert (Nkind (Id) in N_Entity);
1755       return Flag13 (Id);
1756    end Is_Generic_Type;
1757
1758    function Is_Hidden (Id : E) return B is
1759    begin
1760       return Flag57 (Id);
1761    end Is_Hidden;
1762
1763    function Is_Hidden_Open_Scope (Id : E) return B is
1764    begin
1765       return Flag171 (Id);
1766    end Is_Hidden_Open_Scope;
1767
1768    function Is_Immediately_Visible (Id : E) return B is
1769    begin
1770       pragma Assert (Nkind (Id) in N_Entity);
1771       return Flag7 (Id);
1772    end Is_Immediately_Visible;
1773
1774    function Is_Imported (Id : E) return B is
1775    begin
1776       return Flag24 (Id);
1777    end Is_Imported;
1778
1779    function Is_Inlined (Id : E) return B is
1780    begin
1781       return Flag11 (Id);
1782    end Is_Inlined;
1783
1784    function Is_Interface (Id : E) return B is
1785    begin
1786       return Flag186 (Id);
1787    end Is_Interface;
1788
1789    function Is_Instantiated (Id : E) return B is
1790    begin
1791       return Flag126 (Id);
1792    end Is_Instantiated;
1793
1794    function Is_Internal (Id : E) return B is
1795    begin
1796       pragma Assert (Nkind (Id) in N_Entity);
1797       return Flag17 (Id);
1798    end Is_Internal;
1799
1800    function Is_Interrupt_Handler (Id : E) return B is
1801    begin
1802       pragma Assert (Nkind (Id) in N_Entity);
1803       return Flag89 (Id);
1804    end Is_Interrupt_Handler;
1805
1806    function Is_Intrinsic_Subprogram (Id : E) return B is
1807    begin
1808       return Flag64 (Id);
1809    end Is_Intrinsic_Subprogram;
1810
1811    function Is_Itype (Id : E) return B is
1812    begin
1813       return Flag91 (Id);
1814    end Is_Itype;
1815
1816    function Is_Known_Non_Null (Id : E) return B is
1817    begin
1818       return Flag37 (Id);
1819    end Is_Known_Non_Null;
1820
1821    function Is_Known_Null (Id : E) return B is
1822    begin
1823       return Flag204 (Id);
1824    end Is_Known_Null;
1825
1826    function Is_Known_Valid (Id : E) return B is
1827    begin
1828       return Flag170 (Id);
1829    end Is_Known_Valid;
1830
1831    function Is_Limited_Composite (Id : E) return B is
1832    begin
1833       return Flag106 (Id);
1834    end Is_Limited_Composite;
1835
1836    function Is_Limited_Interface (Id : E) return B is
1837    begin
1838       return Flag197 (Id);
1839    end Is_Limited_Interface;
1840
1841    function Is_Limited_Record (Id : E) return B is
1842    begin
1843       return Flag25 (Id);
1844    end Is_Limited_Record;
1845
1846    function Is_Machine_Code_Subprogram (Id : E) return B is
1847    begin
1848       pragma Assert (Is_Subprogram (Id));
1849       return Flag137 (Id);
1850    end Is_Machine_Code_Subprogram;
1851
1852    function Is_Non_Static_Subtype (Id : E) return B is
1853    begin
1854       pragma Assert (Is_Type (Id));
1855       return Flag109 (Id);
1856    end Is_Non_Static_Subtype;
1857
1858    function Is_Null_Init_Proc (Id : E) return B is
1859    begin
1860       pragma Assert (Ekind (Id) = E_Procedure);
1861       return Flag178 (Id);
1862    end Is_Null_Init_Proc;
1863
1864    function Is_Obsolescent (Id : E) return B is
1865    begin
1866       return Flag153 (Id);
1867    end Is_Obsolescent;
1868
1869    function Is_Only_Out_Parameter (Id : E) return B is
1870    begin
1871       pragma Assert (Is_Formal (Id));
1872       return Flag226 (Id);
1873    end Is_Only_Out_Parameter;
1874
1875    function Is_Optional_Parameter (Id : E) return B is
1876    begin
1877       pragma Assert (Is_Formal (Id));
1878       return Flag134 (Id);
1879    end Is_Optional_Parameter;
1880
1881    function Is_Overriding_Operation (Id : E) return B is
1882    begin
1883       pragma Assert (Is_Subprogram (Id));
1884       return Flag39 (Id);
1885    end Is_Overriding_Operation;
1886
1887    function Is_Package_Body_Entity (Id : E) return B is
1888    begin
1889       return Flag160 (Id);
1890    end Is_Package_Body_Entity;
1891
1892    function Is_Packed (Id : E) return B is
1893    begin
1894       return Flag51 (Implementation_Base_Type (Id));
1895    end Is_Packed;
1896
1897    function Is_Packed_Array_Type (Id : E) return B is
1898    begin
1899       return Flag138 (Id);
1900    end Is_Packed_Array_Type;
1901
1902    function Is_Potentially_Use_Visible (Id : E) return B is
1903    begin
1904       pragma Assert (Nkind (Id) in N_Entity);
1905       return Flag9 (Id);
1906    end Is_Potentially_Use_Visible;
1907
1908    function Is_Preelaborated (Id : E) return B is
1909    begin
1910       return Flag59 (Id);
1911    end Is_Preelaborated;
1912
1913    function Is_Primitive (Id : E) return B is
1914    begin
1915       pragma Assert
1916         (Is_Overloadable (Id)
1917          or else Ekind_In (Id, E_Generic_Function, E_Generic_Procedure));
1918       return Flag218 (Id);
1919    end Is_Primitive;
1920
1921    function Is_Primitive_Wrapper (Id : E) return B is
1922    begin
1923       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
1924       return Flag195 (Id);
1925    end Is_Primitive_Wrapper;
1926
1927    function Is_Private_Composite (Id : E) return B is
1928    begin
1929       pragma Assert (Is_Type (Id));
1930       return Flag107 (Id);
1931    end Is_Private_Composite;
1932
1933    function Is_Private_Descendant (Id : E) return B is
1934    begin
1935       return Flag53 (Id);
1936    end Is_Private_Descendant;
1937
1938    function Is_Private_Primitive (Id : E) return B is
1939    begin
1940       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
1941       return Flag245 (Id);
1942    end Is_Private_Primitive;
1943
1944    function Is_Protected_Interface (Id : E) return B is
1945    begin
1946       pragma Assert (Is_Interface (Id));
1947       return Flag198 (Id);
1948    end Is_Protected_Interface;
1949
1950    function Is_Public (Id : E) return B is
1951    begin
1952       pragma Assert (Nkind (Id) in N_Entity);
1953       return Flag10 (Id);
1954    end Is_Public;
1955
1956    function Is_Pure (Id : E) return B is
1957    begin
1958       return Flag44 (Id);
1959    end Is_Pure;
1960
1961    function Is_Pure_Unit_Access_Type (Id : E) return B is
1962    begin
1963       pragma Assert (Is_Access_Type (Id));
1964       return Flag189 (Id);
1965    end Is_Pure_Unit_Access_Type;
1966
1967    function Is_RACW_Stub_Type (Id : E) return B is
1968    begin
1969       pragma Assert (Is_Type (Id));
1970       return Flag244 (Id);
1971    end Is_RACW_Stub_Type;
1972
1973    function Is_Raised (Id : E) return B is
1974    begin
1975       pragma Assert (Ekind (Id) = E_Exception);
1976       return Flag224 (Id);
1977    end Is_Raised;
1978
1979    function Is_Remote_Call_Interface (Id : E) return B is
1980    begin
1981       return Flag62 (Id);
1982    end Is_Remote_Call_Interface;
1983
1984    function Is_Remote_Types (Id : E) return B is
1985    begin
1986       return Flag61 (Id);
1987    end Is_Remote_Types;
1988
1989    function Is_Renaming_Of_Object (Id : E) return B is
1990    begin
1991       return Flag112 (Id);
1992    end Is_Renaming_Of_Object;
1993
1994    function Is_Return_Object (Id : E) return B is
1995    begin
1996       return Flag209 (Id);
1997    end Is_Return_Object;
1998
1999    function Is_Shared_Passive (Id : E) return B is
2000    begin
2001       return Flag60 (Id);
2002    end Is_Shared_Passive;
2003
2004    function Is_Statically_Allocated (Id : E) return B is
2005    begin
2006       return Flag28 (Id);
2007    end Is_Statically_Allocated;
2008
2009    function Is_Synchronized_Interface (Id : E) return B is
2010    begin
2011       pragma Assert (Is_Interface (Id));
2012       return Flag199 (Id);
2013    end Is_Synchronized_Interface;
2014
2015    function Is_Tag (Id : E) return B is
2016    begin
2017       pragma Assert (Nkind (Id) in N_Entity);
2018       return Flag78 (Id);
2019    end Is_Tag;
2020
2021    function Is_Tagged_Type (Id : E) return B is
2022    begin
2023       return Flag55 (Id);
2024    end Is_Tagged_Type;
2025
2026    function Is_Task_Interface (Id : E) return B is
2027    begin
2028       pragma Assert (Is_Interface (Id));
2029       return Flag200 (Id);
2030    end Is_Task_Interface;
2031
2032    function Is_Thunk (Id : E) return B is
2033    begin
2034       pragma Assert (Is_Subprogram (Id));
2035       return Flag225 (Id);
2036    end Is_Thunk;
2037
2038    function Is_Trivial_Subprogram (Id : E) return B is
2039    begin
2040       return Flag235 (Id);
2041    end Is_Trivial_Subprogram;
2042
2043    function Is_True_Constant (Id : E) return B is
2044    begin
2045       return Flag163 (Id);
2046    end Is_True_Constant;
2047
2048    function Is_Unchecked_Union (Id : E) return B is
2049    begin
2050       return Flag117 (Implementation_Base_Type (Id));
2051    end Is_Unchecked_Union;
2052
2053    function Is_Underlying_Record_View (Id : E) return B is
2054    begin
2055       return Flag246 (Id);
2056    end Is_Underlying_Record_View;
2057
2058    function Is_Unsigned_Type (Id : E) return B is
2059    begin
2060       pragma Assert (Is_Type (Id));
2061       return Flag144 (Id);
2062    end Is_Unsigned_Type;
2063
2064    function Is_Valued_Procedure (Id : E) return B is
2065    begin
2066       pragma Assert (Ekind (Id) = E_Procedure);
2067       return Flag127 (Id);
2068    end Is_Valued_Procedure;
2069
2070    function Is_Visible_Child_Unit (Id : E) return B is
2071    begin
2072       pragma Assert (Is_Child_Unit (Id));
2073       return Flag116 (Id);
2074    end Is_Visible_Child_Unit;
2075
2076    function Is_Visible_Formal (Id : E) return B is
2077    begin
2078       return Flag206 (Id);
2079    end Is_Visible_Formal;
2080
2081    function Is_VMS_Exception (Id : E) return B is
2082    begin
2083       return Flag133 (Id);
2084    end Is_VMS_Exception;
2085
2086    function Is_Volatile (Id : E) return B is
2087    begin
2088       pragma Assert (Nkind (Id) in N_Entity);
2089
2090       if Is_Type (Id) then
2091          return Flag16 (Base_Type (Id));
2092       else
2093          return Flag16 (Id);
2094       end if;
2095    end Is_Volatile;
2096
2097    function Itype_Printed (Id : E) return B is
2098    begin
2099       pragma Assert (Is_Itype (Id));
2100       return Flag202 (Id);
2101    end Itype_Printed;
2102
2103    function Kill_Elaboration_Checks (Id : E) return B is
2104    begin
2105       return Flag32 (Id);
2106    end Kill_Elaboration_Checks;
2107
2108    function Kill_Range_Checks (Id : E) return B is
2109    begin
2110       return Flag33 (Id);
2111    end Kill_Range_Checks;
2112
2113    function Kill_Tag_Checks (Id : E) return B is
2114    begin
2115       return Flag34 (Id);
2116    end Kill_Tag_Checks;
2117
2118    function Known_To_Have_Preelab_Init (Id : E) return B is
2119    begin
2120       pragma Assert (Is_Type (Id));
2121       return Flag207 (Id);
2122    end Known_To_Have_Preelab_Init;
2123
2124    function Last_Assignment (Id : E) return N is
2125    begin
2126       pragma Assert (Is_Assignable (Id));
2127       return Node26 (Id);
2128    end Last_Assignment;
2129
2130    function Last_Entity (Id : E) return E is
2131    begin
2132       return Node20 (Id);
2133    end Last_Entity;
2134
2135    function Limited_View (Id : E) return E is
2136    begin
2137       pragma Assert (Ekind (Id) = E_Package);
2138       return Node23 (Id);
2139    end Limited_View;
2140
2141    function Lit_Indexes (Id : E) return E is
2142    begin
2143       pragma Assert (Is_Enumeration_Type (Id));
2144       return Node15 (Id);
2145    end Lit_Indexes;
2146
2147    function Lit_Strings (Id : E) return E is
2148    begin
2149       pragma Assert (Is_Enumeration_Type (Id));
2150       return Node16 (Id);
2151    end Lit_Strings;
2152
2153    function Low_Bound_Tested (Id : E) return B is
2154    begin
2155       return Flag205 (Id);
2156    end Low_Bound_Tested;
2157
2158    function Machine_Radix_10 (Id : E) return B is
2159    begin
2160       pragma Assert (Is_Decimal_Fixed_Point_Type (Id));
2161       return Flag84 (Id);
2162    end Machine_Radix_10;
2163
2164    function Master_Id (Id : E) return E is
2165    begin
2166       pragma Assert (Is_Access_Type (Id));
2167       return Node17 (Id);
2168    end Master_Id;
2169
2170    function Materialize_Entity (Id : E) return B is
2171    begin
2172       return Flag168 (Id);
2173    end Materialize_Entity;
2174
2175    function Mechanism (Id : E) return M is
2176    begin
2177       pragma Assert (Ekind (Id) = E_Function or else Is_Formal (Id));
2178       return UI_To_Int (Uint8 (Id));
2179    end Mechanism;
2180
2181    function Modulus (Id : E) return Uint is
2182    begin
2183       pragma Assert (Is_Modular_Integer_Type (Id));
2184       return Uint17 (Base_Type (Id));
2185    end Modulus;
2186
2187    function Must_Be_On_Byte_Boundary (Id : E) return B is
2188    begin
2189       pragma Assert (Is_Type (Id));
2190       return Flag183 (Id);
2191    end Must_Be_On_Byte_Boundary;
2192
2193    function Must_Have_Preelab_Init (Id : E) return B is
2194    begin
2195       pragma Assert (Is_Type (Id));
2196       return Flag208 (Id);
2197    end Must_Have_Preelab_Init;
2198
2199    function Needs_Debug_Info (Id : E) return B is
2200    begin
2201       return Flag147 (Id);
2202    end Needs_Debug_Info;
2203
2204    function Needs_No_Actuals (Id : E) return B is
2205    begin
2206       pragma Assert
2207         (Is_Overloadable (Id)
2208           or else Ekind_In (Id, E_Subprogram_Type, E_Entry_Family));
2209       return Flag22 (Id);
2210    end Needs_No_Actuals;
2211
2212    function Never_Set_In_Source (Id : E) return B is
2213    begin
2214       return Flag115 (Id);
2215    end Never_Set_In_Source;
2216
2217    function Next_Inlined_Subprogram (Id : E) return E is
2218    begin
2219       return Node12 (Id);
2220    end Next_Inlined_Subprogram;
2221
2222    function No_Pool_Assigned (Id : E) return B is
2223    begin
2224       pragma Assert (Is_Access_Type (Id));
2225       return Flag131 (Root_Type (Id));
2226    end No_Pool_Assigned;
2227
2228    function No_Return (Id : E) return B is
2229    begin
2230       return Flag113 (Id);
2231    end No_Return;
2232
2233    function No_Strict_Aliasing (Id : E) return B is
2234    begin
2235       pragma Assert (Is_Access_Type (Id));
2236       return Flag136 (Base_Type (Id));
2237    end No_Strict_Aliasing;
2238
2239    function Non_Binary_Modulus (Id : E) return B is
2240    begin
2241       pragma Assert (Is_Type (Id));
2242       return Flag58 (Base_Type (Id));
2243    end Non_Binary_Modulus;
2244
2245    function Non_Limited_View (Id : E) return E is
2246    begin
2247       pragma Assert (Ekind (Id) in Incomplete_Kind);
2248       return Node17 (Id);
2249    end Non_Limited_View;
2250
2251    function Nonzero_Is_True (Id : E) return B is
2252    begin
2253       pragma Assert (Root_Type (Id) = Standard_Boolean);
2254       return Flag162 (Base_Type (Id));
2255    end Nonzero_Is_True;
2256
2257    function Normalized_First_Bit (Id : E) return U is
2258    begin
2259       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
2260       return Uint8 (Id);
2261    end Normalized_First_Bit;
2262
2263    function Normalized_Position (Id : E) return U is
2264    begin
2265       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
2266       return Uint14 (Id);
2267    end Normalized_Position;
2268
2269    function Normalized_Position_Max (Id : E) return U is
2270    begin
2271       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
2272       return Uint10 (Id);
2273    end Normalized_Position_Max;
2274
2275    function OK_To_Rename (Id : E) return B is
2276    begin
2277       pragma Assert (Ekind (Id) = E_Variable);
2278       return Flag247 (Id);
2279    end OK_To_Rename;
2280
2281    function OK_To_Reorder_Components (Id : E) return B is
2282    begin
2283       pragma Assert (Is_Record_Type (Id));
2284       return Flag239 (Base_Type (Id));
2285    end OK_To_Reorder_Components;
2286
2287    function Optimize_Alignment_Space (Id : E) return B is
2288    begin
2289       pragma Assert
2290         (Is_Type (Id) or else Ekind_In (Id, E_Constant, E_Variable));
2291       return Flag241 (Id);
2292    end Optimize_Alignment_Space;
2293
2294    function Optimize_Alignment_Time (Id : E) return B is
2295    begin
2296       pragma Assert
2297         (Is_Type (Id) or else Ekind_In (Id, E_Constant, E_Variable));
2298       return Flag242 (Id);
2299    end Optimize_Alignment_Time;
2300
2301    function Original_Array_Type (Id : E) return E is
2302    begin
2303       pragma Assert (Is_Array_Type (Id) or else Is_Modular_Integer_Type (Id));
2304       return Node21 (Id);
2305    end Original_Array_Type;
2306
2307    function Original_Record_Component (Id : E) return E is
2308    begin
2309       pragma Assert (Ekind_In (Id, E_Void, E_Component, E_Discriminant));
2310       return Node22 (Id);
2311    end Original_Record_Component;
2312
2313    function Overlays_Constant (Id : E) return B is
2314    begin
2315       return Flag243 (Id);
2316    end Overlays_Constant;
2317
2318    function Overridden_Operation (Id : E) return E is
2319    begin
2320       return Node26 (Id);
2321    end Overridden_Operation;
2322
2323    function Package_Instantiation (Id : E) return N is
2324    begin
2325       pragma Assert (Ekind_In (Id, E_Package, E_Generic_Package));
2326       return Node26 (Id);
2327    end Package_Instantiation;
2328
2329    function Packed_Array_Type (Id : E) return E is
2330    begin
2331       pragma Assert (Is_Array_Type (Id));
2332       return Node23 (Id);
2333    end Packed_Array_Type;
2334
2335    function Parent_Subtype (Id : E) return E is
2336    begin
2337       pragma Assert (Is_Record_Type (Id));
2338       return Node19 (Base_Type (Id));
2339    end Parent_Subtype;
2340
2341    function Postcondition_Proc (Id : E) return E is
2342    begin
2343       pragma Assert (Ekind (Id) = E_Procedure);
2344       return Node8 (Id);
2345    end Postcondition_Proc;
2346
2347    function Primitive_Operations (Id : E) return L is
2348    begin
2349       pragma Assert (Is_Tagged_Type (Id));
2350       return Elist15 (Id);
2351    end Primitive_Operations;
2352
2353    function Prival (Id : E) return E is
2354    begin
2355       pragma Assert (Is_Protected_Component (Id));
2356       return Node17 (Id);
2357    end Prival;
2358
2359    function Prival_Link (Id : E) return E is
2360    begin
2361       pragma Assert (Ekind_In (Id, E_Constant, E_Variable));
2362       return Node20 (Id);
2363    end Prival_Link;
2364
2365    function Private_Dependents (Id : E) return L is
2366    begin
2367       pragma Assert (Is_Incomplete_Or_Private_Type (Id));
2368       return Elist18 (Id);
2369    end Private_Dependents;
2370
2371    function Private_View (Id : E) return N is
2372    begin
2373       pragma Assert (Is_Private_Type (Id));
2374       return Node22 (Id);
2375    end Private_View;
2376
2377    function Protected_Body_Subprogram (Id : E) return E is
2378    begin
2379       pragma Assert (Is_Subprogram (Id) or else Is_Entry (Id));
2380       return Node11 (Id);
2381    end Protected_Body_Subprogram;
2382
2383    function Protected_Formal (Id : E) return E is
2384    begin
2385       pragma Assert (Is_Formal (Id));
2386       return Node22 (Id);
2387    end Protected_Formal;
2388
2389    function Protection_Object (Id : E) return E is
2390    begin
2391       pragma Assert
2392         (Ekind_In (Id, E_Entry, E_Entry_Family, E_Function, E_Procedure));
2393       return Node23 (Id);
2394    end Protection_Object;
2395
2396    function Reachable (Id : E) return B is
2397    begin
2398       return Flag49 (Id);
2399    end Reachable;
2400
2401    function Referenced (Id : E) return B is
2402    begin
2403       return Flag156 (Id);
2404    end Referenced;
2405
2406    function Referenced_As_LHS (Id : E) return B is
2407    begin
2408       return Flag36 (Id);
2409    end Referenced_As_LHS;
2410
2411    function Referenced_As_Out_Parameter (Id : E) return B is
2412    begin
2413       return Flag227 (Id);
2414    end Referenced_As_Out_Parameter;
2415
2416    function Referenced_Object (Id : E) return N is
2417    begin
2418       pragma Assert (Is_Type (Id));
2419       return Node10 (Id);
2420    end Referenced_Object;
2421
2422    function Register_Exception_Call (Id : E) return N is
2423    begin
2424       pragma Assert (Ekind (Id) = E_Exception);
2425       return Node20 (Id);
2426    end Register_Exception_Call;
2427
2428    function Related_Array_Object (Id : E) return E is
2429    begin
2430       pragma Assert (Is_Array_Type (Id));
2431       return Node19 (Id);
2432    end Related_Array_Object;
2433
2434    function Related_Expression (Id : E) return N is
2435    begin
2436       pragma Assert (Ekind_In (Id, E_Constant, E_Variable));
2437       return Node24 (Id);
2438    end Related_Expression;
2439
2440    function Related_Instance (Id : E) return E is
2441    begin
2442       pragma Assert (Ekind_In (Id, E_Package, E_Package_Body));
2443       return Node15 (Id);
2444    end Related_Instance;
2445
2446    function Related_Type (Id : E) return E is
2447    begin
2448       pragma Assert (Ekind_In (Id, E_Component, E_Constant));
2449       return Node26 (Id);
2450    end Related_Type;
2451
2452    function Relative_Deadline_Variable (Id : E) return E is
2453    begin
2454       pragma Assert (Is_Task_Type (Id));
2455       return Node26 (Implementation_Base_Type (Id));
2456    end Relative_Deadline_Variable;
2457
2458    function Renamed_Entity (Id : E) return N is
2459    begin
2460       return Node18 (Id);
2461    end Renamed_Entity;
2462
2463    function Renamed_In_Spec (Id : E) return B is
2464    begin
2465       pragma Assert (Ekind (Id) = E_Package);
2466       return Flag231 (Id);
2467    end Renamed_In_Spec;
2468
2469    function Renamed_Object (Id : E) return N is
2470    begin
2471       return Node18 (Id);
2472    end Renamed_Object;
2473
2474    function Renaming_Map (Id : E) return U is
2475    begin
2476       return Uint9 (Id);
2477    end Renaming_Map;
2478
2479    function Requires_Overriding (Id : E) return B is
2480    begin
2481       pragma Assert (Is_Overloadable (Id));
2482       return Flag213 (Id);
2483    end Requires_Overriding;
2484
2485    function Return_Present (Id : E) return B is
2486    begin
2487       return Flag54 (Id);
2488    end Return_Present;
2489
2490    function Return_Applies_To (Id : E) return N is
2491    begin
2492       return Node8 (Id);
2493    end Return_Applies_To;
2494
2495    function Returns_By_Ref (Id : E) return B is
2496    begin
2497       return Flag90 (Id);
2498    end Returns_By_Ref;
2499
2500    function Reverse_Bit_Order (Id : E) return B is
2501    begin
2502       pragma Assert (Is_Record_Type (Id));
2503       return Flag164 (Base_Type (Id));
2504    end Reverse_Bit_Order;
2505
2506    function RM_Size (Id : E) return U is
2507    begin
2508       pragma Assert (Is_Type (Id));
2509       return Uint13 (Id);
2510    end RM_Size;
2511
2512    function Scalar_Range (Id : E) return N is
2513    begin
2514       return Node20 (Id);
2515    end Scalar_Range;
2516
2517    function Scale_Value (Id : E) return U is
2518    begin
2519       return Uint15 (Id);
2520    end Scale_Value;
2521
2522    function Scope_Depth_Value (Id : E) return U is
2523    begin
2524       return Uint22 (Id);
2525    end Scope_Depth_Value;
2526
2527    function Sec_Stack_Needed_For_Return (Id : E) return B is
2528    begin
2529       return Flag167 (Id);
2530    end Sec_Stack_Needed_For_Return;
2531
2532    function Shadow_Entities (Id : E) return S is
2533    begin
2534       pragma Assert (Ekind_In (Id, E_Package, E_Generic_Package));
2535       return List14 (Id);
2536    end Shadow_Entities;
2537
2538    function Shared_Var_Procs_Instance (Id : E) return E is
2539    begin
2540       pragma Assert (Ekind (Id) = E_Variable);
2541       return Node22 (Id);
2542    end Shared_Var_Procs_Instance;
2543
2544    function Size_Check_Code (Id : E) return N is
2545    begin
2546       pragma Assert (Ekind_In (Id, E_Constant, E_Variable));
2547       return Node19 (Id);
2548    end Size_Check_Code;
2549
2550    function Size_Depends_On_Discriminant (Id : E) return B is
2551    begin
2552       return Flag177 (Id);
2553    end Size_Depends_On_Discriminant;
2554
2555    function Size_Known_At_Compile_Time (Id : E) return B is
2556    begin
2557       return Flag92 (Id);
2558    end Size_Known_At_Compile_Time;
2559
2560    function Small_Value (Id : E) return R is
2561    begin
2562       pragma Assert (Is_Fixed_Point_Type (Id));
2563       return Ureal21 (Id);
2564    end Small_Value;
2565
2566    function Spec_Entity (Id : E) return E is
2567    begin
2568       pragma Assert (Ekind (Id) = E_Package_Body or else Is_Formal (Id));
2569       return Node19 (Id);
2570    end Spec_Entity;
2571
2572    function Spec_PPC_List (Id : E) return N is
2573    begin
2574       pragma Assert (Is_Subprogram (Id) or else Is_Generic_Subprogram (Id));
2575       return Node24 (Id);
2576    end Spec_PPC_List;
2577
2578    function Storage_Size_Variable (Id : E) return E is
2579    begin
2580       pragma Assert (Is_Access_Type (Id) or else Is_Task_Type (Id));
2581       return Node15 (Implementation_Base_Type (Id));
2582    end Storage_Size_Variable;
2583
2584    function Static_Elaboration_Desired (Id : E) return B is
2585    begin
2586       pragma Assert (Ekind (Id) = E_Package);
2587       return Flag77 (Id);
2588    end Static_Elaboration_Desired;
2589
2590    function Static_Initialization (Id : E) return N is
2591    begin
2592       pragma Assert
2593         (Ekind (Id) = E_Procedure and then not Is_Dispatching_Operation (Id));
2594       return Node26 (Id);
2595    end Static_Initialization;
2596
2597    function Stored_Constraint (Id : E) return L is
2598    begin
2599       pragma Assert
2600         (Is_Composite_Type (Id) and then not Is_Array_Type (Id));
2601       return Elist23 (Id);
2602    end Stored_Constraint;
2603
2604    function Strict_Alignment (Id : E) return B is
2605    begin
2606       return Flag145 (Implementation_Base_Type (Id));
2607    end Strict_Alignment;
2608
2609    function String_Literal_Length (Id : E) return U is
2610    begin
2611       return Uint16 (Id);
2612    end String_Literal_Length;
2613
2614    function String_Literal_Low_Bound (Id : E) return N is
2615    begin
2616       return Node15 (Id);
2617    end String_Literal_Low_Bound;
2618
2619    function Suppress_Elaboration_Warnings (Id : E) return B is
2620    begin
2621       return Flag148 (Id);
2622    end Suppress_Elaboration_Warnings;
2623
2624    function Suppress_Init_Proc (Id : E) return B is
2625    begin
2626       return Flag105 (Base_Type (Id));
2627    end Suppress_Init_Proc;
2628
2629    function Suppress_Style_Checks (Id : E) return B is
2630    begin
2631       return Flag165 (Id);
2632    end Suppress_Style_Checks;
2633
2634    function Suppress_Value_Tracking_On_Call (Id : E) return B is
2635    begin
2636       return Flag217 (Id);
2637    end Suppress_Value_Tracking_On_Call;
2638
2639    function Task_Body_Procedure (Id : E) return N is
2640    begin
2641       pragma Assert (Ekind (Id) in Task_Kind);
2642       return Node25 (Id);
2643    end Task_Body_Procedure;
2644
2645    function Treat_As_Volatile (Id : E) return B is
2646    begin
2647       return Flag41 (Id);
2648    end Treat_As_Volatile;
2649
2650    function Underlying_Full_View (Id : E) return E is
2651    begin
2652       pragma Assert (Ekind (Id) in Private_Kind);
2653       return Node19 (Id);
2654    end Underlying_Full_View;
2655
2656    function Underlying_Record_View (Id : E) return E is
2657    begin
2658       return Node24 (Id);
2659    end Underlying_Record_View;
2660
2661    function Universal_Aliasing (Id : E) return B is
2662    begin
2663       pragma Assert (Is_Type (Id));
2664       return Flag216 (Base_Type (Id));
2665    end Universal_Aliasing;
2666
2667    function Unset_Reference (Id : E) return N is
2668    begin
2669       return Node16 (Id);
2670    end Unset_Reference;
2671
2672    function Used_As_Generic_Actual (Id : E) return B is
2673    begin
2674       return Flag222 (Id);
2675    end Used_As_Generic_Actual;
2676
2677    function Uses_Sec_Stack (Id : E) return B is
2678    begin
2679       return Flag95 (Id);
2680    end Uses_Sec_Stack;
2681
2682    function Vax_Float (Id : E) return B is
2683    begin
2684       return Flag151 (Base_Type (Id));
2685    end Vax_Float;
2686
2687    function Warnings_Off (Id : E) return B is
2688    begin
2689       return Flag96 (Id);
2690    end Warnings_Off;
2691
2692    function Warnings_Off_Used (Id : E) return B is
2693    begin
2694       return Flag236 (Id);
2695    end Warnings_Off_Used;
2696
2697    function Warnings_Off_Used_Unmodified (Id : E) return B is
2698    begin
2699       return Flag237 (Id);
2700    end Warnings_Off_Used_Unmodified;
2701
2702    function Warnings_Off_Used_Unreferenced (Id : E) return B is
2703    begin
2704       return Flag238 (Id);
2705    end Warnings_Off_Used_Unreferenced;
2706
2707    function Wrapped_Entity (Id : E) return E is
2708    begin
2709       pragma Assert (Ekind_In (Id, E_Function, E_Procedure)
2710                        and then Is_Primitive_Wrapper (Id));
2711       return Node27 (Id);
2712    end Wrapped_Entity;
2713
2714    function Was_Hidden (Id : E) return B is
2715    begin
2716       return Flag196 (Id);
2717    end Was_Hidden;
2718
2719    ------------------------------
2720    -- Classification Functions --
2721    ------------------------------
2722
2723    function Is_Access_Type                      (Id : E) return B is
2724    begin
2725       return Ekind (Id) in Access_Kind;
2726    end Is_Access_Type;
2727
2728    function Is_Access_Protected_Subprogram_Type (Id : E) return B is
2729    begin
2730       return Ekind (Id) in Access_Protected_Kind;
2731    end Is_Access_Protected_Subprogram_Type;
2732
2733    function Is_Access_Subprogram_Type           (Id : E) return B is
2734    begin
2735       return Ekind (Id) in Access_Subprogram_Kind;
2736    end Is_Access_Subprogram_Type;
2737
2738    function Is_Array_Type                       (Id : E) return B is
2739    begin
2740       return Ekind (Id) in Array_Kind;
2741    end Is_Array_Type;
2742
2743    function Is_Assignable                       (Id : E) return B is
2744    begin
2745       return Ekind (Id) in Assignable_Kind;
2746    end Is_Assignable;
2747
2748    function Is_Class_Wide_Type                  (Id : E) return B is
2749    begin
2750       return Ekind (Id) in Class_Wide_Kind;
2751    end Is_Class_Wide_Type;
2752
2753    function Is_Composite_Type                   (Id : E) return B is
2754    begin
2755       return Ekind (Id) in Composite_Kind;
2756    end Is_Composite_Type;
2757
2758    function Is_Concurrent_Body                  (Id : E) return B is
2759    begin
2760       return Ekind (Id) in
2761         Concurrent_Body_Kind;
2762    end Is_Concurrent_Body;
2763
2764    function Is_Concurrent_Record_Type           (Id : E) return B is
2765    begin
2766       return Flag20 (Id);
2767    end Is_Concurrent_Record_Type;
2768
2769    function Is_Concurrent_Type                  (Id : E) return B is
2770    begin
2771       return Ekind (Id) in Concurrent_Kind;
2772    end Is_Concurrent_Type;
2773
2774    function Is_Decimal_Fixed_Point_Type         (Id : E) return B is
2775    begin
2776       return Ekind (Id) in
2777         Decimal_Fixed_Point_Kind;
2778    end Is_Decimal_Fixed_Point_Type;
2779
2780    function Is_Digits_Type                      (Id : E) return B is
2781    begin
2782       return Ekind (Id) in Digits_Kind;
2783    end Is_Digits_Type;
2784
2785    function Is_Discrete_Or_Fixed_Point_Type     (Id : E) return B is
2786    begin
2787       return Ekind (Id) in Discrete_Or_Fixed_Point_Kind;
2788    end Is_Discrete_Or_Fixed_Point_Type;
2789
2790    function Is_Discrete_Type                    (Id : E) return B is
2791    begin
2792       return Ekind (Id) in Discrete_Kind;
2793    end Is_Discrete_Type;
2794
2795    function Is_Elementary_Type                  (Id : E) return B is
2796    begin
2797       return Ekind (Id) in Elementary_Kind;
2798    end Is_Elementary_Type;
2799
2800    function Is_Entry                            (Id : E) return B is
2801    begin
2802       return Ekind (Id) in Entry_Kind;
2803    end Is_Entry;
2804
2805    function Is_Enumeration_Type                 (Id : E) return B is
2806    begin
2807       return Ekind (Id) in
2808         Enumeration_Kind;
2809    end Is_Enumeration_Type;
2810
2811    function Is_Fixed_Point_Type                 (Id : E) return B is
2812    begin
2813       return Ekind (Id) in
2814         Fixed_Point_Kind;
2815    end Is_Fixed_Point_Type;
2816
2817    function Is_Floating_Point_Type              (Id : E) return B is
2818    begin
2819       return Ekind (Id) in Float_Kind;
2820    end Is_Floating_Point_Type;
2821
2822    function Is_Formal                           (Id : E) return B is
2823    begin
2824       return Ekind (Id) in Formal_Kind;
2825    end Is_Formal;
2826
2827    function Is_Formal_Object                    (Id : E) return B is
2828    begin
2829       return Ekind (Id) in Formal_Object_Kind;
2830    end Is_Formal_Object;
2831
2832    function Is_Generic_Subprogram               (Id : E) return B is
2833    begin
2834       return Ekind (Id) in Generic_Subprogram_Kind;
2835    end Is_Generic_Subprogram;
2836
2837    function Is_Generic_Unit                     (Id : E) return B is
2838    begin
2839       return Ekind (Id) in Generic_Unit_Kind;
2840    end Is_Generic_Unit;
2841
2842    function Is_Incomplete_Or_Private_Type       (Id : E) return B is
2843    begin
2844       return Ekind (Id) in
2845         Incomplete_Or_Private_Kind;
2846    end Is_Incomplete_Or_Private_Type;
2847
2848    function Is_Incomplete_Type                  (Id : E) return B is
2849    begin
2850       return Ekind (Id) in
2851         Incomplete_Kind;
2852    end Is_Incomplete_Type;
2853
2854    function Is_Integer_Type                     (Id : E) return B is
2855    begin
2856       return Ekind (Id) in Integer_Kind;
2857    end Is_Integer_Type;
2858
2859    function Is_Modular_Integer_Type             (Id : E) return B is
2860    begin
2861       return Ekind (Id) in
2862         Modular_Integer_Kind;
2863    end Is_Modular_Integer_Type;
2864
2865    function Is_Named_Number                     (Id : E) return B is
2866    begin
2867       return Ekind (Id) in Named_Kind;
2868    end Is_Named_Number;
2869
2870    function Is_Numeric_Type                     (Id : E) return B is
2871    begin
2872       return Ekind (Id) in Numeric_Kind;
2873    end Is_Numeric_Type;
2874
2875    function Is_Object                           (Id : E) return B is
2876    begin
2877       return Ekind (Id) in Object_Kind;
2878    end Is_Object;
2879
2880    function Is_Ordinary_Fixed_Point_Type        (Id : E) return B is
2881    begin
2882       return Ekind (Id) in
2883         Ordinary_Fixed_Point_Kind;
2884    end Is_Ordinary_Fixed_Point_Type;
2885
2886    function Is_Overloadable                     (Id : E) return B is
2887    begin
2888       return Ekind (Id) in Overloadable_Kind;
2889    end Is_Overloadable;
2890
2891    function Is_Private_Type                     (Id : E) return B is
2892    begin
2893       return Ekind (Id) in Private_Kind;
2894    end Is_Private_Type;
2895
2896    function Is_Protected_Type                   (Id : E) return B is
2897    begin
2898       return Ekind (Id) in Protected_Kind;
2899    end Is_Protected_Type;
2900
2901    function Is_Real_Type                        (Id : E) return B is
2902    begin
2903       return Ekind (Id) in Real_Kind;
2904    end Is_Real_Type;
2905
2906    function Is_Record_Type                      (Id : E) return B is
2907    begin
2908       return Ekind (Id) in Record_Kind;
2909    end Is_Record_Type;
2910
2911    function Is_Scalar_Type                      (Id : E) return B is
2912    begin
2913       return Ekind (Id) in Scalar_Kind;
2914    end Is_Scalar_Type;
2915
2916    function Is_Signed_Integer_Type              (Id : E) return B is
2917    begin
2918       return Ekind (Id) in Signed_Integer_Kind;
2919    end Is_Signed_Integer_Type;
2920
2921    function Is_Subprogram                       (Id : E) return B is
2922    begin
2923       return Ekind (Id) in Subprogram_Kind;
2924    end Is_Subprogram;
2925
2926    function Is_Task_Type                        (Id : E) return B is
2927    begin
2928       return Ekind (Id) in Task_Kind;
2929    end Is_Task_Type;
2930
2931    function Is_Type                             (Id : E) return B is
2932    begin
2933       return Ekind (Id) in Type_Kind;
2934    end Is_Type;
2935
2936    ------------------------------
2937    -- Attribute Set Procedures --
2938    ------------------------------
2939
2940    procedure Set_Accept_Address (Id : E; V : L) is
2941    begin
2942       Set_Elist21 (Id, V);
2943    end Set_Accept_Address;
2944
2945    procedure Set_Access_Disp_Table (Id : E; V : L) is
2946    begin
2947       pragma Assert (Is_Tagged_Type (Id) and then Id = Base_Type (Id));
2948       Set_Elist16 (Id, V);
2949    end Set_Access_Disp_Table;
2950
2951    procedure Set_Associated_Final_Chain (Id : E; V : E) is
2952    begin
2953       pragma Assert (Is_Access_Type (Id));
2954       Set_Node23 (Id, V);
2955    end Set_Associated_Final_Chain;
2956
2957    procedure Set_Associated_Formal_Package (Id : E; V : E) is
2958    begin
2959       Set_Node12 (Id, V);
2960    end Set_Associated_Formal_Package;
2961
2962    procedure Set_Associated_Node_For_Itype (Id : E; V : E) is
2963    begin
2964       Set_Node8 (Id, V);
2965    end Set_Associated_Node_For_Itype;
2966
2967    procedure Set_Associated_Storage_Pool (Id : E; V : E) is
2968    begin
2969       pragma Assert (Is_Access_Type (Id) and then Id = Base_Type (Id));
2970       Set_Node22 (Id, V);
2971    end Set_Associated_Storage_Pool;
2972
2973    procedure Set_Actual_Subtype (Id : E; V : E) is
2974    begin
2975       pragma Assert
2976          (Ekind_In (Id, E_Constant, E_Variable, E_Generic_In_Out_Parameter)
2977            or else Is_Formal (Id));
2978       Set_Node17 (Id, V);
2979    end Set_Actual_Subtype;
2980
2981    procedure Set_Address_Taken (Id : E; V : B := True) is
2982    begin
2983       Set_Flag104 (Id, V);
2984    end Set_Address_Taken;
2985
2986    procedure Set_Alias (Id : E; V : E) is
2987    begin
2988       pragma Assert
2989         (Is_Overloadable (Id) or else Ekind (Id) = E_Subprogram_Type);
2990       Set_Node18 (Id, V);
2991    end Set_Alias;
2992
2993    procedure Set_Alignment (Id : E; V : U) is
2994    begin
2995       pragma Assert (Is_Type (Id)
2996                       or else Is_Formal (Id)
2997                       or else Ekind_In (Id, E_Loop_Parameter,
2998                                             E_Constant,
2999                                             E_Exception,
3000                                             E_Variable));
3001       Set_Uint14 (Id, V);
3002    end Set_Alignment;
3003
3004    procedure Set_Barrier_Function (Id : E; V : N) is
3005    begin
3006       pragma Assert (Is_Entry (Id));
3007       Set_Node12 (Id, V);
3008    end Set_Barrier_Function;
3009
3010    procedure Set_Block_Node (Id : E; V : N) is
3011    begin
3012       pragma Assert (Ekind (Id) = E_Block);
3013       Set_Node11 (Id, V);
3014    end Set_Block_Node;
3015
3016    procedure Set_Body_Entity (Id : E; V : E) is
3017    begin
3018       pragma Assert (Ekind_In (Id, E_Package, E_Generic_Package));
3019       Set_Node19 (Id, V);
3020    end Set_Body_Entity;
3021
3022    procedure Set_Body_Needed_For_SAL (Id : E; V : B := True) is
3023    begin
3024       pragma Assert
3025         (Ekind (Id) = E_Package
3026           or else Is_Subprogram (Id)
3027           or else Is_Generic_Unit (Id));
3028       Set_Flag40 (Id, V);
3029    end Set_Body_Needed_For_SAL;
3030
3031    procedure Set_C_Pass_By_Copy (Id : E; V : B := True) is
3032    begin
3033       pragma Assert (Is_Record_Type (Id) and then Id = Base_Type (Id));
3034       Set_Flag125 (Id, V);
3035    end Set_C_Pass_By_Copy;
3036
3037    procedure Set_Can_Never_Be_Null (Id : E; V : B := True) is
3038    begin
3039       Set_Flag38 (Id, V);
3040    end Set_Can_Never_Be_Null;
3041
3042    procedure Set_Checks_May_Be_Suppressed (Id : E; V : B := True) is
3043    begin
3044       Set_Flag31 (Id, V);
3045    end Set_Checks_May_Be_Suppressed;
3046
3047    procedure Set_Class_Wide_Type (Id : E; V : E) is
3048    begin
3049       pragma Assert (Is_Type (Id));
3050       Set_Node9 (Id, V);
3051    end Set_Class_Wide_Type;
3052
3053    procedure Set_Cloned_Subtype (Id : E; V : E) is
3054    begin
3055       pragma Assert (Ekind_In (Id, E_Record_Subtype, E_Class_Wide_Subtype));
3056       Set_Node16 (Id, V);
3057    end Set_Cloned_Subtype;
3058
3059    procedure Set_Component_Bit_Offset (Id : E; V : U) is
3060    begin
3061       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
3062       Set_Uint11 (Id, V);
3063    end Set_Component_Bit_Offset;
3064
3065    procedure Set_Component_Clause (Id : E; V : N) is
3066    begin
3067       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
3068       Set_Node13 (Id, V);
3069    end Set_Component_Clause;
3070
3071    procedure Set_Component_Size (Id : E; V : U) is
3072    begin
3073       pragma Assert (Is_Array_Type (Id) and then Id = Base_Type (Id));
3074       Set_Uint22 (Id, V);
3075    end Set_Component_Size;
3076
3077    procedure Set_Component_Type (Id : E; V : E) is
3078    begin
3079       pragma Assert (Is_Array_Type (Id) and then Id = Base_Type (Id));
3080       Set_Node20 (Id, V);
3081    end Set_Component_Type;
3082
3083    procedure Set_Corresponding_Concurrent_Type (Id : E; V : E) is
3084    begin
3085       pragma Assert
3086         (Ekind (Id) = E_Record_Type and then Is_Concurrent_Type (V));
3087       Set_Node18 (Id, V);
3088    end Set_Corresponding_Concurrent_Type;
3089
3090    procedure Set_Corresponding_Discriminant (Id : E; V : E) is
3091    begin
3092       pragma Assert (Ekind (Id) = E_Discriminant);
3093       Set_Node19 (Id, V);
3094    end Set_Corresponding_Discriminant;
3095
3096    procedure Set_Corresponding_Equality (Id : E; V : E) is
3097    begin
3098       pragma Assert
3099         (Ekind (Id) = E_Function
3100           and then not Comes_From_Source (Id)
3101           and then Chars (Id) = Name_Op_Ne);
3102       Set_Node13 (Id, V);
3103    end Set_Corresponding_Equality;
3104
3105    procedure Set_Corresponding_Record_Type (Id : E; V : E) is
3106    begin
3107       pragma Assert (Is_Concurrent_Type (Id));
3108       Set_Node18 (Id, V);
3109    end Set_Corresponding_Record_Type;
3110
3111    procedure Set_Corresponding_Remote_Type (Id : E; V : E) is
3112    begin
3113       Set_Node22 (Id, V);
3114    end Set_Corresponding_Remote_Type;
3115
3116    procedure Set_Current_Use_Clause (Id : E; V : E) is
3117    begin
3118       pragma Assert (Ekind (Id) = E_Package or else Is_Type (Id));
3119       Set_Node27 (Id, V);
3120    end Set_Current_Use_Clause;
3121
3122    procedure Set_Current_Value (Id : E; V : N) is
3123    begin
3124       pragma Assert (Ekind (Id) in Object_Kind or else Ekind (Id) = E_Void);
3125       Set_Node9 (Id, V);
3126    end Set_Current_Value;
3127
3128    procedure Set_CR_Discriminant (Id : E; V : E) is
3129    begin
3130       Set_Node23 (Id, V);
3131    end Set_CR_Discriminant;
3132
3133    procedure Set_Debug_Info_Off (Id : E; V : B := True) is
3134    begin
3135       Set_Flag166 (Id, V);
3136    end Set_Debug_Info_Off;
3137
3138    procedure Set_Debug_Renaming_Link (Id : E; V : E) is
3139    begin
3140       Set_Node25 (Id, V);
3141    end Set_Debug_Renaming_Link;
3142
3143    procedure Set_Default_Expr_Function (Id : E; V : E) is
3144    begin
3145       pragma Assert (Is_Formal (Id));
3146       Set_Node21 (Id, V);
3147    end Set_Default_Expr_Function;
3148
3149    procedure Set_Default_Expressions_Processed (Id : E; V : B := True) is
3150    begin
3151       Set_Flag108 (Id, V);
3152    end Set_Default_Expressions_Processed;
3153
3154    procedure Set_Default_Value (Id : E; V : N) is
3155    begin
3156       pragma Assert (Is_Formal (Id));
3157       Set_Node20 (Id, V);
3158    end Set_Default_Value;
3159
3160    procedure Set_Delay_Cleanups (Id : E; V : B := True) is
3161    begin
3162       pragma Assert
3163         (Is_Subprogram (Id)
3164            or else Is_Task_Type (Id)
3165            or else Ekind (Id) = E_Block);
3166       Set_Flag114 (Id, V);
3167    end Set_Delay_Cleanups;
3168
3169    procedure Set_Delay_Subprogram_Descriptors (Id : E; V : B := True) is
3170    begin
3171       pragma Assert
3172         (Is_Subprogram (Id) or else Ekind_In (Id, E_Package, E_Package_Body));
3173       Set_Flag50 (Id, V);
3174    end Set_Delay_Subprogram_Descriptors;
3175
3176    procedure Set_Delta_Value (Id : E; V : R) is
3177    begin
3178       pragma Assert (Is_Fixed_Point_Type (Id));
3179       Set_Ureal18 (Id, V);
3180    end Set_Delta_Value;
3181
3182    procedure Set_Dependent_Instances (Id : E; V : L) is
3183    begin
3184       pragma Assert (Is_Generic_Instance (Id));
3185       Set_Elist8 (Id, V);
3186    end Set_Dependent_Instances;
3187
3188    procedure Set_Depends_On_Private (Id : E; V : B := True) is
3189    begin
3190       pragma Assert (Nkind (Id) in N_Entity);
3191       Set_Flag14 (Id, V);
3192    end Set_Depends_On_Private;
3193
3194    procedure Set_Digits_Value (Id : E; V : U) is
3195    begin
3196       pragma Assert
3197         (Is_Floating_Point_Type (Id)
3198           or else Is_Decimal_Fixed_Point_Type (Id));
3199       Set_Uint17 (Id, V);
3200    end Set_Digits_Value;
3201
3202    procedure Set_Directly_Designated_Type (Id : E; V : E) is
3203    begin
3204       Set_Node20 (Id, V);
3205    end Set_Directly_Designated_Type;
3206
3207    procedure Set_Discard_Names (Id : E; V : B := True) is
3208    begin
3209       Set_Flag88 (Id, V);
3210    end Set_Discard_Names;
3211
3212    procedure Set_Discriminal (Id : E; V : E) is
3213    begin
3214       pragma Assert (Ekind (Id) = E_Discriminant);
3215       Set_Node17 (Id, V);
3216    end Set_Discriminal;
3217
3218    procedure Set_Discriminal_Link (Id : E; V : E) is
3219    begin
3220       Set_Node10 (Id, V);
3221    end Set_Discriminal_Link;
3222
3223    procedure Set_Discriminant_Checking_Func (Id  : E; V : E) is
3224    begin
3225       pragma Assert (Ekind (Id) = E_Component);
3226       Set_Node20 (Id, V);
3227    end Set_Discriminant_Checking_Func;
3228
3229    procedure Set_Discriminant_Constraint (Id : E; V : L) is
3230    begin
3231       pragma Assert (Nkind (Id) in N_Entity);
3232       Set_Elist21 (Id, V);
3233    end Set_Discriminant_Constraint;
3234
3235    procedure Set_Discriminant_Default_Value (Id : E; V : N) is
3236    begin
3237       Set_Node20 (Id, V);
3238    end Set_Discriminant_Default_Value;
3239
3240    procedure Set_Discriminant_Number (Id : E; V : U) is
3241    begin
3242       Set_Uint15 (Id, V);
3243    end Set_Discriminant_Number;
3244
3245    procedure Set_Dispatch_Table_Wrappers (Id : E; V : L) is
3246    begin
3247       pragma Assert (Is_Tagged_Type (Id) and then Id = Base_Type (Id));
3248       Set_Elist26 (Id, V);
3249    end Set_Dispatch_Table_Wrappers;
3250
3251    procedure Set_DT_Entry_Count (Id : E; V : U) is
3252    begin
3253       pragma Assert (Ekind (Id) = E_Component);
3254       Set_Uint15 (Id, V);
3255    end Set_DT_Entry_Count;
3256
3257    procedure Set_DT_Offset_To_Top_Func (Id : E; V : E) is
3258    begin
3259       pragma Assert (Ekind (Id) = E_Component and then Is_Tag (Id));
3260       Set_Node25 (Id, V);
3261    end Set_DT_Offset_To_Top_Func;
3262
3263    procedure Set_DT_Position (Id : E; V : U) is
3264    begin
3265       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
3266       Set_Uint15 (Id, V);
3267    end Set_DT_Position;
3268
3269    procedure Set_DTC_Entity (Id : E; V : E) is
3270    begin
3271       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
3272       Set_Node16 (Id, V);
3273    end Set_DTC_Entity;
3274
3275    procedure Set_Elaborate_Body_Desirable (Id : E; V : B := True) is
3276    begin
3277       pragma Assert (Ekind (Id) = E_Package);
3278       Set_Flag210 (Id, V);
3279    end Set_Elaborate_Body_Desirable;
3280
3281    procedure Set_Elaboration_Entity (Id : E; V : E) is
3282    begin
3283       pragma Assert
3284         (Is_Subprogram (Id)
3285            or else
3286          Ekind (Id) = E_Package
3287            or else
3288          Is_Generic_Unit (Id));
3289       Set_Node13 (Id, V);
3290    end Set_Elaboration_Entity;
3291
3292    procedure Set_Elaboration_Entity_Required (Id : E; V : B := True) is
3293    begin
3294       pragma Assert
3295         (Is_Subprogram (Id)
3296            or else
3297          Ekind (Id) = E_Package
3298            or else
3299          Is_Generic_Unit (Id));
3300       Set_Flag174 (Id, V);
3301    end Set_Elaboration_Entity_Required;
3302
3303    procedure Set_Enclosing_Scope (Id : E; V : E) is
3304    begin
3305       Set_Node18 (Id, V);
3306    end Set_Enclosing_Scope;
3307
3308    procedure Set_Entry_Accepted (Id : E; V : B := True) is
3309    begin
3310       pragma Assert (Is_Entry (Id));
3311       Set_Flag152 (Id, V);
3312    end Set_Entry_Accepted;
3313
3314    procedure Set_Entry_Bodies_Array (Id : E; V : E) is
3315    begin
3316       Set_Node15 (Id, V);
3317    end Set_Entry_Bodies_Array;
3318
3319    procedure Set_Entry_Cancel_Parameter (Id : E; V : E) is
3320    begin
3321       Set_Node23 (Id, V);
3322    end Set_Entry_Cancel_Parameter;
3323
3324    procedure Set_Entry_Component (Id : E; V : E) is
3325    begin
3326       Set_Node11 (Id, V);
3327    end Set_Entry_Component;
3328
3329    procedure Set_Entry_Formal (Id : E; V : E) is
3330    begin
3331       Set_Node16 (Id, V);
3332    end Set_Entry_Formal;
3333
3334    procedure Set_Entry_Index_Constant (Id : E; V : E) is
3335    begin
3336       pragma Assert (Ekind (Id) = E_Entry_Index_Parameter);
3337       Set_Node18 (Id, V);
3338    end Set_Entry_Index_Constant;
3339
3340    procedure Set_Entry_Parameters_Type (Id : E; V : E) is
3341    begin
3342       Set_Node15 (Id, V);
3343    end Set_Entry_Parameters_Type;
3344
3345    procedure Set_Enum_Pos_To_Rep (Id : E; V : E) is
3346    begin
3347       pragma Assert (Ekind (Id) = E_Enumeration_Type);
3348       Set_Node23 (Id, V);
3349    end Set_Enum_Pos_To_Rep;
3350
3351    procedure Set_Enumeration_Pos (Id : E; V : U) is
3352    begin
3353       pragma Assert (Ekind (Id) = E_Enumeration_Literal);
3354       Set_Uint11 (Id, V);
3355    end Set_Enumeration_Pos;
3356
3357    procedure Set_Enumeration_Rep (Id : E; V : U) is
3358    begin
3359       pragma Assert (Ekind (Id) = E_Enumeration_Literal);
3360       Set_Uint12 (Id, V);
3361    end Set_Enumeration_Rep;
3362
3363    procedure Set_Enumeration_Rep_Expr (Id : E; V : N) is
3364    begin
3365       pragma Assert (Ekind (Id) = E_Enumeration_Literal);
3366       Set_Node22 (Id, V);
3367    end Set_Enumeration_Rep_Expr;
3368
3369    procedure Set_Equivalent_Type (Id : E; V : E) is
3370    begin
3371       pragma Assert
3372         (Ekind_In (Id, E_Class_Wide_Type,
3373                        E_Class_Wide_Subtype,
3374                        E_Access_Protected_Subprogram_Type,
3375                        E_Anonymous_Access_Protected_Subprogram_Type,
3376                        E_Access_Subprogram_Type,
3377                        E_Exception_Type));
3378       Set_Node18 (Id, V);
3379    end Set_Equivalent_Type;
3380
3381    procedure Set_Esize (Id : E; V : U) is
3382    begin
3383       Set_Uint12 (Id, V);
3384    end Set_Esize;
3385
3386    procedure Set_Exception_Code (Id : E; V : U) is
3387    begin
3388       pragma Assert (Ekind (Id) = E_Exception);
3389       Set_Uint22 (Id, V);
3390    end Set_Exception_Code;
3391
3392    procedure Set_Extra_Accessibility (Id : E; V : E) is
3393    begin
3394       pragma Assert (Is_Formal (Id) or else Ekind (Id) = E_Variable);
3395       Set_Node13 (Id, V);
3396    end Set_Extra_Accessibility;
3397
3398    procedure Set_Extra_Constrained (Id : E; V : E) is
3399    begin
3400       pragma Assert (Is_Formal (Id) or else Ekind (Id) = E_Variable);
3401       Set_Node23 (Id, V);
3402    end Set_Extra_Constrained;
3403
3404    procedure Set_Extra_Formal (Id : E; V : E) is
3405    begin
3406       Set_Node15 (Id, V);
3407    end Set_Extra_Formal;
3408
3409    procedure Set_Extra_Formals (Id : E; V : E) is
3410    begin
3411       pragma Assert
3412         (Is_Overloadable (Id)
3413           or else Ekind_In (Id, E_Entry_Family,
3414                                 E_Subprogram_Body,
3415                                 E_Subprogram_Type));
3416       Set_Node28 (Id, V);
3417    end Set_Extra_Formals;
3418
3419    procedure Set_Can_Use_Internal_Rep (Id : E; V : B := True) is
3420    begin
3421       pragma Assert
3422         (Is_Access_Subprogram_Type (Id)
3423           and then Id = Base_Type (Id));
3424       Set_Flag229 (Id, V);
3425    end Set_Can_Use_Internal_Rep;
3426
3427    procedure Set_Finalization_Chain_Entity (Id : E; V : E) is
3428    begin
3429       Set_Node19 (Id, V);
3430    end Set_Finalization_Chain_Entity;
3431
3432    procedure Set_Finalize_Storage_Only (Id : E; V : B := True) is
3433    begin
3434       pragma Assert (Is_Type (Id) and then Id = Base_Type (Id));
3435       Set_Flag158 (Id, V);
3436    end Set_Finalize_Storage_Only;
3437
3438    procedure Set_First_Entity (Id : E; V : E) is
3439    begin
3440       Set_Node17 (Id, V);
3441    end Set_First_Entity;
3442
3443    procedure Set_First_Exit_Statement (Id : E; V : N) is
3444    begin
3445       pragma Assert (Ekind (Id) = E_Loop);
3446       Set_Node8 (Id, V);
3447    end Set_First_Exit_Statement;
3448
3449    procedure Set_First_Index (Id : E; V : N) is
3450    begin
3451       pragma Assert (Is_Array_Type (Id) or else Is_String_Type (Id));
3452       Set_Node17 (Id, V);
3453    end Set_First_Index;
3454
3455    procedure Set_First_Literal (Id : E; V : E) is
3456    begin
3457       pragma Assert (Is_Enumeration_Type (Id));
3458       Set_Node17 (Id, V);
3459    end Set_First_Literal;
3460
3461    procedure Set_First_Optional_Parameter (Id : E; V : E) is
3462    begin
3463       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
3464       Set_Node14 (Id, V);
3465    end Set_First_Optional_Parameter;
3466
3467    procedure Set_First_Private_Entity (Id : E; V : E) is
3468    begin
3469       pragma Assert (Ekind_In (Id, E_Package, E_Generic_Package)
3470                       or else Ekind (Id) in Concurrent_Kind);
3471       Set_Node16 (Id, V);
3472    end Set_First_Private_Entity;
3473
3474    procedure Set_First_Rep_Item (Id : E; V : N) is
3475    begin
3476       Set_Node6 (Id, V);
3477    end Set_First_Rep_Item;
3478
3479    procedure Set_Freeze_Node (Id : E; V : N) is
3480    begin
3481       Set_Node7 (Id, V);
3482    end Set_Freeze_Node;
3483
3484    procedure Set_From_With_Type (Id : E; V : B := True) is
3485    begin
3486       pragma Assert
3487         (Is_Type (Id)
3488           or else Ekind (Id) = E_Package);
3489       Set_Flag159 (Id, V);
3490    end Set_From_With_Type;
3491
3492    procedure Set_Full_View (Id : E; V : E) is
3493    begin
3494       pragma Assert (Is_Type (Id) or else Ekind (Id) = E_Constant);
3495       Set_Node11 (Id, V);
3496    end Set_Full_View;
3497
3498    procedure Set_Generic_Homonym (Id : E; V : E) is
3499    begin
3500       Set_Node11 (Id, V);
3501    end Set_Generic_Homonym;
3502
3503    procedure Set_Generic_Renamings (Id : E; V : L) is
3504    begin
3505       Set_Elist23 (Id, V);
3506    end Set_Generic_Renamings;
3507
3508    procedure Set_Handler_Records (Id : E; V : S) is
3509    begin
3510       Set_List10 (Id, V);
3511    end Set_Handler_Records;
3512
3513    procedure Set_Has_Aliased_Components (Id : E; V : B := True) is
3514    begin
3515       pragma Assert (Id = Base_Type (Id));
3516       Set_Flag135 (Id, V);
3517    end Set_Has_Aliased_Components;
3518
3519    procedure Set_Has_Alignment_Clause (Id : E; V : B := True) is
3520    begin
3521       Set_Flag46 (Id, V);
3522    end Set_Has_Alignment_Clause;
3523
3524    procedure Set_Has_All_Calls_Remote (Id : E; V : B := True) is
3525    begin
3526       Set_Flag79 (Id, V);
3527    end Set_Has_All_Calls_Remote;
3528
3529    procedure Set_Has_Anon_Block_Suffix (Id : E; V : B := True) is
3530    begin
3531       Set_Flag201 (Id, V);
3532    end Set_Has_Anon_Block_Suffix;
3533
3534    procedure Set_Has_Atomic_Components (Id : E; V : B := True) is
3535    begin
3536       pragma Assert (not Is_Type (Id) or else Id = Base_Type (Id));
3537       Set_Flag86 (Id, V);
3538    end Set_Has_Atomic_Components;
3539
3540    procedure Set_Has_Biased_Representation (Id : E; V : B := True) is
3541    begin
3542       pragma Assert
3543         ((V = False) or else (Is_Discrete_Type (Id) or else Is_Object (Id)));
3544       Set_Flag139 (Id, V);
3545    end Set_Has_Biased_Representation;
3546
3547    procedure Set_Has_Completion (Id : E; V : B := True) is
3548    begin
3549       Set_Flag26 (Id, V);
3550    end Set_Has_Completion;
3551
3552    procedure Set_Has_Completion_In_Body (Id : E; V : B := True) is
3553    begin
3554       pragma Assert (Is_Type (Id));
3555       Set_Flag71 (Id, V);
3556    end Set_Has_Completion_In_Body;
3557
3558    procedure Set_Has_Complex_Representation (Id : E; V : B := True) is
3559    begin
3560       pragma Assert (Ekind (Id) = E_Record_Type);
3561       Set_Flag140 (Id, V);
3562    end Set_Has_Complex_Representation;
3563
3564    procedure Set_Has_Component_Size_Clause (Id : E; V : B := True) is
3565    begin
3566       pragma Assert (Ekind (Id) = E_Array_Type);
3567       Set_Flag68 (Id, V);
3568    end Set_Has_Component_Size_Clause;
3569
3570    procedure Set_Has_Constrained_Partial_View (Id : E; V : B := True) is
3571    begin
3572       pragma Assert (Is_Type (Id));
3573       Set_Flag187 (Id, V);
3574    end Set_Has_Constrained_Partial_View;
3575
3576    procedure Set_Has_Contiguous_Rep (Id : E; V : B := True) is
3577    begin
3578       Set_Flag181 (Id, V);
3579    end Set_Has_Contiguous_Rep;
3580
3581    procedure Set_Has_Controlled_Component (Id : E; V : B := True) is
3582    begin
3583       pragma Assert (Id = Base_Type (Id));
3584       Set_Flag43 (Id, V);
3585    end Set_Has_Controlled_Component;
3586
3587    procedure Set_Has_Controlling_Result (Id : E; V : B := True) is
3588    begin
3589       Set_Flag98 (Id, V);
3590    end Set_Has_Controlling_Result;
3591
3592    procedure Set_Has_Convention_Pragma (Id : E; V : B := True) is
3593    begin
3594       Set_Flag119 (Id, V);
3595    end Set_Has_Convention_Pragma;
3596
3597    procedure Set_Has_Delayed_Freeze (Id : E; V : B := True) is
3598    begin
3599       pragma Assert (Nkind (Id) in N_Entity);
3600       Set_Flag18 (Id, V);
3601    end Set_Has_Delayed_Freeze;
3602
3603    procedure Set_Has_Discriminants (Id : E; V : B := True) is
3604    begin
3605       pragma Assert (Nkind (Id) in N_Entity);
3606       Set_Flag5 (Id, V);
3607    end Set_Has_Discriminants;
3608
3609    procedure Set_Has_Dispatch_Table (Id : E; V : B := True) is
3610    begin
3611       pragma Assert (Ekind (Id) = E_Record_Type
3612         and then Is_Tagged_Type (Id));
3613       Set_Flag220 (Id, V);
3614    end Set_Has_Dispatch_Table;
3615
3616    procedure Set_Has_Enumeration_Rep_Clause (Id : E; V : B := True) is
3617    begin
3618       pragma Assert (Is_Enumeration_Type (Id));
3619       Set_Flag66 (Id, V);
3620    end Set_Has_Enumeration_Rep_Clause;
3621
3622    procedure Set_Has_Exit (Id : E; V : B := True) is
3623    begin
3624       Set_Flag47 (Id, V);
3625    end Set_Has_Exit;
3626
3627    procedure Set_Has_External_Tag_Rep_Clause (Id : E; V : B := True) is
3628    begin
3629       pragma Assert (Is_Tagged_Type (Id));
3630       Set_Flag110 (Id, V);
3631    end Set_Has_External_Tag_Rep_Clause;
3632
3633    procedure Set_Has_Forward_Instantiation (Id : E; V : B := True) is
3634    begin
3635       Set_Flag175 (Id, V);
3636    end Set_Has_Forward_Instantiation;
3637
3638    procedure Set_Has_Fully_Qualified_Name (Id : E; V : B := True) is
3639    begin
3640       Set_Flag173 (Id, V);
3641    end Set_Has_Fully_Qualified_Name;
3642
3643    procedure Set_Has_Gigi_Rep_Item (Id : E; V : B := True) is
3644    begin
3645       Set_Flag82 (Id, V);
3646    end Set_Has_Gigi_Rep_Item;
3647
3648    procedure Set_Has_Homonym (Id : E; V : B := True) is
3649    begin
3650       Set_Flag56 (Id, V);
3651    end Set_Has_Homonym;
3652
3653    procedure Set_Has_Initial_Value (Id : E; V : B := True) is
3654    begin
3655       pragma Assert (Ekind_In (Id, E_Variable, E_Out_Parameter));
3656       Set_Flag219 (Id, V);
3657    end Set_Has_Initial_Value;
3658
3659    procedure Set_Has_Machine_Radix_Clause (Id : E; V : B := True) is
3660    begin
3661       pragma Assert (Is_Decimal_Fixed_Point_Type (Id));
3662       Set_Flag83 (Id, V);
3663    end Set_Has_Machine_Radix_Clause;
3664
3665    procedure Set_Has_Master_Entity (Id : E; V : B := True) is
3666    begin
3667       Set_Flag21 (Id, V);
3668    end Set_Has_Master_Entity;
3669
3670    procedure Set_Has_Missing_Return (Id : E; V : B := True) is
3671    begin
3672       pragma Assert (Ekind_In (Id, E_Function, E_Generic_Function));
3673       Set_Flag142 (Id, V);
3674    end Set_Has_Missing_Return;
3675
3676    procedure Set_Has_Nested_Block_With_Handler (Id : E; V : B := True) is
3677    begin
3678       Set_Flag101 (Id, V);
3679    end Set_Has_Nested_Block_With_Handler;
3680
3681    procedure Set_Has_Up_Level_Access (Id : E; V : B := True) is
3682    begin
3683       pragma Assert (Ekind_In (Id, E_Variable, E_Constant, E_Loop_Parameter));
3684       Set_Flag215 (Id, V);
3685    end Set_Has_Up_Level_Access;
3686
3687    procedure Set_Has_Non_Standard_Rep (Id : E; V : B := True) is
3688    begin
3689       pragma Assert (Id = Base_Type (Id));
3690       Set_Flag75 (Id, V);
3691    end Set_Has_Non_Standard_Rep;
3692
3693    procedure Set_Has_Object_Size_Clause (Id : E; V : B := True) is
3694    begin
3695       pragma Assert (Is_Type (Id));
3696       Set_Flag172 (Id, V);
3697    end Set_Has_Object_Size_Clause;
3698
3699    procedure Set_Has_Per_Object_Constraint (Id : E; V : B := True) is
3700    begin
3701       Set_Flag154 (Id, V);
3702    end Set_Has_Per_Object_Constraint;
3703
3704    procedure Set_Has_Persistent_BSS (Id : E; V : B := True) is
3705    begin
3706       Set_Flag188 (Id, V);
3707    end Set_Has_Persistent_BSS;
3708
3709    procedure Set_Has_Postconditions (Id : E; V : B := True) is
3710    begin
3711       pragma Assert (Is_Subprogram (Id));
3712       Set_Flag240 (Id, V);
3713    end Set_Has_Postconditions;
3714
3715    procedure Set_Has_Pragma_Controlled (Id : E; V : B := True) is
3716    begin
3717       pragma Assert (Is_Access_Type (Id));
3718       Set_Flag27 (Base_Type (Id), V);
3719    end Set_Has_Pragma_Controlled;
3720
3721    procedure Set_Has_Pragma_Elaborate_Body (Id : E; V : B := True) is
3722    begin
3723       Set_Flag150 (Id, V);
3724    end Set_Has_Pragma_Elaborate_Body;
3725
3726    procedure Set_Has_Pragma_Inline (Id : E; V : B := True) is
3727    begin
3728       Set_Flag157 (Id, V);
3729    end Set_Has_Pragma_Inline;
3730
3731    procedure Set_Has_Pragma_Inline_Always (Id : E; V : B := True) is
3732    begin
3733       Set_Flag230 (Id, V);
3734    end Set_Has_Pragma_Inline_Always;
3735
3736    procedure Set_Has_Pragma_Pack (Id : E; V : B := True) is
3737    begin
3738       pragma Assert (Is_Array_Type (Id) or else Is_Record_Type (Id));
3739       pragma Assert (Id = Base_Type (Id));
3740       Set_Flag121 (Id, V);
3741    end Set_Has_Pragma_Pack;
3742
3743    procedure Set_Has_Pragma_Preelab_Init (Id : E; V : B := True) is
3744    begin
3745       Set_Flag221 (Id, V);
3746    end Set_Has_Pragma_Preelab_Init;
3747
3748    procedure Set_Has_Pragma_Pure (Id : E; V : B := True) is
3749    begin
3750       Set_Flag203 (Id, V);
3751    end Set_Has_Pragma_Pure;
3752
3753    procedure Set_Has_Pragma_Pure_Function (Id : E; V : B := True) is
3754    begin
3755       Set_Flag179 (Id, V);
3756    end Set_Has_Pragma_Pure_Function;
3757
3758    procedure Set_Has_Pragma_Thread_Local_Storage (Id : E; V : B := True) is
3759    begin
3760       Set_Flag169 (Id, V);
3761    end Set_Has_Pragma_Thread_Local_Storage;
3762
3763    procedure Set_Has_Pragma_Unmodified (Id : E; V : B := True) is
3764    begin
3765       Set_Flag233 (Id, V);
3766    end Set_Has_Pragma_Unmodified;
3767
3768    procedure Set_Has_Pragma_Unreferenced (Id : E; V : B := True) is
3769    begin
3770       Set_Flag180 (Id, V);
3771    end Set_Has_Pragma_Unreferenced;
3772
3773    procedure Set_Has_Pragma_Unreferenced_Objects (Id : E; V : B := True) is
3774    begin
3775       pragma Assert (Is_Type (Id));
3776       Set_Flag212 (Id, V);
3777    end Set_Has_Pragma_Unreferenced_Objects;
3778
3779    procedure Set_Has_Primitive_Operations (Id : E; V : B := True) is
3780    begin
3781       pragma Assert (Id = Base_Type (Id));
3782       Set_Flag120 (Id, V);
3783    end Set_Has_Primitive_Operations;
3784
3785    procedure Set_Has_Private_Declaration (Id : E; V : B := True) is
3786    begin
3787       Set_Flag155 (Id, V);
3788    end Set_Has_Private_Declaration;
3789
3790    procedure Set_Has_Qualified_Name (Id : E; V : B := True) is
3791    begin
3792       Set_Flag161 (Id, V);
3793    end Set_Has_Qualified_Name;
3794
3795    procedure Set_Has_RACW (Id : E; V : B := True) is
3796    begin
3797       pragma Assert (Ekind (Id) = E_Package);
3798       Set_Flag214 (Id, V);
3799    end Set_Has_RACW;
3800
3801    procedure Set_Has_Record_Rep_Clause (Id : E; V : B := True) is
3802    begin
3803       pragma Assert (Id = Base_Type (Id));
3804       Set_Flag65 (Id, V);
3805    end Set_Has_Record_Rep_Clause;
3806
3807    procedure Set_Has_Recursive_Call (Id : E; V : B := True) is
3808    begin
3809       pragma Assert (Is_Subprogram (Id));
3810       Set_Flag143 (Id, V);
3811    end Set_Has_Recursive_Call;
3812
3813    procedure Set_Has_Size_Clause (Id : E; V : B := True) is
3814    begin
3815       Set_Flag29 (Id, V);
3816    end Set_Has_Size_Clause;
3817
3818    procedure Set_Has_Small_Clause (Id : E; V : B := True) is
3819    begin
3820       Set_Flag67 (Id, V);
3821    end Set_Has_Small_Clause;
3822
3823    procedure Set_Has_Specified_Layout (Id : E; V : B := True) is
3824    begin
3825       pragma Assert (Id = Base_Type (Id));
3826       Set_Flag100 (Id, V);
3827    end Set_Has_Specified_Layout;
3828
3829    procedure Set_Has_Specified_Stream_Input (Id : E; V : B := True) is
3830    begin
3831       pragma Assert (Is_Type (Id));
3832       Set_Flag190 (Id, V);
3833    end Set_Has_Specified_Stream_Input;
3834
3835    procedure Set_Has_Specified_Stream_Output (Id : E; V : B := True) is
3836    begin
3837       pragma Assert (Is_Type (Id));
3838       Set_Flag191 (Id, V);
3839    end Set_Has_Specified_Stream_Output;
3840
3841    procedure Set_Has_Specified_Stream_Read (Id : E; V : B := True) is
3842    begin
3843       pragma Assert (Is_Type (Id));
3844       Set_Flag192 (Id, V);
3845    end Set_Has_Specified_Stream_Read;
3846
3847    procedure Set_Has_Specified_Stream_Write (Id : E; V : B := True) is
3848    begin
3849       pragma Assert (Is_Type (Id));
3850       Set_Flag193 (Id, V);
3851    end Set_Has_Specified_Stream_Write;
3852
3853    procedure Set_Has_Static_Discriminants (Id : E; V : B := True) is
3854    begin
3855       Set_Flag211 (Id, V);
3856    end Set_Has_Static_Discriminants;
3857
3858    procedure Set_Has_Storage_Size_Clause (Id : E; V : B := True) is
3859    begin
3860       pragma Assert (Is_Access_Type (Id) or else Is_Task_Type (Id));
3861       pragma Assert (Id = Base_Type (Id));
3862       Set_Flag23 (Id, V);
3863    end Set_Has_Storage_Size_Clause;
3864
3865    procedure Set_Has_Stream_Size_Clause (Id : E; V : B := True) is
3866    begin
3867       pragma Assert (Is_Elementary_Type (Id));
3868       Set_Flag184 (Id, V);
3869    end Set_Has_Stream_Size_Clause;
3870
3871    procedure Set_Has_Subprogram_Descriptor (Id : E; V : B := True) is
3872    begin
3873       Set_Flag93 (Id, V);
3874    end Set_Has_Subprogram_Descriptor;
3875
3876    procedure Set_Has_Task (Id : E; V : B := True) is
3877    begin
3878       pragma Assert (Id = Base_Type (Id));
3879       Set_Flag30 (Id, V);
3880    end Set_Has_Task;
3881
3882    procedure Set_Has_Thunks (Id : E; V : B := True) is
3883    begin
3884       pragma Assert (Is_Tag (Id)
3885         and then Ekind (Id) = E_Constant);
3886       Set_Flag228 (Id, V);
3887    end Set_Has_Thunks;
3888
3889    procedure Set_Has_Unchecked_Union (Id : E; V : B := True) is
3890    begin
3891       pragma Assert (Id = Base_Type (Id));
3892       Set_Flag123 (Id, V);
3893    end Set_Has_Unchecked_Union;
3894
3895    procedure Set_Has_Unknown_Discriminants (Id : E; V : B := True) is
3896    begin
3897       pragma Assert (Is_Type (Id));
3898       Set_Flag72 (Id, V);
3899    end Set_Has_Unknown_Discriminants;
3900
3901    procedure Set_Has_Volatile_Components (Id : E; V : B := True) is
3902    begin
3903       pragma Assert (not Is_Type (Id) or else Id = Base_Type (Id));
3904       Set_Flag87 (Id, V);
3905    end Set_Has_Volatile_Components;
3906
3907    procedure Set_Has_Xref_Entry (Id : E; V : B := True) is
3908    begin
3909       Set_Flag182 (Id, V);
3910    end Set_Has_Xref_Entry;
3911
3912    procedure Set_Hiding_Loop_Variable (Id : E; V : E) is
3913    begin
3914       pragma Assert (Ekind (Id) = E_Variable);
3915       Set_Node8 (Id, V);
3916    end Set_Hiding_Loop_Variable;
3917
3918    procedure Set_Homonym (Id : E; V : E) is
3919    begin
3920       pragma Assert (Id /= V);
3921       Set_Node4 (Id, V);
3922    end Set_Homonym;
3923
3924    procedure Set_Implemented_By_Entry (Id : E; V : B := True) is
3925    begin
3926       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
3927       Set_Flag232 (Id, V);
3928    end Set_Implemented_By_Entry;
3929
3930    procedure Set_Interfaces (Id : E; V : L) is
3931    begin
3932       pragma Assert (Is_Record_Type (Id));
3933       Set_Elist25 (Id, V);
3934    end Set_Interfaces;
3935
3936    procedure Set_Interface_Alias (Id : E; V : E) is
3937    begin
3938       pragma Assert
3939         (Is_Internal (Id)
3940           and then Is_Hidden (Id)
3941           and then (Ekind_In (Id, E_Procedure, E_Function)));
3942       Set_Node25 (Id, V);
3943    end Set_Interface_Alias;
3944
3945    procedure Set_In_Package_Body (Id : E; V : B := True) is
3946    begin
3947       Set_Flag48 (Id, V);
3948    end Set_In_Package_Body;
3949
3950    procedure Set_In_Private_Part (Id : E; V : B := True) is
3951    begin
3952       Set_Flag45 (Id, V);
3953    end Set_In_Private_Part;
3954
3955    procedure Set_In_Use (Id : E; V : B := True) is
3956    begin
3957       pragma Assert (Nkind (Id) in N_Entity);
3958       Set_Flag8 (Id, V);
3959    end Set_In_Use;
3960
3961    procedure Set_Inner_Instances (Id : E; V : L) is
3962    begin
3963       Set_Elist23 (Id, V);
3964    end Set_Inner_Instances;
3965
3966    procedure Set_Interface_Name (Id : E; V : N) is
3967    begin
3968       Set_Node21 (Id, V);
3969    end Set_Interface_Name;
3970
3971    procedure Set_Is_Abstract_Subprogram (Id : E; V : B := True) is
3972    begin
3973       pragma Assert (Is_Overloadable (Id));
3974       Set_Flag19 (Id, V);
3975    end Set_Is_Abstract_Subprogram;
3976
3977    procedure Set_Is_Abstract_Type (Id : E; V : B := True) is
3978    begin
3979       pragma Assert (Is_Type (Id));
3980       Set_Flag146 (Id, V);
3981    end Set_Is_Abstract_Type;
3982
3983    procedure Set_Is_Local_Anonymous_Access (Id : E; V : B := True) is
3984    begin
3985       pragma Assert (Is_Access_Type (Id));
3986       Set_Flag194 (Id, V);
3987    end Set_Is_Local_Anonymous_Access;
3988
3989    procedure Set_Is_Access_Constant (Id : E; V : B := True) is
3990    begin
3991       pragma Assert (Is_Access_Type (Id));
3992       Set_Flag69 (Id, V);
3993    end Set_Is_Access_Constant;
3994
3995    procedure Set_Is_Ada_2005_Only (Id : E; V : B := True) is
3996    begin
3997       Set_Flag185 (Id, V);
3998    end Set_Is_Ada_2005_Only;
3999
4000    procedure Set_Is_Aliased (Id : E; V : B := True) is
4001    begin
4002       pragma Assert (Nkind (Id) in N_Entity);
4003       Set_Flag15 (Id, V);
4004    end Set_Is_Aliased;
4005
4006    procedure Set_Is_AST_Entry (Id : E; V : B := True) is
4007    begin
4008       pragma Assert (Is_Entry (Id));
4009       Set_Flag132 (Id, V);
4010    end Set_Is_AST_Entry;
4011
4012    procedure Set_Is_Asynchronous (Id : E; V : B := True) is
4013    begin
4014       pragma Assert
4015         (Ekind (Id) = E_Procedure or else Is_Type (Id));
4016       Set_Flag81 (Id, V);
4017    end Set_Is_Asynchronous;
4018
4019    procedure Set_Is_Atomic (Id : E; V : B := True) is
4020    begin
4021       Set_Flag85 (Id, V);
4022    end Set_Is_Atomic;
4023
4024    procedure Set_Is_Bit_Packed_Array (Id : E; V : B := True) is
4025    begin
4026       pragma Assert ((not V)
4027         or else (Is_Array_Type (Id) and then Id = Base_Type (Id)));
4028
4029       Set_Flag122 (Id, V);
4030    end Set_Is_Bit_Packed_Array;
4031
4032    procedure Set_Is_Called (Id : E; V : B := True) is
4033    begin
4034       pragma Assert (Ekind_In (Id, E_Procedure, E_Function));
4035       Set_Flag102 (Id, V);
4036    end Set_Is_Called;
4037
4038    procedure Set_Is_Character_Type (Id : E; V : B := True) is
4039    begin
4040       Set_Flag63 (Id, V);
4041    end Set_Is_Character_Type;
4042
4043    procedure Set_Is_Child_Unit (Id : E; V : B := True) is
4044    begin
4045       Set_Flag73 (Id, V);
4046    end Set_Is_Child_Unit;
4047
4048    procedure Set_Is_Class_Wide_Equivalent_Type (Id : E; V : B := True) is
4049    begin
4050       Set_Flag35 (Id, V);
4051    end Set_Is_Class_Wide_Equivalent_Type;
4052
4053    procedure Set_Is_Compilation_Unit (Id : E; V : B := True) is
4054    begin
4055       Set_Flag149 (Id, V);
4056    end Set_Is_Compilation_Unit;
4057
4058    procedure Set_Is_Completely_Hidden (Id : E; V : B := True) is
4059    begin
4060       pragma Assert (Ekind (Id) = E_Discriminant);
4061       Set_Flag103 (Id, V);
4062    end Set_Is_Completely_Hidden;
4063
4064    procedure Set_Is_Concurrent_Record_Type (Id : E; V : B := True) is
4065    begin
4066       Set_Flag20 (Id, V);
4067    end Set_Is_Concurrent_Record_Type;
4068
4069    procedure Set_Is_Constr_Subt_For_U_Nominal (Id : E; V : B := True) is
4070    begin
4071       Set_Flag80 (Id, V);
4072    end Set_Is_Constr_Subt_For_U_Nominal;
4073
4074    procedure Set_Is_Constr_Subt_For_UN_Aliased (Id : E; V : B := True) is
4075    begin
4076       Set_Flag141 (Id, V);
4077    end Set_Is_Constr_Subt_For_UN_Aliased;
4078
4079    procedure Set_Is_Constrained (Id : E; V : B := True) is
4080    begin
4081       pragma Assert (Nkind (Id) in N_Entity);
4082       Set_Flag12 (Id, V);
4083    end Set_Is_Constrained;
4084
4085    procedure Set_Is_Constructor (Id : E; V : B := True) is
4086    begin
4087       Set_Flag76 (Id, V);
4088    end Set_Is_Constructor;
4089
4090    procedure Set_Is_Controlled (Id : E; V : B := True) is
4091    begin
4092       pragma Assert (Id = Base_Type (Id));
4093       Set_Flag42 (Id, V);
4094    end Set_Is_Controlled;
4095
4096    procedure Set_Is_Controlling_Formal (Id : E; V : B := True) is
4097    begin
4098       pragma Assert (Is_Formal (Id));
4099       Set_Flag97 (Id, V);
4100    end Set_Is_Controlling_Formal;
4101
4102    procedure Set_Is_CPP_Class (Id : E; V : B := True) is
4103    begin
4104       Set_Flag74 (Id, V);
4105    end Set_Is_CPP_Class;
4106
4107    procedure Set_Is_Descendent_Of_Address (Id : E; V : B := True) is
4108    begin
4109       pragma Assert (Is_Type (Id));
4110       Set_Flag223 (Id, V);
4111    end Set_Is_Descendent_Of_Address;
4112
4113    procedure Set_Is_Discrim_SO_Function (Id : E; V : B := True) is
4114    begin
4115       Set_Flag176 (Id, V);
4116    end Set_Is_Discrim_SO_Function;
4117
4118    procedure Set_Is_Dispatch_Table_Entity (Id : E; V : B := True) is
4119    begin
4120       Set_Flag234 (Id, V);
4121    end Set_Is_Dispatch_Table_Entity;
4122
4123    procedure Set_Is_Dispatching_Operation (Id : E; V : B := True) is
4124    begin
4125       pragma Assert
4126         (V = False
4127            or else
4128          Is_Overloadable (Id)
4129            or else
4130          Ekind (Id) = E_Subprogram_Type);
4131
4132       Set_Flag6 (Id, V);
4133    end Set_Is_Dispatching_Operation;
4134
4135    procedure Set_Is_Eliminated (Id : E; V : B := True) is
4136    begin
4137       Set_Flag124 (Id, V);
4138    end Set_Is_Eliminated;
4139
4140    procedure Set_Is_Entry_Formal (Id : E; V : B := True) is
4141    begin
4142       Set_Flag52 (Id, V);
4143    end Set_Is_Entry_Formal;
4144
4145    procedure Set_Is_Exported (Id : E; V : B := True) is
4146    begin
4147       Set_Flag99 (Id, V);
4148    end Set_Is_Exported;
4149
4150    procedure Set_Is_First_Subtype (Id : E; V : B := True) is
4151    begin
4152       Set_Flag70 (Id, V);
4153    end Set_Is_First_Subtype;
4154
4155    procedure Set_Is_For_Access_Subtype (Id : E; V : B := True) is
4156    begin
4157       pragma Assert (Ekind_In (Id, E_Record_Subtype, E_Private_Subtype));
4158       Set_Flag118 (Id, V);
4159    end Set_Is_For_Access_Subtype;
4160
4161    procedure Set_Is_Formal_Subprogram (Id : E; V : B := True) is
4162    begin
4163       Set_Flag111 (Id, V);
4164    end Set_Is_Formal_Subprogram;
4165
4166    procedure Set_Is_Frozen (Id : E; V : B := True) is
4167    begin
4168       pragma Assert (Nkind (Id) in N_Entity);
4169       Set_Flag4 (Id, V);
4170    end Set_Is_Frozen;
4171
4172    procedure Set_Is_Generic_Actual_Type (Id : E; V : B := True) is
4173    begin
4174       pragma Assert (Is_Type (Id));
4175       Set_Flag94 (Id, V);
4176    end Set_Is_Generic_Actual_Type;
4177
4178    procedure Set_Is_Generic_Instance (Id : E; V : B := True) is
4179    begin
4180       Set_Flag130 (Id, V);
4181    end Set_Is_Generic_Instance;
4182
4183    procedure Set_Is_Generic_Type (Id : E; V : B := True) is
4184    begin
4185       pragma Assert (Nkind (Id) in N_Entity);
4186       Set_Flag13 (Id, V);
4187    end Set_Is_Generic_Type;
4188
4189    procedure Set_Is_Hidden (Id : E; V : B := True) is
4190    begin
4191       Set_Flag57 (Id, V);
4192    end Set_Is_Hidden;
4193
4194    procedure Set_Is_Hidden_Open_Scope (Id : E; V : B := True) is
4195    begin
4196       Set_Flag171 (Id, V);
4197    end Set_Is_Hidden_Open_Scope;
4198
4199    procedure Set_Is_Immediately_Visible (Id : E; V : B := True) is
4200    begin
4201       pragma Assert (Nkind (Id) in N_Entity);
4202       Set_Flag7 (Id, V);
4203    end Set_Is_Immediately_Visible;
4204
4205    procedure Set_Is_Imported (Id : E; V : B := True) is
4206    begin
4207       Set_Flag24 (Id, V);
4208    end Set_Is_Imported;
4209
4210    procedure Set_Is_Inlined (Id : E; V : B := True) is
4211    begin
4212       Set_Flag11 (Id, V);
4213    end Set_Is_Inlined;
4214
4215    procedure Set_Is_Interface (Id : E; V : B := True) is
4216    begin
4217       pragma Assert
4218         (Ekind_In (Id, E_Record_Type,
4219                        E_Record_Subtype,
4220                        E_Record_Type_With_Private,
4221                        E_Record_Subtype_With_Private,
4222                        E_Class_Wide_Type,
4223                        E_Class_Wide_Subtype));
4224       Set_Flag186 (Id, V);
4225    end Set_Is_Interface;
4226
4227    procedure Set_Is_Instantiated (Id : E; V : B := True) is
4228    begin
4229       Set_Flag126 (Id, V);
4230    end Set_Is_Instantiated;
4231
4232    procedure Set_Is_Internal (Id : E; V : B := True) is
4233    begin
4234       pragma Assert (Nkind (Id) in N_Entity);
4235       Set_Flag17 (Id, V);
4236    end Set_Is_Internal;
4237
4238    procedure Set_Is_Interrupt_Handler (Id : E; V : B := True) is
4239    begin
4240       pragma Assert (Nkind (Id) in N_Entity);
4241       Set_Flag89 (Id, V);
4242    end Set_Is_Interrupt_Handler;
4243
4244    procedure Set_Is_Intrinsic_Subprogram (Id : E; V : B := True) is
4245    begin
4246       Set_Flag64 (Id, V);
4247    end Set_Is_Intrinsic_Subprogram;
4248
4249    procedure Set_Is_Itype (Id : E; V : B := True) is
4250    begin
4251       Set_Flag91 (Id, V);
4252    end Set_Is_Itype;
4253
4254    procedure Set_Is_Known_Non_Null (Id : E; V : B := True) is
4255    begin
4256       Set_Flag37 (Id, V);
4257    end Set_Is_Known_Non_Null;
4258
4259    procedure Set_Is_Known_Null (Id : E; V : B := True) is
4260    begin
4261       Set_Flag204 (Id, V);
4262    end Set_Is_Known_Null;
4263
4264    procedure Set_Is_Known_Valid (Id : E; V : B := True) is
4265    begin
4266       Set_Flag170 (Id, V);
4267    end Set_Is_Known_Valid;
4268
4269    procedure Set_Is_Limited_Composite (Id : E; V : B := True) is
4270    begin
4271       pragma Assert (Is_Type (Id));
4272       Set_Flag106 (Id, V);
4273    end Set_Is_Limited_Composite;
4274
4275    procedure Set_Is_Limited_Interface (Id : E; V : B := True) is
4276    begin
4277       pragma Assert (Is_Interface (Id));
4278       Set_Flag197 (Id, V);
4279    end Set_Is_Limited_Interface;
4280
4281    procedure Set_Is_Limited_Record (Id : E; V : B := True) is
4282    begin
4283       Set_Flag25 (Id, V);
4284    end Set_Is_Limited_Record;
4285
4286    procedure Set_Is_Machine_Code_Subprogram (Id : E; V : B := True) is
4287    begin
4288       pragma Assert (Is_Subprogram (Id));
4289       Set_Flag137 (Id, V);
4290    end Set_Is_Machine_Code_Subprogram;
4291
4292    procedure Set_Is_Non_Static_Subtype (Id : E; V : B := True) is
4293    begin
4294       pragma Assert (Is_Type (Id));
4295       Set_Flag109 (Id, V);
4296    end Set_Is_Non_Static_Subtype;
4297
4298    procedure Set_Is_Null_Init_Proc (Id : E; V : B := True) is
4299    begin
4300       pragma Assert (Ekind (Id) = E_Procedure);
4301       Set_Flag178 (Id, V);
4302    end Set_Is_Null_Init_Proc;
4303
4304    procedure Set_Is_Obsolescent (Id : E; V : B := True) is
4305    begin
4306       Set_Flag153 (Id, V);
4307    end Set_Is_Obsolescent;
4308
4309    procedure Set_Is_Only_Out_Parameter (Id : E; V : B := True) is
4310    begin
4311       pragma Assert (Ekind (Id) = E_Out_Parameter);
4312       Set_Flag226 (Id, V);
4313    end Set_Is_Only_Out_Parameter;
4314
4315    procedure Set_Is_Optional_Parameter (Id : E; V : B := True) is
4316    begin
4317       pragma Assert (Is_Formal (Id));
4318       Set_Flag134 (Id, V);
4319    end Set_Is_Optional_Parameter;
4320
4321    procedure Set_Is_Overriding_Operation (Id : E; V : B := True) is
4322    begin
4323       pragma Assert (Is_Subprogram (Id));
4324       Set_Flag39 (Id, V);
4325    end Set_Is_Overriding_Operation;
4326
4327    procedure Set_Is_Package_Body_Entity (Id : E; V : B := True) is
4328    begin
4329       Set_Flag160 (Id, V);
4330    end Set_Is_Package_Body_Entity;
4331
4332    procedure Set_Is_Packed (Id : E; V : B := True) is
4333    begin
4334       pragma Assert (Id = Base_Type (Id));
4335       Set_Flag51 (Id, V);
4336    end Set_Is_Packed;
4337
4338    procedure Set_Is_Packed_Array_Type (Id : E; V : B := True) is
4339    begin
4340       Set_Flag138 (Id, V);
4341    end Set_Is_Packed_Array_Type;
4342
4343    procedure Set_Is_Potentially_Use_Visible (Id : E; V : B := True) is
4344    begin
4345       pragma Assert (Nkind (Id) in N_Entity);
4346       Set_Flag9 (Id, V);
4347    end Set_Is_Potentially_Use_Visible;
4348
4349    procedure Set_Is_Preelaborated (Id : E; V : B := True) is
4350    begin
4351       Set_Flag59 (Id, V);
4352    end Set_Is_Preelaborated;
4353
4354    procedure Set_Is_Primitive (Id : E; V : B := True) is
4355    begin
4356       pragma Assert
4357         (Is_Overloadable (Id)
4358           or else Ekind_In (Id, E_Generic_Function, E_Generic_Procedure));
4359       Set_Flag218 (Id, V);
4360    end Set_Is_Primitive;
4361
4362    procedure Set_Is_Primitive_Wrapper (Id : E; V : B := True) is
4363    begin
4364       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
4365       Set_Flag195 (Id, V);
4366    end Set_Is_Primitive_Wrapper;
4367
4368    procedure Set_Is_Private_Composite (Id : E; V : B := True) is
4369    begin
4370       pragma Assert (Is_Type (Id));
4371       Set_Flag107 (Id, V);
4372    end Set_Is_Private_Composite;
4373
4374    procedure Set_Is_Private_Descendant (Id : E; V : B := True) is
4375    begin
4376       Set_Flag53 (Id, V);
4377    end Set_Is_Private_Descendant;
4378
4379    procedure Set_Is_Private_Primitive (Id : E; V : B := True) is
4380    begin
4381       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
4382       Set_Flag245 (Id, V);
4383    end Set_Is_Private_Primitive;
4384
4385    procedure Set_Is_Protected_Interface (Id : E; V : B := True) is
4386    begin
4387       pragma Assert (Is_Interface (Id));
4388       Set_Flag198 (Id, V);
4389    end Set_Is_Protected_Interface;
4390
4391    procedure Set_Is_Public (Id : E; V : B := True) is
4392    begin
4393       pragma Assert (Nkind (Id) in N_Entity);
4394       Set_Flag10 (Id, V);
4395    end Set_Is_Public;
4396
4397    procedure Set_Is_Pure (Id : E; V : B := True) is
4398    begin
4399       Set_Flag44 (Id, V);
4400    end Set_Is_Pure;
4401
4402    procedure Set_Is_Pure_Unit_Access_Type (Id : E; V : B := True) is
4403    begin
4404       pragma Assert (Is_Access_Type (Id));
4405       Set_Flag189 (Id, V);
4406    end Set_Is_Pure_Unit_Access_Type;
4407
4408    procedure Set_Is_RACW_Stub_Type (Id : E; V : B := True) is
4409    begin
4410       pragma Assert (Is_Type (Id));
4411       Set_Flag244 (Id, V);
4412    end Set_Is_RACW_Stub_Type;
4413
4414    procedure Set_Is_Raised (Id : E; V : B := True) is
4415    begin
4416       pragma Assert (Ekind (Id) = E_Exception);
4417       Set_Flag224 (Id, V);
4418    end Set_Is_Raised;
4419
4420    procedure Set_Is_Remote_Call_Interface (Id : E; V : B := True) is
4421    begin
4422       Set_Flag62 (Id, V);
4423    end Set_Is_Remote_Call_Interface;
4424
4425    procedure Set_Is_Remote_Types (Id : E; V : B := True) is
4426    begin
4427       Set_Flag61 (Id, V);
4428    end Set_Is_Remote_Types;
4429
4430    procedure Set_Is_Renaming_Of_Object (Id : E; V : B := True) is
4431    begin
4432       Set_Flag112 (Id, V);
4433    end Set_Is_Renaming_Of_Object;
4434
4435    procedure Set_Is_Return_Object (Id : E; V : B := True) is
4436    begin
4437       Set_Flag209 (Id, V);
4438    end Set_Is_Return_Object;
4439
4440    procedure Set_Is_Shared_Passive (Id : E; V : B := True) is
4441    begin
4442       Set_Flag60 (Id, V);
4443    end Set_Is_Shared_Passive;
4444
4445    procedure Set_Is_Statically_Allocated (Id : E; V : B := True) is
4446    begin
4447       pragma Assert
4448         (Is_Type (Id)
4449           or else Ekind_In (Id, E_Exception,
4450                                 E_Variable,
4451                                 E_Constant,
4452                                 E_Void));
4453       Set_Flag28 (Id, V);
4454    end Set_Is_Statically_Allocated;
4455
4456    procedure Set_Is_Synchronized_Interface (Id : E; V : B := True) is
4457    begin
4458       pragma Assert (Is_Interface (Id));
4459       Set_Flag199 (Id, V);
4460    end Set_Is_Synchronized_Interface;
4461
4462    procedure Set_Is_Tag (Id : E; V : B := True) is
4463    begin
4464       pragma Assert (Ekind_In (Id, E_Component, E_Constant));
4465       Set_Flag78 (Id, V);
4466    end Set_Is_Tag;
4467
4468    procedure Set_Is_Tagged_Type (Id : E; V : B := True) is
4469    begin
4470       Set_Flag55 (Id, V);
4471    end Set_Is_Tagged_Type;
4472
4473    procedure Set_Is_Task_Interface (Id : E; V : B := True) is
4474    begin
4475       pragma Assert (Is_Interface (Id));
4476       Set_Flag200 (Id, V);
4477    end Set_Is_Task_Interface;
4478
4479    procedure Set_Is_Thunk (Id : E; V : B := True) is
4480    begin
4481       Set_Flag225 (Id, V);
4482    end Set_Is_Thunk;
4483
4484    procedure Set_Is_Trivial_Subprogram (Id : E; V : B := True) is
4485    begin
4486       Set_Flag235 (Id, V);
4487    end Set_Is_Trivial_Subprogram;
4488
4489    procedure Set_Is_True_Constant (Id : E; V : B := True) is
4490    begin
4491       Set_Flag163 (Id, V);
4492    end Set_Is_True_Constant;
4493
4494    procedure Set_Is_Unchecked_Union (Id : E; V : B := True) is
4495    begin
4496       pragma Assert (Id = Base_Type (Id));
4497       Set_Flag117 (Id, V);
4498    end Set_Is_Unchecked_Union;
4499
4500    procedure Set_Is_Underlying_Record_View (Id : E; V : B := True) is
4501    begin
4502       pragma Assert (Ekind (Id) = E_Record_Type);
4503       Set_Flag246 (Id, V);
4504    end Set_Is_Underlying_Record_View;
4505
4506    procedure Set_Is_Unsigned_Type (Id : E; V : B := True) is
4507    begin
4508       pragma Assert (Is_Discrete_Or_Fixed_Point_Type (Id));
4509       Set_Flag144 (Id, V);
4510    end Set_Is_Unsigned_Type;
4511
4512    procedure Set_Is_Valued_Procedure (Id : E; V : B := True) is
4513    begin
4514       pragma Assert (Ekind (Id) = E_Procedure);
4515       Set_Flag127 (Id, V);
4516    end Set_Is_Valued_Procedure;
4517
4518    procedure Set_Is_Visible_Child_Unit (Id : E; V : B := True) is
4519    begin
4520       pragma Assert (Is_Child_Unit (Id));
4521       Set_Flag116 (Id, V);
4522    end Set_Is_Visible_Child_Unit;
4523
4524    procedure Set_Is_Visible_Formal (Id : E; V : B := True) is
4525    begin
4526       Set_Flag206 (Id, V);
4527    end Set_Is_Visible_Formal;
4528
4529    procedure Set_Is_VMS_Exception (Id : E; V : B := True) is
4530    begin
4531       pragma Assert (Ekind (Id) = E_Exception);
4532       Set_Flag133 (Id, V);
4533    end Set_Is_VMS_Exception;
4534
4535    procedure Set_Is_Volatile (Id : E; V : B := True) is
4536    begin
4537       pragma Assert (Nkind (Id) in N_Entity);
4538       Set_Flag16 (Id, V);
4539    end Set_Is_Volatile;
4540
4541    procedure Set_Itype_Printed (Id : E; V : B := True) is
4542    begin
4543       pragma Assert (Is_Itype (Id));
4544       Set_Flag202 (Id, V);
4545    end Set_Itype_Printed;
4546
4547    procedure Set_Kill_Elaboration_Checks (Id : E; V : B := True) is
4548    begin
4549       Set_Flag32 (Id, V);
4550    end Set_Kill_Elaboration_Checks;
4551
4552    procedure Set_Kill_Range_Checks (Id : E; V : B := True) is
4553    begin
4554       Set_Flag33 (Id, V);
4555    end Set_Kill_Range_Checks;
4556
4557    procedure Set_Kill_Tag_Checks (Id : E; V : B := True) is
4558    begin
4559       Set_Flag34 (Id, V);
4560    end Set_Kill_Tag_Checks;
4561
4562    procedure Set_Known_To_Have_Preelab_Init (Id : E; V : B := True) is
4563    begin
4564       pragma Assert (Is_Type (Id));
4565       Set_Flag207 (Id, V);
4566    end Set_Known_To_Have_Preelab_Init;
4567
4568    procedure Set_Last_Assignment (Id : E; V : N) is
4569    begin
4570       pragma Assert (Is_Assignable (Id));
4571       Set_Node26 (Id, V);
4572    end Set_Last_Assignment;
4573
4574    procedure Set_Last_Entity (Id : E; V : E) is
4575    begin
4576       Set_Node20 (Id, V);
4577    end Set_Last_Entity;
4578
4579    procedure Set_Limited_View (Id : E; V : E) is
4580    begin
4581       pragma Assert (Ekind (Id) = E_Package);
4582       Set_Node23 (Id, V);
4583    end Set_Limited_View;
4584
4585    procedure Set_Lit_Indexes (Id : E; V : E) is
4586    begin
4587       pragma Assert (Is_Enumeration_Type (Id) and then Root_Type (Id) = Id);
4588       Set_Node15 (Id, V);
4589    end Set_Lit_Indexes;
4590
4591    procedure Set_Lit_Strings (Id : E; V : E) is
4592    begin
4593       pragma Assert (Is_Enumeration_Type (Id) and then Root_Type (Id) = Id);
4594       Set_Node16 (Id, V);
4595    end Set_Lit_Strings;
4596
4597    procedure Set_Low_Bound_Tested (Id : E; V : B := True) is
4598    begin
4599       pragma Assert (Is_Formal (Id));
4600       Set_Flag205 (Id, V);
4601    end Set_Low_Bound_Tested;
4602
4603    procedure Set_Machine_Radix_10 (Id : E; V : B := True) is
4604    begin
4605       pragma Assert (Is_Decimal_Fixed_Point_Type (Id));
4606       Set_Flag84 (Id, V);
4607    end Set_Machine_Radix_10;
4608
4609    procedure Set_Master_Id (Id : E; V : E) is
4610    begin
4611       pragma Assert (Is_Access_Type (Id));
4612       Set_Node17 (Id, V);
4613    end Set_Master_Id;
4614
4615    procedure Set_Materialize_Entity (Id : E; V : B := True) is
4616    begin
4617       Set_Flag168 (Id, V);
4618    end Set_Materialize_Entity;
4619
4620    procedure Set_Mechanism (Id : E; V : M) is
4621    begin
4622       pragma Assert (Ekind (Id) = E_Function or else Is_Formal (Id));
4623       Set_Uint8 (Id, UI_From_Int (V));
4624    end Set_Mechanism;
4625
4626    procedure Set_Modulus (Id : E; V : U) is
4627    begin
4628       pragma Assert (Ekind (Id) = E_Modular_Integer_Type);
4629       Set_Uint17 (Id, V);
4630    end Set_Modulus;
4631
4632    procedure Set_Must_Be_On_Byte_Boundary (Id : E; V : B := True) is
4633    begin
4634       pragma Assert (Is_Type (Id));
4635       Set_Flag183 (Id, V);
4636    end Set_Must_Be_On_Byte_Boundary;
4637
4638    procedure Set_Must_Have_Preelab_Init (Id : E; V : B := True) is
4639    begin
4640       pragma Assert (Is_Type (Id));
4641       Set_Flag208 (Id, V);
4642    end Set_Must_Have_Preelab_Init;
4643
4644    procedure Set_Needs_Debug_Info (Id : E; V : B := True) is
4645    begin
4646       Set_Flag147 (Id, V);
4647    end Set_Needs_Debug_Info;
4648
4649    procedure Set_Needs_No_Actuals (Id : E; V : B := True) is
4650    begin
4651       pragma Assert
4652         (Is_Overloadable (Id)
4653           or else Ekind_In (Id, E_Subprogram_Type, E_Entry_Family));
4654       Set_Flag22 (Id, V);
4655    end Set_Needs_No_Actuals;
4656
4657    procedure Set_Never_Set_In_Source (Id : E; V : B := True) is
4658    begin
4659       Set_Flag115 (Id, V);
4660    end Set_Never_Set_In_Source;
4661
4662    procedure Set_Next_Inlined_Subprogram (Id : E; V : E) is
4663    begin
4664       Set_Node12 (Id, V);
4665    end Set_Next_Inlined_Subprogram;
4666
4667    procedure Set_No_Pool_Assigned (Id : E; V : B := True) is
4668    begin
4669       pragma Assert (Is_Access_Type (Id) and then Id = Base_Type (Id));
4670       Set_Flag131 (Id, V);
4671    end Set_No_Pool_Assigned;
4672
4673    procedure Set_No_Return (Id : E; V : B := True) is
4674    begin
4675       pragma Assert
4676         (V = False or else Ekind_In (Id, E_Procedure, E_Generic_Procedure));
4677       Set_Flag113 (Id, V);
4678    end Set_No_Return;
4679
4680    procedure Set_No_Strict_Aliasing (Id : E; V : B := True) is
4681    begin
4682       pragma Assert (Is_Access_Type (Id) and then Id = Base_Type (Id));
4683       Set_Flag136 (Id, V);
4684    end Set_No_Strict_Aliasing;
4685
4686    procedure Set_Non_Binary_Modulus (Id : E; V : B := True) is
4687    begin
4688       pragma Assert (Is_Type (Id) and then Id = Base_Type (Id));
4689       Set_Flag58 (Id, V);
4690    end Set_Non_Binary_Modulus;
4691
4692    procedure Set_Non_Limited_View (Id : E; V : E) is
4693    begin
4694       pragma Assert (Ekind (Id) in Incomplete_Kind);
4695       Set_Node17 (Id, V);
4696    end Set_Non_Limited_View;
4697
4698    procedure Set_Nonzero_Is_True (Id : E; V : B := True) is
4699    begin
4700       pragma Assert
4701         (Root_Type (Id) = Standard_Boolean
4702           and then Ekind (Id) = E_Enumeration_Type);
4703       Set_Flag162 (Id, V);
4704    end Set_Nonzero_Is_True;
4705
4706    procedure Set_Normalized_First_Bit (Id : E; V : U) is
4707    begin
4708       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
4709       Set_Uint8 (Id, V);
4710    end Set_Normalized_First_Bit;
4711
4712    procedure Set_Normalized_Position (Id : E; V : U) is
4713    begin
4714       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
4715       Set_Uint14 (Id, V);
4716    end Set_Normalized_Position;
4717
4718    procedure Set_Normalized_Position_Max (Id : E; V : U) is
4719    begin
4720       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
4721       Set_Uint10 (Id, V);
4722    end Set_Normalized_Position_Max;
4723
4724    procedure Set_OK_To_Rename (Id : E; V : B := True) is
4725    begin
4726       pragma Assert (Ekind (Id) = E_Variable);
4727       Set_Flag247 (Id, V);
4728    end Set_OK_To_Rename;
4729
4730    procedure Set_OK_To_Reorder_Components (Id : E; V : B := True) is
4731    begin
4732       pragma Assert
4733         (Is_Record_Type (Id) and then Id = Base_Type (Id));
4734       Set_Flag239 (Id, V);
4735    end Set_OK_To_Reorder_Components;
4736
4737    procedure Set_Optimize_Alignment_Space (Id : E; V : B := True) is
4738    begin
4739       pragma Assert
4740         (Is_Type (Id) or else Ekind_In (Id, E_Constant, E_Variable));
4741       Set_Flag241 (Id, V);
4742    end Set_Optimize_Alignment_Space;
4743
4744    procedure Set_Optimize_Alignment_Time (Id : E; V : B := True) is
4745    begin
4746       pragma Assert
4747         (Is_Type (Id) or else Ekind_In (Id, E_Constant, E_Variable));
4748       Set_Flag242 (Id, V);
4749    end Set_Optimize_Alignment_Time;
4750
4751    procedure Set_Original_Array_Type (Id : E; V : E) is
4752    begin
4753       pragma Assert (Is_Array_Type (Id) or else Is_Modular_Integer_Type (Id));
4754       Set_Node21 (Id, V);
4755    end Set_Original_Array_Type;
4756
4757    procedure Set_Original_Record_Component (Id : E; V : E) is
4758    begin
4759       pragma Assert (Ekind_In (Id, E_Void, E_Component, E_Discriminant));
4760       Set_Node22 (Id, V);
4761    end Set_Original_Record_Component;
4762
4763    procedure Set_Overlays_Constant (Id : E; V : B := True) is
4764    begin
4765       Set_Flag243 (Id, V);
4766    end Set_Overlays_Constant;
4767
4768    procedure Set_Overridden_Operation (Id : E; V : E) is
4769    begin
4770       Set_Node26 (Id, V);
4771    end Set_Overridden_Operation;
4772
4773    procedure Set_Package_Instantiation (Id : E; V : N) is
4774    begin
4775       pragma Assert (Ekind_In (Id, E_Void, E_Generic_Package, E_Package));
4776       Set_Node26 (Id, V);
4777    end Set_Package_Instantiation;
4778
4779    procedure Set_Packed_Array_Type (Id : E; V : E) is
4780    begin
4781       pragma Assert (Is_Array_Type (Id));
4782       Set_Node23 (Id, V);
4783    end Set_Packed_Array_Type;
4784
4785    procedure Set_Parent_Subtype (Id : E; V : E) is
4786    begin
4787       pragma Assert (Ekind (Id) = E_Record_Type);
4788       Set_Node19 (Id, V);
4789    end Set_Parent_Subtype;
4790
4791    procedure Set_Postcondition_Proc (Id : E; V : E) is
4792    begin
4793       pragma Assert (Ekind (Id) = E_Procedure);
4794       Set_Node8 (Id, V);
4795    end Set_Postcondition_Proc;
4796
4797    procedure Set_Primitive_Operations (Id : E; V : L) is
4798    begin
4799       pragma Assert (Is_Tagged_Type (Id));
4800       Set_Elist15 (Id, V);
4801    end Set_Primitive_Operations;
4802
4803    procedure Set_Prival (Id : E; V : E) is
4804    begin
4805       pragma Assert (Is_Protected_Component (Id));
4806       Set_Node17 (Id, V);
4807    end Set_Prival;
4808
4809    procedure Set_Prival_Link (Id : E; V : E) is
4810    begin
4811       pragma Assert (Ekind_In (Id, E_Constant, E_Variable));
4812       Set_Node20 (Id, V);
4813    end Set_Prival_Link;
4814
4815    procedure Set_Private_Dependents (Id : E; V : L) is
4816    begin
4817       pragma Assert (Is_Incomplete_Or_Private_Type (Id));
4818       Set_Elist18 (Id, V);
4819    end Set_Private_Dependents;
4820
4821    procedure Set_Private_View (Id : E; V : N) is
4822    begin
4823       pragma Assert (Is_Private_Type (Id));
4824       Set_Node22 (Id, V);
4825    end Set_Private_View;
4826
4827    procedure Set_Protected_Body_Subprogram (Id : E; V : E) is
4828    begin
4829       pragma Assert (Is_Subprogram (Id) or else Is_Entry (Id));
4830       Set_Node11 (Id, V);
4831    end Set_Protected_Body_Subprogram;
4832
4833    procedure Set_Protected_Formal (Id : E; V : E) is
4834    begin
4835       pragma Assert (Is_Formal (Id));
4836       Set_Node22 (Id, V);
4837    end Set_Protected_Formal;
4838
4839    procedure Set_Protection_Object (Id : E; V : E) is
4840    begin
4841       pragma Assert (Ekind_In (Id, E_Entry,
4842                                    E_Entry_Family,
4843                                    E_Function,
4844                                    E_Procedure));
4845       Set_Node23 (Id, V);
4846    end Set_Protection_Object;
4847
4848    procedure Set_Reachable (Id : E; V : B := True) is
4849    begin
4850       Set_Flag49 (Id, V);
4851    end Set_Reachable;
4852
4853    procedure Set_Referenced (Id : E; V : B := True) is
4854    begin
4855       Set_Flag156 (Id, V);
4856    end Set_Referenced;
4857
4858    procedure Set_Referenced_As_LHS (Id : E; V : B := True) is
4859    begin
4860       Set_Flag36 (Id, V);
4861    end Set_Referenced_As_LHS;
4862
4863    procedure Set_Referenced_As_Out_Parameter (Id : E; V : B := True) is
4864    begin
4865       Set_Flag227 (Id, V);
4866    end Set_Referenced_As_Out_Parameter;
4867
4868    procedure Set_Referenced_Object (Id : E; V : N) is
4869    begin
4870       pragma Assert (Is_Type (Id));
4871       Set_Node10 (Id, V);
4872    end Set_Referenced_Object;
4873
4874    procedure Set_Register_Exception_Call (Id : E; V : N) is
4875    begin
4876       pragma Assert (Ekind (Id) = E_Exception);
4877       Set_Node20 (Id, V);
4878    end Set_Register_Exception_Call;
4879
4880    procedure Set_Related_Array_Object (Id : E; V : E) is
4881    begin
4882       pragma Assert (Is_Array_Type (Id));
4883       Set_Node19 (Id, V);
4884    end Set_Related_Array_Object;
4885
4886    procedure Set_Related_Expression (Id : E; V : N) is
4887    begin
4888       Set_Node24 (Id, V);
4889    end Set_Related_Expression;
4890
4891    procedure Set_Related_Instance (Id : E; V : E) is
4892    begin
4893       pragma Assert (Ekind_In (Id, E_Package, E_Package_Body));
4894       Set_Node15 (Id, V);
4895    end Set_Related_Instance;
4896
4897    procedure Set_Related_Type (Id : E; V : E) is
4898    begin
4899       pragma Assert (Ekind_In (Id, E_Component, E_Constant));
4900       Set_Node26 (Id, V);
4901    end Set_Related_Type;
4902
4903    procedure Set_Relative_Deadline_Variable (Id : E; V : E) is
4904    begin
4905       pragma Assert (Is_Task_Type (Id) and then Id = Base_Type (Id));
4906       Set_Node26 (Id, V);
4907    end Set_Relative_Deadline_Variable;
4908
4909    procedure Set_Renamed_Entity (Id : E; V : N) is
4910    begin
4911       Set_Node18 (Id, V);
4912    end Set_Renamed_Entity;
4913
4914    procedure Set_Renamed_In_Spec (Id : E; V : B := True) is
4915    begin
4916       pragma Assert (Ekind (Id) = E_Package);
4917       Set_Flag231 (Id, V);
4918    end Set_Renamed_In_Spec;
4919
4920    procedure Set_Renamed_Object (Id : E; V : N) is
4921    begin
4922       Set_Node18 (Id, V);
4923    end Set_Renamed_Object;
4924
4925    procedure Set_Renaming_Map (Id : E; V : U) is
4926    begin
4927       Set_Uint9 (Id, V);
4928    end Set_Renaming_Map;
4929
4930    procedure Set_Requires_Overriding (Id : E; V : B := True) is
4931    begin
4932       pragma Assert (Is_Overloadable (Id));
4933       Set_Flag213 (Id, V);
4934    end Set_Requires_Overriding;
4935
4936    procedure Set_Return_Present (Id : E; V : B := True) is
4937    begin
4938       Set_Flag54 (Id, V);
4939    end Set_Return_Present;
4940
4941    procedure Set_Return_Applies_To (Id : E; V : N) is
4942    begin
4943       Set_Node8 (Id, V);
4944    end Set_Return_Applies_To;
4945
4946    procedure Set_Returns_By_Ref (Id : E; V : B := True) is
4947    begin
4948       Set_Flag90 (Id, V);
4949    end Set_Returns_By_Ref;
4950
4951    procedure Set_Reverse_Bit_Order (Id : E; V : B := True) is
4952    begin
4953       pragma Assert
4954         (Is_Record_Type (Id) and then Id = Base_Type (Id));
4955       Set_Flag164 (Id, V);
4956    end Set_Reverse_Bit_Order;
4957
4958    procedure Set_RM_Size (Id : E; V : U) is
4959    begin
4960       pragma Assert (Is_Type (Id));
4961       Set_Uint13 (Id, V);
4962    end Set_RM_Size;
4963
4964    procedure Set_Scalar_Range (Id : E; V : N) is
4965    begin
4966       Set_Node20 (Id, V);
4967    end Set_Scalar_Range;
4968
4969    procedure Set_Scale_Value (Id : E; V : U) is
4970    begin
4971       Set_Uint15 (Id, V);
4972    end Set_Scale_Value;
4973
4974    procedure Set_Scope_Depth_Value (Id : E; V : U) is
4975    begin
4976       pragma Assert (not Is_Record_Type (Id));
4977       Set_Uint22 (Id, V);
4978    end Set_Scope_Depth_Value;
4979
4980    procedure Set_Sec_Stack_Needed_For_Return (Id : E; V : B := True) is
4981    begin
4982       Set_Flag167 (Id, V);
4983    end Set_Sec_Stack_Needed_For_Return;
4984
4985    procedure Set_Shadow_Entities (Id : E; V : S) is
4986    begin
4987       pragma Assert (Ekind_In (Id, E_Package, E_Generic_Package));
4988       Set_List14 (Id, V);
4989    end Set_Shadow_Entities;
4990
4991    procedure Set_Shared_Var_Procs_Instance (Id : E; V : E) is
4992    begin
4993       pragma Assert (Ekind (Id) = E_Variable);
4994       Set_Node22 (Id, V);
4995    end Set_Shared_Var_Procs_Instance;
4996
4997    procedure Set_Size_Check_Code (Id : E; V : N) is
4998    begin
4999       pragma Assert (Ekind_In (Id, E_Constant, E_Variable));
5000       Set_Node19 (Id, V);
5001    end Set_Size_Check_Code;
5002
5003    procedure Set_Size_Depends_On_Discriminant (Id : E; V : B := True) is
5004    begin
5005       Set_Flag177 (Id, V);
5006    end Set_Size_Depends_On_Discriminant;
5007
5008    procedure Set_Size_Known_At_Compile_Time (Id : E; V : B := True) is
5009    begin
5010       Set_Flag92 (Id, V);
5011    end Set_Size_Known_At_Compile_Time;
5012
5013    procedure Set_Small_Value (Id : E; V : R) is
5014    begin
5015       pragma Assert (Is_Fixed_Point_Type (Id));
5016       Set_Ureal21 (Id, V);
5017    end Set_Small_Value;
5018
5019    procedure Set_Spec_Entity (Id : E; V : E) is
5020    begin
5021       pragma Assert (Ekind (Id) = E_Package_Body or else Is_Formal (Id));
5022       Set_Node19 (Id, V);
5023    end Set_Spec_Entity;
5024
5025    procedure Set_Spec_PPC_List (Id : E; V : N) is
5026    begin
5027       pragma Assert (Is_Subprogram (Id) or else Is_Generic_Subprogram (Id));
5028       Set_Node24 (Id, V);
5029    end Set_Spec_PPC_List;
5030
5031    procedure Set_Storage_Size_Variable (Id : E; V : E) is
5032    begin
5033       pragma Assert (Is_Access_Type (Id) or else Is_Task_Type (Id));
5034       pragma Assert (Id = Base_Type (Id));
5035       Set_Node15 (Id, V);
5036    end Set_Storage_Size_Variable;
5037
5038    procedure Set_Static_Elaboration_Desired (Id : E; V : B) is
5039    begin
5040       pragma Assert (Ekind (Id) = E_Package);
5041       Set_Flag77 (Id, V);
5042    end Set_Static_Elaboration_Desired;
5043
5044    procedure Set_Static_Initialization (Id : E; V : N) is
5045    begin
5046       pragma Assert
5047         (Ekind (Id) = E_Procedure and then not Is_Dispatching_Operation (Id));
5048       Set_Node26 (Id, V);
5049    end Set_Static_Initialization;
5050
5051    procedure Set_Stored_Constraint (Id : E; V : L) is
5052    begin
5053       pragma Assert (Nkind (Id) in N_Entity);
5054       Set_Elist23 (Id, V);
5055    end Set_Stored_Constraint;
5056
5057    procedure Set_Strict_Alignment (Id : E; V : B := True) is
5058    begin
5059       pragma Assert (Id = Base_Type (Id));
5060       Set_Flag145 (Id, V);
5061    end Set_Strict_Alignment;
5062
5063    procedure Set_String_Literal_Length (Id : E; V : U) is
5064    begin
5065       pragma Assert (Ekind (Id) = E_String_Literal_Subtype);
5066       Set_Uint16 (Id, V);
5067    end Set_String_Literal_Length;
5068
5069    procedure Set_String_Literal_Low_Bound (Id : E; V : N) is
5070    begin
5071       pragma Assert (Ekind (Id) = E_String_Literal_Subtype);
5072       Set_Node15 (Id, V);
5073    end Set_String_Literal_Low_Bound;
5074
5075    procedure Set_Suppress_Elaboration_Warnings (Id : E; V : B := True) is
5076    begin
5077       Set_Flag148 (Id, V);
5078    end Set_Suppress_Elaboration_Warnings;
5079
5080    procedure Set_Suppress_Init_Proc (Id : E; V : B := True) is
5081    begin
5082       pragma Assert (Id = Base_Type (Id));
5083       Set_Flag105 (Id, V);
5084    end Set_Suppress_Init_Proc;
5085
5086    procedure Set_Suppress_Style_Checks (Id : E; V : B := True) is
5087    begin
5088       Set_Flag165 (Id, V);
5089    end Set_Suppress_Style_Checks;
5090
5091    procedure Set_Suppress_Value_Tracking_On_Call (Id : E; V : B := True) is
5092    begin
5093       Set_Flag217 (Id, V);
5094    end Set_Suppress_Value_Tracking_On_Call;
5095
5096    procedure Set_Task_Body_Procedure (Id : E; V : N) is
5097    begin
5098       pragma Assert (Ekind (Id) in Task_Kind);
5099       Set_Node25 (Id, V);
5100    end Set_Task_Body_Procedure;
5101
5102    procedure Set_Treat_As_Volatile (Id : E; V : B := True) is
5103    begin
5104       Set_Flag41 (Id, V);
5105    end Set_Treat_As_Volatile;
5106
5107    procedure Set_Underlying_Full_View (Id : E; V : E) is
5108    begin
5109       pragma Assert (Ekind (Id) in Private_Kind);
5110       Set_Node19 (Id, V);
5111    end Set_Underlying_Full_View;
5112
5113    procedure Set_Underlying_Record_View (Id : E; V : E) is
5114    begin
5115       pragma Assert (Ekind (Id) = E_Record_Type);
5116       Set_Node24 (Id, V);
5117    end Set_Underlying_Record_View;
5118
5119    procedure Set_Universal_Aliasing (Id : E; V : B := True) is
5120    begin
5121       pragma Assert (Is_Type (Id) and then Id = Base_Type (Id));
5122       Set_Flag216 (Id, V);
5123    end Set_Universal_Aliasing;
5124
5125    procedure Set_Unset_Reference (Id : E; V : N) is
5126    begin
5127       Set_Node16 (Id, V);
5128    end Set_Unset_Reference;
5129
5130    procedure Set_Uses_Sec_Stack (Id : E; V : B := True) is
5131    begin
5132       Set_Flag95 (Id, V);
5133    end Set_Uses_Sec_Stack;
5134
5135    procedure Set_Used_As_Generic_Actual (Id : E; V : B := True) is
5136    begin
5137       Set_Flag222 (Id, V);
5138    end Set_Used_As_Generic_Actual;
5139
5140    procedure Set_Vax_Float (Id : E; V : B := True) is
5141    begin
5142       pragma Assert (Id = Base_Type (Id));
5143       Set_Flag151 (Id, V);
5144    end Set_Vax_Float;
5145
5146    procedure Set_Warnings_Off (Id : E; V : B := True) is
5147    begin
5148       Set_Flag96 (Id, V);
5149    end Set_Warnings_Off;
5150
5151    procedure Set_Warnings_Off_Used (Id : E; V : B := True) is
5152    begin
5153       Set_Flag236 (Id, V);
5154    end Set_Warnings_Off_Used;
5155
5156    procedure Set_Warnings_Off_Used_Unmodified (Id : E; V : B := True) is
5157    begin
5158       Set_Flag237 (Id, V);
5159    end Set_Warnings_Off_Used_Unmodified;
5160
5161    procedure Set_Warnings_Off_Used_Unreferenced (Id : E; V : B := True) is
5162    begin
5163       Set_Flag238 (Id, V);
5164    end Set_Warnings_Off_Used_Unreferenced;
5165
5166    procedure Set_Was_Hidden (Id : E; V : B := True) is
5167    begin
5168       Set_Flag196 (Id, V);
5169    end Set_Was_Hidden;
5170
5171    procedure Set_Wrapped_Entity (Id : E; V : E) is
5172    begin
5173       pragma Assert (Ekind_In (Id, E_Function, E_Procedure)
5174                       and then Is_Primitive_Wrapper (Id));
5175       Set_Node27 (Id, V);
5176    end Set_Wrapped_Entity;
5177
5178    -----------------------------------
5179    -- Field Initialization Routines --
5180    -----------------------------------
5181
5182    procedure Init_Alignment (Id : E) is
5183    begin
5184       Set_Uint14 (Id, Uint_0);
5185    end Init_Alignment;
5186
5187    procedure Init_Alignment (Id : E; V : Int) is
5188    begin
5189       Set_Uint14 (Id, UI_From_Int (V));
5190    end Init_Alignment;
5191
5192    procedure Init_Component_Bit_Offset (Id : E) is
5193    begin
5194       Set_Uint11 (Id, No_Uint);
5195    end Init_Component_Bit_Offset;
5196
5197    procedure Init_Component_Bit_Offset (Id : E; V : Int) is
5198    begin
5199       Set_Uint11 (Id, UI_From_Int (V));
5200    end Init_Component_Bit_Offset;
5201
5202    procedure Init_Component_Size (Id : E) is
5203    begin
5204       Set_Uint22 (Id, Uint_0);
5205    end Init_Component_Size;
5206
5207    procedure Init_Component_Size (Id : E; V : Int) is
5208    begin
5209       Set_Uint22 (Id, UI_From_Int (V));
5210    end Init_Component_Size;
5211
5212    procedure Init_Digits_Value (Id : E) is
5213    begin
5214       Set_Uint17 (Id, Uint_0);
5215    end Init_Digits_Value;
5216
5217    procedure Init_Digits_Value (Id : E; V : Int) is
5218    begin
5219       Set_Uint17 (Id, UI_From_Int (V));
5220    end Init_Digits_Value;
5221
5222    procedure Init_Esize (Id : E) is
5223    begin
5224       Set_Uint12 (Id, Uint_0);
5225    end Init_Esize;
5226
5227    procedure Init_Esize (Id : E; V : Int) is
5228    begin
5229       Set_Uint12 (Id, UI_From_Int (V));
5230    end Init_Esize;
5231
5232    procedure Init_Normalized_First_Bit (Id : E) is
5233    begin
5234       Set_Uint8 (Id, No_Uint);
5235    end Init_Normalized_First_Bit;
5236
5237    procedure Init_Normalized_First_Bit (Id : E; V : Int) is
5238    begin
5239       Set_Uint8 (Id, UI_From_Int (V));
5240    end Init_Normalized_First_Bit;
5241
5242    procedure Init_Normalized_Position (Id : E) is
5243    begin
5244       Set_Uint14 (Id, No_Uint);
5245    end Init_Normalized_Position;
5246
5247    procedure Init_Normalized_Position (Id : E; V : Int) is
5248    begin
5249       Set_Uint14 (Id, UI_From_Int (V));
5250    end Init_Normalized_Position;
5251
5252    procedure Init_Normalized_Position_Max (Id : E) is
5253    begin
5254       Set_Uint10 (Id, No_Uint);
5255    end Init_Normalized_Position_Max;
5256
5257    procedure Init_Normalized_Position_Max (Id : E; V : Int) is
5258    begin
5259       Set_Uint10 (Id, UI_From_Int (V));
5260    end Init_Normalized_Position_Max;
5261
5262    procedure Init_RM_Size (Id : E) is
5263    begin
5264       Set_Uint13 (Id, Uint_0);
5265    end Init_RM_Size;
5266
5267    procedure Init_RM_Size (Id : E; V : Int) is
5268    begin
5269       Set_Uint13 (Id, UI_From_Int (V));
5270    end Init_RM_Size;
5271
5272    -----------------------------
5273    -- Init_Component_Location --
5274    -----------------------------
5275
5276    procedure Init_Component_Location (Id : E) is
5277    begin
5278       Set_Uint8  (Id, No_Uint);  -- Normalized_First_Bit
5279       Set_Uint10 (Id, No_Uint);  -- Normalized_Position_Max
5280       Set_Uint11 (Id, No_Uint);  -- Component_Bit_Offset
5281       Set_Uint12 (Id, Uint_0);   -- Esize
5282       Set_Uint14 (Id, No_Uint);  -- Normalized_Position
5283    end Init_Component_Location;
5284
5285    ---------------
5286    -- Init_Size --
5287    ---------------
5288
5289    procedure Init_Size (Id : E; V : Int) is
5290    begin
5291       Set_Uint12 (Id, UI_From_Int (V));  -- Esize
5292       Set_Uint13 (Id, UI_From_Int (V));  -- RM_Size
5293    end Init_Size;
5294
5295    ---------------------
5296    -- Init_Size_Align --
5297    ---------------------
5298
5299    procedure Init_Size_Align (Id : E) is
5300    begin
5301       Set_Uint12 (Id, Uint_0);  -- Esize
5302       Set_Uint13 (Id, Uint_0);  -- RM_Size
5303       Set_Uint14 (Id, Uint_0);  -- Alignment
5304    end Init_Size_Align;
5305
5306    ----------------------------------------------
5307    -- Type Representation Attribute Predicates --
5308    ----------------------------------------------
5309
5310    function Known_Alignment                       (E : Entity_Id) return B is
5311    begin
5312       return Uint14 (E) /= Uint_0
5313         and then Uint14 (E) /= No_Uint;
5314    end Known_Alignment;
5315
5316    function Known_Component_Bit_Offset            (E : Entity_Id) return B is
5317    begin
5318       return Uint11 (E) /= No_Uint;
5319    end Known_Component_Bit_Offset;
5320
5321    function Known_Component_Size                  (E : Entity_Id) return B is
5322    begin
5323       return Uint22 (Base_Type (E)) /= Uint_0
5324         and then Uint22 (Base_Type (E)) /= No_Uint;
5325    end Known_Component_Size;
5326
5327    function Known_Esize                           (E : Entity_Id) return B is
5328    begin
5329       return Uint12 (E) /= Uint_0
5330         and then Uint12 (E) /= No_Uint;
5331    end Known_Esize;
5332
5333    function Known_Normalized_First_Bit            (E : Entity_Id) return B is
5334    begin
5335       return Uint8 (E) /= No_Uint;
5336    end Known_Normalized_First_Bit;
5337
5338    function Known_Normalized_Position             (E : Entity_Id) return B is
5339    begin
5340       return Uint14 (E) /= No_Uint;
5341    end Known_Normalized_Position;
5342
5343    function Known_Normalized_Position_Max         (E : Entity_Id) return B is
5344    begin
5345       return Uint10 (E) /= No_Uint;
5346    end Known_Normalized_Position_Max;
5347
5348    function Known_RM_Size                         (E : Entity_Id) return B is
5349    begin
5350       return Uint13 (E) /= No_Uint
5351         and then (Uint13 (E) /= Uint_0
5352                     or else Is_Discrete_Type (E)
5353                     or else Is_Fixed_Point_Type (E));
5354    end Known_RM_Size;
5355
5356    function Known_Static_Component_Bit_Offset     (E : Entity_Id) return B is
5357    begin
5358       return Uint11 (E) /= No_Uint
5359         and then Uint11 (E) >= Uint_0;
5360    end Known_Static_Component_Bit_Offset;
5361
5362    function Known_Static_Component_Size           (E : Entity_Id) return B is
5363    begin
5364       return Uint22 (Base_Type (E)) > Uint_0;
5365    end Known_Static_Component_Size;
5366
5367    function Known_Static_Esize                    (E : Entity_Id) return B is
5368    begin
5369       return Uint12 (E) > Uint_0;
5370    end Known_Static_Esize;
5371
5372    function Known_Static_Normalized_First_Bit     (E : Entity_Id) return B is
5373    begin
5374       return Uint8 (E) /= No_Uint
5375         and then Uint8 (E) >= Uint_0;
5376    end Known_Static_Normalized_First_Bit;
5377
5378    function Known_Static_Normalized_Position      (E : Entity_Id) return B is
5379    begin
5380       return Uint14 (E) /= No_Uint
5381         and then Uint14 (E) >= Uint_0;
5382    end Known_Static_Normalized_Position;
5383
5384    function Known_Static_Normalized_Position_Max  (E : Entity_Id) return B is
5385    begin
5386       return Uint10 (E) /= No_Uint
5387         and then Uint10 (E) >= Uint_0;
5388    end Known_Static_Normalized_Position_Max;
5389
5390    function Known_Static_RM_Size                  (E : Entity_Id) return B is
5391    begin
5392       return Uint13 (E) > Uint_0
5393         or else Is_Discrete_Type (E)
5394         or else Is_Fixed_Point_Type (E);
5395    end Known_Static_RM_Size;
5396
5397    function Unknown_Alignment                     (E : Entity_Id) return B is
5398    begin
5399       return Uint14 (E) = Uint_0
5400         or else Uint14 (E) = No_Uint;
5401    end Unknown_Alignment;
5402
5403    function Unknown_Component_Bit_Offset          (E : Entity_Id) return B is
5404    begin
5405       return Uint11 (E) = No_Uint;
5406    end Unknown_Component_Bit_Offset;
5407
5408    function Unknown_Component_Size                (E : Entity_Id) return B is
5409    begin
5410       return Uint22 (Base_Type (E)) = Uint_0
5411                or else
5412              Uint22 (Base_Type (E)) = No_Uint;
5413    end Unknown_Component_Size;
5414
5415    function Unknown_Esize                         (E : Entity_Id) return B is
5416    begin
5417       return Uint12 (E) = No_Uint
5418                or else
5419              Uint12 (E) = Uint_0;
5420    end Unknown_Esize;
5421
5422    function Unknown_Normalized_First_Bit          (E : Entity_Id) return B is
5423    begin
5424       return Uint8 (E) = No_Uint;
5425    end Unknown_Normalized_First_Bit;
5426
5427    function Unknown_Normalized_Position           (E : Entity_Id) return B is
5428    begin
5429       return Uint14 (E) = No_Uint;
5430    end Unknown_Normalized_Position;
5431
5432    function Unknown_Normalized_Position_Max       (E : Entity_Id) return B is
5433    begin
5434       return Uint10 (E) = No_Uint;
5435    end Unknown_Normalized_Position_Max;
5436
5437    function Unknown_RM_Size                       (E : Entity_Id) return B is
5438    begin
5439       return (Uint13 (E) = Uint_0
5440                 and then not Is_Discrete_Type (E)
5441                 and then not Is_Fixed_Point_Type (E))
5442         or else Uint13 (E) = No_Uint;
5443    end Unknown_RM_Size;
5444
5445    --------------------
5446    -- Address_Clause --
5447    --------------------
5448
5449    function Address_Clause (Id : E) return N is
5450    begin
5451       return Rep_Clause (Id, Name_Address);
5452    end Address_Clause;
5453
5454    ----------------------
5455    -- Alignment_Clause --
5456    ----------------------
5457
5458    function Alignment_Clause (Id : E) return N is
5459    begin
5460       return Rep_Clause (Id, Name_Alignment);
5461    end Alignment_Clause;
5462
5463    -------------------
5464    -- Append_Entity --
5465    -------------------
5466
5467    procedure Append_Entity (Id : Entity_Id; V : Entity_Id) is
5468    begin
5469       if Last_Entity (V) = Empty then
5470          Set_First_Entity (Id => V, V => Id);
5471       else
5472          Set_Next_Entity (Last_Entity (V), Id);
5473       end if;
5474
5475       Set_Next_Entity (Id, Empty);
5476       Set_Scope (Id, V);
5477       Set_Last_Entity (Id => V, V => Id);
5478    end Append_Entity;
5479
5480    ---------------
5481    -- Base_Type --
5482    ---------------
5483
5484    function Base_Type (Id : E) return E is
5485    begin
5486       case Ekind (Id) is
5487          when E_Enumeration_Subtype          |
5488               E_Incomplete_Type              |
5489               E_Signed_Integer_Subtype       |
5490               E_Modular_Integer_Subtype      |
5491               E_Floating_Point_Subtype       |
5492               E_Ordinary_Fixed_Point_Subtype |
5493               E_Decimal_Fixed_Point_Subtype  |
5494               E_Array_Subtype                |
5495               E_String_Subtype               |
5496               E_Record_Subtype               |
5497               E_Private_Subtype              |
5498               E_Record_Subtype_With_Private  |
5499               E_Limited_Private_Subtype      |
5500               E_Access_Subtype               |
5501               E_Protected_Subtype            |
5502               E_Task_Subtype                 |
5503               E_String_Literal_Subtype       |
5504               E_Class_Wide_Subtype           =>
5505             return Etype (Id);
5506
5507          when others =>
5508             return Id;
5509       end case;
5510    end Base_Type;
5511
5512    -------------------------
5513    -- Component_Alignment --
5514    -------------------------
5515
5516    --  Component Alignment is encoded using two flags, Flag128/129 as
5517    --  follows. Note that both flags False = Align_Default, so that the
5518    --  default initialization of flags to False initializes component
5519    --  alignment to the default value as required.
5520
5521    --     Flag128      Flag129      Value
5522    --     -------      -------      -----
5523    --      False        False       Calign_Default
5524    --      False        True        Calign_Component_Size
5525    --      True         False       Calign_Component_Size_4
5526    --      True         True        Calign_Storage_Unit
5527
5528    function Component_Alignment (Id : E) return C is
5529       BT : constant Node_Id := Base_Type (Id);
5530
5531    begin
5532       pragma Assert (Is_Array_Type (Id) or else Is_Record_Type (Id));
5533
5534       if Flag128 (BT) then
5535          if Flag129 (BT) then
5536             return Calign_Storage_Unit;
5537          else
5538             return Calign_Component_Size_4;
5539          end if;
5540
5541       else
5542          if Flag129 (BT) then
5543             return Calign_Component_Size;
5544          else
5545             return Calign_Default;
5546          end if;
5547       end if;
5548    end Component_Alignment;
5549
5550    ----------------------
5551    -- Declaration_Node --
5552    ----------------------
5553
5554    function Declaration_Node (Id : E) return N is
5555       P : Node_Id;
5556
5557    begin
5558       if Ekind (Id) = E_Incomplete_Type
5559         and then Present (Full_View (Id))
5560       then
5561          P := Parent (Full_View (Id));
5562       else
5563          P := Parent (Id);
5564       end if;
5565
5566       loop
5567          if Nkind (P) /= N_Selected_Component
5568            and then Nkind (P) /= N_Expanded_Name
5569            and then
5570              not (Nkind (P) = N_Defining_Program_Unit_Name
5571                    and then Is_Child_Unit (Id))
5572          then
5573             return P;
5574          else
5575             P := Parent (P);
5576          end if;
5577       end loop;
5578    end Declaration_Node;
5579
5580    ---------------------
5581    -- Designated_Type --
5582    ---------------------
5583
5584    function Designated_Type (Id : E) return E is
5585       Desig_Type : E;
5586
5587    begin
5588       Desig_Type := Directly_Designated_Type (Id);
5589
5590       if Ekind (Desig_Type) = E_Incomplete_Type
5591         and then Present (Full_View (Desig_Type))
5592       then
5593          return Full_View (Desig_Type);
5594
5595       elsif Is_Class_Wide_Type (Desig_Type)
5596         and then Ekind (Etype (Desig_Type)) = E_Incomplete_Type
5597         and then Present (Full_View (Etype (Desig_Type)))
5598         and then Present (Class_Wide_Type (Full_View (Etype (Desig_Type))))
5599       then
5600          return Class_Wide_Type (Full_View (Etype (Desig_Type)));
5601
5602       else
5603          return Desig_Type;
5604       end if;
5605    end Designated_Type;
5606
5607    ----------------------
5608    -- Entry_Index_Type --
5609    ----------------------
5610
5611    function Entry_Index_Type (Id : E) return N is
5612    begin
5613       pragma Assert (Ekind (Id) = E_Entry_Family);
5614       return Etype (Discrete_Subtype_Definition (Parent (Id)));
5615    end Entry_Index_Type;
5616
5617    ---------------------
5618    -- First_Component --
5619    ---------------------
5620
5621    function First_Component (Id : E) return E is
5622       Comp_Id : E;
5623
5624    begin
5625       pragma Assert
5626         (Is_Record_Type (Id) or else Is_Incomplete_Or_Private_Type (Id));
5627
5628       Comp_Id := First_Entity (Id);
5629       while Present (Comp_Id) loop
5630          exit when Ekind (Comp_Id) = E_Component;
5631          Comp_Id := Next_Entity (Comp_Id);
5632       end loop;
5633
5634       return Comp_Id;
5635    end First_Component;
5636
5637    -------------------------------------
5638    -- First_Component_Or_Discriminant --
5639    -------------------------------------
5640
5641    function First_Component_Or_Discriminant (Id : E) return E is
5642       Comp_Id : E;
5643
5644    begin
5645       pragma Assert
5646         (Is_Record_Type (Id) or else Is_Incomplete_Or_Private_Type (Id));
5647
5648       Comp_Id := First_Entity (Id);
5649       while Present (Comp_Id) loop
5650          exit when Ekind (Comp_Id) = E_Component
5651                      or else
5652                    Ekind (Comp_Id) = E_Discriminant;
5653          Comp_Id := Next_Entity (Comp_Id);
5654       end loop;
5655
5656       return Comp_Id;
5657    end First_Component_Or_Discriminant;
5658
5659    ------------------
5660    -- First_Formal --
5661    ------------------
5662
5663    function First_Formal (Id : E) return E is
5664       Formal : E;
5665
5666    begin
5667       pragma Assert
5668         (Is_Overloadable (Id)
5669           or else Ekind_In (Id, E_Entry_Family,
5670                                 E_Subprogram_Body,
5671                                 E_Subprogram_Type));
5672
5673       if Ekind (Id) = E_Enumeration_Literal then
5674          return Empty;
5675
5676       else
5677          Formal := First_Entity (Id);
5678
5679          if Present (Formal) and then Is_Formal (Formal) then
5680             return Formal;
5681          else
5682             return Empty;
5683          end if;
5684       end if;
5685    end First_Formal;
5686
5687    ------------------------------
5688    -- First_Formal_With_Extras --
5689    ------------------------------
5690
5691    function First_Formal_With_Extras (Id : E) return E is
5692       Formal : E;
5693
5694    begin
5695       pragma Assert
5696         (Is_Overloadable (Id)
5697                         or else Ekind_In (Id, E_Entry_Family,
5698                                               E_Subprogram_Body,
5699                                               E_Subprogram_Type));
5700
5701       if Ekind (Id) = E_Enumeration_Literal then
5702          return Empty;
5703
5704       else
5705          Formal := First_Entity (Id);
5706
5707          if Present (Formal) and then Is_Formal (Formal) then
5708             return Formal;
5709          else
5710             return Extra_Formals (Id);  -- Empty if no extra formals
5711          end if;
5712       end if;
5713    end First_Formal_With_Extras;
5714
5715    -------------------------------------
5716    -- Get_Attribute_Definition_Clause --
5717    -------------------------------------
5718
5719    function Get_Attribute_Definition_Clause
5720      (E  : Entity_Id;
5721       Id : Attribute_Id) return Node_Id
5722    is
5723       N : Node_Id;
5724
5725    begin
5726       N := First_Rep_Item (E);
5727       while Present (N) loop
5728          if Nkind (N) = N_Attribute_Definition_Clause
5729            and then Get_Attribute_Id (Chars (N)) = Id
5730          then
5731             return N;
5732          else
5733             Next_Rep_Item (N);
5734          end if;
5735       end loop;
5736
5737       return Empty;
5738    end Get_Attribute_Definition_Clause;
5739
5740    -------------------
5741    -- Get_Full_View --
5742    -------------------
5743
5744    function Get_Full_View (T : Entity_Id) return Entity_Id is
5745    begin
5746       if Ekind (T) = E_Incomplete_Type
5747         and then Present (Full_View (T))
5748       then
5749          return Full_View (T);
5750
5751       elsif Is_Class_Wide_Type (T)
5752         and then Ekind (Root_Type (T)) = E_Incomplete_Type
5753         and then Present (Full_View (Root_Type (T)))
5754       then
5755          return Class_Wide_Type (Full_View (Root_Type (T)));
5756
5757       else
5758          return T;
5759       end if;
5760    end Get_Full_View;
5761
5762    --------------------
5763    -- Get_Rep_Pragma --
5764    --------------------
5765
5766    function Get_Rep_Pragma (E : Entity_Id; Nam : Name_Id) return Node_Id is
5767       N : Node_Id;
5768
5769    begin
5770       N := First_Rep_Item (E);
5771       while Present (N) loop
5772          if Nkind (N) = N_Pragma and then Pragma_Name (N) = Nam then
5773             return N;
5774          end if;
5775
5776          Next_Rep_Item (N);
5777       end loop;
5778
5779       return Empty;
5780    end Get_Rep_Pragma;
5781
5782    ------------------------
5783    -- Has_Attach_Handler --
5784    ------------------------
5785
5786    function Has_Attach_Handler (Id : E) return B is
5787       Ritem : Node_Id;
5788
5789    begin
5790       pragma Assert (Is_Protected_Type (Id));
5791
5792       Ritem := First_Rep_Item (Id);
5793       while Present (Ritem) loop
5794          if Nkind (Ritem) = N_Pragma
5795            and then Pragma_Name (Ritem) = Name_Attach_Handler
5796          then
5797             return True;
5798          else
5799             Ritem := Next_Rep_Item (Ritem);
5800          end if;
5801       end loop;
5802
5803       return False;
5804    end Has_Attach_Handler;
5805
5806    -------------------------------------
5807    -- Has_Attribute_Definition_Clause --
5808    -------------------------------------
5809
5810    function Has_Attribute_Definition_Clause
5811      (E  : Entity_Id;
5812       Id : Attribute_Id) return Boolean
5813    is
5814    begin
5815       return Present (Get_Attribute_Definition_Clause (E, Id));
5816    end Has_Attribute_Definition_Clause;
5817
5818    -----------------
5819    -- Has_Entries --
5820    -----------------
5821
5822    function Has_Entries (Id : E) return B is
5823       Ent : Entity_Id;
5824
5825    begin
5826       pragma Assert (Is_Concurrent_Type (Id));
5827
5828       Ent := First_Entity (Id);
5829       while Present (Ent) loop
5830          if Is_Entry (Ent) then
5831             return True;
5832          end if;
5833
5834          Ent := Next_Entity (Ent);
5835       end loop;
5836
5837       return False;
5838    end Has_Entries;
5839
5840    ----------------------------
5841    -- Has_Foreign_Convention --
5842    ----------------------------
5843
5844    function Has_Foreign_Convention (Id : E) return B is
5845    begin
5846       return Convention (Id) in Foreign_Convention;
5847    end Has_Foreign_Convention;
5848
5849    ---------------------------
5850    -- Has_Interrupt_Handler --
5851    ---------------------------
5852
5853    function Has_Interrupt_Handler (Id : E) return B is
5854       Ritem : Node_Id;
5855
5856    begin
5857       pragma Assert (Is_Protected_Type (Id));
5858
5859       Ritem := First_Rep_Item (Id);
5860       while Present (Ritem) loop
5861          if Nkind (Ritem) = N_Pragma
5862            and then Pragma_Name (Ritem) = Name_Interrupt_Handler
5863          then
5864             return True;
5865          else
5866             Ritem := Next_Rep_Item (Ritem);
5867          end if;
5868       end loop;
5869
5870       return False;
5871    end Has_Interrupt_Handler;
5872
5873    --------------------------
5874    -- Has_Private_Ancestor --
5875    --------------------------
5876
5877    function Has_Private_Ancestor (Id : E) return B is
5878       R  : constant Entity_Id := Root_Type (Id);
5879       T1 : Entity_Id := Id;
5880    begin
5881       loop
5882          if Is_Private_Type (T1) then
5883             return True;
5884          elsif T1 = R then
5885             return False;
5886          else
5887             T1 := Etype (T1);
5888          end if;
5889       end loop;
5890    end Has_Private_Ancestor;
5891
5892    --------------------
5893    -- Has_Rep_Pragma --
5894    --------------------
5895
5896    function Has_Rep_Pragma (E : Entity_Id; Nam : Name_Id) return Boolean is
5897    begin
5898       return Present (Get_Rep_Pragma (E, Nam));
5899    end Has_Rep_Pragma;
5900
5901    --------------------
5902    -- Has_Unmodified --
5903    --------------------
5904
5905    function Has_Unmodified (E : Entity_Id) return Boolean is
5906    begin
5907       if Has_Pragma_Unmodified (E) then
5908          return True;
5909       elsif Warnings_Off (E) then
5910          Set_Warnings_Off_Used_Unmodified (E);
5911          return True;
5912       else
5913          return False;
5914       end if;
5915    end Has_Unmodified;
5916
5917    ---------------------
5918    -- Has_Unreferenced --
5919    ---------------------
5920
5921    function Has_Unreferenced (E : Entity_Id) return Boolean is
5922    begin
5923       if Has_Pragma_Unreferenced (E) then
5924          return True;
5925       elsif Warnings_Off (E) then
5926          Set_Warnings_Off_Used_Unreferenced (E);
5927          return True;
5928       else
5929          return False;
5930       end if;
5931    end Has_Unreferenced;
5932
5933    ----------------------
5934    -- Has_Warnings_Off --
5935    ----------------------
5936
5937    function Has_Warnings_Off (E : Entity_Id) return Boolean is
5938    begin
5939       if Warnings_Off (E) then
5940          Set_Warnings_Off_Used (E);
5941          return True;
5942       else
5943          return False;
5944       end if;
5945    end Has_Warnings_Off;
5946
5947    ------------------------------
5948    -- Implementation_Base_Type --
5949    ------------------------------
5950
5951    function Implementation_Base_Type (Id : E) return E is
5952       Bastyp : Entity_Id;
5953       Imptyp : Entity_Id;
5954
5955    begin
5956       Bastyp := Base_Type (Id);
5957
5958       if Is_Incomplete_Or_Private_Type (Bastyp) then
5959          Imptyp := Underlying_Type (Bastyp);
5960
5961          --  If we have an implementation type, then just return it,
5962          --  otherwise we return the Base_Type anyway. This can only
5963          --  happen in error situations and should avoid some error bombs.
5964
5965          if Present (Imptyp) then
5966             return Base_Type (Imptyp);
5967          else
5968             return Bastyp;
5969          end if;
5970
5971       else
5972          return Bastyp;
5973       end if;
5974    end Implementation_Base_Type;
5975
5976    ---------------------
5977    -- Is_Boolean_Type --
5978    ---------------------
5979
5980    function Is_Boolean_Type (Id : E) return B is
5981    begin
5982       return Root_Type (Id) = Standard_Boolean;
5983    end Is_Boolean_Type;
5984
5985    ------------------------
5986    -- Is_Constant_Object --
5987    ------------------------
5988
5989    function Is_Constant_Object (Id : E) return B is
5990       K : constant Entity_Kind := Ekind (Id);
5991    begin
5992       return
5993         K = E_Constant or else K = E_In_Parameter or else K = E_Loop_Parameter;
5994    end Is_Constant_Object;
5995
5996    --------------------
5997    -- Is_Discriminal --
5998    --------------------
5999
6000    function Is_Discriminal (Id : E) return B is
6001    begin
6002       return (Ekind_In (Id, E_Constant, E_In_Parameter)
6003                and then Present (Discriminal_Link (Id)));
6004    end Is_Discriminal;
6005
6006    ----------------------
6007    -- Is_Dynamic_Scope --
6008    ----------------------
6009
6010    function Is_Dynamic_Scope (Id : E) return B is
6011    begin
6012       return
6013         Ekind (Id) = E_Block
6014           or else
6015         Ekind (Id) = E_Function
6016           or else
6017         Ekind (Id) = E_Procedure
6018           or else
6019         Ekind (Id) = E_Subprogram_Body
6020           or else
6021         Ekind (Id) = E_Task_Type
6022           or else
6023         Ekind (Id) = E_Entry
6024           or else
6025         Ekind (Id) = E_Entry_Family
6026           or else
6027         Ekind (Id) = E_Return_Statement;
6028    end Is_Dynamic_Scope;
6029
6030    --------------------
6031    -- Is_Entity_Name --
6032    --------------------
6033
6034    function Is_Entity_Name (N : Node_Id) return Boolean is
6035       Kind : constant Node_Kind := Nkind (N);
6036
6037    begin
6038       --  Identifiers, operator symbols, expanded names are entity names
6039
6040       return Kind = N_Identifier
6041         or else Kind = N_Operator_Symbol
6042         or else Kind = N_Expanded_Name
6043
6044       --  Attribute references are entity names if they refer to an entity.
6045       --  Note that we don't do this by testing for the presence of the
6046       --  Entity field in the N_Attribute_Reference node, since it may not
6047       --  have been set yet.
6048
6049         or else (Kind = N_Attribute_Reference
6050                   and then Is_Entity_Attribute_Name (Attribute_Name (N)));
6051    end Is_Entity_Name;
6052
6053    -----------------------------------
6054    -- Is_Package_Or_Generic_Package --
6055    -----------------------------------
6056
6057    function Is_Package_Or_Generic_Package (Id : E) return B is
6058    begin
6059       return
6060         Ekind (Id) = E_Package
6061           or else
6062         Ekind (Id) = E_Generic_Package;
6063    end Is_Package_Or_Generic_Package;
6064
6065    ---------------
6066    -- Is_Prival --
6067    ---------------
6068
6069    function Is_Prival (Id : E) return B is
6070    begin
6071       return (Ekind_In (Id, E_Constant, E_Variable)
6072                          and then Present (Prival_Link (Id)));
6073    end Is_Prival;
6074
6075    ----------------------------
6076    -- Is_Protected_Component --
6077    ----------------------------
6078
6079    function Is_Protected_Component (Id : E) return B is
6080    begin
6081       return Ekind (Id) = E_Component
6082         and then Is_Protected_Type (Scope (Id));
6083    end Is_Protected_Component;
6084
6085    ------------------------------
6086    -- Is_Protected_Record_Type --
6087    ------------------------------
6088
6089    function Is_Protected_Record_Type (Id : E) return B is
6090    begin
6091       return
6092         Is_Concurrent_Record_Type (Id)
6093           and then Is_Protected_Type (Corresponding_Concurrent_Type (Id));
6094    end Is_Protected_Record_Type;
6095
6096    --------------------------------
6097    -- Is_Standard_Character_Type --
6098    --------------------------------
6099
6100    function Is_Standard_Character_Type (Id : E) return B is
6101    begin
6102       if Is_Type (Id) then
6103          declare
6104             R : constant Entity_Id := Root_Type (Id);
6105          begin
6106             return
6107               R = Standard_Character
6108                 or else
6109               R = Standard_Wide_Character
6110                 or else
6111               R = Standard_Wide_Wide_Character;
6112          end;
6113
6114       else
6115          return False;
6116       end if;
6117    end Is_Standard_Character_Type;
6118
6119    --------------------
6120    -- Is_String_Type --
6121    --------------------
6122
6123    function Is_String_Type (Id : E) return B is
6124    begin
6125       return Ekind (Id) in String_Kind
6126         or else (Is_Array_Type (Id)
6127                   and then Number_Dimensions (Id) = 1
6128                   and then Is_Character_Type (Component_Type (Id)));
6129    end Is_String_Type;
6130
6131    -------------------------
6132    -- Is_Task_Record_Type --
6133    -------------------------
6134
6135    function Is_Task_Record_Type (Id : E) return B is
6136    begin
6137       return
6138         Is_Concurrent_Record_Type (Id)
6139           and then Is_Task_Type (Corresponding_Concurrent_Type (Id));
6140    end Is_Task_Record_Type;
6141
6142    ------------------------
6143    -- Is_Wrapper_Package --
6144    ------------------------
6145
6146    function Is_Wrapper_Package (Id : E) return B is
6147    begin
6148       return (Ekind (Id) = E_Package
6149                and then Present (Related_Instance (Id)));
6150    end Is_Wrapper_Package;
6151
6152    --------------------
6153    -- Next_Component --
6154    --------------------
6155
6156    function Next_Component (Id : E) return E is
6157       Comp_Id : E;
6158
6159    begin
6160       Comp_Id := Next_Entity (Id);
6161       while Present (Comp_Id) loop
6162          exit when Ekind (Comp_Id) = E_Component;
6163          Comp_Id := Next_Entity (Comp_Id);
6164       end loop;
6165
6166       return Comp_Id;
6167    end Next_Component;
6168
6169    ------------------------------------
6170    -- Next_Component_Or_Discriminant --
6171    ------------------------------------
6172
6173    function Next_Component_Or_Discriminant (Id : E) return E is
6174       Comp_Id : E;
6175
6176    begin
6177       Comp_Id := Next_Entity (Id);
6178       while Present (Comp_Id) loop
6179          exit when Ekind_In (Comp_Id, E_Component, E_Discriminant);
6180          Comp_Id := Next_Entity (Comp_Id);
6181       end loop;
6182
6183       return Comp_Id;
6184    end Next_Component_Or_Discriminant;
6185
6186    -----------------------
6187    -- Next_Discriminant --
6188    -----------------------
6189
6190    --  This function actually implements both Next_Discriminant and
6191    --  Next_Stored_Discriminant by making sure that the Discriminant
6192    --  returned is of the same variety as Id.
6193
6194    function Next_Discriminant (Id : E) return E is
6195
6196       --  Derived Tagged types with private extensions look like this...
6197
6198       --       E_Discriminant d1
6199       --       E_Discriminant d2
6200       --       E_Component    _tag
6201       --       E_Discriminant d1
6202       --       E_Discriminant d2
6203       --       ...
6204
6205       --  so it is critical not to go past the leading discriminants
6206
6207       D : E := Id;
6208
6209    begin
6210       pragma Assert (Ekind (Id) = E_Discriminant);
6211
6212       loop
6213          D := Next_Entity (D);
6214          if No (D)
6215            or else (Ekind (D) /= E_Discriminant
6216                      and then not Is_Itype (D))
6217          then
6218             return Empty;
6219          end if;
6220
6221          exit when Ekind (D) = E_Discriminant
6222            and then (Is_Completely_Hidden (D) = Is_Completely_Hidden (Id));
6223       end loop;
6224
6225       return D;
6226    end Next_Discriminant;
6227
6228    -----------------
6229    -- Next_Formal --
6230    -----------------
6231
6232    function Next_Formal (Id : E) return E is
6233       P : E;
6234
6235    begin
6236       --  Follow the chain of declared entities as long as the kind of the
6237       --  entity corresponds to a formal parameter. Skip internal entities
6238       --  that may have been created for implicit subtypes, in the process
6239       --  of analyzing default expressions.
6240
6241       P := Id;
6242
6243       loop
6244          P := Next_Entity (P);
6245
6246          if No (P) or else Is_Formal (P) then
6247             return P;
6248          elsif not Is_Internal (P) then
6249             return Empty;
6250          end if;
6251       end loop;
6252    end Next_Formal;
6253
6254    -----------------------------
6255    -- Next_Formal_With_Extras --
6256    -----------------------------
6257
6258    function Next_Formal_With_Extras (Id : E) return E is
6259    begin
6260       if Present (Extra_Formal (Id)) then
6261          return Extra_Formal (Id);
6262       else
6263          return Next_Formal (Id);
6264       end if;
6265    end Next_Formal_With_Extras;
6266
6267    ----------------
6268    -- Next_Index --
6269    ----------------
6270
6271    function Next_Index (Id : Node_Id) return Node_Id is
6272    begin
6273       return Next (Id);
6274    end Next_Index;
6275
6276    ------------------
6277    -- Next_Literal --
6278    ------------------
6279
6280    function Next_Literal (Id : E) return E is
6281    begin
6282       pragma Assert (Nkind (Id) in N_Entity);
6283       return Next (Id);
6284    end Next_Literal;
6285
6286    ------------------------------
6287    -- Next_Stored_Discriminant --
6288    ------------------------------
6289
6290    function Next_Stored_Discriminant (Id : E) return E is
6291    begin
6292       --  See comment in Next_Discriminant
6293
6294       return Next_Discriminant (Id);
6295    end Next_Stored_Discriminant;
6296
6297    -----------------------
6298    -- Number_Dimensions --
6299    -----------------------
6300
6301    function Number_Dimensions (Id : E) return Pos is
6302       N : Int;
6303       T : Node_Id;
6304
6305    begin
6306       if Ekind (Id) in String_Kind then
6307          return 1;
6308
6309       else
6310          N := 0;
6311          T := First_Index (Id);
6312          while Present (T) loop
6313             N := N + 1;
6314             T := Next (T);
6315          end loop;
6316
6317          return N;
6318       end if;
6319    end Number_Dimensions;
6320
6321    --------------------
6322    -- Number_Entries --
6323    --------------------
6324
6325    function Number_Entries (Id : E) return Nat is
6326       N      : Int;
6327       Ent    : Entity_Id;
6328
6329    begin
6330       pragma Assert (Is_Concurrent_Type (Id));
6331
6332       N := 0;
6333       Ent := First_Entity (Id);
6334       while Present (Ent) loop
6335          if Is_Entry (Ent) then
6336             N := N + 1;
6337          end if;
6338
6339          Ent := Next_Entity (Ent);
6340       end loop;
6341
6342       return N;
6343    end Number_Entries;
6344
6345    --------------------
6346    -- Number_Formals --
6347    --------------------
6348
6349    function Number_Formals (Id : E) return Pos is
6350       N      : Int;
6351       Formal : Entity_Id;
6352
6353    begin
6354       N := 0;
6355       Formal := First_Formal (Id);
6356       while Present (Formal) loop
6357          N := N + 1;
6358          Formal := Next_Formal (Formal);
6359       end loop;
6360
6361       return N;
6362    end Number_Formals;
6363
6364    --------------------
6365    -- Parameter_Mode --
6366    --------------------
6367
6368    function Parameter_Mode (Id : E) return Formal_Kind is
6369    begin
6370       return Ekind (Id);
6371    end Parameter_Mode;
6372
6373    ---------------------
6374    -- Record_Rep_Item --
6375    ---------------------
6376
6377    procedure Record_Rep_Item (E : Entity_Id; N : Node_Id) is
6378    begin
6379       Set_Next_Rep_Item (N, First_Rep_Item (E));
6380       Set_First_Rep_Item (E, N);
6381    end Record_Rep_Item;
6382
6383    ---------------
6384    -- Root_Type --
6385    ---------------
6386
6387    function Root_Type (Id : E) return E is
6388       T, Etyp : E;
6389
6390    begin
6391       pragma Assert (Nkind (Id) in N_Entity);
6392
6393       T := Base_Type (Id);
6394
6395       if Ekind (T) = E_Class_Wide_Type then
6396          return Etype (T);
6397
6398       elsif Ekind (T) = E_Class_Wide_Subtype then
6399          return Etype (Base_Type (T));
6400
6401          --  ??? T comes from Base_Type, how can it be a subtype?
6402          --  Also Base_Type is supposed to be idempotent, so either way
6403          --  this is equivalent to "return Etype (T)" and should be merged
6404          --  with the E_Class_Wide_Type case.
6405
6406       --  All other cases
6407
6408       else
6409          loop
6410             Etyp := Etype (T);
6411
6412             if T = Etyp then
6413                return T;
6414
6415             --  Following test catches some error cases resulting from
6416             --  previous errors.
6417
6418             elsif No (Etyp) then
6419                return T;
6420
6421             elsif Is_Private_Type (T) and then Etyp = Full_View (T) then
6422                return T;
6423
6424             elsif Is_Private_Type (Etyp) and then Full_View (Etyp) = T then
6425                return T;
6426             end if;
6427
6428             T := Etyp;
6429
6430             --  Return if there is a circularity in the inheritance chain. This
6431             --  happens in some error situations and we do not want to get
6432             --  stuck in this loop.
6433
6434             if T = Base_Type (Id) then
6435                return T;
6436             end if;
6437          end loop;
6438       end if;
6439    end Root_Type;
6440
6441    -----------------
6442    -- Scope_Depth --
6443    -----------------
6444
6445    function Scope_Depth (Id : E) return Uint is
6446       Scop : Entity_Id;
6447
6448    begin
6449       Scop := Id;
6450       while Is_Record_Type (Scop) loop
6451          Scop := Scope (Scop);
6452       end loop;
6453
6454       return Scope_Depth_Value (Scop);
6455    end Scope_Depth;
6456
6457    ---------------------
6458    -- Scope_Depth_Set --
6459    ---------------------
6460
6461    function Scope_Depth_Set (Id : E) return B is
6462    begin
6463       return not Is_Record_Type (Id)
6464         and then Field22 (Id) /= Union_Id (Empty);
6465    end Scope_Depth_Set;
6466
6467    -----------------------------
6468    -- Set_Component_Alignment --
6469    -----------------------------
6470
6471    --  Component Alignment is encoded using two flags, Flag128/129 as
6472    --  follows. Note that both flags False = Align_Default, so that the
6473    --  default initialization of flags to False initializes component
6474    --  alignment to the default value as required.
6475
6476    --     Flag128      Flag129      Value
6477    --     -------      -------      -----
6478    --      False        False       Calign_Default
6479    --      False        True        Calign_Component_Size
6480    --      True         False       Calign_Component_Size_4
6481    --      True         True        Calign_Storage_Unit
6482
6483    procedure Set_Component_Alignment (Id : E; V : C) is
6484    begin
6485       pragma Assert ((Is_Array_Type (Id) or else Is_Record_Type (Id))
6486                        and then Id = Base_Type (Id));
6487
6488       case V is
6489          when Calign_Default          =>
6490             Set_Flag128 (Id, False);
6491             Set_Flag129 (Id, False);
6492
6493          when Calign_Component_Size   =>
6494             Set_Flag128 (Id, False);
6495             Set_Flag129 (Id, True);
6496
6497          when Calign_Component_Size_4 =>
6498             Set_Flag128 (Id, True);
6499             Set_Flag129 (Id, False);
6500
6501          when Calign_Storage_Unit     =>
6502             Set_Flag128 (Id, True);
6503             Set_Flag129 (Id, True);
6504       end case;
6505    end Set_Component_Alignment;
6506
6507    -----------------
6508    -- Size_Clause --
6509    -----------------
6510
6511    function Size_Clause (Id : E) return N is
6512    begin
6513       return Rep_Clause (Id, Name_Size);
6514    end Size_Clause;
6515
6516    ------------------------
6517    -- Stream_Size_Clause --
6518    ------------------------
6519
6520    function Stream_Size_Clause (Id : E) return N is
6521    begin
6522       return Rep_Clause (Id, Name_Stream_Size);
6523    end Stream_Size_Clause;
6524
6525    ------------------
6526    -- Subtype_Kind --
6527    ------------------
6528
6529    function Subtype_Kind (K : Entity_Kind) return Entity_Kind is
6530       Kind : Entity_Kind;
6531
6532    begin
6533       case K is
6534          when Access_Kind                    =>
6535             Kind := E_Access_Subtype;
6536
6537          when E_Array_Type                   |
6538               E_Array_Subtype                =>
6539             Kind := E_Array_Subtype;
6540
6541          when E_Class_Wide_Type              |
6542               E_Class_Wide_Subtype           =>
6543             Kind := E_Class_Wide_Subtype;
6544
6545          when E_Decimal_Fixed_Point_Type     |
6546               E_Decimal_Fixed_Point_Subtype  =>
6547             Kind := E_Decimal_Fixed_Point_Subtype;
6548
6549          when E_Ordinary_Fixed_Point_Type    |
6550               E_Ordinary_Fixed_Point_Subtype =>
6551             Kind := E_Ordinary_Fixed_Point_Subtype;
6552
6553          when E_Private_Type                 |
6554               E_Private_Subtype              =>
6555             Kind := E_Private_Subtype;
6556
6557          when E_Limited_Private_Type         |
6558               E_Limited_Private_Subtype      =>
6559             Kind := E_Limited_Private_Subtype;
6560
6561          when E_Record_Type_With_Private     |
6562               E_Record_Subtype_With_Private  =>
6563             Kind := E_Record_Subtype_With_Private;
6564
6565          when E_Record_Type                  |
6566               E_Record_Subtype               =>
6567             Kind := E_Record_Subtype;
6568
6569          when E_String_Type                  |
6570               E_String_Subtype               =>
6571             Kind := E_String_Subtype;
6572
6573          when Enumeration_Kind               =>
6574             Kind := E_Enumeration_Subtype;
6575
6576          when Float_Kind                     =>
6577             Kind := E_Floating_Point_Subtype;
6578
6579          when Signed_Integer_Kind            =>
6580             Kind := E_Signed_Integer_Subtype;
6581
6582          when Modular_Integer_Kind           =>
6583             Kind := E_Modular_Integer_Subtype;
6584
6585          when Protected_Kind                 =>
6586             Kind := E_Protected_Subtype;
6587
6588          when Task_Kind                      =>
6589             Kind := E_Task_Subtype;
6590
6591          when others                         =>
6592             Kind := E_Void;
6593             raise Program_Error;
6594       end case;
6595
6596       return Kind;
6597    end Subtype_Kind;
6598
6599    ---------------------
6600    -- Type_High_Bound --
6601    ---------------------
6602
6603    function Type_High_Bound (Id : E) return Node_Id is
6604       Rng : constant Node_Id := Scalar_Range (Id);
6605    begin
6606       if Nkind (Rng) = N_Subtype_Indication then
6607          return High_Bound (Range_Expression (Constraint (Rng)));
6608       else
6609          return High_Bound (Rng);
6610       end if;
6611    end Type_High_Bound;
6612
6613    --------------------
6614    -- Type_Low_Bound --
6615    --------------------
6616
6617    function Type_Low_Bound (Id : E) return Node_Id is
6618       Rng : constant Node_Id := Scalar_Range (Id);
6619    begin
6620       if Nkind (Rng) = N_Subtype_Indication then
6621          return Low_Bound (Range_Expression (Constraint (Rng)));
6622       else
6623          return Low_Bound (Rng);
6624       end if;
6625    end Type_Low_Bound;
6626
6627    ---------------------
6628    -- Underlying_Type --
6629    ---------------------
6630
6631    function Underlying_Type (Id : E) return E is
6632    begin
6633       --  For record_with_private the underlying type is always the direct
6634       --  full view. Never try to take the full view of the parent it
6635       --  doesn't make sense.
6636
6637       if Ekind (Id) = E_Record_Type_With_Private then
6638          return Full_View (Id);
6639
6640       elsif Ekind (Id) in Incomplete_Or_Private_Kind then
6641
6642          --  If we have an incomplete or private type with a full view,
6643          --  then we return the Underlying_Type of this full view
6644
6645          if Present (Full_View (Id)) then
6646             if Id = Full_View (Id) then
6647
6648                --  Previous error in declaration
6649
6650                return Empty;
6651
6652             else
6653                return Underlying_Type (Full_View (Id));
6654             end if;
6655
6656          --  If we have an incomplete entity that comes from the limited
6657          --  view then we return the Underlying_Type of its non-limited
6658          --  view.
6659
6660          elsif From_With_Type (Id)
6661            and then Present (Non_Limited_View (Id))
6662          then
6663             return Underlying_Type (Non_Limited_View (Id));
6664
6665          --  Otherwise check for the case where we have a derived type or
6666          --  subtype, and if so get the Underlying_Type of the parent type.
6667
6668          elsif Etype (Id) /= Id then
6669             return Underlying_Type (Etype (Id));
6670
6671          --  Otherwise we have an incomplete or private type that has
6672          --  no full view, which means that we have not encountered the
6673          --  completion, so return Empty to indicate the underlying type
6674          --  is not yet known.
6675
6676          else
6677             return Empty;
6678          end if;
6679
6680       --  For non-incomplete, non-private types, return the type itself
6681       --  Also for entities that are not types at all return the entity
6682       --  itself.
6683
6684       else
6685          return Id;
6686       end if;
6687    end Underlying_Type;
6688
6689    ------------------------
6690    -- Write_Entity_Flags --
6691    ------------------------
6692
6693    procedure Write_Entity_Flags (Id : Entity_Id; Prefix : String) is
6694
6695       procedure W (Flag_Name : String; Flag : Boolean);
6696       --  Write out given flag if it is set
6697
6698       -------
6699       -- W --
6700       -------
6701
6702       procedure W (Flag_Name : String; Flag : Boolean) is
6703       begin
6704          if Flag then
6705             Write_Str (Prefix);
6706             Write_Str (Flag_Name);
6707             Write_Str (" = True");
6708             Write_Eol;
6709          end if;
6710       end W;
6711
6712    --  Start of processing for Write_Entity_Flags
6713
6714    begin
6715       if (Is_Array_Type (Id) or else Is_Record_Type (Id))
6716         and then Id = Base_Type (Id)
6717       then
6718          Write_Str (Prefix);
6719          Write_Str ("Component_Alignment = ");
6720
6721          case Component_Alignment (Id) is
6722             when Calign_Default =>
6723                Write_Str ("Calign_Default");
6724
6725             when Calign_Component_Size =>
6726                Write_Str ("Calign_Component_Size");
6727
6728             when Calign_Component_Size_4 =>
6729                Write_Str ("Calign_Component_Size_4");
6730
6731             when Calign_Storage_Unit =>
6732                Write_Str ("Calign_Storage_Unit");
6733          end case;
6734
6735          Write_Eol;
6736       end if;
6737
6738       W ("Address_Taken",                   Flag104 (Id));
6739       W ("Body_Needed_For_SAL",             Flag40  (Id));
6740       W ("C_Pass_By_Copy",                  Flag125 (Id));
6741       W ("Can_Never_Be_Null",               Flag38  (Id));
6742       W ("Checks_May_Be_Suppressed",        Flag31  (Id));
6743       W ("Debug_Info_Off",                  Flag166 (Id));
6744       W ("Default_Expressions_Processed",   Flag108 (Id));
6745       W ("Delay_Cleanups",                  Flag114 (Id));
6746       W ("Delay_Subprogram_Descriptors",    Flag50  (Id));
6747       W ("Depends_On_Private",              Flag14  (Id));
6748       W ("Discard_Names",                   Flag88  (Id));
6749       W ("Elaboration_Entity_Required",     Flag174 (Id));
6750       W ("Elaborate_Body_Desirable",        Flag210 (Id));
6751       W ("Entry_Accepted",                  Flag152 (Id));
6752       W ("Can_Use_Internal_Rep",            Flag229 (Id));
6753       W ("Finalize_Storage_Only",           Flag158 (Id));
6754       W ("From_With_Type",                  Flag159 (Id));
6755       W ("Has_Aliased_Components",          Flag135 (Id));
6756       W ("Has_Alignment_Clause",            Flag46  (Id));
6757       W ("Has_All_Calls_Remote",            Flag79  (Id));
6758       W ("Has_Anon_Block_Suffix",           Flag201 (Id));
6759       W ("Has_Atomic_Components",           Flag86  (Id));
6760       W ("Has_Biased_Representation",       Flag139 (Id));
6761       W ("Has_Completion",                  Flag26  (Id));
6762       W ("Has_Completion_In_Body",          Flag71  (Id));
6763       W ("Has_Complex_Representation",      Flag140 (Id));
6764       W ("Has_Component_Size_Clause",       Flag68  (Id));
6765       W ("Has_Contiguous_Rep",              Flag181 (Id));
6766       W ("Has_Controlled_Component",        Flag43  (Id));
6767       W ("Has_Controlling_Result",          Flag98  (Id));
6768       W ("Has_Convention_Pragma",           Flag119 (Id));
6769       W ("Has_Delayed_Freeze",              Flag18  (Id));
6770       W ("Has_Discriminants",               Flag5   (Id));
6771       W ("Has_Enumeration_Rep_Clause",      Flag66  (Id));
6772       W ("Has_Exit",                        Flag47  (Id));
6773       W ("Has_External_Tag_Rep_Clause",     Flag110 (Id));
6774       W ("Has_Forward_Instantiation",       Flag175 (Id));
6775       W ("Has_Fully_Qualified_Name",        Flag173 (Id));
6776       W ("Has_Gigi_Rep_Item",               Flag82  (Id));
6777       W ("Has_Homonym",                     Flag56  (Id));
6778       W ("Has_Initial_Value",               Flag219 (Id));
6779       W ("Has_Machine_Radix_Clause",        Flag83  (Id));
6780       W ("Has_Master_Entity",               Flag21  (Id));
6781       W ("Has_Missing_Return",              Flag142 (Id));
6782       W ("Has_Nested_Block_With_Handler",   Flag101 (Id));
6783       W ("Has_Non_Standard_Rep",            Flag75  (Id));
6784       W ("Has_Object_Size_Clause",          Flag172 (Id));
6785       W ("Has_Per_Object_Constraint",       Flag154 (Id));
6786       W ("Has_Persistent_BSS",              Flag188 (Id));
6787       W ("Has_Postconditions",              Flag240 (Id));
6788       W ("Has_Pragma_Controlled",           Flag27  (Id));
6789       W ("Has_Pragma_Elaborate_Body",       Flag150 (Id));
6790       W ("Has_Pragma_Inline",               Flag157 (Id));
6791       W ("Has_Pragma_Inline_Always",        Flag230 (Id));
6792       W ("Has_Pragma_Pack",                 Flag121 (Id));
6793       W ("Has_Pragma_Preelab_Init",         Flag221 (Id));
6794       W ("Has_Pragma_Pure",                 Flag203 (Id));
6795       W ("Has_Pragma_Pure_Function",        Flag179 (Id));
6796       W ("Has_Pragma_Thread_Local_Storage", Flag169 (Id));
6797       W ("Has_Pragma_Unmodified",           Flag233 (Id));
6798       W ("Has_Pragma_Unreferenced",         Flag180 (Id));
6799       W ("Has_Pragma_Unreferenced_Objects", Flag212 (Id));
6800       W ("Has_Primitive_Operations",        Flag120 (Id));
6801       W ("Has_Private_Declaration",         Flag155 (Id));
6802       W ("Has_Qualified_Name",              Flag161 (Id));
6803       W ("Has_RACW",                        Flag214 (Id));
6804       W ("Has_Record_Rep_Clause",           Flag65  (Id));
6805       W ("Has_Recursive_Call",              Flag143 (Id));
6806       W ("Has_Size_Clause",                 Flag29  (Id));
6807       W ("Has_Small_Clause",                Flag67  (Id));
6808       W ("Has_Specified_Layout",            Flag100 (Id));
6809       W ("Has_Specified_Stream_Input",      Flag190 (Id));
6810       W ("Has_Specified_Stream_Output",     Flag191 (Id));
6811       W ("Has_Specified_Stream_Read",       Flag192 (Id));
6812       W ("Has_Specified_Stream_Write",      Flag193 (Id));
6813       W ("Has_Static_Discriminants",        Flag211 (Id));
6814       W ("Has_Storage_Size_Clause",         Flag23  (Id));
6815       W ("Has_Stream_Size_Clause",          Flag184 (Id));
6816       W ("Has_Subprogram_Descriptor",       Flag93  (Id));
6817       W ("Has_Task",                        Flag30  (Id));
6818       W ("Has_Thunks",                      Flag228 (Id));
6819       W ("Has_Unchecked_Union",             Flag123 (Id));
6820       W ("Has_Unknown_Discriminants",       Flag72  (Id));
6821       W ("Has_Up_Level_Access",             Flag215 (Id));
6822       W ("Has_Volatile_Components",         Flag87  (Id));
6823       W ("Has_Xref_Entry",                  Flag182 (Id));
6824       W ("Implemented_By_Entry",            Flag232 (Id));
6825       W ("In_Package_Body",                 Flag48  (Id));
6826       W ("In_Private_Part",                 Flag45  (Id));
6827       W ("In_Use",                          Flag8   (Id));
6828       W ("Is_AST_Entry",                    Flag132 (Id));
6829       W ("Is_Abstract_Subprogram",          Flag19  (Id));
6830       W ("Is_Abstract_Type",                Flag146  (Id));
6831       W ("Is_Local_Anonymous_Access",       Flag194 (Id));
6832       W ("Is_Access_Constant",              Flag69  (Id));
6833       W ("Is_Ada_2005_Only",                Flag185 (Id));
6834       W ("Is_Aliased",                      Flag15  (Id));
6835       W ("Is_Asynchronous",                 Flag81  (Id));
6836       W ("Is_Atomic",                       Flag85  (Id));
6837       W ("Is_Bit_Packed_Array",             Flag122 (Id));
6838       W ("Is_CPP_Class",                    Flag74  (Id));
6839       W ("Is_Called",                       Flag102 (Id));
6840       W ("Is_Character_Type",               Flag63  (Id));
6841       W ("Is_Child_Unit",                   Flag73  (Id));
6842       W ("Is_Class_Wide_Equivalent_Type",   Flag35  (Id));
6843       W ("Is_Compilation_Unit",             Flag149 (Id));
6844       W ("Is_Completely_Hidden",            Flag103 (Id));
6845       W ("Is_Concurrent_Record_Type",       Flag20  (Id));
6846       W ("Is_Constr_Subt_For_UN_Aliased",   Flag141 (Id));
6847       W ("Is_Constr_Subt_For_U_Nominal",    Flag80  (Id));
6848       W ("Is_Constrained",                  Flag12  (Id));
6849       W ("Is_Constructor",                  Flag76  (Id));
6850       W ("Is_Controlled",                   Flag42  (Id));
6851       W ("Is_Controlling_Formal",           Flag97  (Id));
6852       W ("Is_Descendent_Of_Address",        Flag223 (Id));
6853       W ("Is_Discrim_SO_Function",          Flag176 (Id));
6854       W ("Is_Dispatch_Table_Entity",        Flag234 (Id));
6855       W ("Is_Dispatching_Operation",        Flag6   (Id));
6856       W ("Is_Eliminated",                   Flag124 (Id));
6857       W ("Is_Entry_Formal",                 Flag52  (Id));
6858       W ("Is_Exported",                     Flag99  (Id));
6859       W ("Is_First_Subtype",                Flag70  (Id));
6860       W ("Is_For_Access_Subtype",           Flag118 (Id));
6861       W ("Is_Formal_Subprogram",            Flag111 (Id));
6862       W ("Is_Frozen",                       Flag4   (Id));
6863       W ("Is_Generic_Actual_Type",          Flag94  (Id));
6864       W ("Is_Generic_Instance",             Flag130 (Id));
6865       W ("Is_Generic_Type",                 Flag13  (Id));
6866       W ("Is_Hidden",                       Flag57  (Id));
6867       W ("Is_Hidden_Open_Scope",            Flag171 (Id));
6868       W ("Is_Immediately_Visible",          Flag7   (Id));
6869       W ("Is_Imported",                     Flag24  (Id));
6870       W ("Is_Inlined",                      Flag11  (Id));
6871       W ("Is_Instantiated",                 Flag126 (Id));
6872       W ("Is_Interface",                    Flag186 (Id));
6873       W ("Is_Internal",                     Flag17  (Id));
6874       W ("Is_Interrupt_Handler",            Flag89  (Id));
6875       W ("Is_Intrinsic_Subprogram",         Flag64  (Id));
6876       W ("Is_Itype",                        Flag91  (Id));
6877       W ("Is_Known_Non_Null",               Flag37  (Id));
6878       W ("Is_Known_Null",                   Flag204 (Id));
6879       W ("Is_Known_Valid",                  Flag170 (Id));
6880       W ("Is_Limited_Composite",            Flag106 (Id));
6881       W ("Is_Limited_Interface",            Flag197 (Id));
6882       W ("Is_Limited_Record",               Flag25  (Id));
6883       W ("Is_Machine_Code_Subprogram",      Flag137 (Id));
6884       W ("Is_Non_Static_Subtype",           Flag109 (Id));
6885       W ("Is_Null_Init_Proc",               Flag178 (Id));
6886       W ("Is_Obsolescent",                  Flag153 (Id));
6887       W ("Is_Only_Out_Parameter",           Flag226 (Id));
6888       W ("Is_Optional_Parameter",           Flag134 (Id));
6889       W ("Is_Overriding_Operation",         Flag39  (Id));
6890       W ("Is_Package_Body_Entity",          Flag160 (Id));
6891       W ("Is_Packed",                       Flag51  (Id));
6892       W ("Is_Packed_Array_Type",            Flag138 (Id));
6893       W ("Is_Potentially_Use_Visible",      Flag9   (Id));
6894       W ("Is_Preelaborated",                Flag59  (Id));
6895       W ("Is_Primitive",                    Flag218 (Id));
6896       W ("Is_Primitive_Wrapper",            Flag195 (Id));
6897       W ("Is_Private_Composite",            Flag107 (Id));
6898       W ("Is_Private_Descendant",           Flag53  (Id));
6899       W ("Is_Private_Primitive",            Flag245 (Id));
6900       W ("Is_Protected_Interface",          Flag198 (Id));
6901       W ("Is_Public",                       Flag10  (Id));
6902       W ("Is_Pure",                         Flag44  (Id));
6903       W ("Is_Pure_Unit_Access_Type",        Flag189 (Id));
6904       W ("Is_RACW_Stub_Type",               Flag244 (Id));
6905       W ("Is_Raised",                       Flag224 (Id));
6906       W ("Is_Remote_Call_Interface",        Flag62  (Id));
6907       W ("Is_Remote_Types",                 Flag61  (Id));
6908       W ("Is_Renaming_Of_Object",           Flag112 (Id));
6909       W ("Is_Return_Object",                Flag209 (Id));
6910       W ("Is_Shared_Passive",               Flag60  (Id));
6911       W ("Is_Synchronized_Interface",       Flag199 (Id));
6912       W ("Is_Statically_Allocated",         Flag28  (Id));
6913       W ("Is_Tag",                          Flag78  (Id));
6914       W ("Is_Tagged_Type",                  Flag55  (Id));
6915       W ("Is_Task_Interface",               Flag200 (Id));
6916       W ("Is_Thunk",                        Flag225 (Id));
6917       W ("Is_Trivial_Subprogram",           Flag235 (Id));
6918       W ("Is_True_Constant",                Flag163 (Id));
6919       W ("Is_Unchecked_Union",              Flag117 (Id));
6920       W ("Is_Underlying_Record_View",       Flag246 (Id));
6921       W ("Is_Unsigned_Type",                Flag144 (Id));
6922       W ("Is_VMS_Exception",                Flag133 (Id));
6923       W ("Is_Valued_Procedure",             Flag127 (Id));
6924       W ("Is_Visible_Child_Unit",           Flag116 (Id));
6925       W ("Is_Visible_Formal",               Flag206 (Id));
6926       W ("Is_Volatile",                     Flag16  (Id));
6927       W ("Itype_Printed",                   Flag202 (Id));
6928       W ("Kill_Elaboration_Checks",         Flag32  (Id));
6929       W ("Kill_Range_Checks",               Flag33  (Id));
6930       W ("Kill_Tag_Checks",                 Flag34  (Id));
6931       W ("Known_To_Have_Preelab_Init",      Flag207 (Id));
6932       W ("Low_Bound_Tested",                Flag205 (Id));
6933       W ("Machine_Radix_10",                Flag84  (Id));
6934       W ("Materialize_Entity",              Flag168 (Id));
6935       W ("Must_Be_On_Byte_Boundary",        Flag183 (Id));
6936       W ("Must_Have_Preelab_Init",          Flag208 (Id));
6937       W ("Needs_Debug_Info",                Flag147 (Id));
6938       W ("Needs_No_Actuals",                Flag22  (Id));
6939       W ("Never_Set_In_Source",             Flag115 (Id));
6940       W ("No_Pool_Assigned",                Flag131 (Id));
6941       W ("No_Return",                       Flag113 (Id));
6942       W ("No_Strict_Aliasing",              Flag136 (Id));
6943       W ("Non_Binary_Modulus",              Flag58  (Id));
6944       W ("Nonzero_Is_True",                 Flag162 (Id));
6945       W ("OK_To_Rename",                    Flag247 (Id));
6946       W ("OK_To_Reorder_Components",        Flag239 (Id));
6947       W ("Optimize_Alignment_Space",        Flag241 (Id));
6948       W ("Optimize_Alignment_Time",         Flag242 (Id));
6949       W ("Overlays_Constant",               Flag243 (Id));
6950       W ("Reachable",                       Flag49  (Id));
6951       W ("Referenced",                      Flag156 (Id));
6952       W ("Referenced_As_LHS",               Flag36  (Id));
6953       W ("Referenced_As_Out_Parameter",     Flag227 (Id));
6954       W ("Renamed_In_Spec",                 Flag231 (Id));
6955       W ("Requires_Overriding",             Flag213 (Id));
6956       W ("Return_Present",                  Flag54  (Id));
6957       W ("Returns_By_Ref",                  Flag90  (Id));
6958       W ("Reverse_Bit_Order",               Flag164 (Id));
6959       W ("Sec_Stack_Needed_For_Return",     Flag167 (Id));
6960       W ("Size_Depends_On_Discriminant",    Flag177 (Id));
6961       W ("Size_Known_At_Compile_Time",      Flag92  (Id));
6962       W ("Static_Elaboration_Desired",      Flag77  (Id));
6963       W ("Strict_Alignment",                Flag145 (Id));
6964       W ("Suppress_Elaboration_Warnings",   Flag148 (Id));
6965       W ("Suppress_Init_Proc",              Flag105 (Id));
6966       W ("Suppress_Style_Checks",           Flag165 (Id));
6967       W ("Suppress_Value_Tracking_On_Call", Flag217 (Id));
6968       W ("Treat_As_Volatile",               Flag41  (Id));
6969       W ("Universal_Aliasing",              Flag216 (Id));
6970       W ("Used_As_Generic_Actual",          Flag222 (Id));
6971       W ("Uses_Sec_Stack",                  Flag95  (Id));
6972       W ("Vax_Float",                       Flag151 (Id));
6973       W ("Warnings_Off",                    Flag96  (Id));
6974       W ("Warnings_Off_Used",               Flag236 (Id));
6975       W ("Warnings_Off_Used_Unmodified",    Flag237 (Id));
6976       W ("Warnings_Off_Used_Unreferenced",  Flag238 (Id));
6977       W ("Was_Hidden",                      Flag196 (Id));
6978    end Write_Entity_Flags;
6979
6980    -----------------------
6981    -- Write_Entity_Info --
6982    -----------------------
6983
6984    procedure Write_Entity_Info (Id : Entity_Id; Prefix : String) is
6985
6986       procedure Write_Attribute (Which : String; Nam : E);
6987       --  Write attribute value with given string name
6988
6989       procedure Write_Kind (Id : Entity_Id);
6990       --  Write Ekind field of entity
6991
6992       ---------------------
6993       -- Write_Attribute --
6994       ---------------------
6995
6996       procedure Write_Attribute (Which : String; Nam : E) is
6997       begin
6998          Write_Str (Prefix);
6999          Write_Str (Which);
7000          Write_Int (Int (Nam));
7001          Write_Str (" ");
7002          Write_Name (Chars (Nam));
7003          Write_Str (" ");
7004       end Write_Attribute;
7005
7006       ----------------
7007       -- Write_Kind --
7008       ----------------
7009
7010       procedure Write_Kind (Id : Entity_Id) is
7011          K : constant String := Entity_Kind'Image (Ekind (Id));
7012
7013       begin
7014          Write_Str (Prefix);
7015          Write_Str ("   Kind    ");
7016
7017          if Is_Type (Id) and then Is_Tagged_Type (Id) then
7018             Write_Str ("TAGGED ");
7019          end if;
7020
7021          Write_Str (K (3 .. K'Length));
7022          Write_Str (" ");
7023
7024          if Is_Type (Id) and then Depends_On_Private (Id) then
7025             Write_Str ("Depends_On_Private ");
7026          end if;
7027       end Write_Kind;
7028
7029    --  Start of processing for Write_Entity_Info
7030
7031    begin
7032       Write_Eol;
7033       Write_Attribute ("Name ", Id);
7034       Write_Int (Int (Id));
7035       Write_Eol;
7036       Write_Kind (Id);
7037       Write_Eol;
7038       Write_Attribute ("   Type    ", Etype (Id));
7039       Write_Eol;
7040       Write_Attribute ("   Scope   ", Scope (Id));
7041       Write_Eol;
7042
7043       case Ekind (Id) is
7044
7045          when Discrete_Kind =>
7046             Write_Str ("Bounds: Id = ");
7047
7048             if Present (Scalar_Range (Id)) then
7049                Write_Int (Int (Type_Low_Bound (Id)));
7050                Write_Str (" .. Id = ");
7051                Write_Int (Int (Type_High_Bound (Id)));
7052             else
7053                Write_Str ("Empty");
7054             end if;
7055
7056             Write_Eol;
7057
7058          when Array_Kind =>
7059             declare
7060                Index : E;
7061
7062             begin
7063                Write_Attribute
7064                  ("   Component Type    ", Component_Type (Id));
7065                Write_Eol;
7066                Write_Str (Prefix);
7067                Write_Str ("   Indices ");
7068
7069                Index := First_Index (Id);
7070                while Present (Index) loop
7071                   Write_Attribute (" ", Etype (Index));
7072                   Index := Next_Index (Index);
7073                end loop;
7074
7075                Write_Eol;
7076             end;
7077
7078          when Access_Kind =>
7079                Write_Attribute
7080                  ("   Directly Designated Type ",
7081                   Directly_Designated_Type (Id));
7082                Write_Eol;
7083
7084          when Overloadable_Kind =>
7085             if Present (Homonym (Id)) then
7086                Write_Str ("   Homonym   ");
7087                Write_Name (Chars (Homonym (Id)));
7088                Write_Str ("   ");
7089                Write_Int (Int (Homonym (Id)));
7090                Write_Eol;
7091             end if;
7092
7093             Write_Eol;
7094
7095          when E_Component =>
7096             if Ekind (Scope (Id)) in Record_Kind then
7097                Write_Attribute (
7098                   "   Original_Record_Component   ",
7099                   Original_Record_Component (Id));
7100                Write_Int (Int (Original_Record_Component (Id)));
7101                Write_Eol;
7102             end if;
7103
7104          when others => null;
7105       end case;
7106    end Write_Entity_Info;
7107
7108    -----------------------
7109    -- Write_Field6_Name --
7110    -----------------------
7111
7112    procedure Write_Field6_Name (Id : Entity_Id) is
7113       pragma Warnings (Off, Id);
7114    begin
7115       Write_Str ("First_Rep_Item");
7116    end Write_Field6_Name;
7117
7118    -----------------------
7119    -- Write_Field7_Name --
7120    -----------------------
7121
7122    procedure Write_Field7_Name (Id : Entity_Id) is
7123       pragma Warnings (Off, Id);
7124    begin
7125       Write_Str ("Freeze_Node");
7126    end Write_Field7_Name;
7127
7128    -----------------------
7129    -- Write_Field8_Name --
7130    -----------------------
7131
7132    procedure Write_Field8_Name (Id : Entity_Id) is
7133    begin
7134       case Ekind (Id) is
7135          when E_Component                                  |
7136               E_Discriminant                               =>
7137             Write_Str ("Normalized_First_Bit");
7138
7139          when Formal_Kind                                  |
7140               E_Function                                   |
7141               E_Subprogram_Body                            =>
7142             Write_Str ("Mechanism");
7143
7144          when Type_Kind                                    =>
7145             Write_Str ("Associated_Node_For_Itype");
7146
7147          when E_Loop                                       =>
7148             Write_Str ("First_Exit_Statement");
7149
7150          when E_Package                                    =>
7151             Write_Str ("Dependent_Instances");
7152
7153          when E_Procedure                                  =>
7154             Write_Str ("Postcondition_Proc");
7155
7156          when E_Return_Statement                           =>
7157             Write_Str ("Return_Applies_To");
7158
7159          when E_Variable                                   =>
7160             Write_Str ("Hiding_Loop_Variable");
7161
7162          when others                                       =>
7163             Write_Str ("Field8??");
7164       end case;
7165    end Write_Field8_Name;
7166
7167    -----------------------
7168    -- Write_Field9_Name --
7169    -----------------------
7170
7171    procedure Write_Field9_Name (Id : Entity_Id) is
7172    begin
7173       case Ekind (Id) is
7174          when Type_Kind                                    =>
7175             Write_Str ("Class_Wide_Type");
7176
7177          when E_Function                                   |
7178               E_Generic_Function                           |
7179               E_Generic_Package                            |
7180               E_Generic_Procedure                          |
7181               E_Package                                    |
7182               E_Procedure                                  =>
7183             Write_Str ("Renaming_Map");
7184
7185          when Object_Kind                                  =>
7186             Write_Str ("Current_Value");
7187
7188          when others                                       =>
7189             Write_Str ("Field9??");
7190       end case;
7191    end Write_Field9_Name;
7192
7193    ------------------------
7194    -- Write_Field10_Name --
7195    ------------------------
7196
7197    procedure Write_Field10_Name (Id : Entity_Id) is
7198    begin
7199       case Ekind (Id) is
7200          when Type_Kind                                    =>
7201             Write_Str ("Referenced_Object");
7202
7203          when E_In_Parameter                               |
7204               E_Constant                                   =>
7205             Write_Str ("Discriminal_Link");
7206
7207          when E_Function                                   |
7208               E_Package                                    |
7209               E_Package_Body                               |
7210               E_Procedure                                  =>
7211             Write_Str ("Handler_Records");
7212
7213          when E_Component                                  |
7214               E_Discriminant                               =>
7215             Write_Str ("Normalized_Position_Max");
7216
7217          when others                                       =>
7218             Write_Str ("Field10??");
7219       end case;
7220    end Write_Field10_Name;
7221
7222    ------------------------
7223    -- Write_Field11_Name --
7224    ------------------------
7225
7226    procedure Write_Field11_Name (Id : Entity_Id) is
7227    begin
7228       case Ekind (Id) is
7229          when Formal_Kind                                  =>
7230             Write_Str ("Entry_Component");
7231
7232          when E_Component                                  |
7233               E_Discriminant                               =>
7234             Write_Str ("Component_Bit_Offset");
7235
7236          when E_Constant                                   =>
7237             Write_Str ("Full_View");
7238
7239          when E_Enumeration_Literal                        =>
7240             Write_Str ("Enumeration_Pos");
7241
7242          when E_Block                                      =>
7243             Write_Str ("Block_Node");
7244
7245          when E_Function                                   |
7246               E_Procedure                                  |
7247               E_Entry                                      |
7248               E_Entry_Family                               =>
7249             Write_Str ("Protected_Body_Subprogram");
7250
7251          when E_Generic_Package                            =>
7252             Write_Str ("Generic_Homonym");
7253
7254          when Type_Kind                                    =>
7255             Write_Str ("Full_View");
7256
7257          when others                                       =>
7258             Write_Str ("Field11??");
7259       end case;
7260    end Write_Field11_Name;
7261
7262    ------------------------
7263    -- Write_Field12_Name --
7264    ------------------------
7265
7266    procedure Write_Field12_Name (Id : Entity_Id) is
7267    begin
7268       case Ekind (Id) is
7269          when Entry_Kind                                   =>
7270             Write_Str ("Barrier_Function");
7271
7272          when E_Enumeration_Literal                        =>
7273             Write_Str ("Enumeration_Rep");
7274
7275          when Type_Kind                                    |
7276               E_Component                                  |
7277               E_Constant                                   |
7278               E_Discriminant                               |
7279               E_Exception                                  |
7280               E_In_Parameter                               |
7281               E_In_Out_Parameter                           |
7282               E_Out_Parameter                              |
7283               E_Loop_Parameter                             |
7284               E_Variable                                   =>
7285             Write_Str ("Esize");
7286
7287          when E_Function                                   |
7288               E_Procedure                                  =>
7289             Write_Str ("Next_Inlined_Subprogram");
7290
7291          when E_Package                                    =>
7292             Write_Str ("Associated_Formal_Package");
7293
7294          when others                                       =>
7295             Write_Str ("Field12??");
7296       end case;
7297    end Write_Field12_Name;
7298
7299    ------------------------
7300    -- Write_Field13_Name --
7301    ------------------------
7302
7303    procedure Write_Field13_Name (Id : Entity_Id) is
7304    begin
7305       case Ekind (Id) is
7306          when Type_Kind                                    =>
7307             Write_Str ("RM_Size");
7308
7309          when E_Component                                  |
7310               E_Discriminant                               =>
7311             Write_Str ("Component_Clause");
7312
7313          when E_Function                                   =>
7314             if not Comes_From_Source (Id)
7315                  and then
7316                Chars (Id) = Name_Op_Ne
7317             then
7318                Write_Str ("Corresponding_Equality");
7319
7320             elsif Comes_From_Source (Id) then
7321                Write_Str ("Elaboration_Entity");
7322
7323             else
7324                Write_Str ("Field13??");
7325             end if;
7326
7327          when Formal_Kind                                  |
7328               E_Variable                                   =>
7329             Write_Str ("Extra_Accessibility");
7330
7331          when E_Procedure                                  |
7332               E_Package                                    |
7333               Generic_Unit_Kind                            =>
7334             Write_Str ("Elaboration_Entity");
7335
7336          when others                                       =>
7337             Write_Str ("Field13??");
7338       end case;
7339    end Write_Field13_Name;
7340
7341    -----------------------
7342    -- Write_Field14_Name --
7343    -----------------------
7344
7345    procedure Write_Field14_Name (Id : Entity_Id) is
7346    begin
7347       case Ekind (Id) is
7348          when Type_Kind                                    |
7349               Formal_Kind                                  |
7350               E_Constant                                   |
7351               E_Exception                                  |
7352               E_Variable                                   |
7353               E_Loop_Parameter                             =>
7354             Write_Str ("Alignment");
7355
7356          when E_Component                                  |
7357               E_Discriminant                               =>
7358             Write_Str ("Normalized_Position");
7359
7360          when E_Function                                   |
7361               E_Procedure                                  =>
7362             Write_Str ("First_Optional_Parameter");
7363
7364          when E_Package                                    |
7365               E_Generic_Package                            =>
7366             Write_Str ("Shadow_Entities");
7367
7368          when others                                       =>
7369             Write_Str ("Field14??");
7370       end case;
7371    end Write_Field14_Name;
7372
7373    ------------------------
7374    -- Write_Field15_Name --
7375    ------------------------
7376
7377    procedure Write_Field15_Name (Id : Entity_Id) is
7378    begin
7379       case Ekind (Id) is
7380          when Access_Kind                                  |
7381               Task_Kind                                    =>
7382             Write_Str ("Storage_Size_Variable");
7383
7384          when Class_Wide_Kind                              |
7385               E_Record_Type                                |
7386               E_Record_Subtype                             |
7387               Private_Kind                                 =>
7388             Write_Str ("Primitive_Operations");
7389
7390          when E_Component                                  =>
7391             Write_Str ("DT_Entry_Count");
7392
7393          when Decimal_Fixed_Point_Kind                     =>
7394             Write_Str ("Scale_Value");
7395
7396          when E_Discriminant                               =>
7397             Write_Str ("Discriminant_Number");
7398
7399          when Formal_Kind                                  =>
7400             Write_Str ("Extra_Formal");
7401
7402          when E_Function                                   |
7403               E_Procedure                                  =>
7404             Write_Str ("DT_Position");
7405
7406          when Entry_Kind                                   =>
7407             Write_Str ("Entry_Parameters_Type");
7408
7409          when Enumeration_Kind                             =>
7410             Write_Str ("Lit_Indexes");
7411
7412          when E_Package                                    |
7413               E_Package_Body                               =>
7414             Write_Str ("Related_Instance");
7415
7416          when E_Protected_Type                             =>
7417             Write_Str ("Entry_Bodies_Array");
7418
7419          when E_String_Literal_Subtype                     =>
7420             Write_Str ("String_Literal_Low_Bound");
7421
7422          when others                                       =>
7423             Write_Str ("Field15??");
7424       end case;
7425    end Write_Field15_Name;
7426
7427    ------------------------
7428    -- Write_Field16_Name --
7429    ------------------------
7430
7431    procedure Write_Field16_Name (Id : Entity_Id) is
7432    begin
7433       case Ekind (Id) is
7434          when E_Component                                  =>
7435             Write_Str ("Entry_Formal");
7436
7437          when E_Function                                   |
7438               E_Procedure                                  =>
7439             Write_Str ("DTC_Entity");
7440
7441          when E_Package                                    |
7442               E_Generic_Package                            |
7443               Concurrent_Kind                              =>
7444             Write_Str ("First_Private_Entity");
7445
7446          when E_Record_Type                                |
7447               E_Record_Type_With_Private                   =>
7448             Write_Str ("Access_Disp_Table");
7449
7450          when E_String_Literal_Subtype                     =>
7451             Write_Str ("String_Literal_Length");
7452
7453          when Enumeration_Kind                             =>
7454             Write_Str ("Lit_Strings");
7455
7456          when E_Variable                                   |
7457               E_Out_Parameter                              =>
7458             Write_Str ("Unset_Reference");
7459
7460          when E_Record_Subtype                             |
7461               E_Class_Wide_Subtype                         =>
7462             Write_Str ("Cloned_Subtype");
7463
7464          when others                                       =>
7465             Write_Str ("Field16??");
7466       end case;
7467    end Write_Field16_Name;
7468
7469    ------------------------
7470    -- Write_Field17_Name --
7471    ------------------------
7472
7473    procedure Write_Field17_Name (Id : Entity_Id) is
7474    begin
7475       case Ekind (Id) is
7476          when Digits_Kind                                  =>
7477             Write_Str ("Digits_Value");
7478
7479          when E_Component                                  =>
7480             Write_Str ("Prival");
7481
7482          when E_Discriminant                               =>
7483             Write_Str ("Discriminal");
7484
7485          when E_Block                                      |
7486               Class_Wide_Kind                              |
7487               Concurrent_Kind                              |
7488               Private_Kind                                 |
7489               E_Entry                                      |
7490               E_Entry_Family                               |
7491               E_Function                                   |
7492               E_Generic_Function                           |
7493               E_Generic_Package                            |
7494               E_Generic_Procedure                          |
7495               E_Loop                                       |
7496               E_Operator                                   |
7497               E_Package                                    |
7498               E_Package_Body                               |
7499               E_Procedure                                  |
7500               E_Record_Type                                |
7501               E_Record_Subtype                             |
7502               E_Return_Statement                           |
7503               E_Subprogram_Body                            |
7504               E_Subprogram_Type                            =>
7505             Write_Str ("First_Entity");
7506
7507          when Array_Kind                                   =>
7508             Write_Str ("First_Index");
7509
7510          when Enumeration_Kind                             =>
7511             Write_Str ("First_Literal");
7512
7513          when Access_Kind                                  =>
7514             Write_Str ("Master_Id");
7515
7516          when Modular_Integer_Kind                         =>
7517             Write_Str ("Modulus");
7518
7519          when Formal_Kind                                  |
7520               E_Constant                                   |
7521               E_Generic_In_Out_Parameter                   |
7522               E_Variable                                   =>
7523             Write_Str ("Actual_Subtype");
7524
7525          when E_Incomplete_Type                            =>
7526             Write_Str ("Non_Limited_View");
7527
7528          when E_Incomplete_Subtype                         =>
7529             if From_With_Type (Id) then
7530                Write_Str ("Non_Limited_View");
7531             end if;
7532
7533          when others                                       =>
7534             Write_Str ("Field17??");
7535       end case;
7536    end Write_Field17_Name;
7537
7538    ------------------------
7539    -- Write_Field18_Name --
7540    ------------------------
7541
7542    procedure Write_Field18_Name (Id : Entity_Id) is
7543    begin
7544       case Ekind (Id) is
7545          when E_Enumeration_Literal                        |
7546               E_Function                                   |
7547               E_Operator                                   |
7548               E_Procedure                                  =>
7549             Write_Str ("Alias");
7550
7551          when E_Record_Type                                =>
7552             Write_Str ("Corresponding_Concurrent_Type");
7553
7554          when E_Entry_Index_Parameter                      =>
7555             Write_Str ("Entry_Index_Constant");
7556
7557          when E_Class_Wide_Subtype                         |
7558               E_Access_Protected_Subprogram_Type           |
7559               E_Anonymous_Access_Protected_Subprogram_Type |
7560               E_Access_Subprogram_Type                     |
7561               E_Exception_Type                             =>
7562             Write_Str ("Equivalent_Type");
7563
7564          when Fixed_Point_Kind                             =>
7565             Write_Str ("Delta_Value");
7566
7567          when Object_Kind                                  =>
7568             Write_Str ("Renamed_Object");
7569
7570          when E_Exception                                  |
7571               E_Package                                    |
7572               E_Generic_Function                           |
7573               E_Generic_Procedure                          |
7574               E_Generic_Package                            =>
7575             Write_Str ("Renamed_Entity");
7576
7577          when Incomplete_Or_Private_Kind                   =>
7578             Write_Str ("Private_Dependents");
7579
7580          when Concurrent_Kind                              =>
7581             Write_Str ("Corresponding_Record_Type");
7582
7583          when E_Label                                      |
7584               E_Loop                                       |
7585               E_Block                                      =>
7586             Write_Str ("Enclosing_Scope");
7587
7588          when others                                       =>
7589             Write_Str ("Field18??");
7590       end case;
7591    end Write_Field18_Name;
7592
7593    -----------------------
7594    -- Write_Field19_Name --
7595    -----------------------
7596
7597    procedure Write_Field19_Name (Id : Entity_Id) is
7598    begin
7599       case Ekind (Id) is
7600          when E_Array_Type                                 |
7601               E_Array_Subtype                              =>
7602             Write_Str ("Related_Array_Object");
7603
7604          when E_Block                                      |
7605               Concurrent_Kind                              |
7606               E_Function                                   |
7607               E_Procedure                                  |
7608               E_Return_Statement                           |
7609               Entry_Kind                                   =>
7610             Write_Str ("Finalization_Chain_Entity");
7611
7612          when E_Constant | E_Variable                      =>
7613             Write_Str ("Size_Check_Code");
7614
7615          when E_Discriminant                               =>
7616             Write_Str ("Corresponding_Discriminant");
7617
7618          when E_Package                                    |
7619               E_Generic_Package                            =>
7620             Write_Str ("Body_Entity");
7621
7622          when E_Package_Body                               |
7623               Formal_Kind                                  =>
7624             Write_Str ("Spec_Entity");
7625
7626          when Private_Kind                                 =>
7627             Write_Str ("Underlying_Full_View");
7628
7629          when E_Record_Type                                =>
7630             Write_Str ("Parent_Subtype");
7631
7632          when others                                       =>
7633             Write_Str ("Field19??");
7634       end case;
7635    end Write_Field19_Name;
7636
7637    -----------------------
7638    -- Write_Field20_Name --
7639    -----------------------
7640
7641    procedure Write_Field20_Name (Id : Entity_Id) is
7642    begin
7643       case Ekind (Id) is
7644          when Array_Kind                                   =>
7645             Write_Str ("Component_Type");
7646
7647          when E_In_Parameter                               |
7648               E_Generic_In_Parameter                       =>
7649             Write_Str ("Default_Value");
7650
7651          when Access_Kind                                  =>
7652             Write_Str ("Directly_Designated_Type");
7653
7654          when E_Component                                  =>
7655             Write_Str ("Discriminant_Checking_Func");
7656
7657          when E_Constant                                   |
7658               E_Variable                                   =>
7659             Write_Str ("Prival_Link");
7660
7661          when E_Discriminant                               =>
7662             Write_Str ("Discriminant_Default_Value");
7663
7664          when E_Block                                      |
7665               Class_Wide_Kind                              |
7666               Concurrent_Kind                              |
7667               Private_Kind                                 |
7668               E_Entry                                      |
7669               E_Entry_Family                               |
7670               E_Function                                   |
7671               E_Generic_Function                           |
7672               E_Generic_Package                            |
7673               E_Generic_Procedure                          |
7674               E_Loop                                       |
7675               E_Operator                                   |
7676               E_Package                                    |
7677               E_Package_Body                               |
7678               E_Procedure                                  |
7679               E_Record_Type                                |
7680               E_Record_Subtype                             |
7681               E_Return_Statement                           |
7682               E_Subprogram_Body                            |
7683               E_Subprogram_Type                            =>
7684
7685             Write_Str ("Last_Entity");
7686
7687          when Scalar_Kind                                  =>
7688             Write_Str ("Scalar_Range");
7689
7690          when E_Exception                                  =>
7691             Write_Str ("Register_Exception_Call");
7692
7693          when others                                       =>
7694             Write_Str ("Field20??");
7695       end case;
7696    end Write_Field20_Name;
7697
7698    -----------------------
7699    -- Write_Field21_Name --
7700    -----------------------
7701
7702    procedure Write_Field21_Name (Id : Entity_Id) is
7703    begin
7704       case Ekind (Id) is
7705          when E_Constant                                   |
7706               E_Exception                                  |
7707               E_Function                                   |
7708               E_Generic_Function                           |
7709               E_Procedure                                  |
7710               E_Generic_Procedure                          |
7711               E_Variable                                   =>
7712             Write_Str ("Interface_Name");
7713
7714          when Concurrent_Kind                              |
7715               Incomplete_Or_Private_Kind                   |
7716               Class_Wide_Kind                              |
7717               E_Record_Type                                |
7718               E_Record_Subtype                             =>
7719             Write_Str ("Discriminant_Constraint");
7720
7721          when Entry_Kind                                   =>
7722             Write_Str ("Accept_Address");
7723
7724          when Fixed_Point_Kind                             =>
7725             Write_Str ("Small_Value");
7726
7727          when E_In_Parameter                               =>
7728             Write_Str ("Default_Expr_Function");
7729
7730          when Array_Kind                                   |
7731               Modular_Integer_Kind                         =>
7732             Write_Str ("Original_Array_Type");
7733
7734          when others                                       =>
7735             Write_Str ("Field21??");
7736       end case;
7737    end Write_Field21_Name;
7738
7739    -----------------------
7740    -- Write_Field22_Name --
7741    -----------------------
7742
7743    procedure Write_Field22_Name (Id : Entity_Id) is
7744    begin
7745       case Ekind (Id) is
7746          when Access_Kind                                  =>
7747             Write_Str ("Associated_Storage_Pool");
7748
7749          when Array_Kind                                   =>
7750             Write_Str ("Component_Size");
7751
7752          when E_Component                                  |
7753               E_Discriminant                               =>
7754             Write_Str ("Original_Record_Component");
7755
7756          when E_Enumeration_Literal                        =>
7757             Write_Str ("Enumeration_Rep_Expr");
7758
7759          when E_Exception                                  =>
7760             Write_Str ("Exception_Code");
7761
7762          when Formal_Kind                                  =>
7763             Write_Str ("Protected_Formal");
7764
7765          when E_Record_Type                                =>
7766             Write_Str ("Corresponding_Remote_Type");
7767
7768          when E_Block                                      |
7769               E_Entry                                      |
7770               E_Entry_Family                               |
7771               E_Function                                   |
7772               E_Loop                                       |
7773               E_Package                                    |
7774               E_Package_Body                               |
7775               E_Generic_Package                            |
7776               E_Generic_Function                           |
7777               E_Generic_Procedure                          |
7778               E_Procedure                                  |
7779               E_Protected_Type                             |
7780               E_Return_Statement                           |
7781               E_Subprogram_Body                            |
7782               E_Task_Type                                  =>
7783             Write_Str ("Scope_Depth_Value");
7784
7785          when E_Record_Type_With_Private                   |
7786               E_Record_Subtype_With_Private                |
7787               E_Private_Type                               |
7788               E_Private_Subtype                            |
7789               E_Limited_Private_Type                       |
7790               E_Limited_Private_Subtype                    =>
7791             Write_Str ("Private_View");
7792
7793          when E_Variable                                   =>
7794             Write_Str ("Shared_Var_Procs_Instance");
7795
7796          when others                                       =>
7797             Write_Str ("Field22??");
7798       end case;
7799    end Write_Field22_Name;
7800
7801    ------------------------
7802    -- Write_Field23_Name --
7803    ------------------------
7804
7805    procedure Write_Field23_Name (Id : Entity_Id) is
7806    begin
7807       case Ekind (Id) is
7808          when Access_Kind                                  =>
7809             Write_Str ("Associated_Final_Chain");
7810
7811          when Array_Kind                                   =>
7812             Write_Str ("Packed_Array_Type");
7813
7814          when E_Block                                      =>
7815             Write_Str ("Entry_Cancel_Parameter");
7816
7817          when E_Discriminant                               =>
7818             Write_Str ("CR_Discriminant");
7819
7820          when E_Enumeration_Type                           =>
7821             Write_Str ("Enum_Pos_To_Rep");
7822
7823          when Formal_Kind                                  |
7824               E_Variable                                   =>
7825             Write_Str ("Extra_Constrained");
7826
7827          when E_Generic_Function                           |
7828               E_Generic_Package                            |
7829               E_Generic_Procedure                          =>
7830             Write_Str ("Inner_Instances");
7831
7832          when Concurrent_Kind                              |
7833               Incomplete_Or_Private_Kind                   |
7834               Class_Wide_Kind                              |
7835               E_Record_Type                                |
7836               E_Record_Subtype                             =>
7837             Write_Str ("Stored_Constraint");
7838
7839          when E_Function                                   |
7840               E_Procedure                                  =>
7841             if Present (Scope (Id))
7842               and then Is_Protected_Type (Scope (Id))
7843             then
7844                Write_Str ("Protection_Object");
7845             else
7846                Write_Str ("Generic_Renamings");
7847             end if;
7848
7849          when E_Package                                    =>
7850             if Is_Generic_Instance (Id) then
7851                Write_Str ("Generic_Renamings");
7852             else
7853                Write_Str ("Limited_View");
7854             end if;
7855
7856          when Entry_Kind                                   =>
7857             Write_Str ("Protection_Object");
7858
7859          when others                                       =>
7860             Write_Str ("Field23??");
7861       end case;
7862    end Write_Field23_Name;
7863
7864    ------------------------
7865    -- Write_Field24_Name --
7866    ------------------------
7867
7868    procedure Write_Field24_Name (Id : Entity_Id) is
7869    begin
7870       case Ekind (Id) is
7871          when Subprogram_Kind                              =>
7872             Write_Str ("Spec_PPC_List");
7873
7874          when E_Record_Type                                =>
7875             Write_Str ("Underlying record view");
7876
7877          when E_Variable | E_Constant                      =>
7878             Write_Str ("Related expression");
7879
7880          when others                                       =>
7881             Write_Str ("???");
7882       end case;
7883    end Write_Field24_Name;
7884
7885    ------------------------
7886    -- Write_Field25_Name --
7887    ------------------------
7888
7889    procedure Write_Field25_Name (Id : Entity_Id) is
7890    begin
7891       case Ekind (Id) is
7892          when E_Component                                  =>
7893             Write_Str ("DT_Offset_To_Top_Func");
7894
7895          when E_Procedure                                  |
7896               E_Function                                   =>
7897             Write_Str ("Interface_Alias");
7898
7899          when E_Record_Type                                |
7900               E_Record_Subtype                             |
7901               E_Record_Type_With_Private                   |
7902               E_Record_Subtype_With_Private                =>
7903             Write_Str ("Interfaces");
7904
7905          when Task_Kind                                    =>
7906             Write_Str ("Task_Body_Procedure");
7907
7908          when E_Variable                                   =>
7909             Write_Str ("Debug_Renaming_Link");
7910
7911          when others                                       =>
7912             Write_Str ("Field25??");
7913       end case;
7914    end Write_Field25_Name;
7915
7916    ------------------------
7917    -- Write_Field26_Name --
7918    ------------------------
7919
7920    procedure Write_Field26_Name (Id : Entity_Id) is
7921    begin
7922       case Ekind (Id) is
7923          when E_Component                                  |
7924               E_Constant                                   =>
7925             Write_Str ("Related_Type");
7926
7927          when E_Generic_Package                            |
7928               E_Package                                    =>
7929             Write_Str ("Package_Instantiation");
7930
7931          when E_Procedure                                  |
7932               E_Function                                   =>
7933
7934             if Is_Dispatching_Operation (Id) then
7935                Write_Str ("Overridden_Operation");
7936             else
7937                Write_Str ("Static_Initialization");
7938             end if;
7939
7940          when E_Record_Type                                |
7941               E_Record_Type_With_Private                   =>
7942             Write_Str ("Dispatch_Table_Wrappers");
7943
7944          when E_In_Out_Parameter                           |
7945               E_Out_Parameter                              |
7946               E_Variable                                   =>
7947             Write_Str ("Last_Assignment");
7948
7949          when Task_Kind                                    =>
7950             Write_Str ("Relative_Deadline_Variable");
7951
7952          when others                                       =>
7953             Write_Str ("Field26??");
7954       end case;
7955    end Write_Field26_Name;
7956
7957    ------------------------
7958    -- Write_Field27_Name --
7959    ------------------------
7960
7961    procedure Write_Field27_Name (Id : Entity_Id) is
7962    begin
7963       case Ekind (Id) is
7964          when E_Procedure                                  =>
7965             Write_Str ("Wrapped_Entity");
7966
7967          when E_Package | Type_Kind                        =>
7968             Write_Str ("Current_Use_Clause");
7969
7970          when others                                       =>
7971             Write_Str ("Field27??");
7972       end case;
7973    end Write_Field27_Name;
7974
7975    ------------------------
7976    -- Write_Field28_Name --
7977    ------------------------
7978
7979    procedure Write_Field28_Name (Id : Entity_Id) is
7980    begin
7981       case Ekind (Id) is
7982          when E_Procedure | E_Function | E_Entry           =>
7983             Write_Str ("Extra_Formals");
7984
7985          when others                                       =>
7986             Write_Str ("Field28??");
7987       end case;
7988    end Write_Field28_Name;
7989
7990    -------------------------
7991    -- Iterator Procedures --
7992    -------------------------
7993
7994    procedure Proc_Next_Component                 (N : in out Node_Id) is
7995    begin
7996       N := Next_Component (N);
7997    end Proc_Next_Component;
7998
7999    procedure Proc_Next_Component_Or_Discriminant (N : in out Node_Id) is
8000    begin
8001       N := Next_Entity (N);
8002       while Present (N) loop
8003          exit when Ekind_In (N, E_Component, E_Discriminant);
8004          N := Next_Entity (N);
8005       end loop;
8006    end Proc_Next_Component_Or_Discriminant;
8007
8008    procedure Proc_Next_Discriminant              (N : in out Node_Id) is
8009    begin
8010       N := Next_Discriminant (N);
8011    end Proc_Next_Discriminant;
8012
8013    procedure Proc_Next_Formal                    (N : in out Node_Id) is
8014    begin
8015       N := Next_Formal (N);
8016    end Proc_Next_Formal;
8017
8018    procedure Proc_Next_Formal_With_Extras        (N : in out Node_Id) is
8019    begin
8020       N := Next_Formal_With_Extras (N);
8021    end Proc_Next_Formal_With_Extras;
8022
8023    procedure Proc_Next_Index                     (N : in out Node_Id) is
8024    begin
8025       N := Next_Index (N);
8026    end Proc_Next_Index;
8027
8028    procedure Proc_Next_Inlined_Subprogram        (N : in out Node_Id) is
8029    begin
8030       N := Next_Inlined_Subprogram (N);
8031    end Proc_Next_Inlined_Subprogram;
8032
8033    procedure Proc_Next_Literal                   (N : in out Node_Id) is
8034    begin
8035       N := Next_Literal (N);
8036    end Proc_Next_Literal;
8037
8038    procedure Proc_Next_Stored_Discriminant       (N : in out Node_Id) is
8039    begin
8040       N := Next_Stored_Discriminant (N);
8041    end Proc_Next_Stored_Discriminant;
8042
8043 end Einfo;