OSDN Git Service

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