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