OSDN Git Service

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