OSDN Git Service

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