OSDN Git Service

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