OSDN Git Service

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