OSDN Git Service

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