OSDN Git Service

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