OSDN Git Service

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