OSDN Git Service

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