OSDN Git Service

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