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