OSDN Git Service

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