File : 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-2016, 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 --                                                                          --
  19 --                                                                          --
  20 --                                                                          --
  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 Elists;  use Elists;
  37 with Namet;   use Namet;
  38 with Nlists;  use Nlists;
  39 with Output;  use Output;
  40 with Sinfo;   use Sinfo;
  41 with Stand;   use Stand;
  42 
  43 package body Einfo is
  44 
  45    use Atree.Unchecked_Access;
  46    --  This is one of the packages that is allowed direct untyped access to
  47    --  the fields in a node, since it provides the next level abstraction
  48    --  which incorporates appropriate checks.
  49 
  50    ----------------------------------------------
  51    -- Usage of Fields in Defining Entity Nodes --
  52    ----------------------------------------------
  53 
  54    --  Four of these fields are defined in Sinfo, since they in are the base
  55    --  part of the node. The access routines for these four fields and the
  56    --  corresponding set procedures are defined in Sinfo. These fields are
  57    --  present in all entities. Note that Homonym is also in the base part of
  58    --  the node, but has access routines that are more properly part of Einfo,
  59    --  which is why they are defined here.
  60 
  61    --    Chars                           Name1
  62    --    Next_Entity                     Node2
  63    --    Scope                           Node3
  64    --    Etype                           Node5
  65 
  66    --  Remaining fields are present only in extended nodes (i.e. entities).
  67 
  68    --  The following fields are present in all entities
  69 
  70    --    Homonym                         Node4
  71    --    First_Rep_Item                  Node6
  72    --    Freeze_Node                     Node7
  73    --    Associated_Entity               Node37
  74 
  75    --  The usage of other fields (and the entity kinds to which it applies)
  76    --  depends on the particular field (see Einfo spec for details).
  77 
  78    --    Associated_Node_For_Itype       Node8
  79    --    Dependent_Instances             Elist8
  80    --    Hiding_Loop_Variable            Node8
  81    --    Mechanism                       Uint8 (but returns Mechanism_Type)
  82    --    Normalized_First_Bit            Uint8
  83    --    Refinement_Constituents         Elist8
  84    --    Return_Applies_To               Node8
  85    --    First_Exit_Statement            Node8
  86 
  87    --    Class_Wide_Type                 Node9
  88    --    Current_Value                   Node9
  89    --    Renaming_Map                    Uint9
  90 
  91    --    Direct_Primitive_Operations     Elist10
  92    --    Discriminal_Link                Node10
  93    --    Float_Rep                       Uint10 (but returns Float_Rep_Kind)
  94    --    Handler_Records                 List10
  95    --    Normalized_Position_Max         Uint10
  96    --    Part_Of_Constituents            Elist10
  97 
  98    --    Block_Node                      Node11
  99    --    Component_Bit_Offset            Uint11
 100    --    Full_View                       Node11
 101    --    Entry_Component                 Node11
 102    --    Enumeration_Pos                 Uint11
 103    --    Generic_Homonym                 Node11
 104    --    Part_Of_References              Elist11
 105    --    Protected_Body_Subprogram       Node11
 106 
 107    --    Barrier_Function                Node12
 108    --    Enumeration_Rep                 Uint12
 109    --    Esize                           Uint12
 110    --    Next_Inlined_Subprogram         Node12
 111 
 112    --    Component_Clause                Node13
 113    --    Elaboration_Entity              Node13
 114    --    Extra_Accessibility             Node13
 115    --    RM_Size                         Uint13
 116 
 117    --    Alignment                       Uint14
 118    --    Normalized_Position             Uint14
 119    --    Postconditions_Proc             Node14
 120    --    Shadow_Entities                 List14
 121 
 122    --    Discriminant_Number             Uint15
 123    --    DT_Position                     Uint15
 124    --    DT_Entry_Count                  Uint15
 125    --    Entry_Parameters_Type           Node15
 126    --    Extra_Formal                    Node15
 127    --    Pending_Access_Types            Elist15
 128    --    Related_Instance                Node15
 129    --    Status_Flag_Or_Transient_Decl   Node15
 130 
 131    --    Access_Disp_Table               Elist16
 132    --    Body_References                 Elist16
 133    --    Cloned_Subtype                  Node16
 134    --    DTC_Entity                      Node16
 135    --    Entry_Formal                    Node16
 136    --    First_Private_Entity            Node16
 137    --    Lit_Strings                     Node16
 138    --    Scale_Value                     Uint16
 139    --    String_Literal_Length           Uint16
 140    --    Unset_Reference                 Node16
 141 
 142    --    Actual_Subtype                  Node17
 143    --    Digits_Value                    Uint17
 144    --    Discriminal                     Node17
 145    --    First_Entity                    Node17
 146    --    First_Index                     Node17
 147    --    First_Literal                   Node17
 148    --    Master_Id                       Node17
 149    --    Modulus                         Uint17
 150    --    Prival                          Node17
 151 
 152    --    Alias                           Node18
 153    --    Corresponding_Concurrent_Type   Node18
 154    --    Corresponding_Protected_Entry   Node18
 155    --    Corresponding_Record_Type       Node18
 156    --    Delta_Value                     Ureal18
 157    --    Enclosing_Scope                 Node18
 158    --    Equivalent_Type                 Node18
 159    --    Lit_Indexes                     Node18
 160    --    Private_Dependents              Elist18
 161    --    Renamed_Entity                  Node18
 162    --    Renamed_Object                  Node18
 163    --    String_Literal_Low_Bound        Node18
 164 
 165    --    Body_Entity                     Node19
 166    --    Corresponding_Discriminant      Node19
 167    --    Default_Aspect_Component_Value  Node19
 168    --    Default_Aspect_Value            Node19
 169    --    Entry_Bodies_Array              Node19
 170    --    Extra_Accessibility_Of_Result   Node19
 171    --    Non_Limited_View                Node19
 172    --    Parent_Subtype                  Node19
 173    --    Size_Check_Code                 Node19
 174    --    Spec_Entity                     Node19
 175    --    Underlying_Full_View            Node19
 176 
 177    --    Component_Type                  Node20
 178    --    Default_Value                   Node20
 179    --    Directly_Designated_Type        Node20
 180    --    Discriminant_Checking_Func      Node20
 181    --    Discriminant_Default_Value      Node20
 182    --    Last_Entity                     Node20
 183    --    Prival_Link                     Node20
 184    --    Register_Exception_Call         Node20
 185    --    Scalar_Range                    Node20
 186 
 187    --    Accept_Address                  Elist21
 188    --    Default_Expr_Function           Node21
 189    --    Discriminant_Constraint         Elist21
 190    --    Interface_Name                  Node21
 191    --    Original_Array_Type             Node21
 192    --    Small_Value                     Ureal21
 193 
 194    --    Associated_Storage_Pool         Node22
 195    --    Component_Size                  Uint22
 196    --    Corresponding_Remote_Type       Node22
 197    --    Enumeration_Rep_Expr            Node22
 198    --    Original_Record_Component       Node22
 199    --    Private_View                    Node22
 200    --    Protected_Formal                Node22
 201    --    Scope_Depth_Value               Uint22
 202    --    Shared_Var_Procs_Instance       Node22
 203 
 204    --    CR_Discriminant                 Node23
 205    --    Entry_Cancel_Parameter          Node23
 206    --    Enum_Pos_To_Rep                 Node23
 207    --    Extra_Constrained               Node23
 208    --    Finalization_Master             Node23
 209    --    Generic_Renamings               Elist23
 210    --    Inner_Instances                 Elist23
 211    --    Limited_View                    Node23
 212    --    Packed_Array_Impl_Type          Node23
 213    --    Protection_Object               Node23
 214    --    Stored_Constraint               Elist23
 215 
 216    --    Incomplete_Actuals              Elist24
 217    --    Related_Expression              Node24
 218    --    Subps_Index                     Uint24
 219 
 220    --    Contract_Wrapper                Node25
 221    --    Debug_Renaming_Link             Node25
 222    --    DT_Offset_To_Top_Func           Node25
 223    --    Interface_Alias                 Node25
 224    --    Interfaces                      Elist25
 225    --    Related_Array_Object            Node25
 226    --    Static_Discrete_Predicate       List25
 227    --    Static_Real_Or_String_Predicate Node25
 228    --    Task_Body_Procedure             Node25
 229 
 230    --    Dispatch_Table_Wrappers         Elist26
 231    --    Last_Assignment                 Node26
 232    --    Overridden_Operation            Node26
 233    --    Package_Instantiation           Node26
 234    --    Storage_Size_Variable           Node26
 235 
 236    --    Current_Use_Clause              Node27
 237    --    Related_Type                    Node27
 238    --    Wrapped_Entity                  Node27
 239 
 240    --    Extra_Formals                   Node28
 241    --    Finalizer                       Node28
 242    --    Initialization_Statements       Node28
 243    --    Original_Access_Type            Node28
 244    --    Relative_Deadline_Variable      Node28
 245    --    Underlying_Record_View          Node28
 246 
 247    --    BIP_Initialization_Call         Node29
 248    --    Subprograms_For_Type            Elist29
 249 
 250    --    Anonymous_Object                Node30
 251    --    Corresponding_Equality          Node30
 252    --    Last_Aggregate_Assignment       Node30
 253    --    Static_Initialization           Node30
 254 
 255    --    Derived_Type_Link               Node31
 256    --    Thunk_Entity                    Node31
 257    --    Activation_Record_Component     Node31
 258 
 259    --    Corresponding_Function          Node32
 260    --    Corresponding_Procedure         Node32
 261    --    Encapsulating_State             Node32
 262    --    No_Tagged_Streams_Pragma        Node32
 263 
 264    --    Linker_Section_Pragma           Node33
 265 
 266    --    Contract                        Node34
 267 
 268    --    Anonymous_Master                Node35
 269    --    Import_Pragma                   Node35
 270 
 271    --    Class_Wide_Preconds             List38
 272 
 273    --    Class_Wide_Postconds            List39
 274 
 275    --    SPARK_Pragma                    Node40
 276 
 277    --    Original_Protected_Subprogram   Node41
 278    --    SPARK_Aux_Pragma                Node41
 279 
 280    ---------------------------------------------
 281    -- Usage of Flags in Defining Entity Nodes --
 282    ---------------------------------------------
 283 
 284    --  All flags are unique, there is no overlaying, so each flag is physically
 285    --  present in every entity. However, for many of the flags, it only makes
 286    --  sense for them to be set true for certain subsets of entity kinds. See
 287    --  the spec of Einfo for further details.
 288 
 289    --    Is_Inlined_Always               Flag1
 290    --    Is_Hidden_Non_Overridden_Subpgm Flag2
 291    --    Has_Default_Init_Cond           Flag3
 292    --    Is_Frozen                       Flag4
 293    --    Has_Discriminants               Flag5
 294    --    Is_Dispatching_Operation        Flag6
 295    --    Is_Immediately_Visible          Flag7
 296    --    In_Use                          Flag8
 297    --    Is_Potentially_Use_Visible      Flag9
 298    --    Is_Public                       Flag10
 299 
 300    --    Is_Inlined                      Flag11
 301    --    Is_Constrained                  Flag12
 302    --    Is_Generic_Type                 Flag13
 303    --    Depends_On_Private              Flag14
 304    --    Is_Aliased                      Flag15
 305    --    Is_Volatile                     Flag16
 306    --    Is_Internal                     Flag17
 307    --    Has_Delayed_Freeze              Flag18
 308    --    Is_Abstract_Subprogram          Flag19
 309    --    Is_Concurrent_Record_Type       Flag20
 310 
 311    --    Has_Master_Entity               Flag21
 312    --    Needs_No_Actuals                Flag22
 313    --    Has_Storage_Size_Clause         Flag23
 314    --    Is_Imported                     Flag24
 315    --    Is_Limited_Record               Flag25
 316    --    Has_Completion                  Flag26
 317    --    Has_Pragma_Controlled           Flag27
 318    --    Is_Statically_Allocated         Flag28
 319    --    Has_Size_Clause                 Flag29
 320    --    Has_Task                        Flag30
 321 
 322    --    Checks_May_Be_Suppressed        Flag31
 323    --    Kill_Elaboration_Checks         Flag32
 324    --    Kill_Range_Checks               Flag33
 325    --    Has_Independent_Components      Flag34
 326    --    Is_Class_Wide_Equivalent_Type   Flag35
 327    --    Referenced_As_LHS               Flag36
 328    --    Is_Known_Non_Null               Flag37
 329    --    Can_Never_Be_Null               Flag38
 330    --    Has_Default_Aspect              Flag39
 331    --    Body_Needed_For_SAL             Flag40
 332 
 333    --    Treat_As_Volatile               Flag41
 334    --    Is_Controlled                   Flag42
 335    --    Has_Controlled_Component        Flag43
 336    --    Is_Pure                         Flag44
 337    --    In_Private_Part                 Flag45
 338    --    Has_Alignment_Clause            Flag46
 339    --    Has_Exit                        Flag47
 340    --    In_Package_Body                 Flag48
 341    --    Reachable                       Flag49
 342    --    Delay_Subprogram_Descriptors    Flag50
 343 
 344    --    Is_Packed                       Flag51
 345    --    Is_Entry_Formal                 Flag52
 346    --    Is_Private_Descendant           Flag53
 347    --    Return_Present                  Flag54
 348    --    Is_Tagged_Type                  Flag55
 349    --    Has_Homonym                     Flag56
 350    --    Is_Hidden                       Flag57
 351    --    Non_Binary_Modulus              Flag58
 352    --    Is_Preelaborated                Flag59
 353    --    Is_Shared_Passive               Flag60
 354 
 355    --    Is_Remote_Types                 Flag61
 356    --    Is_Remote_Call_Interface        Flag62
 357    --    Is_Character_Type               Flag63
 358    --    Is_Intrinsic_Subprogram         Flag64
 359    --    Has_Record_Rep_Clause           Flag65
 360    --    Has_Enumeration_Rep_Clause      Flag66
 361    --    Has_Small_Clause                Flag67
 362    --    Has_Component_Size_Clause       Flag68
 363    --    Is_Access_Constant              Flag69
 364    --    Is_First_Subtype                Flag70
 365 
 366    --    Has_Completion_In_Body          Flag71
 367    --    Has_Unknown_Discriminants       Flag72
 368    --    Is_Child_Unit                   Flag73
 369    --    Is_CPP_Class                    Flag74
 370    --    Has_Non_Standard_Rep            Flag75
 371    --    Is_Constructor                  Flag76
 372    --    Static_Elaboration_Desired      Flag77
 373    --    Is_Tag                          Flag78
 374    --    Has_All_Calls_Remote            Flag79
 375    --    Is_Constr_Subt_For_U_Nominal    Flag80
 376 
 377    --    Is_Asynchronous                 Flag81
 378    --    Has_Gigi_Rep_Item               Flag82
 379    --    Has_Machine_Radix_Clause        Flag83
 380    --    Machine_Radix_10                Flag84
 381    --    Is_Atomic                       Flag85
 382    --    Has_Atomic_Components           Flag86
 383    --    Has_Volatile_Components         Flag87
 384    --    Discard_Names                   Flag88
 385    --    Is_Interrupt_Handler            Flag89
 386    --    Returns_By_Ref                  Flag90
 387 
 388    --    Is_Itype                        Flag91
 389    --    Size_Known_At_Compile_Time      Flag92
 390    --    Reverse_Storage_Order           Flag93
 391    --    Is_Generic_Actual_Type          Flag94
 392    --    Uses_Sec_Stack                  Flag95
 393    --    Warnings_Off                    Flag96
 394    --    Is_Controlling_Formal           Flag97
 395    --    Has_Controlling_Result          Flag98
 396    --    Is_Exported                     Flag99
 397    --    Has_Specified_Layout            Flag100
 398 
 399    --    Has_Nested_Block_With_Handler   Flag101
 400    --    Is_Called                       Flag102
 401    --    Is_Completely_Hidden            Flag103
 402    --    Address_Taken                   Flag104
 403    --    Suppress_Initialization         Flag105
 404    --    Is_Limited_Composite            Flag106
 405    --    Is_Private_Composite            Flag107
 406    --    Default_Expressions_Processed   Flag108
 407    --    Is_Non_Static_Subtype           Flag109
 408    --    Has_Out_Or_In_Out_Parameter     Flag110
 409 
 410    --    Is_Formal_Subprogram            Flag111
 411    --    Is_Renaming_Of_Object           Flag112
 412    --    No_Return                       Flag113
 413    --    Delay_Cleanups                  Flag114
 414    --    Never_Set_In_Source             Flag115
 415    --    Is_Visible_Lib_Unit             Flag116
 416    --    Is_Unchecked_Union              Flag117
 417    --    Is_For_Access_Subtype           Flag118
 418    --    Has_Convention_Pragma           Flag119
 419    --    Has_Primitive_Operations        Flag120
 420 
 421    --    Has_Pragma_Pack                 Flag121
 422    --    Is_Bit_Packed_Array             Flag122
 423    --    Has_Unchecked_Union             Flag123
 424    --    Is_Eliminated                   Flag124
 425    --    C_Pass_By_Copy                  Flag125
 426    --    Is_Instantiated                 Flag126
 427    --    Is_Valued_Procedure             Flag127
 428    --    (used for Component_Alignment)  Flag128
 429    --    (used for Component_Alignment)  Flag129
 430    --    Is_Generic_Instance             Flag130
 431 
 432    --    No_Pool_Assigned                Flag131
 433    --    Is_Default_Init_Cond_Procedure  Flag132
 434    --    Has_Inherited_Default_Init_Cond Flag133
 435    --    Returns_Limited_View            Flag134
 436    --    Has_Aliased_Components          Flag135
 437    --    No_Strict_Aliasing              Flag136
 438    --    Is_Machine_Code_Subprogram      Flag137
 439    --    Is_Packed_Array_Impl_Type       Flag138
 440    --    Has_Biased_Representation       Flag139
 441    --    Has_Complex_Representation      Flag140
 442 
 443    --    Is_Constr_Subt_For_UN_Aliased   Flag141
 444    --    Has_Missing_Return              Flag142
 445    --    Has_Recursive_Call              Flag143
 446    --    Is_Unsigned_Type                Flag144
 447    --    Strict_Alignment                Flag145
 448    --    Is_Abstract_Type                Flag146
 449    --    Needs_Debug_Info                Flag147
 450    --    Suppress_Elaboration_Warnings   Flag148
 451    --    Is_Compilation_Unit             Flag149
 452    --    Has_Pragma_Elaborate_Body       Flag150
 453 
 454    --    Has_Private_Ancestor            Flag151
 455    --    Entry_Accepted                  Flag152
 456    --    Is_Obsolescent                  Flag153
 457    --    Has_Per_Object_Constraint       Flag154
 458    --    Has_Private_Declaration         Flag155
 459    --    Referenced                      Flag156
 460    --    Has_Pragma_Inline               Flag157
 461    --    Finalize_Storage_Only           Flag158
 462    --    From_Limited_With               Flag159
 463    --    Is_Package_Body_Entity          Flag160
 464 
 465    --    Has_Qualified_Name              Flag161
 466    --    Nonzero_Is_True                 Flag162
 467    --    Is_True_Constant                Flag163
 468    --    Reverse_Bit_Order               Flag164
 469    --    Suppress_Style_Checks           Flag165
 470    --    Debug_Info_Off                  Flag166
 471    --    Sec_Stack_Needed_For_Return     Flag167
 472    --    Materialize_Entity              Flag168
 473    --    Has_Pragma_Thread_Local_Storage Flag169
 474    --    Is_Known_Valid                  Flag170
 475 
 476    --    Is_Hidden_Open_Scope            Flag171
 477    --    Has_Object_Size_Clause          Flag172
 478    --    Has_Fully_Qualified_Name        Flag173
 479    --    Elaboration_Entity_Required     Flag174
 480    --    Has_Forward_Instantiation       Flag175
 481    --    Is_Discrim_SO_Function          Flag176
 482    --    Size_Depends_On_Discriminant    Flag177
 483    --    Is_Null_Init_Proc               Flag178
 484    --    Has_Pragma_Pure_Function        Flag179
 485    --    Has_Pragma_Unreferenced         Flag180
 486 
 487    --    Has_Contiguous_Rep              Flag181
 488    --    Has_Xref_Entry                  Flag182
 489    --    Must_Be_On_Byte_Boundary        Flag183
 490    --    Has_Stream_Size_Clause          Flag184
 491    --    Is_Ada_2005_Only                Flag185
 492    --    Is_Interface                    Flag186
 493    --    Has_Constrained_Partial_View    Flag187
 494    --    Uses_Lock_Free                  Flag188
 495    --    Is_Pure_Unit_Access_Type        Flag189
 496    --    Has_Specified_Stream_Input      Flag190
 497 
 498    --    Has_Specified_Stream_Output     Flag191
 499    --    Has_Specified_Stream_Read       Flag192
 500    --    Has_Specified_Stream_Write      Flag193
 501    --    Is_Local_Anonymous_Access       Flag194
 502    --    Is_Primitive_Wrapper            Flag195
 503    --    Was_Hidden                      Flag196
 504    --    Is_Limited_Interface            Flag197
 505    --    Has_Pragma_Ordered              Flag198
 506    --    Is_Ada_2012_Only                Flag199
 507 
 508    --    Has_Delayed_Aspects             Flag200
 509    --    Has_Pragma_No_Inline            Flag201
 510    --    Itype_Printed                   Flag202
 511    --    Has_Pragma_Pure                 Flag203
 512    --    Is_Known_Null                   Flag204
 513    --    Low_Bound_Tested                Flag205
 514    --    Is_Visible_Formal               Flag206
 515    --    Known_To_Have_Preelab_Init      Flag207
 516    --    Must_Have_Preelab_Init          Flag208
 517    --    Is_Return_Object                Flag209
 518    --    Elaborate_Body_Desirable        Flag210
 519 
 520    --    Has_Static_Discriminants        Flag211
 521    --    Has_Pragma_Unreferenced_Objects Flag212
 522    --    Requires_Overriding             Flag213
 523    --    Has_RACW                        Flag214
 524    --    Is_Param_Block_Component_Type   Flag215
 525    --    Universal_Aliasing              Flag216
 526    --    Suppress_Value_Tracking_On_Call Flag217
 527    --    Is_Primitive                    Flag218
 528    --    Has_Initial_Value               Flag219
 529    --    Has_Dispatch_Table              Flag220
 530 
 531    --    Has_Pragma_Preelab_Init         Flag221
 532    --    Used_As_Generic_Actual          Flag222
 533    --    Is_Descendant_Of_Address        Flag223
 534    --    Is_Raised                       Flag224
 535    --    Is_Thunk                        Flag225
 536    --    Is_Only_Out_Parameter           Flag226
 537    --    Referenced_As_Out_Parameter     Flag227
 538    --    Has_Thunks                      Flag228
 539    --    Can_Use_Internal_Rep            Flag229
 540    --    Has_Pragma_Inline_Always        Flag230
 541 
 542    --    Renamed_In_Spec                 Flag231
 543    --    Has_Own_Invariants              Flag232
 544    --    Has_Pragma_Unmodified           Flag233
 545    --    Is_Dispatch_Table_Entity        Flag234
 546    --    Is_Trivial_Subprogram           Flag235
 547    --    Warnings_Off_Used               Flag236
 548    --    Warnings_Off_Used_Unmodified    Flag237
 549    --    Warnings_Off_Used_Unreferenced  Flag238
 550    --    OK_To_Reorder_Components        Flag239
 551    --    Has_Expanded_Contract           Flag240
 552 
 553    --    Optimize_Alignment_Space        Flag241
 554    --    Optimize_Alignment_Time         Flag242
 555    --    Overlays_Constant               Flag243
 556    --    Is_RACW_Stub_Type               Flag244
 557    --    Is_Private_Primitive            Flag245
 558    --    Is_Underlying_Record_View       Flag246
 559    --    OK_To_Rename                    Flag247
 560    --    Has_Inheritable_Invariants      Flag248
 561    --    Is_Safe_To_Reevaluate           Flag249
 562    --    Has_Predicates                  Flag250
 563 
 564    --    Has_Implicit_Dereference        Flag251
 565    --    Is_Processed_Transient          Flag252
 566    --    Disable_Controlled              Flag253
 567    --    Is_Implementation_Defined       Flag254
 568    --    Is_Predicate_Function           Flag255
 569    --    Is_Predicate_Function_M         Flag256
 570    --    Is_Invariant_Procedure          Flag257
 571    --    Has_Dynamic_Predicate_Aspect    Flag258
 572    --    Has_Static_Predicate_Aspect     Flag259
 573    --    Has_Loop_Entry_Attributes       Flag260
 574 
 575    --    Has_Delayed_Rep_Aspects         Flag261
 576    --    May_Inherit_Delayed_Rep_Aspects Flag262
 577    --    Has_Visible_Refinement          Flag263
 578    --    Is_Discriminant_Check_Function  Flag264
 579    --    SPARK_Pragma_Inherited          Flag265
 580    --    SPARK_Aux_Pragma_Inherited      Flag266
 581    --    Has_Shift_Operator              Flag267
 582    --    Is_Independent                  Flag268
 583    --    Has_Static_Predicate            Flag269
 584    --    Stores_Attribute_Old_Prefix     Flag270
 585 
 586    --    Has_Protected                   Flag271
 587    --    SSO_Set_Low_By_Default          Flag272
 588    --    SSO_Set_High_By_Default         Flag273
 589    --    Is_Generic_Actual_Subprogram    Flag274
 590    --    No_Predicate_On_Actual          Flag275
 591    --    No_Dynamic_Predicate_On_Actual  Flag276
 592    --    Is_Checked_Ghost_Entity         Flag277
 593    --    Is_Ignored_Ghost_Entity         Flag278
 594    --    Contains_Ignored_Ghost_Code     Flag279
 595    --    Partial_View_Has_Unknown_Discr  Flag280
 596 
 597    --    Is_Static_Type                  Flag281
 598    --    Has_Nested_Subprogram           Flag282
 599    --    Is_Uplevel_Referenced_Entity    Flag283
 600    --    Is_Unimplemented                Flag284
 601    --    Is_Volatile_Full_Access         Flag285
 602    --    Is_Exception_Handler            Flag286
 603    --    Rewritten_For_C                 Flag287
 604    --    Predicates_Ignored              Flag288
 605    --    Has_Timing_Event                Flag289
 606 
 607    --    (unused)                        Flag290  --  ??? flag breaks einfo.h
 608 
 609    --    Has_Inherited_Invariants        Flag291
 610    --    Is_Partial_Invariant_Procedure  Flag292
 611    --    Is_Actual_Subtype               Flag293
 612    --    Has_Pragma_Unused               Flag294
 613 
 614    --    (unused)                        Flag295
 615    --    (unused)                        Flag296
 616    --    (unused)                        Flag297
 617    --    (unused)                        Flag298
 618    --    (unused)                        Flag299
 619    --    (unused)                        Flag300
 620 
 621    --    (unused)                        Flag301
 622    --    (unused)                        Flag302
 623    --    (unused)                        Flag303
 624    --    (unused)                        Flag304
 625    --    (unused)                        Flag305
 626    --    (unused)                        Flag306
 627    --    (unused)                        Flag307
 628    --    (unused)                        Flag308
 629    --    (unused)                        Flag309
 630 
 631    --  Note: Flag310-317 are defined in atree.ads/adb, but not yet in atree.h
 632 
 633    -----------------------
 634    -- Local subprograms --
 635    -----------------------
 636 
 637    function Has_Option
 638      (State_Id   : Entity_Id;
 639       Option_Nam : Name_Id) return Boolean;
 640    --  Determine whether abstract state State_Id has particular option denoted
 641    --  by the name Option_Nam.
 642 
 643    ---------------
 644    -- Float_Rep --
 645    ---------------
 646 
 647    function Float_Rep (Id : E) return F is
 648       pragma Assert (Is_Floating_Point_Type (Id));
 649    begin
 650       return F'Val (UI_To_Int (Uint10 (Base_Type (Id))));
 651    end Float_Rep;
 652 
 653    ----------------
 654    -- Has_Option --
 655    ----------------
 656 
 657    function Has_Option
 658      (State_Id   : Entity_Id;
 659       Option_Nam : Name_Id) return Boolean
 660    is
 661       Decl    : constant Node_Id := Parent (State_Id);
 662       Opt     : Node_Id;
 663       Opt_Nam : Node_Id;
 664 
 665    begin
 666       pragma Assert (Ekind (State_Id) = E_Abstract_State);
 667 
 668       --  The declaration of abstract states with options appear as an
 669       --  extension aggregate. If this is not the case, the option is not
 670       --  available.
 671 
 672       if Nkind (Decl) /= N_Extension_Aggregate then
 673          return False;
 674       end if;
 675 
 676       --  Simple options
 677 
 678       Opt := First (Expressions (Decl));
 679       while Present (Opt) loop
 680          if Nkind (Opt) = N_Identifier and then Chars (Opt) = Option_Nam then
 681             return True;
 682          end if;
 683 
 684          Next (Opt);
 685       end loop;
 686 
 687       --  Complex options with various specifiers
 688 
 689       Opt := First (Component_Associations (Decl));
 690       while Present (Opt) loop
 691          Opt_Nam := First (Choices (Opt));
 692 
 693          if Nkind (Opt_Nam) = N_Identifier
 694            and then Chars (Opt_Nam) = Option_Nam
 695          then
 696             return True;
 697          end if;
 698 
 699          Next (Opt);
 700       end loop;
 701 
 702       return False;
 703    end Has_Option;
 704 
 705    --------------------------------
 706    -- Attribute Access Functions --
 707    --------------------------------
 708 
 709    function Abstract_States (Id : E) return L is
 710    begin
 711       pragma Assert (Ekind_In (Id, E_Generic_Package, E_Package));
 712       return Elist25 (Id);
 713    end Abstract_States;
 714 
 715    function Accept_Address (Id : E) return L is
 716    begin
 717       return Elist21 (Id);
 718    end Accept_Address;
 719 
 720    function Access_Disp_Table (Id : E) return L is
 721    begin
 722       pragma Assert (Ekind_In (Id, E_Record_Type,
 723                                    E_Record_Type_With_Private,
 724                                    E_Record_Subtype));
 725       return Elist16 (Implementation_Base_Type (Id));
 726    end Access_Disp_Table;
 727 
 728    function Activation_Record_Component (Id : E) return E is
 729    begin
 730       pragma Assert (Ekind_In (Id, E_Constant,
 731                                    E_In_Parameter,
 732                                    E_In_Out_Parameter,
 733                                    E_Loop_Parameter,
 734                                    E_Out_Parameter,
 735                                    E_Variable));
 736       return Node31 (Id);
 737    end Activation_Record_Component;
 738 
 739    function Actual_Subtype (Id : E) return E is
 740    begin
 741       pragma Assert
 742         (Ekind_In (Id, E_Constant, E_Variable, E_Generic_In_Out_Parameter)
 743            or else Is_Formal (Id));
 744       return Node17 (Id);
 745    end Actual_Subtype;
 746 
 747    function Address_Taken (Id : E) return B is
 748    begin
 749       return Flag104 (Id);
 750    end Address_Taken;
 751 
 752    function Alias (Id : E) return E is
 753    begin
 754       pragma Assert
 755         (Is_Overloadable (Id) or else Ekind (Id) = E_Subprogram_Type);
 756       return Node18 (Id);
 757    end Alias;
 758 
 759    function Alignment (Id : E) return U is
 760    begin
 761       pragma Assert (Is_Type (Id)
 762                        or else Is_Formal (Id)
 763                        or else Ekind_In (Id, E_Loop_Parameter,
 764                                              E_Constant,
 765                                              E_Exception,
 766                                              E_Variable));
 767       return Uint14 (Id);
 768    end Alignment;
 769 
 770    function Anonymous_Master (Id : E) return E is
 771    begin
 772       pragma Assert (Is_Type (Id));
 773       return Node35 (Id);
 774    end Anonymous_Master;
 775 
 776    function Anonymous_Object (Id : E) return E is
 777    begin
 778       pragma Assert (Ekind_In (Id, E_Protected_Type, E_Task_Type));
 779       return Node30 (Id);
 780    end Anonymous_Object;
 781 
 782    function Associated_Entity (Id : E) return E is
 783    begin
 784       return Node37 (Id);
 785    end Associated_Entity;
 786 
 787    function Associated_Formal_Package (Id : E) return E is
 788    begin
 789       pragma Assert (Ekind (Id) = E_Package);
 790       return Node12 (Id);
 791    end Associated_Formal_Package;
 792 
 793    function Associated_Node_For_Itype (Id : E) return N is
 794    begin
 795       return Node8 (Id);
 796    end Associated_Node_For_Itype;
 797 
 798    function Associated_Storage_Pool (Id : E) return E is
 799    begin
 800       pragma Assert (Is_Access_Type (Id));
 801       return Node22 (Root_Type (Id));
 802    end Associated_Storage_Pool;
 803 
 804    function Barrier_Function (Id : E) return N is
 805    begin
 806       pragma Assert (Is_Entry (Id));
 807       return Node12 (Id);
 808    end Barrier_Function;
 809 
 810    function Block_Node (Id : E) return N is
 811    begin
 812       pragma Assert (Ekind (Id) = E_Block);
 813       return Node11 (Id);
 814    end Block_Node;
 815 
 816    function Body_Entity (Id : E) return E is
 817    begin
 818       pragma Assert (Ekind_In (Id, E_Package, E_Generic_Package));
 819       return Node19 (Id);
 820    end Body_Entity;
 821 
 822    function Body_Needed_For_SAL (Id : E) return B is
 823    begin
 824       pragma Assert
 825         (Ekind (Id) = E_Package
 826            or else Is_Subprogram (Id)
 827            or else Is_Generic_Unit (Id));
 828       return Flag40 (Id);
 829    end Body_Needed_For_SAL;
 830 
 831    function Body_References (Id : E) return L is
 832    begin
 833       pragma Assert (Ekind (Id) = E_Abstract_State);
 834       return Elist16 (Id);
 835    end Body_References;
 836 
 837    function BIP_Initialization_Call (Id : E) return N is
 838    begin
 839       pragma Assert (Ekind_In (Id, E_Constant, E_Variable));
 840       return Node29 (Id);
 841    end BIP_Initialization_Call;
 842 
 843    function C_Pass_By_Copy (Id : E) return B is
 844    begin
 845       pragma Assert (Is_Record_Type (Id));
 846       return Flag125 (Implementation_Base_Type (Id));
 847    end C_Pass_By_Copy;
 848 
 849    function Can_Never_Be_Null (Id : E) return B is
 850    begin
 851       return Flag38 (Id);
 852    end Can_Never_Be_Null;
 853 
 854    function Checks_May_Be_Suppressed (Id : E) return B is
 855    begin
 856       return Flag31 (Id);
 857    end Checks_May_Be_Suppressed;
 858 
 859    function Class_Wide_Postconds (Id : E) return S is
 860    begin
 861       pragma Assert (Is_Subprogram (Id));
 862       return List39 (Id);
 863    end Class_Wide_Postconds;
 864 
 865    function Class_Wide_Preconds (Id : E) return S is
 866    begin
 867       pragma Assert (Is_Subprogram (Id));
 868       return List38 (Id);
 869    end Class_Wide_Preconds;
 870 
 871    function Class_Wide_Type (Id : E) return E is
 872    begin
 873       pragma Assert (Is_Type (Id));
 874       return Node9 (Id);
 875    end Class_Wide_Type;
 876 
 877    function Cloned_Subtype (Id : E) return E is
 878    begin
 879       pragma Assert (Ekind_In (Id, E_Record_Subtype, E_Class_Wide_Subtype));
 880       return Node16 (Id);
 881    end Cloned_Subtype;
 882 
 883    function Component_Bit_Offset (Id : E) return U is
 884    begin
 885       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
 886       return Uint11 (Id);
 887    end Component_Bit_Offset;
 888 
 889    function Component_Clause (Id : E) return N is
 890    begin
 891       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
 892       return Node13 (Id);
 893    end Component_Clause;
 894 
 895    function Component_Size (Id : E) return U is
 896    begin
 897       pragma Assert (Is_Array_Type (Id));
 898       return Uint22 (Implementation_Base_Type (Id));
 899    end Component_Size;
 900 
 901    function Component_Type (Id : E) return E is
 902    begin
 903       pragma Assert (Is_Array_Type (Id));
 904       return Node20 (Implementation_Base_Type (Id));
 905    end Component_Type;
 906 
 907    function Corresponding_Concurrent_Type (Id : E) return E is
 908    begin
 909       pragma Assert (Ekind (Id) = E_Record_Type);
 910       return Node18 (Id);
 911    end Corresponding_Concurrent_Type;
 912 
 913    function Corresponding_Discriminant (Id : E) return E is
 914    begin
 915       pragma Assert (Ekind (Id) = E_Discriminant);
 916       return Node19 (Id);
 917    end Corresponding_Discriminant;
 918 
 919    function Corresponding_Equality (Id : E) return E is
 920    begin
 921       pragma Assert
 922         (Ekind (Id) = E_Function
 923           and then not Comes_From_Source (Id)
 924           and then Chars (Id) = Name_Op_Ne);
 925       return Node30 (Id);
 926    end Corresponding_Equality;
 927 
 928    function Corresponding_Function (Id : E) return E is
 929    begin
 930       pragma Assert (Ekind (Id) = E_Procedure);
 931       return Node32 (Id);
 932    end Corresponding_Function;
 933 
 934    function Corresponding_Procedure (Id : E) return E is
 935    begin
 936       pragma Assert (Ekind (Id) = E_Function);
 937       return Node32 (Id);
 938    end Corresponding_Procedure;
 939 
 940    function Corresponding_Protected_Entry (Id : E) return E is
 941    begin
 942       pragma Assert (Ekind (Id) = E_Subprogram_Body);
 943       return Node18 (Id);
 944    end Corresponding_Protected_Entry;
 945 
 946    function Corresponding_Record_Type (Id : E) return E is
 947    begin
 948       pragma Assert (Is_Concurrent_Type (Id));
 949       return Node18 (Id);
 950    end Corresponding_Record_Type;
 951 
 952    function Corresponding_Remote_Type (Id : E) return E is
 953    begin
 954       return Node22 (Id);
 955    end Corresponding_Remote_Type;
 956 
 957    function Current_Use_Clause (Id : E) return E is
 958    begin
 959       pragma Assert (Ekind (Id) = E_Package or else Is_Type (Id));
 960       return Node27 (Id);
 961    end Current_Use_Clause;
 962 
 963    function Current_Value (Id : E) return N is
 964    begin
 965       pragma Assert (Ekind (Id) in Object_Kind);
 966       return Node9 (Id);
 967    end Current_Value;
 968 
 969    function CR_Discriminant (Id : E) return E is
 970    begin
 971       return Node23 (Id);
 972    end CR_Discriminant;
 973 
 974    function Debug_Info_Off (Id : E) return B is
 975    begin
 976       return Flag166 (Id);
 977    end Debug_Info_Off;
 978 
 979    function Debug_Renaming_Link (Id : E) return E is
 980    begin
 981       return Node25 (Id);
 982    end Debug_Renaming_Link;
 983 
 984    function Default_Aspect_Component_Value (Id : E) return N is
 985    begin
 986       pragma Assert (Is_Array_Type (Id));
 987       return Node19 (Base_Type (Id));
 988    end Default_Aspect_Component_Value;
 989 
 990    function Default_Aspect_Value (Id : E) return N is
 991    begin
 992       pragma Assert (Is_Scalar_Type (Id));
 993       return Node19 (Base_Type (Id));
 994    end Default_Aspect_Value;
 995 
 996    function Default_Expr_Function (Id : E) return E is
 997    begin
 998       pragma Assert (Is_Formal (Id));
 999       return Node21 (Id);
1000    end Default_Expr_Function;
1001 
1002    function Default_Expressions_Processed (Id : E) return B is
1003    begin
1004       return Flag108 (Id);
1005    end Default_Expressions_Processed;
1006 
1007    function Default_Value (Id : E) return N is
1008    begin
1009       pragma Assert (Is_Formal (Id));
1010       return Node20 (Id);
1011    end Default_Value;
1012 
1013    function Delay_Cleanups (Id : E) return B is
1014    begin
1015       return Flag114 (Id);
1016    end Delay_Cleanups;
1017 
1018    function Delay_Subprogram_Descriptors (Id : E) return B is
1019    begin
1020       return Flag50 (Id);
1021    end Delay_Subprogram_Descriptors;
1022 
1023    function Delta_Value (Id : E) return R is
1024    begin
1025       pragma Assert (Is_Fixed_Point_Type (Id));
1026       return Ureal18 (Id);
1027    end Delta_Value;
1028 
1029    function Dependent_Instances (Id : E) return L is
1030    begin
1031       pragma Assert (Is_Generic_Instance (Id));
1032       return Elist8 (Id);
1033    end Dependent_Instances;
1034 
1035    function Depends_On_Private (Id : E) return B is
1036    begin
1037       pragma Assert (Nkind (Id) in N_Entity);
1038       return Flag14 (Id);
1039    end Depends_On_Private;
1040 
1041    function Derived_Type_Link (Id : E) return E is
1042    begin
1043       pragma Assert (Is_Type (Id));
1044       return Node31 (Base_Type (Id));
1045    end Derived_Type_Link;
1046 
1047    function Digits_Value (Id : E) return U is
1048    begin
1049       pragma Assert
1050         (Is_Floating_Point_Type (Id)
1051           or else Is_Decimal_Fixed_Point_Type (Id));
1052       return Uint17 (Id);
1053    end Digits_Value;
1054 
1055    function Direct_Primitive_Operations (Id : E) return L is
1056    begin
1057       pragma Assert (Is_Tagged_Type (Id));
1058       return Elist10 (Id);
1059    end Direct_Primitive_Operations;
1060 
1061    function Directly_Designated_Type (Id : E) return E is
1062    begin
1063       pragma Assert (Is_Access_Type (Id));
1064       return Node20 (Id);
1065    end Directly_Designated_Type;
1066 
1067    function Disable_Controlled (Id : E) return B is
1068    begin
1069       return Flag253 (Base_Type (Id));
1070    end Disable_Controlled;
1071 
1072    function Discard_Names (Id : E) return B is
1073    begin
1074       return Flag88 (Id);
1075    end Discard_Names;
1076 
1077    function Discriminal (Id : E) return E is
1078    begin
1079       pragma Assert (Ekind (Id) = E_Discriminant);
1080       return Node17 (Id);
1081    end Discriminal;
1082 
1083    function Discriminal_Link (Id : E) return N is
1084    begin
1085       return Node10 (Id);
1086    end Discriminal_Link;
1087 
1088    function Discriminant_Checking_Func (Id : E) return E is
1089    begin
1090       pragma Assert (Ekind (Id) = E_Component);
1091       return Node20 (Id);
1092    end Discriminant_Checking_Func;
1093 
1094    function Discriminant_Constraint (Id : E) return L is
1095    begin
1096       pragma Assert (Is_Composite_Type (Id) and then Has_Discriminants (Id));
1097       return Elist21 (Id);
1098    end Discriminant_Constraint;
1099 
1100    function Discriminant_Default_Value (Id : E) return N is
1101    begin
1102       pragma Assert (Ekind (Id) = E_Discriminant);
1103       return Node20 (Id);
1104    end Discriminant_Default_Value;
1105 
1106    function Discriminant_Number (Id : E) return U is
1107    begin
1108       pragma Assert (Ekind (Id) = E_Discriminant);
1109       return Uint15 (Id);
1110    end Discriminant_Number;
1111 
1112    function Dispatch_Table_Wrappers (Id : E) return L is
1113    begin
1114       pragma Assert (Ekind_In (Id, E_Record_Type,
1115                                    E_Record_Subtype));
1116       return Elist26 (Implementation_Base_Type (Id));
1117    end Dispatch_Table_Wrappers;
1118 
1119    function DT_Entry_Count (Id : E) return U is
1120    begin
1121       pragma Assert (Ekind (Id) = E_Component and then Is_Tag (Id));
1122       return Uint15 (Id);
1123    end DT_Entry_Count;
1124 
1125    function DT_Offset_To_Top_Func (Id : E) return E is
1126    begin
1127       pragma Assert (Ekind (Id) = E_Component and then Is_Tag (Id));
1128       return Node25 (Id);
1129    end DT_Offset_To_Top_Func;
1130 
1131    function DT_Position (Id : E) return U is
1132    begin
1133       pragma Assert (Ekind_In (Id, E_Function, E_Procedure)
1134                        and then Present (DTC_Entity (Id)));
1135       return Uint15 (Id);
1136    end DT_Position;
1137 
1138    function DTC_Entity (Id : E) return E is
1139    begin
1140       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
1141       return Node16 (Id);
1142    end DTC_Entity;
1143 
1144    function Elaborate_Body_Desirable (Id : E) return B is
1145    begin
1146       pragma Assert (Ekind (Id) = E_Package);
1147       return Flag210 (Id);
1148    end Elaborate_Body_Desirable;
1149 
1150    function Elaboration_Entity (Id : E) return E is
1151    begin
1152       pragma Assert
1153         (Is_Subprogram (Id)
1154            or else
1155          Ekind (Id) = E_Package
1156            or else
1157          Is_Generic_Unit (Id));
1158       return Node13 (Id);
1159    end Elaboration_Entity;
1160 
1161    function Elaboration_Entity_Required (Id : E) return B is
1162    begin
1163       pragma Assert
1164         (Is_Subprogram (Id)
1165            or else
1166          Ekind (Id) = E_Package
1167            or else
1168          Is_Generic_Unit (Id));
1169       return Flag174 (Id);
1170    end Elaboration_Entity_Required;
1171 
1172    function Encapsulating_State (Id : E) return N is
1173    begin
1174       pragma Assert (Ekind_In (Id, E_Abstract_State, E_Constant, E_Variable));
1175       return Node32 (Id);
1176    end Encapsulating_State;
1177 
1178    function Enclosing_Scope (Id : E) return E is
1179    begin
1180       return Node18 (Id);
1181    end Enclosing_Scope;
1182 
1183    function Entry_Accepted (Id : E) return B is
1184    begin
1185       pragma Assert (Is_Entry (Id));
1186       return Flag152 (Id);
1187    end Entry_Accepted;
1188 
1189    function Entry_Bodies_Array (Id : E) return E is
1190    begin
1191       return Node19 (Id);
1192    end Entry_Bodies_Array;
1193 
1194    function Entry_Cancel_Parameter (Id : E) return E is
1195    begin
1196       return Node23 (Id);
1197    end Entry_Cancel_Parameter;
1198 
1199    function Entry_Component (Id : E) return E is
1200    begin
1201       return Node11 (Id);
1202    end Entry_Component;
1203 
1204    function Entry_Formal (Id : E) return E is
1205    begin
1206       return Node16 (Id);
1207    end Entry_Formal;
1208 
1209    function Entry_Index_Constant (Id : E) return N is
1210    begin
1211       pragma Assert (Ekind (Id) = E_Entry_Index_Parameter);
1212       return Node18 (Id);
1213    end Entry_Index_Constant;
1214 
1215    function Contains_Ignored_Ghost_Code (Id : E) return B is
1216    begin
1217       pragma Assert
1218         (Ekind_In (Id, E_Block,
1219                        E_Function,
1220                        E_Generic_Function,
1221                        E_Generic_Package,
1222                        E_Generic_Procedure,
1223                        E_Package,
1224                        E_Package_Body,
1225                        E_Procedure,
1226                        E_Subprogram_Body));
1227       return Flag279 (Id);
1228    end Contains_Ignored_Ghost_Code;
1229 
1230    function Contract (Id : E) return N is
1231    begin
1232       pragma Assert
1233         (Ekind_In (Id, E_Protected_Type,   --  concurrent variants
1234                        E_Task_Body,
1235                        E_Task_Type)
1236            or else
1237          Ekind_In (Id, E_Constant,         --  object variants
1238                        E_Variable)
1239            or else
1240          Ekind_In (Id, E_Entry,            --  overloadable variants
1241                        E_Entry_Family,
1242                        E_Function,
1243                        E_Generic_Function,
1244                        E_Generic_Procedure,
1245                        E_Operator,
1246                        E_Procedure,
1247                        E_Subprogram_Body)
1248            or else
1249          Ekind_In (Id, E_Generic_Package,  --  package variants
1250                        E_Package,
1251                        E_Package_Body)
1252            or else
1253          Ekind (Id) = E_Void);             --  special purpose
1254       return Node34 (Id);
1255    end Contract;
1256 
1257    function Contract_Wrapper (Id : E) return E is
1258    begin
1259       pragma Assert (Ekind_In (Id, E_Entry, E_Entry_Family));
1260       return Node25 (Id);
1261    end Contract_Wrapper;
1262 
1263    function Entry_Parameters_Type (Id : E) return E is
1264    begin
1265       return Node15 (Id);
1266    end Entry_Parameters_Type;
1267 
1268    function Enum_Pos_To_Rep (Id : E) return E is
1269    begin
1270       pragma Assert (Ekind (Id) = E_Enumeration_Type);
1271       return Node23 (Id);
1272    end Enum_Pos_To_Rep;
1273 
1274    function Enumeration_Pos (Id : E) return Uint is
1275    begin
1276       pragma Assert (Ekind (Id) = E_Enumeration_Literal);
1277       return Uint11 (Id);
1278    end Enumeration_Pos;
1279 
1280    function Enumeration_Rep (Id : E) return U is
1281    begin
1282       pragma Assert (Ekind (Id) = E_Enumeration_Literal);
1283       return Uint12 (Id);
1284    end Enumeration_Rep;
1285 
1286    function Enumeration_Rep_Expr (Id : E) return N is
1287    begin
1288       pragma Assert (Ekind (Id) = E_Enumeration_Literal);
1289       return Node22 (Id);
1290    end Enumeration_Rep_Expr;
1291 
1292    function Equivalent_Type (Id : E) return E is
1293    begin
1294       pragma Assert
1295         (Ekind_In (Id, E_Class_Wide_Type,
1296                        E_Class_Wide_Subtype,
1297                        E_Access_Subprogram_Type,
1298                        E_Access_Protected_Subprogram_Type,
1299                        E_Anonymous_Access_Protected_Subprogram_Type,
1300                        E_Access_Subprogram_Type,
1301                        E_Exception_Type));
1302       return Node18 (Id);
1303    end Equivalent_Type;
1304 
1305    function Esize (Id : E) return Uint is
1306    begin
1307       return Uint12 (Id);
1308    end Esize;
1309 
1310    function Extra_Accessibility (Id : E) return E is
1311    begin
1312       pragma Assert
1313         (Is_Formal (Id) or else Ekind_In (Id, E_Variable, E_Constant));
1314       return Node13 (Id);
1315    end Extra_Accessibility;
1316 
1317    function Extra_Accessibility_Of_Result (Id : E) return E is
1318    begin
1319       pragma Assert (Ekind_In (Id, E_Function, E_Operator, E_Subprogram_Type));
1320       return Node19 (Id);
1321    end Extra_Accessibility_Of_Result;
1322 
1323    function Extra_Constrained (Id : E) return E is
1324    begin
1325       pragma Assert (Is_Formal (Id) or else Ekind (Id) = E_Variable);
1326       return Node23 (Id);
1327    end Extra_Constrained;
1328 
1329    function Extra_Formal (Id : E) return E is
1330    begin
1331       return Node15 (Id);
1332    end Extra_Formal;
1333 
1334    function Extra_Formals (Id : E) return E is
1335    begin
1336       pragma Assert
1337         (Is_Overloadable (Id)
1338            or else Ekind_In (Id, E_Entry_Family,
1339                                  E_Subprogram_Body,
1340                                  E_Subprogram_Type));
1341       return Node28 (Id);
1342    end Extra_Formals;
1343 
1344    function Can_Use_Internal_Rep (Id : E) return B is
1345    begin
1346       pragma Assert (Is_Access_Subprogram_Type (Base_Type (Id)));
1347       return Flag229 (Base_Type (Id));
1348    end Can_Use_Internal_Rep;
1349 
1350    function Finalization_Master (Id : E) return E is
1351    begin
1352       pragma Assert (Is_Access_Type (Id));
1353       return Node23 (Root_Type (Id));
1354    end Finalization_Master;
1355 
1356    function Finalize_Storage_Only (Id : E) return B is
1357    begin
1358       pragma Assert (Is_Type (Id));
1359       return Flag158 (Base_Type (Id));
1360    end Finalize_Storage_Only;
1361 
1362    function Finalizer (Id : E) return E is
1363    begin
1364       pragma Assert (Ekind_In (Id, E_Package, E_Package_Body));
1365       return Node28 (Id);
1366    end Finalizer;
1367 
1368    function First_Entity (Id : E) return E is
1369    begin
1370       return Node17 (Id);
1371    end First_Entity;
1372 
1373    function First_Exit_Statement (Id : E) return N is
1374    begin
1375       pragma Assert (Ekind (Id) = E_Loop);
1376       return Node8 (Id);
1377    end First_Exit_Statement;
1378 
1379    function First_Index (Id : E) return N is
1380    begin
1381       pragma Assert (Is_Array_Type (Id));
1382       return Node17 (Id);
1383    end First_Index;
1384 
1385    function First_Literal (Id : E) return E is
1386    begin
1387       pragma Assert (Is_Enumeration_Type (Id));
1388       return Node17 (Id);
1389    end First_Literal;
1390 
1391    function First_Private_Entity (Id : E) return E is
1392    begin
1393       pragma Assert (Ekind_In (Id, E_Package, E_Generic_Package)
1394                        or else Ekind (Id) in Concurrent_Kind);
1395       return Node16 (Id);
1396    end First_Private_Entity;
1397 
1398    function First_Rep_Item (Id : E) return E is
1399    begin
1400       return Node6 (Id);
1401    end First_Rep_Item;
1402 
1403    function Freeze_Node (Id : E) return N is
1404    begin
1405       return Node7 (Id);
1406    end Freeze_Node;
1407 
1408    function From_Limited_With (Id : E) return B is
1409    begin
1410       return Flag159 (Id);
1411    end From_Limited_With;
1412 
1413    function Full_View (Id : E) return E is
1414    begin
1415       pragma Assert (Is_Type (Id) or else Ekind (Id) = E_Constant);
1416       return Node11 (Id);
1417    end Full_View;
1418 
1419    function Generic_Homonym (Id : E) return E is
1420    begin
1421       pragma Assert (Ekind (Id) = E_Generic_Package);
1422       return Node11 (Id);
1423    end Generic_Homonym;
1424 
1425    function Generic_Renamings (Id : E) return L is
1426    begin
1427       return Elist23 (Id);
1428    end Generic_Renamings;
1429 
1430    function Handler_Records (Id : E) return S is
1431    begin
1432       return List10 (Id);
1433    end Handler_Records;
1434 
1435    function Has_Aliased_Components (Id : E) return B is
1436    begin
1437       return Flag135 (Implementation_Base_Type (Id));
1438    end Has_Aliased_Components;
1439 
1440    function Has_Alignment_Clause (Id : E) return B is
1441    begin
1442       return Flag46 (Id);
1443    end Has_Alignment_Clause;
1444 
1445    function Has_All_Calls_Remote (Id : E) return B is
1446    begin
1447       return Flag79 (Id);
1448    end Has_All_Calls_Remote;
1449 
1450    function Has_Atomic_Components (Id : E) return B is
1451    begin
1452       return Flag86 (Implementation_Base_Type (Id));
1453    end Has_Atomic_Components;
1454 
1455    function Has_Biased_Representation (Id : E) return B is
1456    begin
1457       return Flag139 (Id);
1458    end Has_Biased_Representation;
1459 
1460    function Has_Completion (Id : E) return B is
1461    begin
1462       return Flag26 (Id);
1463    end Has_Completion;
1464 
1465    function Has_Completion_In_Body (Id : E) return B is
1466    begin
1467       pragma Assert (Is_Type (Id));
1468       return Flag71 (Id);
1469    end Has_Completion_In_Body;
1470 
1471    function Has_Complex_Representation (Id : E) return B is
1472    begin
1473       pragma Assert (Is_Type (Id));
1474       return Flag140 (Implementation_Base_Type (Id));
1475    end Has_Complex_Representation;
1476 
1477    function Has_Component_Size_Clause (Id : E) return B is
1478    begin
1479       pragma Assert (Is_Array_Type (Id));
1480       return Flag68 (Implementation_Base_Type (Id));
1481    end Has_Component_Size_Clause;
1482 
1483    function Has_Constrained_Partial_View (Id : E) return B is
1484    begin
1485       pragma Assert (Is_Type (Id));
1486       return Flag187 (Id);
1487    end Has_Constrained_Partial_View;
1488 
1489    function Has_Controlled_Component (Id : E) return B is
1490    begin
1491       return Flag43 (Base_Type (Id));
1492    end Has_Controlled_Component;
1493 
1494    function Has_Contiguous_Rep (Id : E) return B is
1495    begin
1496       return Flag181 (Id);
1497    end Has_Contiguous_Rep;
1498 
1499    function Has_Controlling_Result (Id : E) return B is
1500    begin
1501       return Flag98 (Id);
1502    end Has_Controlling_Result;
1503 
1504    function Has_Convention_Pragma (Id : E) return B is
1505    begin
1506       return Flag119 (Id);
1507    end Has_Convention_Pragma;
1508 
1509    function Has_Default_Aspect (Id : E) return B is
1510    begin
1511       return Flag39 (Base_Type (Id));
1512    end Has_Default_Aspect;
1513 
1514    function Has_Default_Init_Cond (Id : E) return B is
1515    begin
1516       pragma Assert (Is_Type (Id));
1517       return Flag3 (Base_Type (Id));
1518    end Has_Default_Init_Cond;
1519 
1520    function Has_Delayed_Aspects (Id : E) return B is
1521    begin
1522       pragma Assert (Nkind (Id) in N_Entity);
1523       return Flag200 (Id);
1524    end Has_Delayed_Aspects;
1525 
1526    function Has_Delayed_Freeze (Id : E) return B is
1527    begin
1528       pragma Assert (Nkind (Id) in N_Entity);
1529       return Flag18 (Id);
1530    end Has_Delayed_Freeze;
1531 
1532    function Has_Delayed_Rep_Aspects (Id : E) return B is
1533    begin
1534       pragma Assert (Nkind (Id) in N_Entity);
1535       return Flag261 (Id);
1536    end Has_Delayed_Rep_Aspects;
1537 
1538    function Has_Discriminants (Id : E) return B is
1539    begin
1540       pragma Assert (Nkind (Id) in N_Entity);
1541       return Flag5 (Id);
1542    end Has_Discriminants;
1543 
1544    function Has_Dispatch_Table (Id : E) return B is
1545    begin
1546       pragma Assert (Is_Tagged_Type (Id));
1547       return Flag220 (Id);
1548    end Has_Dispatch_Table;
1549 
1550    function Has_Dynamic_Predicate_Aspect (Id : E) return B is
1551    begin
1552       pragma Assert (Is_Type (Id));
1553       return Flag258 (Id);
1554    end Has_Dynamic_Predicate_Aspect;
1555 
1556    function Has_Enumeration_Rep_Clause (Id : E) return B is
1557    begin
1558       pragma Assert (Is_Enumeration_Type (Id));
1559       return Flag66 (Id);
1560    end Has_Enumeration_Rep_Clause;
1561 
1562    function Has_Exit (Id : E) return B is
1563    begin
1564       return Flag47 (Id);
1565    end Has_Exit;
1566 
1567    function Has_Expanded_Contract (Id : E) return B is
1568    begin
1569       pragma Assert (Is_Subprogram (Id));
1570       return Flag240 (Id);
1571    end Has_Expanded_Contract;
1572 
1573    function Has_Forward_Instantiation (Id : E) return B is
1574    begin
1575       return Flag175 (Id);
1576    end Has_Forward_Instantiation;
1577 
1578    function Has_Fully_Qualified_Name (Id : E) return B is
1579    begin
1580       return Flag173 (Id);
1581    end Has_Fully_Qualified_Name;
1582 
1583    function Has_Gigi_Rep_Item (Id : E) return B is
1584    begin
1585       return Flag82 (Id);
1586    end Has_Gigi_Rep_Item;
1587 
1588    function Has_Homonym (Id : E) return B is
1589    begin
1590       return Flag56 (Id);
1591    end Has_Homonym;
1592 
1593    function Has_Implicit_Dereference (Id : E) return B is
1594    begin
1595       return Flag251 (Id);
1596    end Has_Implicit_Dereference;
1597 
1598    function Has_Independent_Components (Id : E) return B is
1599    begin
1600       return Flag34 (Implementation_Base_Type (Id));
1601    end Has_Independent_Components;
1602 
1603    function Has_Inheritable_Invariants (Id : E) return B is
1604    begin
1605       pragma Assert (Is_Type (Id));
1606       return Flag248 (Id);
1607    end Has_Inheritable_Invariants;
1608 
1609    function Has_Inherited_Default_Init_Cond (Id : E) return B is
1610    begin
1611       pragma Assert (Is_Type (Id));
1612       return Flag133 (Base_Type (Id));
1613    end Has_Inherited_Default_Init_Cond;
1614 
1615    function Has_Inherited_Invariants (Id : E) return B is
1616    begin
1617       pragma Assert (Is_Type (Id));
1618       return Flag291 (Id);
1619    end Has_Inherited_Invariants;
1620 
1621    function Has_Initial_Value (Id : E) return B is
1622    begin
1623       pragma Assert (Ekind (Id) = E_Variable or else Is_Formal (Id));
1624       return Flag219 (Id);
1625    end Has_Initial_Value;
1626 
1627    function Has_Loop_Entry_Attributes (Id : E) return B is
1628    begin
1629       pragma Assert (Ekind (Id) = E_Loop);
1630       return Flag260 (Id);
1631    end Has_Loop_Entry_Attributes;
1632 
1633    function Has_Machine_Radix_Clause (Id : E) return B is
1634    begin
1635       pragma Assert (Is_Decimal_Fixed_Point_Type (Id));
1636       return Flag83 (Id);
1637    end Has_Machine_Radix_Clause;
1638 
1639    function Has_Master_Entity (Id : E) return B is
1640    begin
1641       return Flag21 (Id);
1642    end Has_Master_Entity;
1643 
1644    function Has_Missing_Return (Id : E) return B is
1645    begin
1646       pragma Assert (Ekind_In (Id, E_Function, E_Generic_Function));
1647       return Flag142 (Id);
1648    end Has_Missing_Return;
1649 
1650    function Has_Nested_Block_With_Handler (Id : E) return B is
1651    begin
1652       return Flag101 (Id);
1653    end Has_Nested_Block_With_Handler;
1654 
1655    function Has_Nested_Subprogram (Id : E) return B is
1656    begin
1657       pragma Assert (Is_Subprogram (Id));
1658       return Flag282 (Id);
1659    end Has_Nested_Subprogram;
1660 
1661    function Has_Non_Standard_Rep (Id : E) return B is
1662    begin
1663       return Flag75 (Implementation_Base_Type (Id));
1664    end Has_Non_Standard_Rep;
1665 
1666    function Has_Object_Size_Clause (Id : E) return B is
1667    begin
1668       pragma Assert (Is_Type (Id));
1669       return Flag172 (Id);
1670    end Has_Object_Size_Clause;
1671 
1672    function Has_Out_Or_In_Out_Parameter (Id : E) return B is
1673    begin
1674       pragma Assert
1675         (Ekind_In (Id, E_Entry, E_Entry_Family)
1676           or else Is_Subprogram_Or_Generic_Subprogram (Id));
1677       return Flag110 (Id);
1678    end Has_Out_Or_In_Out_Parameter;
1679 
1680    function Has_Own_Invariants (Id : E) return B is
1681    begin
1682       pragma Assert (Is_Type (Id));
1683       return Flag232 (Id);
1684    end Has_Own_Invariants;
1685 
1686    function Has_Per_Object_Constraint (Id : E) return B is
1687    begin
1688       return Flag154 (Id);
1689    end Has_Per_Object_Constraint;
1690 
1691    function Has_Pragma_Controlled (Id : E) return B is
1692    begin
1693       pragma Assert (Is_Access_Type (Id));
1694       return Flag27 (Implementation_Base_Type (Id));
1695    end Has_Pragma_Controlled;
1696 
1697    function Has_Pragma_Elaborate_Body (Id : E) return B is
1698    begin
1699       return Flag150 (Id);
1700    end Has_Pragma_Elaborate_Body;
1701 
1702    function Has_Pragma_Inline (Id : E) return B is
1703    begin
1704       return Flag157 (Id);
1705    end Has_Pragma_Inline;
1706 
1707    function Has_Pragma_Inline_Always (Id : E) return B is
1708    begin
1709       return Flag230 (Id);
1710    end Has_Pragma_Inline_Always;
1711 
1712    function Has_Pragma_No_Inline (Id : E) return B is
1713    begin
1714       return Flag201 (Id);
1715    end Has_Pragma_No_Inline;
1716 
1717    function Has_Pragma_Ordered (Id : E) return B is
1718    begin
1719       pragma Assert (Is_Enumeration_Type (Id));
1720       return Flag198 (Implementation_Base_Type (Id));
1721    end Has_Pragma_Ordered;
1722 
1723    function Has_Pragma_Pack (Id : E) return B is
1724    begin
1725       pragma Assert (Is_Record_Type (Id) or else Is_Array_Type (Id));
1726       return Flag121 (Implementation_Base_Type (Id));
1727    end Has_Pragma_Pack;
1728 
1729    function Has_Pragma_Preelab_Init (Id : E) return B is
1730    begin
1731       return Flag221 (Id);
1732    end Has_Pragma_Preelab_Init;
1733 
1734    function Has_Pragma_Pure (Id : E) return B is
1735    begin
1736       return Flag203 (Id);
1737    end Has_Pragma_Pure;
1738 
1739    function Has_Pragma_Pure_Function (Id : E) return B is
1740    begin
1741       return Flag179 (Id);
1742    end Has_Pragma_Pure_Function;
1743 
1744    function Has_Pragma_Thread_Local_Storage (Id : E) return B is
1745    begin
1746       return Flag169 (Id);
1747    end Has_Pragma_Thread_Local_Storage;
1748 
1749    function Has_Pragma_Unmodified (Id : E) return B is
1750    begin
1751       return Flag233 (Id);
1752    end Has_Pragma_Unmodified;
1753 
1754    function Has_Pragma_Unreferenced (Id : E) return B is
1755    begin
1756       return Flag180 (Id);
1757    end Has_Pragma_Unreferenced;
1758 
1759    function Has_Pragma_Unreferenced_Objects (Id : E) return B is
1760    begin
1761       pragma Assert (Is_Type (Id));
1762       return Flag212 (Id);
1763    end Has_Pragma_Unreferenced_Objects;
1764 
1765    function Has_Pragma_Unused (Id : E) return B is
1766    begin
1767       return Flag294 (Id);
1768    end Has_Pragma_Unused;
1769 
1770    function Has_Predicates (Id : E) return B is
1771    begin
1772       pragma Assert (Is_Type (Id));
1773       return Flag250 (Id);
1774    end Has_Predicates;
1775 
1776    function Has_Primitive_Operations (Id : E) return B is
1777    begin
1778       pragma Assert (Is_Type (Id));
1779       return Flag120 (Base_Type (Id));
1780    end Has_Primitive_Operations;
1781 
1782    function Has_Private_Ancestor (Id : E) return B is
1783    begin
1784       return Flag151 (Id);
1785    end Has_Private_Ancestor;
1786 
1787    function Has_Private_Declaration (Id : E) return B is
1788    begin
1789       return Flag155 (Id);
1790    end Has_Private_Declaration;
1791 
1792    function Has_Protected (Id : E) return B is
1793    begin
1794       return Flag271 (Base_Type (Id));
1795    end Has_Protected;
1796 
1797    function Has_Qualified_Name (Id : E) return B is
1798    begin
1799       return Flag161 (Id);
1800    end Has_Qualified_Name;
1801 
1802    function Has_RACW (Id : E) return B is
1803    begin
1804       pragma Assert (Ekind (Id) = E_Package);
1805       return Flag214 (Id);
1806    end Has_RACW;
1807 
1808    function Has_Record_Rep_Clause (Id : E) return B is
1809    begin
1810       pragma Assert (Is_Record_Type (Id));
1811       return Flag65 (Implementation_Base_Type (Id));
1812    end Has_Record_Rep_Clause;
1813 
1814    function Has_Recursive_Call (Id : E) return B is
1815    begin
1816       pragma Assert (Is_Subprogram (Id));
1817       return Flag143 (Id);
1818    end Has_Recursive_Call;
1819 
1820    function Has_Shift_Operator (Id : E) return B is
1821    begin
1822       pragma Assert (Is_Integer_Type (Id));
1823       return Flag267 (Base_Type (Id));
1824    end Has_Shift_Operator;
1825 
1826    function Has_Size_Clause (Id : E) return B is
1827    begin
1828       return Flag29 (Id);
1829    end Has_Size_Clause;
1830 
1831    function Has_Small_Clause (Id : E) return B is
1832    begin
1833       pragma Assert (Is_Ordinary_Fixed_Point_Type (Id));
1834       return Flag67 (Id);
1835    end Has_Small_Clause;
1836 
1837    function Has_Specified_Layout (Id : E) return B is
1838    begin
1839       pragma Assert (Is_Type (Id));
1840       return Flag100 (Implementation_Base_Type (Id));
1841    end Has_Specified_Layout;
1842 
1843    function Has_Specified_Stream_Input (Id : E) return B is
1844    begin
1845       pragma Assert (Is_Type (Id));
1846       return Flag190 (Id);
1847    end Has_Specified_Stream_Input;
1848 
1849    function Has_Specified_Stream_Output (Id : E) return B is
1850    begin
1851       pragma Assert (Is_Type (Id));
1852       return Flag191 (Id);
1853    end Has_Specified_Stream_Output;
1854 
1855    function Has_Specified_Stream_Read (Id : E) return B is
1856    begin
1857       pragma Assert (Is_Type (Id));
1858       return Flag192 (Id);
1859    end Has_Specified_Stream_Read;
1860 
1861    function Has_Specified_Stream_Write (Id : E) return B is
1862    begin
1863       pragma Assert (Is_Type (Id));
1864       return Flag193 (Id);
1865    end Has_Specified_Stream_Write;
1866 
1867    function Has_Static_Discriminants (Id : E) return B is
1868    begin
1869       pragma Assert (Is_Type (Id));
1870       return Flag211 (Id);
1871    end Has_Static_Discriminants;
1872 
1873    function Has_Static_Predicate (Id : E) return B is
1874    begin
1875       pragma Assert (Is_Type (Id));
1876       return Flag269 (Id);
1877    end Has_Static_Predicate;
1878 
1879    function Has_Static_Predicate_Aspect (Id : E) return B is
1880    begin
1881       pragma Assert (Is_Type (Id));
1882       return Flag259 (Id);
1883    end Has_Static_Predicate_Aspect;
1884 
1885    function Has_Storage_Size_Clause (Id : E) return B is
1886    begin
1887       pragma Assert (Is_Access_Type (Id) or else Is_Task_Type (Id));
1888       return Flag23 (Implementation_Base_Type (Id));
1889    end Has_Storage_Size_Clause;
1890 
1891    function Has_Stream_Size_Clause (Id : E) return B is
1892    begin
1893       return Flag184 (Id);
1894    end Has_Stream_Size_Clause;
1895 
1896    function Has_Task (Id : E) return B is
1897    begin
1898       return Flag30 (Base_Type (Id));
1899    end Has_Task;
1900 
1901    function Has_Thunks (Id : E) return B is
1902    begin
1903       return Flag228 (Id);
1904    end Has_Thunks;
1905 
1906    function Has_Timing_Event (Id : E) return B is
1907    begin
1908       return Flag289 (Base_Type (Id));
1909    end Has_Timing_Event;
1910 
1911    function Has_Unchecked_Union (Id : E) return B is
1912    begin
1913       return Flag123 (Base_Type (Id));
1914    end Has_Unchecked_Union;
1915 
1916    function Has_Unknown_Discriminants (Id : E) return B is
1917    begin
1918       pragma Assert (Is_Type (Id));
1919       return Flag72 (Id);
1920    end Has_Unknown_Discriminants;
1921 
1922    function Has_Visible_Refinement (Id : E) return B is
1923    begin
1924       pragma Assert (Ekind (Id) = E_Abstract_State);
1925       return Flag263 (Id);
1926    end Has_Visible_Refinement;
1927 
1928    function Has_Volatile_Components (Id : E) return B is
1929    begin
1930       return Flag87 (Implementation_Base_Type (Id));
1931    end Has_Volatile_Components;
1932 
1933    function Has_Xref_Entry (Id : E) return B is
1934    begin
1935       return Flag182 (Id);
1936    end Has_Xref_Entry;
1937 
1938    function Hiding_Loop_Variable (Id : E) return E is
1939    begin
1940       pragma Assert (Ekind (Id) = E_Variable);
1941       return Node8 (Id);
1942    end Hiding_Loop_Variable;
1943 
1944    function Homonym (Id : E) return E is
1945    begin
1946       return Node4 (Id);
1947    end Homonym;
1948 
1949    function Import_Pragma (Id : E) return E is
1950    begin
1951       pragma Assert (Is_Subprogram (Id));
1952       return Node35 (Id);
1953    end Import_Pragma;
1954 
1955    function Incomplete_Actuals (Id : E) return L is
1956    begin
1957       pragma Assert (Ekind (Id) = E_Package);
1958       return Elist24 (Id);
1959    end Incomplete_Actuals;
1960 
1961    function Interface_Alias (Id : E) return E is
1962    begin
1963       pragma Assert (Is_Subprogram (Id));
1964       return Node25 (Id);
1965    end Interface_Alias;
1966 
1967    function Interfaces (Id : E) return L is
1968    begin
1969       pragma Assert (Is_Record_Type (Id));
1970       return Elist25 (Id);
1971    end Interfaces;
1972 
1973    function In_Package_Body (Id : E) return B is
1974    begin
1975       return Flag48 (Id);
1976    end In_Package_Body;
1977 
1978    function In_Private_Part (Id : E) return B is
1979    begin
1980       return Flag45 (Id);
1981    end In_Private_Part;
1982 
1983    function In_Use (Id : E) return B is
1984    begin
1985       pragma Assert (Nkind (Id) in N_Entity);
1986       return Flag8 (Id);
1987    end In_Use;
1988 
1989    function Initialization_Statements (Id : E) return N is
1990    begin
1991       pragma Assert (Ekind_In (Id, E_Constant, E_Variable));
1992       return Node28 (Id);
1993    end Initialization_Statements;
1994 
1995    function Inner_Instances (Id : E) return L is
1996    begin
1997       return Elist23 (Id);
1998    end Inner_Instances;
1999 
2000    function Interface_Name (Id : E) return N is
2001    begin
2002       return Node21 (Id);
2003    end Interface_Name;
2004 
2005    function Is_Abstract_Subprogram (Id : E) return B is
2006    begin
2007       pragma Assert (Is_Overloadable (Id));
2008       return Flag19 (Id);
2009    end Is_Abstract_Subprogram;
2010 
2011    function Is_Abstract_Type (Id : E) return B is
2012    begin
2013       pragma Assert (Is_Type (Id));
2014       return Flag146 (Id);
2015    end Is_Abstract_Type;
2016 
2017    function Is_Access_Constant (Id : E) return B is
2018    begin
2019       pragma Assert (Is_Access_Type (Id));
2020       return Flag69 (Id);
2021    end Is_Access_Constant;
2022 
2023    function Is_Actual_Subtype (Id : E) return B is
2024    begin
2025       pragma Assert (Is_Type (Id));
2026       return Flag293 (Id);
2027    end Is_Actual_Subtype;
2028 
2029    function Is_Ada_2005_Only (Id : E) return B is
2030    begin
2031       return Flag185 (Id);
2032    end Is_Ada_2005_Only;
2033 
2034    function Is_Ada_2012_Only (Id : E) return B is
2035    begin
2036       return Flag199 (Id);
2037    end Is_Ada_2012_Only;
2038 
2039    function Is_Aliased (Id : E) return B is
2040    begin
2041       pragma Assert (Nkind (Id) in N_Entity);
2042       return Flag15 (Id);
2043    end Is_Aliased;
2044 
2045    function Is_Asynchronous (Id : E) return B is
2046    begin
2047       pragma Assert (Ekind (Id) = E_Procedure or else Is_Type (Id));
2048       return Flag81 (Id);
2049    end Is_Asynchronous;
2050 
2051    function Is_Atomic (Id : E) return B is
2052    begin
2053       return Flag85 (Id);
2054    end Is_Atomic;
2055 
2056    function Is_Bit_Packed_Array (Id : E) return B is
2057    begin
2058       return Flag122 (Implementation_Base_Type (Id));
2059    end Is_Bit_Packed_Array;
2060 
2061    function Is_Called (Id : E) return B is
2062    begin
2063       pragma Assert (Ekind_In (Id, E_Procedure, E_Function));
2064       return Flag102 (Id);
2065    end Is_Called;
2066 
2067    function Is_Character_Type (Id : E) return B is
2068    begin
2069       return Flag63 (Id);
2070    end Is_Character_Type;
2071 
2072    function Is_Checked_Ghost_Entity (Id : E) return B is
2073    begin
2074       pragma Assert (Nkind (Id) in N_Entity);
2075       return Flag277 (Id);
2076    end Is_Checked_Ghost_Entity;
2077 
2078    function Is_Child_Unit (Id : E) return B is
2079    begin
2080       return Flag73 (Id);
2081    end Is_Child_Unit;
2082 
2083    function Is_Class_Wide_Equivalent_Type (Id : E) return B is
2084    begin
2085       return Flag35 (Id);
2086    end Is_Class_Wide_Equivalent_Type;
2087 
2088    function Is_Compilation_Unit (Id : E) return B is
2089    begin
2090       return Flag149 (Id);
2091    end Is_Compilation_Unit;
2092 
2093    function Is_Completely_Hidden (Id : E) return B is
2094    begin
2095       pragma Assert (Ekind (Id) = E_Discriminant);
2096       return Flag103 (Id);
2097    end Is_Completely_Hidden;
2098 
2099    function Is_Constr_Subt_For_U_Nominal (Id : E) return B is
2100    begin
2101       return Flag80 (Id);
2102    end Is_Constr_Subt_For_U_Nominal;
2103 
2104    function Is_Constr_Subt_For_UN_Aliased (Id : E) return B is
2105    begin
2106       return Flag141 (Id);
2107    end Is_Constr_Subt_For_UN_Aliased;
2108 
2109    function Is_Constrained (Id : E) return B is
2110    begin
2111       pragma Assert (Nkind (Id) in N_Entity);
2112       return Flag12 (Id);
2113    end Is_Constrained;
2114 
2115    function Is_Constructor (Id : E) return B is
2116    begin
2117       return Flag76 (Id);
2118    end Is_Constructor;
2119 
2120    function Is_Controlled (Id : E) return B is
2121    begin
2122       return Flag42 (Base_Type (Id));
2123    end Is_Controlled;
2124 
2125    function Is_Controlling_Formal (Id : E) return B is
2126    begin
2127       pragma Assert (Is_Formal (Id));
2128       return Flag97 (Id);
2129    end Is_Controlling_Formal;
2130 
2131    function Is_CPP_Class (Id : E) return B is
2132    begin
2133       return Flag74 (Id);
2134    end Is_CPP_Class;
2135 
2136    function Is_Default_Init_Cond_Procedure (Id : E) return B is
2137    begin
2138       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
2139       return Flag132 (Id);
2140    end Is_Default_Init_Cond_Procedure;
2141 
2142    function Is_Descendant_Of_Address (Id : E) return B is
2143    begin
2144       return Flag223 (Id);
2145    end Is_Descendant_Of_Address;
2146 
2147    function Is_Discrim_SO_Function (Id : E) return B is
2148    begin
2149       return Flag176 (Id);
2150    end Is_Discrim_SO_Function;
2151 
2152    function Is_Discriminant_Check_Function (Id : E) return B is
2153    begin
2154       return Flag264 (Id);
2155    end Is_Discriminant_Check_Function;
2156 
2157    function Is_Dispatch_Table_Entity (Id : E) return B is
2158    begin
2159       return Flag234 (Id);
2160    end Is_Dispatch_Table_Entity;
2161 
2162    function Is_Dispatching_Operation (Id : E) return B is
2163    begin
2164       pragma Assert (Nkind (Id) in N_Entity);
2165       return Flag6 (Id);
2166    end Is_Dispatching_Operation;
2167 
2168    function Is_Eliminated (Id : E) return B is
2169    begin
2170       return Flag124 (Id);
2171    end Is_Eliminated;
2172 
2173    function Is_Entry_Formal (Id : E) return B is
2174    begin
2175       return Flag52 (Id);
2176    end Is_Entry_Formal;
2177 
2178    function Is_Exception_Handler (Id : E) return B is
2179    begin
2180       pragma Assert (Ekind (Id) = E_Block);
2181       return Flag286 (Id);
2182    end Is_Exception_Handler;
2183 
2184    function Is_Exported (Id : E) return B is
2185    begin
2186       return Flag99 (Id);
2187    end Is_Exported;
2188 
2189    function Is_First_Subtype (Id : E) return B is
2190    begin
2191       return Flag70 (Id);
2192    end Is_First_Subtype;
2193 
2194    function Is_For_Access_Subtype (Id : E) return B is
2195    begin
2196       pragma Assert (Ekind_In (Id, E_Record_Subtype, E_Private_Subtype));
2197       return Flag118 (Id);
2198    end Is_For_Access_Subtype;
2199 
2200    function Is_Formal_Subprogram (Id : E) return B is
2201    begin
2202       return Flag111 (Id);
2203    end Is_Formal_Subprogram;
2204 
2205    function Is_Frozen (Id : E) return B is
2206    begin
2207       return Flag4 (Id);
2208    end Is_Frozen;
2209 
2210    function Is_Generic_Actual_Subprogram (Id : E) return B is
2211    begin
2212       pragma Assert (Ekind (Id) = E_Function or else Ekind (Id) = E_Procedure);
2213       return Flag274 (Id);
2214    end Is_Generic_Actual_Subprogram;
2215 
2216    function Is_Generic_Actual_Type (Id : E) return B is
2217    begin
2218       pragma Assert (Is_Type (Id));
2219       return Flag94 (Id);
2220    end Is_Generic_Actual_Type;
2221 
2222    function Is_Generic_Instance (Id : E) return B is
2223    begin
2224       return Flag130 (Id);
2225    end Is_Generic_Instance;
2226 
2227    function Is_Generic_Type (Id : E) return B is
2228    begin
2229       pragma Assert (Nkind (Id) in N_Entity);
2230       return Flag13 (Id);
2231    end Is_Generic_Type;
2232 
2233    function Is_Hidden (Id : E) return B is
2234    begin
2235       return Flag57 (Id);
2236    end Is_Hidden;
2237 
2238    function Is_Hidden_Non_Overridden_Subpgm (Id : E) return B is
2239    begin
2240       return Flag2 (Id);
2241    end Is_Hidden_Non_Overridden_Subpgm;
2242 
2243    function Is_Hidden_Open_Scope (Id : E) return B is
2244    begin
2245       return Flag171 (Id);
2246    end Is_Hidden_Open_Scope;
2247 
2248    function Is_Ignored_Ghost_Entity (Id : E) return B is
2249    begin
2250       pragma Assert (Nkind (Id) in N_Entity);
2251       return Flag278 (Id);
2252    end Is_Ignored_Ghost_Entity;
2253 
2254    function Is_Immediately_Visible (Id : E) return B is
2255    begin
2256       pragma Assert (Nkind (Id) in N_Entity);
2257       return Flag7 (Id);
2258    end Is_Immediately_Visible;
2259 
2260    function Is_Implementation_Defined (Id : E) return B is
2261    begin
2262       return Flag254 (Id);
2263    end Is_Implementation_Defined;
2264 
2265    function Is_Imported (Id : E) return B is
2266    begin
2267       return Flag24 (Id);
2268    end Is_Imported;
2269 
2270    function Is_Independent (Id : E) return B is
2271    begin
2272       return Flag268 (Id);
2273    end Is_Independent;
2274 
2275    function Is_Inlined (Id : E) return B is
2276    begin
2277       return Flag11 (Id);
2278    end Is_Inlined;
2279 
2280    function Is_Inlined_Always (Id : E) return B is
2281    begin
2282       pragma Assert (Ekind (Id) = E_Function or else Ekind (Id) = E_Procedure);
2283       return Flag1 (Id);
2284    end Is_Inlined_Always;
2285 
2286    function Is_Interface (Id : E) return B is
2287    begin
2288       return Flag186 (Id);
2289    end Is_Interface;
2290 
2291    function Is_Instantiated (Id : E) return B is
2292    begin
2293       return Flag126 (Id);
2294    end Is_Instantiated;
2295 
2296    function Is_Internal (Id : E) return B is
2297    begin
2298       pragma Assert (Nkind (Id) in N_Entity);
2299       return Flag17 (Id);
2300    end Is_Internal;
2301 
2302    function Is_Interrupt_Handler (Id : E) return B is
2303    begin
2304       pragma Assert (Nkind (Id) in N_Entity);
2305       return Flag89 (Id);
2306    end Is_Interrupt_Handler;
2307 
2308    function Is_Intrinsic_Subprogram (Id : E) return B is
2309    begin
2310       return Flag64 (Id);
2311    end Is_Intrinsic_Subprogram;
2312 
2313    function Is_Invariant_Procedure (Id : E) return B is
2314    begin
2315       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
2316       return Flag257 (Id);
2317    end Is_Invariant_Procedure;
2318 
2319    function Is_Itype (Id : E) return B is
2320    begin
2321       return Flag91 (Id);
2322    end Is_Itype;
2323 
2324    function Is_Known_Non_Null (Id : E) return B is
2325    begin
2326       return Flag37 (Id);
2327    end Is_Known_Non_Null;
2328 
2329    function Is_Known_Null (Id : E) return B is
2330    begin
2331       return Flag204 (Id);
2332    end Is_Known_Null;
2333 
2334    function Is_Known_Valid (Id : E) return B is
2335    begin
2336       return Flag170 (Id);
2337    end Is_Known_Valid;
2338 
2339    function Is_Limited_Composite (Id : E) return B is
2340    begin
2341       return Flag106 (Id);
2342    end Is_Limited_Composite;
2343 
2344    function Is_Limited_Interface (Id : E) return B is
2345    begin
2346       return Flag197 (Id);
2347    end Is_Limited_Interface;
2348 
2349    function Is_Limited_Record (Id : E) return B is
2350    begin
2351       return Flag25 (Id);
2352    end Is_Limited_Record;
2353 
2354    function Is_Local_Anonymous_Access (Id : E) return B is
2355    begin
2356       pragma Assert (Is_Access_Type (Id));
2357       return Flag194 (Id);
2358    end Is_Local_Anonymous_Access;
2359 
2360    function Is_Machine_Code_Subprogram (Id : E) return B is
2361    begin
2362       pragma Assert (Is_Subprogram (Id));
2363       return Flag137 (Id);
2364    end Is_Machine_Code_Subprogram;
2365 
2366    function Is_Non_Static_Subtype (Id : E) return B is
2367    begin
2368       pragma Assert (Is_Type (Id));
2369       return Flag109 (Id);
2370    end Is_Non_Static_Subtype;
2371 
2372    function Is_Null_Init_Proc (Id : E) return B is
2373    begin
2374       pragma Assert (Ekind (Id) = E_Procedure);
2375       return Flag178 (Id);
2376    end Is_Null_Init_Proc;
2377 
2378    function Is_Obsolescent (Id : E) return B is
2379    begin
2380       return Flag153 (Id);
2381    end Is_Obsolescent;
2382 
2383    function Is_Only_Out_Parameter (Id : E) return B is
2384    begin
2385       pragma Assert (Is_Formal (Id));
2386       return Flag226 (Id);
2387    end Is_Only_Out_Parameter;
2388 
2389    function Is_Package_Body_Entity (Id : E) return B is
2390    begin
2391       return Flag160 (Id);
2392    end Is_Package_Body_Entity;
2393 
2394    function Is_Packed (Id : E) return B is
2395    begin
2396       return Flag51 (Implementation_Base_Type (Id));
2397    end Is_Packed;
2398 
2399    function Is_Packed_Array_Impl_Type (Id : E) return B is
2400    begin
2401       return Flag138 (Id);
2402    end Is_Packed_Array_Impl_Type;
2403 
2404    function Is_Param_Block_Component_Type (Id : E) return B is
2405    begin
2406       pragma Assert (Is_Access_Type (Id));
2407       return Flag215 (Base_Type (Id));
2408    end Is_Param_Block_Component_Type;
2409 
2410    function Is_Partial_Invariant_Procedure (Id : E) return B is
2411    begin
2412       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
2413       return Flag292 (Id);
2414    end Is_Partial_Invariant_Procedure;
2415 
2416    function Is_Potentially_Use_Visible (Id : E) return B is
2417    begin
2418       pragma Assert (Nkind (Id) in N_Entity);
2419       return Flag9 (Id);
2420    end Is_Potentially_Use_Visible;
2421 
2422    function Is_Predicate_Function (Id : E) return B is
2423    begin
2424       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
2425       return Flag255 (Id);
2426    end Is_Predicate_Function;
2427 
2428    function Is_Predicate_Function_M (Id : E) return B is
2429    begin
2430       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
2431       return Flag256 (Id);
2432    end Is_Predicate_Function_M;
2433 
2434    function Is_Preelaborated (Id : E) return B is
2435    begin
2436       return Flag59 (Id);
2437    end Is_Preelaborated;
2438 
2439    function Is_Primitive (Id : E) return B is
2440    begin
2441       pragma Assert
2442         (Is_Overloadable (Id)
2443            or else Ekind_In (Id, E_Generic_Function, E_Generic_Procedure));
2444       return Flag218 (Id);
2445    end Is_Primitive;
2446 
2447    function Is_Primitive_Wrapper (Id : E) return B is
2448    begin
2449       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
2450       return Flag195 (Id);
2451    end Is_Primitive_Wrapper;
2452 
2453    function Is_Private_Composite (Id : E) return B is
2454    begin
2455       pragma Assert (Is_Type (Id));
2456       return Flag107 (Id);
2457    end Is_Private_Composite;
2458 
2459    function Is_Private_Descendant (Id : E) return B is
2460    begin
2461       return Flag53 (Id);
2462    end Is_Private_Descendant;
2463 
2464    function Is_Private_Primitive (Id : E) return B is
2465    begin
2466       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
2467       return Flag245 (Id);
2468    end Is_Private_Primitive;
2469 
2470    function Is_Processed_Transient (Id : E) return B is
2471    begin
2472       pragma Assert (Ekind_In (Id, E_Constant, E_Loop_Parameter, E_Variable));
2473       return Flag252 (Id);
2474    end Is_Processed_Transient;
2475 
2476    function Is_Public (Id : E) return B is
2477    begin
2478       pragma Assert (Nkind (Id) in N_Entity);
2479       return Flag10 (Id);
2480    end Is_Public;
2481 
2482    function Is_Pure (Id : E) return B is
2483    begin
2484       return Flag44 (Id);
2485    end Is_Pure;
2486 
2487    function Is_Pure_Unit_Access_Type (Id : E) return B is
2488    begin
2489       pragma Assert (Is_Access_Type (Id));
2490       return Flag189 (Id);
2491    end Is_Pure_Unit_Access_Type;
2492 
2493    function Is_RACW_Stub_Type (Id : E) return B is
2494    begin
2495       pragma Assert (Is_Type (Id));
2496       return Flag244 (Id);
2497    end Is_RACW_Stub_Type;
2498 
2499    function Is_Raised (Id : E) return B is
2500    begin
2501       pragma Assert (Ekind (Id) = E_Exception);
2502       return Flag224 (Id);
2503    end Is_Raised;
2504 
2505    function Is_Remote_Call_Interface (Id : E) return B is
2506    begin
2507       return Flag62 (Id);
2508    end Is_Remote_Call_Interface;
2509 
2510    function Is_Remote_Types (Id : E) return B is
2511    begin
2512       return Flag61 (Id);
2513    end Is_Remote_Types;
2514 
2515    function Is_Renaming_Of_Object (Id : E) return B is
2516    begin
2517       return Flag112 (Id);
2518    end Is_Renaming_Of_Object;
2519 
2520    function Is_Return_Object (Id : E) return B is
2521    begin
2522       return Flag209 (Id);
2523    end Is_Return_Object;
2524 
2525    function Is_Safe_To_Reevaluate (Id : E) return B is
2526    begin
2527       return Flag249 (Id);
2528    end Is_Safe_To_Reevaluate;
2529 
2530    function Is_Shared_Passive (Id : E) return B is
2531    begin
2532       return Flag60 (Id);
2533    end Is_Shared_Passive;
2534 
2535    function Is_Static_Type (Id : E) return B is
2536    begin
2537       return Flag281 (Id);
2538    end Is_Static_Type;
2539 
2540    function Is_Statically_Allocated (Id : E) return B is
2541    begin
2542       return Flag28 (Id);
2543    end Is_Statically_Allocated;
2544 
2545    function Is_Tag (Id : E) return B is
2546    begin
2547       pragma Assert (Nkind (Id) in N_Entity);
2548       return Flag78 (Id);
2549    end Is_Tag;
2550 
2551    function Is_Tagged_Type (Id : E) return B is
2552    begin
2553       return Flag55 (Id);
2554    end Is_Tagged_Type;
2555 
2556    function Is_Thunk (Id : E) return B is
2557    begin
2558       return Flag225 (Id);
2559    end Is_Thunk;
2560 
2561    function Is_Trivial_Subprogram (Id : E) return B is
2562    begin
2563       return Flag235 (Id);
2564    end Is_Trivial_Subprogram;
2565 
2566    function Is_True_Constant (Id : E) return B is
2567    begin
2568       return Flag163 (Id);
2569    end Is_True_Constant;
2570 
2571    function Is_Unchecked_Union (Id : E) return B is
2572    begin
2573       return Flag117 (Implementation_Base_Type (Id));
2574    end Is_Unchecked_Union;
2575 
2576    function Is_Underlying_Record_View (Id : E) return B is
2577    begin
2578       return Flag246 (Id);
2579    end Is_Underlying_Record_View;
2580 
2581    function Is_Unimplemented (Id : E) return B is
2582    begin
2583       return Flag284 (Id);
2584    end Is_Unimplemented;
2585 
2586    function Is_Unsigned_Type (Id : E) return B is
2587    begin
2588       pragma Assert (Is_Type (Id));
2589       return Flag144 (Id);
2590    end Is_Unsigned_Type;
2591 
2592    function Is_Uplevel_Referenced_Entity (Id : E) return B is
2593    begin
2594       return Flag283 (Id);
2595    end Is_Uplevel_Referenced_Entity;
2596 
2597    function Is_Valued_Procedure (Id : E) return B is
2598    begin
2599       pragma Assert (Ekind (Id) = E_Procedure);
2600       return Flag127 (Id);
2601    end Is_Valued_Procedure;
2602 
2603    function Is_Visible_Formal (Id : E) return B is
2604    begin
2605       return Flag206 (Id);
2606    end Is_Visible_Formal;
2607 
2608    function Is_Visible_Lib_Unit (Id : E) return B is
2609    begin
2610       return Flag116 (Id);
2611    end Is_Visible_Lib_Unit;
2612 
2613    function Is_Volatile (Id : E) return B is
2614    begin
2615       pragma Assert (Nkind (Id) in N_Entity);
2616 
2617       if Is_Type (Id) then
2618          return Flag16 (Base_Type (Id));
2619       else
2620          return Flag16 (Id);
2621       end if;
2622    end Is_Volatile;
2623 
2624    function Is_Volatile_Full_Access (Id : E) return B is
2625    begin
2626       return Flag285 (Id);
2627    end Is_Volatile_Full_Access;
2628 
2629    function Itype_Printed (Id : E) return B is
2630    begin
2631       pragma Assert (Is_Itype (Id));
2632       return Flag202 (Id);
2633    end Itype_Printed;
2634 
2635    function Kill_Elaboration_Checks (Id : E) return B is
2636    begin
2637       return Flag32 (Id);
2638    end Kill_Elaboration_Checks;
2639 
2640    function Kill_Range_Checks (Id : E) return B is
2641    begin
2642       return Flag33 (Id);
2643    end Kill_Range_Checks;
2644 
2645    function Known_To_Have_Preelab_Init (Id : E) return B is
2646    begin
2647       pragma Assert (Is_Type (Id));
2648       return Flag207 (Id);
2649    end Known_To_Have_Preelab_Init;
2650 
2651    function Last_Aggregate_Assignment (Id : E) return N is
2652    begin
2653       pragma Assert (Ekind_In (Id, E_Constant, E_Variable));
2654       return Node30 (Id);
2655    end Last_Aggregate_Assignment;
2656 
2657    function Last_Assignment (Id : E) return N is
2658    begin
2659       pragma Assert (Is_Assignable (Id));
2660       return Node26 (Id);
2661    end Last_Assignment;
2662 
2663    function Last_Entity (Id : E) return E is
2664    begin
2665       return Node20 (Id);
2666    end Last_Entity;
2667 
2668    function Limited_View (Id : E) return E is
2669    begin
2670       pragma Assert (Ekind (Id) = E_Package);
2671       return Node23 (Id);
2672    end Limited_View;
2673 
2674    function Linker_Section_Pragma (Id : E) return N is
2675    begin
2676       pragma Assert
2677         (Is_Type (Id) or else Is_Object (Id) or else Is_Subprogram (Id));
2678       return Node33 (Id);
2679    end Linker_Section_Pragma;
2680 
2681    function Lit_Indexes (Id : E) return E is
2682    begin
2683       pragma Assert (Is_Enumeration_Type (Id));
2684       return Node18 (Id);
2685    end Lit_Indexes;
2686 
2687    function Lit_Strings (Id : E) return E is
2688    begin
2689       pragma Assert (Is_Enumeration_Type (Id));
2690       return Node16 (Id);
2691    end Lit_Strings;
2692 
2693    function Low_Bound_Tested (Id : E) return B is
2694    begin
2695       return Flag205 (Id);
2696    end Low_Bound_Tested;
2697 
2698    function Machine_Radix_10 (Id : E) return B is
2699    begin
2700       pragma Assert (Is_Decimal_Fixed_Point_Type (Id));
2701       return Flag84 (Id);
2702    end Machine_Radix_10;
2703 
2704    function Master_Id (Id : E) return E is
2705    begin
2706       pragma Assert (Is_Access_Type (Id));
2707       return Node17 (Id);
2708    end Master_Id;
2709 
2710    function Materialize_Entity (Id : E) return B is
2711    begin
2712       return Flag168 (Id);
2713    end Materialize_Entity;
2714 
2715    function May_Inherit_Delayed_Rep_Aspects (Id : E) return B is
2716    begin
2717       return Flag262 (Id);
2718    end May_Inherit_Delayed_Rep_Aspects;
2719 
2720    function Mechanism (Id : E) return M is
2721    begin
2722       pragma Assert (Ekind (Id) = E_Function or else Is_Formal (Id));
2723       return UI_To_Int (Uint8 (Id));
2724    end Mechanism;
2725 
2726    function Modulus (Id : E) return Uint is
2727    begin
2728       pragma Assert (Is_Modular_Integer_Type (Id));
2729       return Uint17 (Base_Type (Id));
2730    end Modulus;
2731 
2732    function Must_Be_On_Byte_Boundary (Id : E) return B is
2733    begin
2734       pragma Assert (Is_Type (Id));
2735       return Flag183 (Id);
2736    end Must_Be_On_Byte_Boundary;
2737 
2738    function Must_Have_Preelab_Init (Id : E) return B is
2739    begin
2740       pragma Assert (Is_Type (Id));
2741       return Flag208 (Id);
2742    end Must_Have_Preelab_Init;
2743 
2744    function Needs_Debug_Info (Id : E) return B is
2745    begin
2746       return Flag147 (Id);
2747    end Needs_Debug_Info;
2748 
2749    function Needs_No_Actuals (Id : E) return B is
2750    begin
2751       pragma Assert
2752         (Is_Overloadable (Id)
2753            or else Ekind_In (Id, E_Subprogram_Type, E_Entry_Family));
2754       return Flag22 (Id);
2755    end Needs_No_Actuals;
2756 
2757    function Never_Set_In_Source (Id : E) return B is
2758    begin
2759       return Flag115 (Id);
2760    end Never_Set_In_Source;
2761 
2762    function Next_Inlined_Subprogram (Id : E) return E is
2763    begin
2764       return Node12 (Id);
2765    end Next_Inlined_Subprogram;
2766 
2767    function No_Dynamic_Predicate_On_Actual (Id : E) return Boolean is
2768    begin
2769       pragma Assert (Is_Discrete_Type (Id));
2770       return Flag276 (Id);
2771    end No_Dynamic_Predicate_On_Actual;
2772 
2773    function No_Pool_Assigned (Id : E) return B is
2774    begin
2775       pragma Assert (Is_Access_Type (Id));
2776       return Flag131 (Root_Type (Id));
2777    end No_Pool_Assigned;
2778 
2779    function No_Predicate_On_Actual (Id : E) return Boolean is
2780    begin
2781       pragma Assert (Is_Discrete_Type (Id));
2782       return Flag275 (Id);
2783    end No_Predicate_On_Actual;
2784 
2785    function No_Return (Id : E) return B is
2786    begin
2787       return Flag113 (Id);
2788    end No_Return;
2789 
2790    function No_Strict_Aliasing (Id : E) return B is
2791    begin
2792       pragma Assert (Is_Access_Type (Id));
2793       return Flag136 (Base_Type (Id));
2794    end No_Strict_Aliasing;
2795 
2796    function No_Tagged_Streams_Pragma (Id : E) return N is
2797    begin
2798       pragma Assert (Is_Tagged_Type (Id));
2799       return Node32 (Id);
2800    end No_Tagged_Streams_Pragma;
2801 
2802    function Non_Binary_Modulus (Id : E) return B is
2803    begin
2804       pragma Assert (Is_Type (Id));
2805       return Flag58 (Base_Type (Id));
2806    end Non_Binary_Modulus;
2807 
2808    function Non_Limited_View (Id : E) return E is
2809    begin
2810       pragma Assert
2811         (Ekind (Id) in Incomplete_Kind
2812            or else
2813          Ekind (Id) in Class_Wide_Kind
2814            or else
2815          Ekind (Id) = E_Abstract_State);
2816       return Node19 (Id);
2817    end Non_Limited_View;
2818 
2819    function Nonzero_Is_True (Id : E) return B is
2820    begin
2821       pragma Assert (Root_Type (Id) = Standard_Boolean);
2822       return Flag162 (Base_Type (Id));
2823    end Nonzero_Is_True;
2824 
2825    function Normalized_First_Bit (Id : E) return U is
2826    begin
2827       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
2828       return Uint8 (Id);
2829    end Normalized_First_Bit;
2830 
2831    function Normalized_Position (Id : E) return U is
2832    begin
2833       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
2834       return Uint14 (Id);
2835    end Normalized_Position;
2836 
2837    function Normalized_Position_Max (Id : E) return U is
2838    begin
2839       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
2840       return Uint10 (Id);
2841    end Normalized_Position_Max;
2842 
2843    function OK_To_Rename (Id : E) return B is
2844    begin
2845       pragma Assert (Ekind (Id) = E_Variable);
2846       return Flag247 (Id);
2847    end OK_To_Rename;
2848 
2849    function OK_To_Reorder_Components (Id : E) return B is
2850    begin
2851       pragma Assert (Is_Record_Type (Id));
2852       return Flag239 (Base_Type (Id));
2853    end OK_To_Reorder_Components;
2854 
2855    function Optimize_Alignment_Space (Id : E) return B is
2856    begin
2857       pragma Assert
2858         (Is_Type (Id) or else Ekind_In (Id, E_Constant, E_Variable));
2859       return Flag241 (Id);
2860    end Optimize_Alignment_Space;
2861 
2862    function Optimize_Alignment_Time (Id : E) return B is
2863    begin
2864       pragma Assert
2865         (Is_Type (Id) or else Ekind_In (Id, E_Constant, E_Variable));
2866       return Flag242 (Id);
2867    end Optimize_Alignment_Time;
2868 
2869    function Original_Access_Type (Id : E) return E is
2870    begin
2871       pragma Assert (Ekind (Id) = E_Access_Subprogram_Type);
2872       return Node28 (Id);
2873    end Original_Access_Type;
2874 
2875    function Original_Array_Type (Id : E) return E is
2876    begin
2877       pragma Assert (Is_Array_Type (Id) or else Is_Modular_Integer_Type (Id));
2878       return Node21 (Id);
2879    end Original_Array_Type;
2880 
2881    function Original_Protected_Subprogram (Id : E) return N is
2882    begin
2883       return Node41 (Id);
2884    end Original_Protected_Subprogram;
2885 
2886    function Original_Record_Component (Id : E) return E is
2887    begin
2888       pragma Assert (Ekind_In (Id, E_Void, E_Component, E_Discriminant));
2889       return Node22 (Id);
2890    end Original_Record_Component;
2891 
2892    function Overlays_Constant (Id : E) return B is
2893    begin
2894       return Flag243 (Id);
2895    end Overlays_Constant;
2896 
2897    function Overridden_Operation (Id : E) return E is
2898    begin
2899       pragma Assert (Is_Subprogram (Id) or else Is_Generic_Subprogram (Id));
2900       return Node26 (Id);
2901    end Overridden_Operation;
2902 
2903    function Package_Instantiation (Id : E) return N is
2904    begin
2905       pragma Assert (Ekind_In (Id, E_Package, E_Generic_Package));
2906       return Node26 (Id);
2907    end Package_Instantiation;
2908 
2909    function Packed_Array_Impl_Type (Id : E) return E is
2910    begin
2911       pragma Assert (Is_Array_Type (Id));
2912       return Node23 (Id);
2913    end Packed_Array_Impl_Type;
2914 
2915    function Parent_Subtype (Id : E) return E is
2916    begin
2917       pragma Assert (Is_Record_Type (Id));
2918       return Node19 (Base_Type (Id));
2919    end Parent_Subtype;
2920 
2921    function Part_Of_Constituents (Id : E) return L is
2922    begin
2923       pragma Assert (Ekind_In (Id, E_Abstract_State, E_Variable));
2924       return Elist10 (Id);
2925    end Part_Of_Constituents;
2926 
2927    function Part_Of_References (Id : E) return L is
2928    begin
2929       pragma Assert (Ekind (Id) = E_Variable);
2930       return Elist11 (Id);
2931    end Part_Of_References;
2932 
2933    function Partial_View_Has_Unknown_Discr (Id : E) return B is
2934    begin
2935       pragma Assert (Is_Type (Id));
2936       return Flag280 (Id);
2937    end Partial_View_Has_Unknown_Discr;
2938 
2939    function Pending_Access_Types (Id : E) return L is
2940    begin
2941       pragma Assert (Is_Type (Id));
2942       return Elist15 (Id);
2943    end Pending_Access_Types;
2944 
2945    function Postconditions_Proc (Id : E) return E is
2946    begin
2947       pragma Assert (Ekind_In (Id, E_Entry,
2948                                    E_Entry_Family,
2949                                    E_Function,
2950                                    E_Procedure));
2951       return Node14 (Id);
2952    end Postconditions_Proc;
2953 
2954    function Predicates_Ignored (Id : E) return B is
2955    begin
2956       pragma Assert (Is_Type (Id));
2957       return Flag288 (Id);
2958    end Predicates_Ignored;
2959 
2960    function Prival (Id : E) return E is
2961    begin
2962       pragma Assert (Is_Protected_Component (Id));
2963       return Node17 (Id);
2964    end Prival;
2965 
2966    function Prival_Link (Id : E) return E is
2967    begin
2968       pragma Assert (Ekind_In (Id, E_Constant, E_Variable));
2969       return Node20 (Id);
2970    end Prival_Link;
2971 
2972    function Private_Dependents (Id : E) return L is
2973    begin
2974       pragma Assert (Is_Incomplete_Or_Private_Type (Id));
2975       return Elist18 (Id);
2976    end Private_Dependents;
2977 
2978    function Private_View (Id : E) return N is
2979    begin
2980       pragma Assert (Is_Private_Type (Id));
2981       return Node22 (Id);
2982    end Private_View;
2983 
2984    function Protected_Body_Subprogram (Id : E) return E is
2985    begin
2986       pragma Assert (Is_Subprogram (Id) or else Is_Entry (Id));
2987       return Node11 (Id);
2988    end Protected_Body_Subprogram;
2989 
2990    function Protected_Formal (Id : E) return E is
2991    begin
2992       pragma Assert (Is_Formal (Id));
2993       return Node22 (Id);
2994    end Protected_Formal;
2995 
2996    function Protection_Object (Id : E) return E is
2997    begin
2998       pragma Assert
2999         (Ekind_In (Id, E_Entry, E_Entry_Family, E_Function, E_Procedure));
3000       return Node23 (Id);
3001    end Protection_Object;
3002 
3003    function Reachable (Id : E) return B is
3004    begin
3005       return Flag49 (Id);
3006    end Reachable;
3007 
3008    function Referenced (Id : E) return B is
3009    begin
3010       return Flag156 (Id);
3011    end Referenced;
3012 
3013    function Referenced_As_LHS (Id : E) return B is
3014    begin
3015       return Flag36 (Id);
3016    end Referenced_As_LHS;
3017 
3018    function Referenced_As_Out_Parameter (Id : E) return B is
3019    begin
3020       return Flag227 (Id);
3021    end Referenced_As_Out_Parameter;
3022 
3023    function Refinement_Constituents (Id : E) return L is
3024    begin
3025       pragma Assert (Ekind (Id) = E_Abstract_State);
3026       return Elist8 (Id);
3027    end Refinement_Constituents;
3028 
3029    function Register_Exception_Call (Id : E) return N is
3030    begin
3031       pragma Assert (Ekind (Id) = E_Exception);
3032       return Node20 (Id);
3033    end Register_Exception_Call;
3034 
3035    function Related_Array_Object (Id : E) return E is
3036    begin
3037       pragma Assert (Is_Array_Type (Id));
3038       return Node25 (Id);
3039    end Related_Array_Object;
3040 
3041    function Related_Expression (Id : E) return N is
3042    begin
3043       pragma Assert (Ekind (Id) in Type_Kind
3044                        or else Ekind_In (Id, E_Constant, E_Variable));
3045       return Node24 (Id);
3046    end Related_Expression;
3047 
3048    function Related_Instance (Id : E) return E is
3049    begin
3050       pragma Assert (Ekind_In (Id, E_Package, E_Package_Body));
3051       return Node15 (Id);
3052    end Related_Instance;
3053 
3054    function Related_Type (Id : E) return E is
3055    begin
3056       pragma Assert (Ekind_In (Id, E_Component, E_Constant, E_Variable));
3057       return Node27 (Id);
3058    end Related_Type;
3059 
3060    function Relative_Deadline_Variable (Id : E) return E is
3061    begin
3062       pragma Assert (Is_Task_Type (Id));
3063       return Node28 (Implementation_Base_Type (Id));
3064    end Relative_Deadline_Variable;
3065 
3066    function Renamed_Entity (Id : E) return N is
3067    begin
3068       return Node18 (Id);
3069    end Renamed_Entity;
3070 
3071    function Renamed_In_Spec (Id : E) return B is
3072    begin
3073       pragma Assert (Ekind (Id) = E_Package);
3074       return Flag231 (Id);
3075    end Renamed_In_Spec;
3076 
3077    function Renamed_Object (Id : E) return N is
3078    begin
3079       return Node18 (Id);
3080    end Renamed_Object;
3081 
3082    function Renaming_Map (Id : E) return U is
3083    begin
3084       return Uint9 (Id);
3085    end Renaming_Map;
3086 
3087    function Requires_Overriding (Id : E) return B is
3088    begin
3089       pragma Assert (Is_Overloadable (Id));
3090       return Flag213 (Id);
3091    end Requires_Overriding;
3092 
3093    function Return_Present (Id : E) return B is
3094    begin
3095       return Flag54 (Id);
3096    end Return_Present;
3097 
3098    function Return_Applies_To (Id : E) return N is
3099    begin
3100       return Node8 (Id);
3101    end Return_Applies_To;
3102 
3103    function Returns_By_Ref (Id : E) return B is
3104    begin
3105       return Flag90 (Id);
3106    end Returns_By_Ref;
3107 
3108    function Returns_Limited_View (Id : E) return B is
3109    begin
3110       pragma Assert (Ekind (Id) = E_Function);
3111       return Flag134 (Id);
3112    end Returns_Limited_View;
3113 
3114    function Reverse_Bit_Order (Id : E) return B is
3115    begin
3116       pragma Assert (Is_Record_Type (Id));
3117       return Flag164 (Base_Type (Id));
3118    end Reverse_Bit_Order;
3119 
3120    function Reverse_Storage_Order (Id : E) return B is
3121    begin
3122       pragma Assert (Is_Record_Type (Id) or else Is_Array_Type (Id));
3123       return Flag93 (Base_Type (Id));
3124    end Reverse_Storage_Order;
3125 
3126    function Rewritten_For_C (Id : E) return B is
3127    begin
3128       pragma Assert (Ekind (Id) = E_Function);
3129       return Flag287 (Id);
3130    end Rewritten_For_C;
3131 
3132    function RM_Size (Id : E) return U is
3133    begin
3134       pragma Assert (Is_Type (Id));
3135       return Uint13 (Id);
3136    end RM_Size;
3137 
3138    function Scalar_Range (Id : E) return N is
3139    begin
3140       return Node20 (Id);
3141    end Scalar_Range;
3142 
3143    function Scale_Value (Id : E) return U is
3144    begin
3145       return Uint16 (Id);
3146    end Scale_Value;
3147 
3148    function Scope_Depth_Value (Id : E) return U is
3149    begin
3150       return Uint22 (Id);
3151    end Scope_Depth_Value;
3152 
3153    function Sec_Stack_Needed_For_Return (Id : E) return B is
3154    begin
3155       return Flag167 (Id);
3156    end Sec_Stack_Needed_For_Return;
3157 
3158    function Shadow_Entities (Id : E) return S is
3159    begin
3160       pragma Assert (Ekind_In (Id, E_Package, E_Generic_Package));
3161       return List14 (Id);
3162    end Shadow_Entities;
3163 
3164    function Shared_Var_Procs_Instance (Id : E) return E is
3165    begin
3166       pragma Assert (Ekind (Id) = E_Variable);
3167       return Node22 (Id);
3168    end Shared_Var_Procs_Instance;
3169 
3170    function Size_Check_Code (Id : E) return N is
3171    begin
3172       pragma Assert (Ekind_In (Id, E_Constant, E_Variable));
3173       return Node19 (Id);
3174    end Size_Check_Code;
3175 
3176    function Size_Depends_On_Discriminant (Id : E) return B is
3177    begin
3178       return Flag177 (Id);
3179    end Size_Depends_On_Discriminant;
3180 
3181    function Size_Known_At_Compile_Time (Id : E) return B is
3182    begin
3183       return Flag92 (Id);
3184    end Size_Known_At_Compile_Time;
3185 
3186    function Small_Value (Id : E) return R is
3187    begin
3188       pragma Assert (Is_Fixed_Point_Type (Id));
3189       return Ureal21 (Id);
3190    end Small_Value;
3191 
3192    function SPARK_Aux_Pragma (Id : E) return N is
3193    begin
3194       pragma Assert
3195         (Ekind_In (Id, E_Protected_Type,   --  concurrent variants
3196                        E_Task_Type)
3197            or else
3198          Ekind_In (Id, E_Generic_Package,  --  package variants
3199                        E_Package,
3200                        E_Package_Body));
3201       return Node41 (Id);
3202    end SPARK_Aux_Pragma;
3203 
3204    function SPARK_Aux_Pragma_Inherited (Id : E) return B is
3205    begin
3206       pragma Assert
3207         (Ekind_In (Id, E_Protected_Type,   --  concurrent variants
3208                        E_Task_Type)
3209            or else
3210          Ekind_In (Id, E_Generic_Package,  --  package variants
3211                        E_Package,
3212                        E_Package_Body));
3213       return Flag266 (Id);
3214    end SPARK_Aux_Pragma_Inherited;
3215 
3216    function SPARK_Pragma (Id : E) return N is
3217    begin
3218       pragma Assert
3219         (Ekind_In (Id, E_Protected_Body,   --  concurrent variants
3220                        E_Protected_Type,
3221                        E_Task_Body,
3222                        E_Task_Type)
3223           or else
3224          Ekind_In (Id, E_Entry,            --  overloadable variants
3225                        E_Entry_Family,
3226                        E_Function,
3227                        E_Generic_Function,
3228                        E_Generic_Procedure,
3229                        E_Operator,
3230                        E_Procedure,
3231                        E_Subprogram_Body)
3232            or else
3233          Ekind_In (Id, E_Generic_Package,  --  package variants
3234                        E_Package,
3235                        E_Package_Body)
3236            or else
3237          Ekind (Id) = E_Variable);         --  variable
3238       return Node40 (Id);
3239    end SPARK_Pragma;
3240 
3241    function SPARK_Pragma_Inherited (Id : E) return B is
3242    begin
3243       pragma Assert
3244         (Ekind_In (Id, E_Protected_Body,   --  concurrent variants
3245                        E_Protected_Type,
3246                        E_Task_Body,
3247                        E_Task_Type)
3248            or else
3249          Ekind_In (Id, E_Entry,            --  overloadable variants
3250                        E_Entry_Family,
3251                        E_Function,
3252                        E_Generic_Function,
3253                        E_Generic_Procedure,
3254                        E_Operator,
3255                        E_Procedure,
3256                        E_Subprogram_Body)
3257            or else
3258          Ekind_In (Id, E_Generic_Package,  --  package variants
3259                        E_Package,
3260                        E_Package_Body)
3261            or else
3262          Ekind (Id) = E_Variable);         --  variable
3263       return Flag265 (Id);
3264    end SPARK_Pragma_Inherited;
3265 
3266    function Spec_Entity (Id : E) return E is
3267    begin
3268       pragma Assert (Ekind (Id) = E_Package_Body or else Is_Formal (Id));
3269       return Node19 (Id);
3270    end Spec_Entity;
3271 
3272    function SSO_Set_High_By_Default (Id : E) return B is
3273    begin
3274       pragma Assert (Is_Record_Type (Id) or else Is_Array_Type (Id));
3275       return Flag273 (Base_Type (Id));
3276    end SSO_Set_High_By_Default;
3277 
3278    function SSO_Set_Low_By_Default (Id : E) return B is
3279    begin
3280       pragma Assert (Is_Record_Type (Id) or else Is_Array_Type (Id));
3281       return Flag272 (Base_Type (Id));
3282    end SSO_Set_Low_By_Default;
3283 
3284    function Static_Discrete_Predicate (Id : E) return S is
3285    begin
3286       pragma Assert (Is_Discrete_Type (Id));
3287       return List25 (Id);
3288    end Static_Discrete_Predicate;
3289 
3290    function Static_Real_Or_String_Predicate (Id : E) return N is
3291    begin
3292       pragma Assert (Is_Real_Type (Id) or else Is_String_Type (Id));
3293       return Node25 (Id);
3294    end Static_Real_Or_String_Predicate;
3295 
3296    function Status_Flag_Or_Transient_Decl (Id : E) return N is
3297    begin
3298       pragma Assert (Ekind_In (Id, E_Constant, E_Variable));
3299       return Node15 (Id);
3300    end Status_Flag_Or_Transient_Decl;
3301 
3302    function Storage_Size_Variable (Id : E) return E is
3303    begin
3304       pragma Assert (Is_Access_Type (Id) or else Is_Task_Type (Id));
3305       return Node26 (Implementation_Base_Type (Id));
3306    end Storage_Size_Variable;
3307 
3308    function Static_Elaboration_Desired (Id : E) return B is
3309    begin
3310       pragma Assert (Ekind (Id) = E_Package);
3311       return Flag77 (Id);
3312    end Static_Elaboration_Desired;
3313 
3314    function Static_Initialization (Id : E) return N is
3315    begin
3316       pragma Assert
3317         (Ekind (Id) = E_Procedure and then not Is_Dispatching_Operation (Id));
3318       return Node30 (Id);
3319    end Static_Initialization;
3320 
3321    function Stored_Constraint (Id : E) return L is
3322    begin
3323       pragma Assert
3324         (Is_Composite_Type (Id) and then not Is_Array_Type (Id));
3325       return Elist23 (Id);
3326    end Stored_Constraint;
3327 
3328    function Stores_Attribute_Old_Prefix (Id : E) return B is
3329    begin
3330       return Flag270 (Id);
3331    end Stores_Attribute_Old_Prefix;
3332 
3333    function Strict_Alignment (Id : E) return B is
3334    begin
3335       return Flag145 (Implementation_Base_Type (Id));
3336    end Strict_Alignment;
3337 
3338    function String_Literal_Length (Id : E) return U is
3339    begin
3340       return Uint16 (Id);
3341    end String_Literal_Length;
3342 
3343    function String_Literal_Low_Bound (Id : E) return N is
3344    begin
3345       return Node18 (Id);
3346    end String_Literal_Low_Bound;
3347 
3348    function Subprograms_For_Type (Id : E) return L is
3349    begin
3350       pragma Assert (Is_Type (Id));
3351       return Elist29 (Id);
3352    end Subprograms_For_Type;
3353 
3354    function Subps_Index (Id : E) return U is
3355    begin
3356       pragma Assert (Is_Subprogram (Id));
3357       return Uint24 (Id);
3358    end Subps_Index;
3359 
3360    function Suppress_Elaboration_Warnings (Id : E) return B is
3361    begin
3362       return Flag148 (Id);
3363    end Suppress_Elaboration_Warnings;
3364 
3365    function Suppress_Initialization (Id : E) return B is
3366    begin
3367       pragma Assert (Is_Type (Id) or else Ekind (Id) = E_Variable);
3368       return Flag105 (Id);
3369    end Suppress_Initialization;
3370 
3371    function Suppress_Style_Checks (Id : E) return B is
3372    begin
3373       return Flag165 (Id);
3374    end Suppress_Style_Checks;
3375 
3376    function Suppress_Value_Tracking_On_Call (Id : E) return B is
3377    begin
3378       return Flag217 (Id);
3379    end Suppress_Value_Tracking_On_Call;
3380 
3381    function Task_Body_Procedure (Id : E) return N is
3382    begin
3383       pragma Assert (Ekind (Id) in Task_Kind);
3384       return Node25 (Id);
3385    end Task_Body_Procedure;
3386 
3387    function Thunk_Entity (Id : E) return E is
3388    begin
3389       pragma Assert (Ekind_In (Id, E_Function, E_Procedure)
3390                       and then Is_Thunk (Id));
3391       return Node31 (Id);
3392    end Thunk_Entity;
3393 
3394    function Treat_As_Volatile (Id : E) return B is
3395    begin
3396       return Flag41 (Id);
3397    end Treat_As_Volatile;
3398 
3399    function Underlying_Full_View (Id : E) return E is
3400    begin
3401       pragma Assert (Ekind (Id) in Private_Kind);
3402       return Node19 (Id);
3403    end Underlying_Full_View;
3404 
3405    function Underlying_Record_View (Id : E) return E is
3406    begin
3407       return Node28 (Id);
3408    end Underlying_Record_View;
3409 
3410    function Universal_Aliasing (Id : E) return B is
3411    begin
3412       pragma Assert (Is_Type (Id));
3413       return Flag216 (Implementation_Base_Type (Id));
3414    end Universal_Aliasing;
3415 
3416    function Unset_Reference (Id : E) return N is
3417    begin
3418       return Node16 (Id);
3419    end Unset_Reference;
3420 
3421    function Used_As_Generic_Actual (Id : E) return B is
3422    begin
3423       return Flag222 (Id);
3424    end Used_As_Generic_Actual;
3425 
3426    function Uses_Lock_Free (Id : E) return B is
3427    begin
3428       pragma Assert (Is_Protected_Type (Id));
3429       return Flag188 (Id);
3430    end Uses_Lock_Free;
3431 
3432    function Uses_Sec_Stack (Id : E) return B is
3433    begin
3434       return Flag95 (Id);
3435    end Uses_Sec_Stack;
3436 
3437    function Warnings_Off (Id : E) return B is
3438    begin
3439       return Flag96 (Id);
3440    end Warnings_Off;
3441 
3442    function Warnings_Off_Used (Id : E) return B is
3443    begin
3444       return Flag236 (Id);
3445    end Warnings_Off_Used;
3446 
3447    function Warnings_Off_Used_Unmodified (Id : E) return B is
3448    begin
3449       return Flag237 (Id);
3450    end Warnings_Off_Used_Unmodified;
3451 
3452    function Warnings_Off_Used_Unreferenced (Id : E) return B is
3453    begin
3454       return Flag238 (Id);
3455    end Warnings_Off_Used_Unreferenced;
3456 
3457    function Wrapped_Entity (Id : E) return E is
3458    begin
3459       pragma Assert (Ekind_In (Id, E_Function, E_Procedure)
3460                        and then Is_Primitive_Wrapper (Id));
3461       return Node27 (Id);
3462    end Wrapped_Entity;
3463 
3464    function Was_Hidden (Id : E) return B is
3465    begin
3466       return Flag196 (Id);
3467    end Was_Hidden;
3468 
3469    ------------------------------
3470    -- Classification Functions --
3471    ------------------------------
3472 
3473    function Is_Access_Type                      (Id : E) return B is
3474    begin
3475       return Ekind (Id) in Access_Kind;
3476    end Is_Access_Type;
3477 
3478    function Is_Access_Protected_Subprogram_Type (Id : E) return B is
3479    begin
3480       return Ekind (Id) in Access_Protected_Kind;
3481    end Is_Access_Protected_Subprogram_Type;
3482 
3483    function Is_Access_Subprogram_Type           (Id : E) return B is
3484    begin
3485       return Ekind (Id) in Access_Subprogram_Kind;
3486    end Is_Access_Subprogram_Type;
3487 
3488    function Is_Aggregate_Type                   (Id : E) return B is
3489    begin
3490       return Ekind (Id) in Aggregate_Kind;
3491    end Is_Aggregate_Type;
3492 
3493    function Is_Array_Type                       (Id : E) return B is
3494    begin
3495       return Ekind (Id) in Array_Kind;
3496    end Is_Array_Type;
3497 
3498    function Is_Assignable                       (Id : E) return B is
3499    begin
3500       return Ekind (Id) in Assignable_Kind;
3501    end Is_Assignable;
3502 
3503    function Is_Class_Wide_Type                  (Id : E) return B is
3504    begin
3505       return Ekind (Id) in Class_Wide_Kind;
3506    end Is_Class_Wide_Type;
3507 
3508    function Is_Composite_Type                   (Id : E) return B is
3509    begin
3510       return Ekind (Id) in Composite_Kind;
3511    end Is_Composite_Type;
3512 
3513    function Is_Concurrent_Body                  (Id : E) return B is
3514    begin
3515       return Ekind (Id) in Concurrent_Body_Kind;
3516    end Is_Concurrent_Body;
3517 
3518    function Is_Concurrent_Record_Type           (Id : E) return B is
3519    begin
3520       return Flag20 (Id);
3521    end Is_Concurrent_Record_Type;
3522 
3523    function Is_Concurrent_Type                  (Id : E) return B is
3524    begin
3525       return Ekind (Id) in Concurrent_Kind;
3526    end Is_Concurrent_Type;
3527 
3528    function Is_Decimal_Fixed_Point_Type         (Id : E) return B is
3529    begin
3530       return Ekind (Id) in Decimal_Fixed_Point_Kind;
3531    end Is_Decimal_Fixed_Point_Type;
3532 
3533    function Is_Digits_Type                      (Id : E) return B is
3534    begin
3535       return Ekind (Id) in Digits_Kind;
3536    end Is_Digits_Type;
3537 
3538    function Is_Discrete_Or_Fixed_Point_Type     (Id : E) return B is
3539    begin
3540       return Ekind (Id) in Discrete_Or_Fixed_Point_Kind;
3541    end Is_Discrete_Or_Fixed_Point_Type;
3542 
3543    function Is_Discrete_Type                    (Id : E) return B is
3544    begin
3545       return Ekind (Id) in Discrete_Kind;
3546    end Is_Discrete_Type;
3547 
3548    function Is_Elementary_Type                  (Id : E) return B is
3549    begin
3550       return Ekind (Id) in Elementary_Kind;
3551    end Is_Elementary_Type;
3552 
3553    function Is_Entry                            (Id : E) return B is
3554    begin
3555       return Ekind (Id) in Entry_Kind;
3556    end Is_Entry;
3557 
3558    function Is_Enumeration_Type                 (Id : E) return B is
3559    begin
3560       return Ekind (Id) in Enumeration_Kind;
3561    end Is_Enumeration_Type;
3562 
3563    function Is_Fixed_Point_Type                 (Id : E) return B is
3564    begin
3565       return Ekind (Id) in Fixed_Point_Kind;
3566    end Is_Fixed_Point_Type;
3567 
3568    function Is_Floating_Point_Type              (Id : E) return B is
3569    begin
3570       return Ekind (Id) in Float_Kind;
3571    end Is_Floating_Point_Type;
3572 
3573    function Is_Formal                           (Id : E) return B is
3574    begin
3575       return Ekind (Id) in Formal_Kind;
3576    end Is_Formal;
3577 
3578    function Is_Formal_Object                    (Id : E) return B is
3579    begin
3580       return Ekind (Id) in Formal_Object_Kind;
3581    end Is_Formal_Object;
3582 
3583    function Is_Generic_Subprogram               (Id : E) return B is
3584    begin
3585       return Ekind (Id) in Generic_Subprogram_Kind;
3586    end Is_Generic_Subprogram;
3587 
3588    function Is_Generic_Unit                     (Id : E) return B is
3589    begin
3590       return Ekind (Id) in Generic_Unit_Kind;
3591    end Is_Generic_Unit;
3592 
3593    function Is_Ghost_Entity (Id : Entity_Id) return Boolean is
3594    begin
3595       return Is_Checked_Ghost_Entity (Id) or else Is_Ignored_Ghost_Entity (Id);
3596    end Is_Ghost_Entity;
3597 
3598    function Is_Incomplete_Or_Private_Type       (Id : E) return B is
3599    begin
3600       return Ekind (Id) in Incomplete_Or_Private_Kind;
3601    end Is_Incomplete_Or_Private_Type;
3602 
3603    function Is_Incomplete_Type                  (Id : E) return B is
3604    begin
3605       return Ekind (Id) in Incomplete_Kind;
3606    end Is_Incomplete_Type;
3607 
3608    function Is_Integer_Type                     (Id : E) return B is
3609    begin
3610       return Ekind (Id) in Integer_Kind;
3611    end Is_Integer_Type;
3612 
3613    function Is_Modular_Integer_Type             (Id : E) return B is
3614    begin
3615       return Ekind (Id) in Modular_Integer_Kind;
3616    end Is_Modular_Integer_Type;
3617 
3618    function Is_Named_Number                     (Id : E) return B is
3619    begin
3620       return Ekind (Id) in Named_Kind;
3621    end Is_Named_Number;
3622 
3623    function Is_Numeric_Type                     (Id : E) return B is
3624    begin
3625       return Ekind (Id) in Numeric_Kind;
3626    end Is_Numeric_Type;
3627 
3628    function Is_Object                           (Id : E) return B is
3629    begin
3630       return Ekind (Id) in Object_Kind;
3631    end Is_Object;
3632 
3633    function Is_Ordinary_Fixed_Point_Type        (Id : E) return B is
3634    begin
3635       return Ekind (Id) in Ordinary_Fixed_Point_Kind;
3636    end Is_Ordinary_Fixed_Point_Type;
3637 
3638    function Is_Overloadable                     (Id : E) return B is
3639    begin
3640       return Ekind (Id) in Overloadable_Kind;
3641    end Is_Overloadable;
3642 
3643    function Is_Private_Type                     (Id : E) return B is
3644    begin
3645       return Ekind (Id) in Private_Kind;
3646    end Is_Private_Type;
3647 
3648    function Is_Protected_Type                   (Id : E) return B is
3649    begin
3650       return Ekind (Id) in Protected_Kind;
3651    end Is_Protected_Type;
3652 
3653    function Is_Real_Type                        (Id : E) return B is
3654    begin
3655       return Ekind (Id) in Real_Kind;
3656    end Is_Real_Type;
3657 
3658    function Is_Record_Type                      (Id : E) return B is
3659    begin
3660       return Ekind (Id) in Record_Kind;
3661    end Is_Record_Type;
3662 
3663    function Is_Scalar_Type                      (Id : E) return B is
3664    begin
3665       return Ekind (Id) in Scalar_Kind;
3666    end Is_Scalar_Type;
3667 
3668    function Is_Signed_Integer_Type              (Id : E) return B is
3669    begin
3670       return Ekind (Id) in Signed_Integer_Kind;
3671    end Is_Signed_Integer_Type;
3672 
3673    function Is_Subprogram                       (Id : E) return B is
3674    begin
3675       return Ekind (Id) in Subprogram_Kind;
3676    end Is_Subprogram;
3677 
3678    function Is_Subprogram_Or_Generic_Subprogram (Id : E) return B is
3679    begin
3680       return Ekind (Id) in Subprogram_Kind
3681                or else
3682              Ekind (Id) in Generic_Subprogram_Kind;
3683    end Is_Subprogram_Or_Generic_Subprogram;
3684 
3685    function Is_Task_Type                        (Id : E) return B is
3686    begin
3687       return Ekind (Id) in Task_Kind;
3688    end Is_Task_Type;
3689 
3690    function Is_Type                             (Id : E) return B is
3691    begin
3692       return Ekind (Id) in Type_Kind;
3693    end Is_Type;
3694 
3695    ------------------------------
3696    -- Attribute Set Procedures --
3697    ------------------------------
3698 
3699    --  Note: in many of these set procedures an "obvious" assertion is missing.
3700    --  The reason for this is that in many cases, a field is set before the
3701    --  Ekind field is set, so that the field is set when Ekind = E_Void. It
3702    --  it is possible to add assertions that specifically include the E_Void
3703    --  possibility, but in some cases, we just omit the assertions.
3704 
3705    procedure Set_Abstract_States (Id : E; V : L) is
3706    begin
3707       pragma Assert (Ekind_In (Id, E_Generic_Package, E_Package));
3708       Set_Elist25 (Id, V);
3709    end Set_Abstract_States;
3710 
3711    procedure Set_Accept_Address (Id : E; V : L) is
3712    begin
3713       Set_Elist21 (Id, V);
3714    end Set_Accept_Address;
3715 
3716    procedure Set_Access_Disp_Table (Id : E; V : L) is
3717    begin
3718       pragma Assert (Ekind (Id) = E_Record_Type
3719         and then Id = Implementation_Base_Type (Id));
3720       pragma Assert (V = No_Elist or else Is_Tagged_Type (Id));
3721       Set_Elist16 (Id, V);
3722    end Set_Access_Disp_Table;
3723 
3724    procedure Set_Anonymous_Master (Id : E; V : E) is
3725    begin
3726       pragma Assert (Is_Type (Id));
3727       Set_Node35 (Id, V);
3728    end Set_Anonymous_Master;
3729 
3730    procedure Set_Anonymous_Object (Id : E; V : E) is
3731    begin
3732       pragma Assert (Ekind_In (Id, E_Protected_Type, E_Task_Type));
3733       Set_Node30 (Id, V);
3734    end Set_Anonymous_Object;
3735 
3736    procedure Set_Associated_Entity (Id : E; V : E) is
3737    begin
3738       Set_Node37 (Id, V);
3739    end Set_Associated_Entity;
3740 
3741    procedure Set_Associated_Formal_Package (Id : E; V : E) is
3742    begin
3743       Set_Node12 (Id, V);
3744    end Set_Associated_Formal_Package;
3745 
3746    procedure Set_Associated_Node_For_Itype (Id : E; V : E) is
3747    begin
3748       Set_Node8 (Id, V);
3749    end Set_Associated_Node_For_Itype;
3750 
3751    procedure Set_Associated_Storage_Pool (Id : E; V : E) is
3752    begin
3753       pragma Assert (Is_Access_Type (Id) and then Is_Base_Type (Id));
3754       Set_Node22 (Id, V);
3755    end Set_Associated_Storage_Pool;
3756 
3757    procedure Set_Activation_Record_Component (Id : E; V : E) is
3758    begin
3759       pragma Assert (Ekind_In (Id, E_Constant,
3760                                    E_In_Parameter,
3761                                    E_In_Out_Parameter,
3762                                    E_Loop_Parameter,
3763                                    E_Out_Parameter,
3764                                    E_Variable));
3765       Set_Node31 (Id, V);
3766    end Set_Activation_Record_Component;
3767 
3768    procedure Set_Actual_Subtype (Id : E; V : E) is
3769    begin
3770       pragma Assert
3771         (Ekind_In (Id, E_Constant, E_Variable, E_Generic_In_Out_Parameter)
3772            or else Is_Formal (Id));
3773       Set_Node17 (Id, V);
3774    end Set_Actual_Subtype;
3775 
3776    procedure Set_Address_Taken (Id : E; V : B := True) is
3777    begin
3778       Set_Flag104 (Id, V);
3779    end Set_Address_Taken;
3780 
3781    procedure Set_Alias (Id : E; V : E) is
3782    begin
3783       pragma Assert
3784         (Is_Overloadable (Id) or else Ekind (Id) = E_Subprogram_Type);
3785       Set_Node18 (Id, V);
3786    end Set_Alias;
3787 
3788    procedure Set_Alignment (Id : E; V : U) is
3789    begin
3790       pragma Assert (Is_Type (Id)
3791                        or else Is_Formal (Id)
3792                        or else Ekind_In (Id, E_Loop_Parameter,
3793                                              E_Constant,
3794                                              E_Exception,
3795                                              E_Variable));
3796       Set_Uint14 (Id, V);
3797    end Set_Alignment;
3798 
3799    procedure Set_Barrier_Function (Id : E; V : N) is
3800    begin
3801       pragma Assert (Is_Entry (Id));
3802       Set_Node12 (Id, V);
3803    end Set_Barrier_Function;
3804 
3805    procedure Set_Block_Node (Id : E; V : N) is
3806    begin
3807       pragma Assert (Ekind (Id) = E_Block);
3808       Set_Node11 (Id, V);
3809    end Set_Block_Node;
3810 
3811    procedure Set_Body_Entity (Id : E; V : E) is
3812    begin
3813       pragma Assert (Ekind_In (Id, E_Package, E_Generic_Package));
3814       Set_Node19 (Id, V);
3815    end Set_Body_Entity;
3816 
3817    procedure Set_Body_Needed_For_SAL (Id : E; V : B := True) is
3818    begin
3819       pragma Assert
3820         (Ekind (Id) = E_Package
3821            or else Is_Subprogram (Id)
3822            or else Is_Generic_Unit (Id));
3823       Set_Flag40 (Id, V);
3824    end Set_Body_Needed_For_SAL;
3825 
3826    procedure Set_Body_References (Id : E; V : L) is
3827    begin
3828       pragma Assert (Ekind (Id) = E_Abstract_State);
3829       Set_Elist16 (Id, V);
3830    end Set_Body_References;
3831 
3832    procedure Set_BIP_Initialization_Call (Id : E; V : N) is
3833    begin
3834       pragma Assert (Ekind_In (Id, E_Constant, E_Variable));
3835       Set_Node29 (Id, V);
3836    end Set_BIP_Initialization_Call;
3837 
3838    procedure Set_C_Pass_By_Copy (Id : E; V : B := True) is
3839    begin
3840       pragma Assert (Is_Record_Type (Id) and then Is_Base_Type (Id));
3841       Set_Flag125 (Id, V);
3842    end Set_C_Pass_By_Copy;
3843 
3844    procedure Set_Can_Never_Be_Null (Id : E; V : B := True) is
3845    begin
3846       Set_Flag38 (Id, V);
3847    end Set_Can_Never_Be_Null;
3848 
3849    procedure Set_Can_Use_Internal_Rep (Id : E; V : B := True) is
3850    begin
3851       pragma Assert
3852         (Is_Access_Subprogram_Type (Id) and then Is_Base_Type (Id));
3853       Set_Flag229 (Id, V);
3854    end Set_Can_Use_Internal_Rep;
3855 
3856    procedure Set_Checks_May_Be_Suppressed (Id : E; V : B := True) is
3857    begin
3858       Set_Flag31 (Id, V);
3859    end Set_Checks_May_Be_Suppressed;
3860 
3861    procedure Set_Class_Wide_Preconds (Id : E; V : S) is
3862    begin
3863       pragma Assert (Is_Subprogram (Id));
3864       Set_List38 (Id, V);
3865    end Set_Class_Wide_Preconds;
3866 
3867    procedure Set_Class_Wide_Postconds (Id : E; V : S) is
3868    begin
3869       pragma Assert (Is_Subprogram (Id));
3870       Set_List39 (Id, V);
3871    end Set_Class_Wide_Postconds;
3872 
3873    procedure Set_Class_Wide_Type (Id : E; V : E) is
3874    begin
3875       pragma Assert (Is_Type (Id));
3876       Set_Node9 (Id, V);
3877    end Set_Class_Wide_Type;
3878 
3879    procedure Set_Cloned_Subtype (Id : E; V : E) is
3880    begin
3881       pragma Assert (Ekind_In (Id, E_Record_Subtype, E_Class_Wide_Subtype));
3882       Set_Node16 (Id, V);
3883    end Set_Cloned_Subtype;
3884 
3885    procedure Set_Component_Bit_Offset (Id : E; V : U) is
3886    begin
3887       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
3888       Set_Uint11 (Id, V);
3889    end Set_Component_Bit_Offset;
3890 
3891    procedure Set_Component_Clause (Id : E; V : N) is
3892    begin
3893       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
3894       Set_Node13 (Id, V);
3895    end Set_Component_Clause;
3896 
3897    procedure Set_Component_Size (Id : E; V : U) is
3898    begin
3899       pragma Assert (Is_Array_Type (Id) and then Is_Base_Type (Id));
3900       Set_Uint22 (Id, V);
3901    end Set_Component_Size;
3902 
3903    procedure Set_Component_Type (Id : E; V : E) is
3904    begin
3905       pragma Assert (Is_Array_Type (Id) and then Is_Base_Type (Id));
3906       Set_Node20 (Id, V);
3907    end Set_Component_Type;
3908 
3909    procedure Set_Contains_Ignored_Ghost_Code (Id : E; V : B := True) is
3910    begin
3911       pragma Assert
3912         (Ekind_In (Id, E_Block,
3913                        E_Function,
3914                        E_Generic_Function,
3915                        E_Generic_Package,
3916                        E_Generic_Procedure,
3917                        E_Package,
3918                        E_Package_Body,
3919                        E_Procedure,
3920                        E_Subprogram_Body));
3921       Set_Flag279 (Id, V);
3922    end Set_Contains_Ignored_Ghost_Code;
3923 
3924    procedure Set_Contract (Id : E; V : N) is
3925    begin
3926       pragma Assert
3927         (Ekind_In (Id, E_Protected_Type,   --  concurrent variants
3928                        E_Task_Body,
3929                        E_Task_Type)
3930            or else
3931          Ekind_In (Id, E_Constant,         --  object variants
3932                        E_Variable)
3933            or else
3934          Ekind_In (Id, E_Entry,            --  overloadable variants
3935                        E_Entry_Family,
3936                        E_Function,
3937                        E_Generic_Function,
3938                        E_Generic_Procedure,
3939                        E_Operator,
3940                        E_Procedure,
3941                        E_Subprogram_Body)
3942            or else
3943          Ekind_In (Id, E_Generic_Package,  --  package variants
3944                        E_Package,
3945                        E_Package_Body)
3946            or else
3947          Ekind (Id) = E_Void);             --  special purpose
3948       Set_Node34 (Id, V);
3949    end Set_Contract;
3950 
3951    procedure Set_Contract_Wrapper (Id : E; V : E) is
3952    begin
3953       pragma Assert (Ekind_In (Id, E_Entry, E_Entry_Family));
3954       Set_Node25 (Id, V);
3955    end Set_Contract_Wrapper;
3956 
3957    procedure Set_Corresponding_Concurrent_Type (Id : E; V : E) is
3958    begin
3959       pragma Assert
3960         (Ekind (Id) = E_Record_Type and then Is_Concurrent_Type (V));
3961       Set_Node18 (Id, V);
3962    end Set_Corresponding_Concurrent_Type;
3963 
3964    procedure Set_Corresponding_Discriminant (Id : E; V : E) is
3965    begin
3966       pragma Assert (Ekind (Id) = E_Discriminant);
3967       Set_Node19 (Id, V);
3968    end Set_Corresponding_Discriminant;
3969 
3970    procedure Set_Corresponding_Equality (Id : E; V : E) is
3971    begin
3972       pragma Assert
3973         (Ekind (Id) = E_Function
3974           and then not Comes_From_Source (Id)
3975           and then Chars (Id) = Name_Op_Ne);
3976       Set_Node30 (Id, V);
3977    end Set_Corresponding_Equality;
3978 
3979    procedure Set_Corresponding_Function (Id : E; V : E) is
3980    begin
3981       pragma Assert (Ekind (Id) = E_Procedure and then Rewritten_For_C (V));
3982       Set_Node32 (Id, V);
3983    end Set_Corresponding_Function;
3984 
3985    procedure Set_Corresponding_Procedure (Id : E; V : E) is
3986    begin
3987       pragma Assert (Ekind (Id) = E_Function and then Rewritten_For_C (Id));
3988       Set_Node32 (Id, V);
3989    end Set_Corresponding_Procedure;
3990 
3991    procedure Set_Corresponding_Protected_Entry (Id : E; V : E) is
3992    begin
3993       pragma Assert (Ekind_In (Id, E_Void, E_Subprogram_Body));
3994       Set_Node18 (Id, V);
3995    end Set_Corresponding_Protected_Entry;
3996 
3997    procedure Set_Corresponding_Record_Type (Id : E; V : E) is
3998    begin
3999       pragma Assert (Is_Concurrent_Type (Id));
4000       Set_Node18 (Id, V);
4001    end Set_Corresponding_Record_Type;
4002 
4003    procedure Set_Corresponding_Remote_Type (Id : E; V : E) is
4004    begin
4005       Set_Node22 (Id, V);
4006    end Set_Corresponding_Remote_Type;
4007 
4008    procedure Set_Current_Use_Clause (Id : E; V : E) is
4009    begin
4010       pragma Assert (Ekind (Id) = E_Package or else Is_Type (Id));
4011       Set_Node27 (Id, V);
4012    end Set_Current_Use_Clause;
4013 
4014    procedure Set_Current_Value (Id : E; V : N) is
4015    begin
4016       pragma Assert (Ekind (Id) in Object_Kind or else Ekind (Id) = E_Void);
4017       Set_Node9 (Id, V);
4018    end Set_Current_Value;
4019 
4020    procedure Set_CR_Discriminant (Id : E; V : E) is
4021    begin
4022       Set_Node23 (Id, V);
4023    end Set_CR_Discriminant;
4024 
4025    procedure Set_Debug_Info_Off (Id : E; V : B := True) is
4026    begin
4027       Set_Flag166 (Id, V);
4028    end Set_Debug_Info_Off;
4029 
4030    procedure Set_Debug_Renaming_Link (Id : E; V : E) is
4031    begin
4032       Set_Node25 (Id, V);
4033    end Set_Debug_Renaming_Link;
4034 
4035    procedure Set_Default_Aspect_Component_Value (Id : E; V : E) is
4036    begin
4037       pragma Assert (Is_Array_Type (Id) and then Is_Base_Type (Id));
4038       Set_Node19 (Id, V);
4039    end Set_Default_Aspect_Component_Value;
4040 
4041    procedure Set_Default_Aspect_Value (Id : E; V : E) is
4042    begin
4043       pragma Assert (Is_Scalar_Type (Id) and then Is_Base_Type (Id));
4044       Set_Node19 (Id, V);
4045    end Set_Default_Aspect_Value;
4046 
4047    procedure Set_Default_Expr_Function (Id : E; V : E) is
4048    begin
4049       pragma Assert (Is_Formal (Id));
4050       Set_Node21 (Id, V);
4051    end Set_Default_Expr_Function;
4052 
4053    procedure Set_Default_Expressions_Processed (Id : E; V : B := True) is
4054    begin
4055       Set_Flag108 (Id, V);
4056    end Set_Default_Expressions_Processed;
4057 
4058    procedure Set_Default_Value (Id : E; V : N) is
4059    begin
4060       pragma Assert (Is_Formal (Id));
4061       Set_Node20 (Id, V);
4062    end Set_Default_Value;
4063 
4064    procedure Set_Delay_Cleanups (Id : E; V : B := True) is
4065    begin
4066       pragma Assert
4067         (Is_Subprogram (Id)
4068            or else Is_Task_Type (Id)
4069            or else Ekind (Id) = E_Block);
4070       Set_Flag114 (Id, V);
4071    end Set_Delay_Cleanups;
4072 
4073    procedure Set_Delay_Subprogram_Descriptors (Id : E; V : B := True) is
4074    begin
4075       pragma Assert
4076         (Is_Subprogram (Id) or else Ekind_In (Id, E_Package, E_Package_Body));
4077 
4078       Set_Flag50 (Id, V);
4079    end Set_Delay_Subprogram_Descriptors;
4080 
4081    procedure Set_Delta_Value (Id : E; V : R) is
4082    begin
4083       pragma Assert (Is_Fixed_Point_Type (Id));
4084       Set_Ureal18 (Id, V);
4085    end Set_Delta_Value;
4086 
4087    procedure Set_Dependent_Instances (Id : E; V : L) is
4088    begin
4089       pragma Assert (Is_Generic_Instance (Id));
4090       Set_Elist8 (Id, V);
4091    end Set_Dependent_Instances;
4092 
4093    procedure Set_Depends_On_Private (Id : E; V : B := True) is
4094    begin
4095       pragma Assert (Nkind (Id) in N_Entity);
4096       Set_Flag14 (Id, V);
4097    end Set_Depends_On_Private;
4098 
4099    procedure Set_Derived_Type_Link (Id : E; V : E) is
4100    begin
4101       pragma Assert (Is_Type (Id) and then Is_Base_Type (Id));
4102       Set_Node31 (Id, V);
4103    end Set_Derived_Type_Link;
4104 
4105    procedure Set_Digits_Value (Id : E; V : U) is
4106    begin
4107       pragma Assert
4108         (Is_Floating_Point_Type (Id)
4109           or else Is_Decimal_Fixed_Point_Type (Id));
4110       Set_Uint17 (Id, V);
4111    end Set_Digits_Value;
4112 
4113    procedure Set_Directly_Designated_Type (Id : E; V : E) is
4114    begin
4115       Set_Node20 (Id, V);
4116    end Set_Directly_Designated_Type;
4117 
4118    procedure Set_Disable_Controlled (Id : E; V : B := True) is
4119    begin
4120       pragma Assert (Is_Type (Id) and then Is_Base_Type (Id));
4121       Set_Flag253 (Id, V);
4122    end Set_Disable_Controlled;
4123 
4124    procedure Set_Discard_Names (Id : E; V : B := True) is
4125    begin
4126       Set_Flag88 (Id, V);
4127    end Set_Discard_Names;
4128 
4129    procedure Set_Discriminal (Id : E; V : E) is
4130    begin
4131       pragma Assert (Ekind (Id) = E_Discriminant);
4132       Set_Node17 (Id, V);
4133    end Set_Discriminal;
4134 
4135    procedure Set_Discriminal_Link (Id : E; V : E) is
4136    begin
4137       Set_Node10 (Id, V);
4138    end Set_Discriminal_Link;
4139 
4140    procedure Set_Discriminant_Checking_Func (Id  : E; V : E) is
4141    begin
4142       pragma Assert (Ekind (Id) = E_Component);
4143       Set_Node20 (Id, V);
4144    end Set_Discriminant_Checking_Func;
4145 
4146    procedure Set_Discriminant_Constraint (Id : E; V : L) is
4147    begin
4148       pragma Assert (Nkind (Id) in N_Entity);
4149       Set_Elist21 (Id, V);
4150    end Set_Discriminant_Constraint;
4151 
4152    procedure Set_Discriminant_Default_Value (Id : E; V : N) is
4153    begin
4154       Set_Node20 (Id, V);
4155    end Set_Discriminant_Default_Value;
4156 
4157    procedure Set_Discriminant_Number (Id : E; V : U) is
4158    begin
4159       Set_Uint15 (Id, V);
4160    end Set_Discriminant_Number;
4161 
4162    procedure Set_Dispatch_Table_Wrappers (Id : E; V : L) is
4163    begin
4164       pragma Assert (Ekind (Id) = E_Record_Type
4165         and then Id = Implementation_Base_Type (Id));
4166       pragma Assert (V = No_Elist or else Is_Tagged_Type (Id));
4167       Set_Elist26 (Id, V);
4168    end Set_Dispatch_Table_Wrappers;
4169 
4170    procedure Set_DT_Entry_Count (Id : E; V : U) is
4171    begin
4172       pragma Assert (Ekind (Id) = E_Component);
4173       Set_Uint15 (Id, V);
4174    end Set_DT_Entry_Count;
4175 
4176    procedure Set_DT_Offset_To_Top_Func (Id : E; V : E) is
4177    begin
4178       pragma Assert (Ekind (Id) = E_Component and then Is_Tag (Id));
4179       Set_Node25 (Id, V);
4180    end Set_DT_Offset_To_Top_Func;
4181 
4182    procedure Set_DT_Position (Id : E; V : U) is
4183    begin
4184       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
4185       Set_Uint15 (Id, V);
4186    end Set_DT_Position;
4187 
4188    procedure Set_DTC_Entity (Id : E; V : E) is
4189    begin
4190       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
4191       Set_Node16 (Id, V);
4192    end Set_DTC_Entity;
4193 
4194    procedure Set_Elaborate_Body_Desirable (Id : E; V : B := True) is
4195    begin
4196       pragma Assert (Ekind (Id) = E_Package);
4197       Set_Flag210 (Id, V);
4198    end Set_Elaborate_Body_Desirable;
4199 
4200    procedure Set_Elaboration_Entity (Id : E; V : E) is
4201    begin
4202       pragma Assert
4203         (Is_Subprogram (Id)
4204            or else
4205          Ekind (Id) = E_Package
4206            or else
4207          Is_Generic_Unit (Id));
4208       Set_Node13 (Id, V);
4209    end Set_Elaboration_Entity;
4210 
4211    procedure Set_Elaboration_Entity_Required (Id : E; V : B := True) is
4212    begin
4213       pragma Assert
4214         (Is_Subprogram (Id)
4215            or else
4216          Ekind (Id) = E_Package
4217            or else
4218          Is_Generic_Unit (Id));
4219       Set_Flag174 (Id, V);
4220    end Set_Elaboration_Entity_Required;
4221 
4222    procedure Set_Encapsulating_State (Id : E; V : E) is
4223    begin
4224       pragma Assert (Ekind_In (Id, E_Abstract_State, E_Constant, E_Variable));
4225       Set_Node32 (Id, V);
4226    end Set_Encapsulating_State;
4227 
4228    procedure Set_Enclosing_Scope (Id : E; V : E) is
4229    begin
4230       Set_Node18 (Id, V);
4231    end Set_Enclosing_Scope;
4232 
4233    procedure Set_Entry_Accepted (Id : E; V : B := True) is
4234    begin
4235       pragma Assert (Is_Entry (Id));
4236       Set_Flag152 (Id, V);
4237    end Set_Entry_Accepted;
4238 
4239    procedure Set_Entry_Bodies_Array (Id : E; V : E) is
4240    begin
4241       Set_Node19 (Id, V);
4242    end Set_Entry_Bodies_Array;
4243 
4244    procedure Set_Entry_Cancel_Parameter (Id : E; V : E) is
4245    begin
4246       Set_Node23 (Id, V);
4247    end Set_Entry_Cancel_Parameter;
4248 
4249    procedure Set_Entry_Component (Id : E; V : E) is
4250    begin
4251       Set_Node11 (Id, V);
4252    end Set_Entry_Component;
4253 
4254    procedure Set_Entry_Formal (Id : E; V : E) is
4255    begin
4256       Set_Node16 (Id, V);
4257    end Set_Entry_Formal;
4258 
4259    procedure Set_Entry_Index_Constant (Id : E; V : E) is
4260    begin
4261       pragma Assert (Ekind (Id) = E_Entry_Index_Parameter);
4262       Set_Node18 (Id, V);
4263    end Set_Entry_Index_Constant;
4264 
4265    procedure Set_Entry_Parameters_Type (Id : E; V : E) is
4266    begin
4267       Set_Node15 (Id, V);
4268    end Set_Entry_Parameters_Type;
4269 
4270    procedure Set_Enum_Pos_To_Rep (Id : E; V : E) is
4271    begin
4272       pragma Assert (Ekind (Id) = E_Enumeration_Type);
4273       Set_Node23 (Id, V);
4274    end Set_Enum_Pos_To_Rep;
4275 
4276    procedure Set_Enumeration_Pos (Id : E; V : U) is
4277    begin
4278       pragma Assert (Ekind (Id) = E_Enumeration_Literal);
4279       Set_Uint11 (Id, V);
4280    end Set_Enumeration_Pos;
4281 
4282    procedure Set_Enumeration_Rep (Id : E; V : U) is
4283    begin
4284       pragma Assert (Ekind (Id) = E_Enumeration_Literal);
4285       Set_Uint12 (Id, V);
4286    end Set_Enumeration_Rep;
4287 
4288    procedure Set_Enumeration_Rep_Expr (Id : E; V : N) is
4289    begin
4290       pragma Assert (Ekind (Id) = E_Enumeration_Literal);
4291       Set_Node22 (Id, V);
4292    end Set_Enumeration_Rep_Expr;
4293 
4294    procedure Set_Equivalent_Type (Id : E; V : E) is
4295    begin
4296       pragma Assert
4297         (Ekind_In (Id, E_Class_Wide_Type,
4298                        E_Class_Wide_Subtype,
4299                        E_Access_Protected_Subprogram_Type,
4300                        E_Anonymous_Access_Protected_Subprogram_Type,
4301                        E_Access_Subprogram_Type,
4302                        E_Exception_Type));
4303       Set_Node18 (Id, V);
4304    end Set_Equivalent_Type;
4305 
4306    procedure Set_Esize (Id : E; V : U) is
4307    begin
4308       Set_Uint12 (Id, V);
4309    end Set_Esize;
4310 
4311    procedure Set_Extra_Accessibility (Id : E; V : E) is
4312    begin
4313       pragma Assert
4314         (Is_Formal (Id) or else Ekind_In (Id, E_Variable, E_Constant));
4315       Set_Node13 (Id, V);
4316    end Set_Extra_Accessibility;
4317 
4318    procedure Set_Extra_Accessibility_Of_Result (Id : E; V : E) is
4319    begin
4320       pragma Assert (Ekind_In (Id, E_Function, E_Operator, E_Subprogram_Type));
4321       Set_Node19 (Id, V);
4322    end Set_Extra_Accessibility_Of_Result;
4323 
4324    procedure Set_Extra_Constrained (Id : E; V : E) is
4325    begin
4326       pragma Assert (Is_Formal (Id) or else Ekind (Id) = E_Variable);
4327       Set_Node23 (Id, V);
4328    end Set_Extra_Constrained;
4329 
4330    procedure Set_Extra_Formal (Id : E; V : E) is
4331    begin
4332       Set_Node15 (Id, V);
4333    end Set_Extra_Formal;
4334 
4335    procedure Set_Extra_Formals (Id : E; V : E) is
4336    begin
4337       pragma Assert
4338         (Is_Overloadable (Id)
4339            or else Ekind_In (Id, E_Entry_Family,
4340                                  E_Subprogram_Body,
4341                                  E_Subprogram_Type));
4342       Set_Node28 (Id, V);
4343    end Set_Extra_Formals;
4344 
4345    procedure Set_Finalization_Master (Id : E; V : E) is
4346    begin
4347       pragma Assert (Is_Access_Type (Id) and then Is_Base_Type (Id));
4348       Set_Node23 (Id, V);
4349    end Set_Finalization_Master;
4350 
4351    procedure Set_Finalize_Storage_Only (Id : E; V : B := True) is
4352    begin
4353       pragma Assert (Is_Type (Id) and then Is_Base_Type (Id));
4354       Set_Flag158 (Id, V);
4355    end Set_Finalize_Storage_Only;
4356 
4357    procedure Set_Finalizer (Id : E; V : E) is
4358    begin
4359       pragma Assert (Ekind_In (Id, E_Package, E_Package_Body));
4360       Set_Node28 (Id, V);
4361    end Set_Finalizer;
4362 
4363    procedure Set_First_Entity (Id : E; V : E) is
4364    begin
4365       Set_Node17 (Id, V);
4366    end Set_First_Entity;
4367 
4368    procedure Set_First_Exit_Statement (Id : E; V : N) is
4369    begin
4370       pragma Assert (Ekind (Id) = E_Loop);
4371       Set_Node8 (Id, V);
4372    end Set_First_Exit_Statement;
4373 
4374    procedure Set_First_Index (Id : E; V : N) is
4375    begin
4376       pragma Assert (Is_Array_Type (Id));
4377       Set_Node17 (Id, V);
4378    end Set_First_Index;
4379 
4380    procedure Set_First_Literal (Id : E; V : E) is
4381    begin
4382       pragma Assert (Is_Enumeration_Type (Id));
4383       Set_Node17 (Id, V);
4384    end Set_First_Literal;
4385 
4386    procedure Set_First_Private_Entity (Id : E; V : E) is
4387    begin
4388       pragma Assert (Ekind_In (Id, E_Package, E_Generic_Package)
4389                        or else Ekind (Id) in Concurrent_Kind);
4390       Set_Node16 (Id, V);
4391    end Set_First_Private_Entity;
4392 
4393    procedure Set_First_Rep_Item (Id : E; V : N) is
4394    begin
4395       Set_Node6 (Id, V);
4396    end Set_First_Rep_Item;
4397 
4398    procedure Set_Float_Rep (Id : E; V : F) is
4399       pragma Assert (Ekind (Id) = E_Floating_Point_Type);
4400    begin
4401       Set_Uint10 (Id, UI_From_Int (F'Pos (V)));
4402    end Set_Float_Rep;
4403 
4404    procedure Set_Freeze_Node (Id : E; V : N) is
4405    begin
4406       Set_Node7 (Id, V);
4407    end Set_Freeze_Node;
4408 
4409    procedure Set_From_Limited_With (Id : E; V : B := True) is
4410    begin
4411       pragma Assert
4412         (Is_Type (Id) or else Ekind_In (Id, E_Abstract_State, E_Package));
4413       Set_Flag159 (Id, V);
4414    end Set_From_Limited_With;
4415 
4416    procedure Set_Full_View (Id : E; V : E) is
4417    begin
4418       pragma Assert (Is_Type (Id) or else Ekind (Id) = E_Constant);
4419       Set_Node11 (Id, V);
4420    end Set_Full_View;
4421 
4422    procedure Set_Generic_Homonym (Id : E; V : E) is
4423    begin
4424       Set_Node11 (Id, V);
4425    end Set_Generic_Homonym;
4426 
4427    procedure Set_Generic_Renamings (Id : E; V : L) is
4428    begin
4429       Set_Elist23 (Id, V);
4430    end Set_Generic_Renamings;
4431 
4432    procedure Set_Handler_Records (Id : E; V : S) is
4433    begin
4434       Set_List10 (Id, V);
4435    end Set_Handler_Records;
4436 
4437    procedure Set_Has_Aliased_Components (Id : E; V : B := True) is
4438    begin
4439       pragma Assert (Id = Base_Type (Id));
4440       Set_Flag135 (Id, V);
4441    end Set_Has_Aliased_Components;
4442 
4443    procedure Set_Has_Alignment_Clause (Id : E; V : B := True) is
4444    begin
4445       Set_Flag46 (Id, V);
4446    end Set_Has_Alignment_Clause;
4447 
4448    procedure Set_Has_All_Calls_Remote (Id : E; V : B := True) is
4449    begin
4450       Set_Flag79 (Id, V);
4451    end Set_Has_All_Calls_Remote;
4452 
4453    procedure Set_Has_Atomic_Components (Id : E; V : B := True) is
4454    begin
4455       pragma Assert (not Is_Type (Id) or else Is_Base_Type (Id));
4456       Set_Flag86 (Id, V);
4457    end Set_Has_Atomic_Components;
4458 
4459    procedure Set_Has_Biased_Representation (Id : E; V : B := True) is
4460    begin
4461       pragma Assert
4462         ((V = False) or else (Is_Discrete_Type (Id) or else Is_Object (Id)));
4463       Set_Flag139 (Id, V);
4464    end Set_Has_Biased_Representation;
4465 
4466    procedure Set_Has_Completion (Id : E; V : B := True) is
4467    begin
4468       Set_Flag26 (Id, V);
4469    end Set_Has_Completion;
4470 
4471    procedure Set_Has_Completion_In_Body (Id : E; V : B := True) is
4472    begin
4473       pragma Assert (Is_Type (Id));
4474       Set_Flag71 (Id, V);
4475    end Set_Has_Completion_In_Body;
4476 
4477    procedure Set_Has_Complex_Representation (Id : E; V : B := True) is
4478    begin
4479       pragma Assert (Ekind (Id) = E_Record_Type);
4480       Set_Flag140 (Id, V);
4481    end Set_Has_Complex_Representation;
4482 
4483    procedure Set_Has_Component_Size_Clause (Id : E; V : B := True) is
4484    begin
4485       pragma Assert (Ekind (Id) = E_Array_Type);
4486       Set_Flag68 (Id, V);
4487    end Set_Has_Component_Size_Clause;
4488 
4489    procedure Set_Has_Constrained_Partial_View (Id : E; V : B := True) is
4490    begin
4491       pragma Assert (Is_Type (Id));
4492       Set_Flag187 (Id, V);
4493    end Set_Has_Constrained_Partial_View;
4494 
4495    procedure Set_Has_Contiguous_Rep (Id : E; V : B := True) is
4496    begin
4497       Set_Flag181 (Id, V);
4498    end Set_Has_Contiguous_Rep;
4499 
4500    procedure Set_Has_Controlled_Component (Id : E; V : B := True) is
4501    begin
4502       pragma Assert (Id = Base_Type (Id));
4503       Set_Flag43 (Id, V);
4504    end Set_Has_Controlled_Component;
4505 
4506    procedure Set_Has_Controlling_Result (Id : E; V : B := True) is
4507    begin
4508       Set_Flag98 (Id, V);
4509    end Set_Has_Controlling_Result;
4510 
4511    procedure Set_Has_Convention_Pragma (Id : E; V : B := True) is
4512    begin
4513       Set_Flag119 (Id, V);
4514    end Set_Has_Convention_Pragma;
4515 
4516    procedure Set_Has_Default_Aspect (Id : E; V : B := True) is
4517    begin
4518       pragma Assert
4519         ((Is_Scalar_Type (Id) or else Is_Array_Type (Id))
4520            and then Is_Base_Type (Id));
4521       Set_Flag39 (Id, V);
4522    end Set_Has_Default_Aspect;
4523 
4524    procedure Set_Has_Default_Init_Cond (Id : E; V : B := True) is
4525    begin
4526       pragma Assert (Is_Type (Id));
4527       Set_Flag3 (Base_Type (Id), V);
4528    end Set_Has_Default_Init_Cond;
4529 
4530    procedure Set_Has_Delayed_Aspects (Id : E; V : B := True) is
4531    begin
4532       pragma Assert (Nkind (Id) in N_Entity);
4533       Set_Flag200 (Id, V);
4534    end Set_Has_Delayed_Aspects;
4535 
4536    procedure Set_Has_Delayed_Freeze (Id : E; V : B := True) is
4537    begin
4538       pragma Assert (Nkind (Id) in N_Entity);
4539       Set_Flag18 (Id, V);
4540    end Set_Has_Delayed_Freeze;
4541 
4542    procedure Set_Has_Delayed_Rep_Aspects (Id : E; V : B := True) is
4543    begin
4544       pragma Assert (Nkind (Id) in N_Entity);
4545       Set_Flag261 (Id, V);
4546    end Set_Has_Delayed_Rep_Aspects;
4547 
4548    procedure Set_Has_Discriminants (Id : E; V : B := True) is
4549    begin
4550       pragma Assert (Nkind (Id) in N_Entity);
4551       Set_Flag5 (Id, V);
4552    end Set_Has_Discriminants;
4553 
4554    procedure Set_Has_Dispatch_Table (Id : E; V : B := True) is
4555    begin
4556       pragma Assert (Ekind (Id) = E_Record_Type
4557         and then Is_Tagged_Type (Id));
4558       Set_Flag220 (Id, V);
4559    end Set_Has_Dispatch_Table;
4560 
4561    procedure Set_Has_Dynamic_Predicate_Aspect (Id : E; V : B := True) is
4562    begin
4563       pragma Assert (Is_Type (Id));
4564       Set_Flag258 (Id, V);
4565    end Set_Has_Dynamic_Predicate_Aspect;
4566 
4567    procedure Set_Has_Enumeration_Rep_Clause (Id : E; V : B := True) is
4568    begin
4569       pragma Assert (Is_Enumeration_Type (Id));
4570       Set_Flag66 (Id, V);
4571    end Set_Has_Enumeration_Rep_Clause;
4572 
4573    procedure Set_Has_Exit (Id : E; V : B := True) is
4574    begin
4575       Set_Flag47 (Id, V);
4576    end Set_Has_Exit;
4577 
4578    procedure Set_Has_Expanded_Contract (Id : E; V : B := True) is
4579    begin
4580       pragma Assert (Ekind_In (Id, E_Entry,
4581                                    E_Entry_Family,
4582                                    E_Function,
4583                                    E_Procedure));
4584       Set_Flag240 (Id, V);
4585    end Set_Has_Expanded_Contract;
4586 
4587    procedure Set_Has_Forward_Instantiation (Id : E; V : B := True) is
4588    begin
4589       Set_Flag175 (Id, V);
4590    end Set_Has_Forward_Instantiation;
4591 
4592    procedure Set_Has_Fully_Qualified_Name (Id : E; V : B := True) is
4593    begin
4594       Set_Flag173 (Id, V);
4595    end Set_Has_Fully_Qualified_Name;
4596 
4597    procedure Set_Has_Gigi_Rep_Item (Id : E; V : B := True) is
4598    begin
4599       Set_Flag82 (Id, V);
4600    end Set_Has_Gigi_Rep_Item;
4601 
4602    procedure Set_Has_Homonym (Id : E; V : B := True) is
4603    begin
4604       Set_Flag56 (Id, V);
4605    end Set_Has_Homonym;
4606 
4607    procedure Set_Has_Implicit_Dereference (Id : E; V : B := True) is
4608    begin
4609       Set_Flag251 (Id, V);
4610    end Set_Has_Implicit_Dereference;
4611 
4612    procedure Set_Has_Independent_Components (Id : E; V : B := True) is
4613    begin
4614       pragma Assert (not Is_Type (Id) or else Is_Base_Type (Id));
4615       Set_Flag34 (Id, V);
4616    end Set_Has_Independent_Components;
4617 
4618    procedure Set_Has_Inheritable_Invariants (Id : E; V : B := True) is
4619    begin
4620       pragma Assert (Is_Type (Id));
4621       Set_Flag248 (Id, V);
4622    end Set_Has_Inheritable_Invariants;
4623 
4624    procedure Set_Has_Inherited_Default_Init_Cond (Id : E; V : B := True) is
4625    begin
4626       pragma Assert (Is_Type (Id));
4627       Set_Flag133 (Base_Type (Id), V);
4628    end Set_Has_Inherited_Default_Init_Cond;
4629 
4630    procedure Set_Has_Inherited_Invariants (Id : E; V : B := True) is
4631    begin
4632       pragma Assert (Is_Type (Id));
4633       Set_Flag291 (Id, V);
4634    end Set_Has_Inherited_Invariants;
4635 
4636    procedure Set_Has_Initial_Value (Id : E; V : B := True) is
4637    begin
4638       pragma Assert (Ekind_In (Id, E_Variable, E_Out_Parameter));
4639       Set_Flag219 (Id, V);
4640    end Set_Has_Initial_Value;
4641 
4642    procedure Set_Has_Loop_Entry_Attributes (Id : E; V : B := True) is
4643    begin
4644       pragma Assert (Ekind (Id) = E_Loop);
4645       Set_Flag260 (Id, V);
4646    end Set_Has_Loop_Entry_Attributes;
4647 
4648    procedure Set_Has_Machine_Radix_Clause (Id : E; V : B := True) is
4649    begin
4650       pragma Assert (Is_Decimal_Fixed_Point_Type (Id));
4651       Set_Flag83 (Id, V);
4652    end Set_Has_Machine_Radix_Clause;
4653 
4654    procedure Set_Has_Master_Entity (Id : E; V : B := True) is
4655    begin
4656       Set_Flag21 (Id, V);
4657    end Set_Has_Master_Entity;
4658 
4659    procedure Set_Has_Missing_Return (Id : E; V : B := True) is
4660    begin
4661       pragma Assert (Ekind_In (Id, E_Function, E_Generic_Function));
4662       Set_Flag142 (Id, V);
4663    end Set_Has_Missing_Return;
4664 
4665    procedure Set_Has_Nested_Block_With_Handler (Id : E; V : B := True) is
4666    begin
4667       Set_Flag101 (Id, V);
4668    end Set_Has_Nested_Block_With_Handler;
4669 
4670    procedure Set_Has_Nested_Subprogram (Id : E; V : B := True) is
4671    begin
4672       pragma Assert (Is_Subprogram (Id));
4673       Set_Flag282 (Id, V);
4674    end Set_Has_Nested_Subprogram;
4675 
4676    procedure Set_Has_Non_Standard_Rep (Id : E; V : B := True) is
4677    begin
4678       pragma Assert (Id = Base_Type (Id));
4679       Set_Flag75 (Id, V);
4680    end Set_Has_Non_Standard_Rep;
4681 
4682    procedure Set_Has_Object_Size_Clause (Id : E; V : B := True) is
4683    begin
4684       pragma Assert (Is_Type (Id));
4685       Set_Flag172 (Id, V);
4686    end Set_Has_Object_Size_Clause;
4687 
4688    procedure Set_Has_Out_Or_In_Out_Parameter (Id : E; V : B := True) is
4689    begin
4690       pragma Assert
4691         (Ekind_In (Id, E_Entry, E_Entry_Family)
4692           or else Is_Subprogram_Or_Generic_Subprogram (Id));
4693       Set_Flag110 (Id, V);
4694    end Set_Has_Out_Or_In_Out_Parameter;
4695 
4696    procedure Set_Has_Own_Invariants (Id : E; V : B := True) is
4697    begin
4698       pragma Assert (Is_Type (Id));
4699       Set_Flag232 (Id, V);
4700    end Set_Has_Own_Invariants;
4701 
4702    procedure Set_Has_Per_Object_Constraint (Id : E; V : B := True) is
4703    begin
4704       Set_Flag154 (Id, V);
4705    end Set_Has_Per_Object_Constraint;
4706 
4707    procedure Set_Has_Pragma_Controlled (Id : E; V : B := True) is
4708    begin
4709       pragma Assert (Is_Access_Type (Id));
4710       Set_Flag27 (Base_Type (Id), V);
4711    end Set_Has_Pragma_Controlled;
4712 
4713    procedure Set_Has_Pragma_Elaborate_Body (Id : E; V : B := True) is
4714    begin
4715       Set_Flag150 (Id, V);
4716    end Set_Has_Pragma_Elaborate_Body;
4717 
4718    procedure Set_Has_Pragma_Inline (Id : E; V : B := True) is
4719    begin
4720       Set_Flag157 (Id, V);
4721    end Set_Has_Pragma_Inline;
4722 
4723    procedure Set_Has_Pragma_Inline_Always (Id : E; V : B := True) is
4724    begin
4725       Set_Flag230 (Id, V);
4726    end Set_Has_Pragma_Inline_Always;
4727 
4728    procedure Set_Has_Pragma_No_Inline (Id : E; V : B := True) is
4729    begin
4730       Set_Flag201 (Id, V);
4731    end Set_Has_Pragma_No_Inline;
4732 
4733    procedure Set_Has_Pragma_Ordered (Id : E; V : B := True) is
4734    begin
4735       pragma Assert (Is_Enumeration_Type (Id));
4736       pragma Assert (Id = Base_Type (Id));
4737       Set_Flag198 (Id, V);
4738    end Set_Has_Pragma_Ordered;
4739 
4740    procedure Set_Has_Pragma_Pack (Id : E; V : B := True) is
4741    begin
4742       pragma Assert (Is_Array_Type (Id) or else Is_Record_Type (Id));
4743       pragma Assert (Id = Base_Type (Id));
4744       Set_Flag121 (Id, V);
4745    end Set_Has_Pragma_Pack;
4746 
4747    procedure Set_Has_Pragma_Preelab_Init (Id : E; V : B := True) is
4748    begin
4749       Set_Flag221 (Id, V);
4750    end Set_Has_Pragma_Preelab_Init;
4751 
4752    procedure Set_Has_Pragma_Pure (Id : E; V : B := True) is
4753    begin
4754       Set_Flag203 (Id, V);
4755    end Set_Has_Pragma_Pure;
4756 
4757    procedure Set_Has_Pragma_Pure_Function (Id : E; V : B := True) is
4758    begin
4759       Set_Flag179 (Id, V);
4760    end Set_Has_Pragma_Pure_Function;
4761 
4762    procedure Set_Has_Pragma_Thread_Local_Storage (Id : E; V : B := True) is
4763    begin
4764       Set_Flag169 (Id, V);
4765    end Set_Has_Pragma_Thread_Local_Storage;
4766 
4767    procedure Set_Has_Pragma_Unmodified (Id : E; V : B := True) is
4768    begin
4769       Set_Flag233 (Id, V);
4770    end Set_Has_Pragma_Unmodified;
4771 
4772    procedure Set_Has_Pragma_Unreferenced (Id : E; V : B := True) is
4773    begin
4774       Set_Flag180 (Id, V);
4775    end Set_Has_Pragma_Unreferenced;
4776 
4777    procedure Set_Has_Pragma_Unreferenced_Objects (Id : E; V : B := True) is
4778    begin
4779       pragma Assert (Is_Type (Id));
4780       Set_Flag212 (Id, V);
4781    end Set_Has_Pragma_Unreferenced_Objects;
4782 
4783    procedure Set_Has_Pragma_Unused (Id : E; V : B := True) is
4784    begin
4785       Set_Flag294 (Id, V);
4786    end Set_Has_Pragma_Unused;
4787 
4788    procedure Set_Has_Predicates (Id : E; V : B := True) is
4789    begin
4790       pragma Assert (Is_Type (Id) or else Ekind (Id) = E_Void);
4791       Set_Flag250 (Id, V);
4792    end Set_Has_Predicates;
4793 
4794    procedure Set_Has_Primitive_Operations (Id : E; V : B := True) is
4795    begin
4796       pragma Assert (Id = Base_Type (Id));
4797       Set_Flag120 (Id, V);
4798    end Set_Has_Primitive_Operations;
4799 
4800    procedure Set_Has_Private_Ancestor (Id : E; V : B := True) is
4801    begin
4802       pragma Assert (Is_Type (Id));
4803       Set_Flag151 (Id, V);
4804    end Set_Has_Private_Ancestor;
4805 
4806    procedure Set_Has_Private_Declaration (Id : E; V : B := True) is
4807    begin
4808       Set_Flag155 (Id, V);
4809    end Set_Has_Private_Declaration;
4810 
4811    procedure Set_Has_Protected (Id : E; V : B := True) is
4812    begin
4813       Set_Flag271 (Id, V);
4814    end Set_Has_Protected;
4815 
4816    procedure Set_Has_Qualified_Name (Id : E; V : B := True) is
4817    begin
4818       Set_Flag161 (Id, V);
4819    end Set_Has_Qualified_Name;
4820 
4821    procedure Set_Has_RACW (Id : E; V : B := True) is
4822    begin
4823       pragma Assert (Ekind (Id) = E_Package);
4824       Set_Flag214 (Id, V);
4825    end Set_Has_RACW;
4826 
4827    procedure Set_Has_Record_Rep_Clause (Id : E; V : B := True) is
4828    begin
4829       pragma Assert (Id = Base_Type (Id));
4830       Set_Flag65 (Id, V);
4831    end Set_Has_Record_Rep_Clause;
4832 
4833    procedure Set_Has_Recursive_Call (Id : E; V : B := True) is
4834    begin
4835       pragma Assert (Is_Subprogram (Id));
4836       Set_Flag143 (Id, V);
4837    end Set_Has_Recursive_Call;
4838 
4839    procedure Set_Has_Shift_Operator (Id : E; V : B := True) is
4840    begin
4841       pragma Assert (Is_Integer_Type (Id) and then Is_Base_Type (Id));
4842       Set_Flag267 (Id, V);
4843    end Set_Has_Shift_Operator;
4844 
4845    procedure Set_Has_Size_Clause (Id : E; V : B := True) is
4846    begin
4847       Set_Flag29 (Id, V);
4848    end Set_Has_Size_Clause;
4849 
4850    procedure Set_Has_Small_Clause (Id : E; V : B := True) is
4851    begin
4852       pragma Assert (Is_Ordinary_Fixed_Point_Type (Id));
4853       Set_Flag67 (Id, V);
4854    end Set_Has_Small_Clause;
4855 
4856    procedure Set_Has_Specified_Layout (Id : E; V : B := True) is
4857    begin
4858       pragma Assert (Id = Base_Type (Id));
4859       Set_Flag100 (Id, V);
4860    end Set_Has_Specified_Layout;
4861 
4862    procedure Set_Has_Specified_Stream_Input (Id : E; V : B := True) is
4863    begin
4864       pragma Assert (Is_Type (Id));
4865       Set_Flag190 (Id, V);
4866    end Set_Has_Specified_Stream_Input;
4867 
4868    procedure Set_Has_Specified_Stream_Output (Id : E; V : B := True) is
4869    begin
4870       pragma Assert (Is_Type (Id));
4871       Set_Flag191 (Id, V);
4872    end Set_Has_Specified_Stream_Output;
4873 
4874    procedure Set_Has_Specified_Stream_Read (Id : E; V : B := True) is
4875    begin
4876       pragma Assert (Is_Type (Id));
4877       Set_Flag192 (Id, V);
4878    end Set_Has_Specified_Stream_Read;
4879 
4880    procedure Set_Has_Specified_Stream_Write (Id : E; V : B := True) is
4881    begin
4882       pragma Assert (Is_Type (Id));
4883       Set_Flag193 (Id, V);
4884    end Set_Has_Specified_Stream_Write;
4885 
4886    procedure Set_Has_Static_Discriminants (Id : E; V : B := True) is
4887    begin
4888       Set_Flag211 (Id, V);
4889    end Set_Has_Static_Discriminants;
4890 
4891    procedure Set_Has_Static_Predicate (Id : E; V : B := True) is
4892    begin
4893       pragma Assert (Is_Type (Id));
4894       Set_Flag269 (Id, V);
4895    end Set_Has_Static_Predicate;
4896 
4897    procedure Set_Has_Static_Predicate_Aspect (Id : E; V : B := True) is
4898    begin
4899       pragma Assert (Is_Type (Id));
4900       Set_Flag259 (Id, V);
4901    end Set_Has_Static_Predicate_Aspect;
4902 
4903    procedure Set_Has_Storage_Size_Clause (Id : E; V : B := True) is
4904    begin
4905       pragma Assert (Is_Access_Type (Id) or else Is_Task_Type (Id));
4906       pragma Assert (Id = Base_Type (Id));
4907       Set_Flag23 (Id, V);
4908    end Set_Has_Storage_Size_Clause;
4909 
4910    procedure Set_Has_Stream_Size_Clause (Id : E; V : B := True) is
4911    begin
4912       pragma Assert (Is_Elementary_Type (Id));
4913       Set_Flag184 (Id, V);
4914    end Set_Has_Stream_Size_Clause;
4915 
4916    procedure Set_Has_Task (Id : E; V : B := True) is
4917    begin
4918       pragma Assert (Id = Base_Type (Id));
4919       Set_Flag30 (Id, V);
4920    end Set_Has_Task;
4921 
4922    procedure Set_Has_Thunks (Id : E; V : B := True) is
4923    begin
4924       pragma Assert (Is_Tag (Id));
4925       Set_Flag228 (Id, V);
4926    end Set_Has_Thunks;
4927 
4928    procedure Set_Has_Timing_Event (Id : E; V : B := True) is
4929    begin
4930       pragma Assert (Id = Base_Type (Id));
4931       Set_Flag289 (Id, V);
4932    end Set_Has_Timing_Event;
4933 
4934    procedure Set_Has_Unchecked_Union (Id : E; V : B := True) is
4935    begin
4936       pragma Assert (Id = Base_Type (Id));
4937       Set_Flag123 (Id, V);
4938    end Set_Has_Unchecked_Union;
4939 
4940    procedure Set_Has_Unknown_Discriminants (Id : E; V : B := True) is
4941    begin
4942       pragma Assert (Is_Type (Id));
4943       Set_Flag72 (Id, V);
4944    end Set_Has_Unknown_Discriminants;
4945 
4946    procedure Set_Has_Visible_Refinement (Id : E; V : B := True) is
4947    begin
4948       pragma Assert (Ekind (Id) = E_Abstract_State);
4949       Set_Flag263 (Id, V);
4950    end Set_Has_Visible_Refinement;
4951 
4952    procedure Set_Has_Volatile_Components (Id : E; V : B := True) is
4953    begin
4954       pragma Assert (not Is_Type (Id) or else Is_Base_Type (Id));
4955       Set_Flag87 (Id, V);
4956    end Set_Has_Volatile_Components;
4957 
4958    procedure Set_Has_Xref_Entry (Id : E; V : B := True) is
4959    begin
4960       Set_Flag182 (Id, V);
4961    end Set_Has_Xref_Entry;
4962 
4963    procedure Set_Hiding_Loop_Variable (Id : E; V : E) is
4964    begin
4965       pragma Assert (Ekind (Id) = E_Variable);
4966       Set_Node8 (Id, V);
4967    end Set_Hiding_Loop_Variable;
4968 
4969    procedure Set_Homonym (Id : E; V : E) is
4970    begin
4971       pragma Assert (Id /= V);
4972       Set_Node4 (Id, V);
4973    end Set_Homonym;
4974 
4975    procedure Set_Incomplete_Actuals (Id : E; V : L) is
4976    begin
4977       pragma Assert (Ekind (Id) = E_Package);
4978       Set_Elist24 (Id, V);
4979    end Set_Incomplete_Actuals;
4980 
4981    procedure Set_Import_Pragma (Id : E; V : E) is
4982    begin
4983       pragma Assert (Is_Subprogram (Id));
4984       Set_Node35 (Id, V);
4985    end Set_Import_Pragma;
4986 
4987    procedure Set_Interface_Alias (Id : E; V : E) is
4988    begin
4989       pragma Assert
4990         (Is_Internal (Id)
4991            and then Is_Hidden (Id)
4992            and then (Ekind_In (Id, E_Procedure, E_Function)));
4993       Set_Node25 (Id, V);
4994    end Set_Interface_Alias;
4995 
4996    procedure Set_Interfaces (Id : E; V : L) is
4997    begin
4998       pragma Assert (Is_Record_Type (Id));
4999       Set_Elist25 (Id, V);
5000    end Set_Interfaces;
5001 
5002    procedure Set_In_Package_Body (Id : E; V : B := True) is
5003    begin
5004       Set_Flag48 (Id, V);
5005    end Set_In_Package_Body;
5006 
5007    procedure Set_In_Private_Part (Id : E; V : B := True) is
5008    begin
5009       Set_Flag45 (Id, V);
5010    end Set_In_Private_Part;
5011 
5012    procedure Set_In_Use (Id : E; V : B := True) is
5013    begin
5014       pragma Assert (Nkind (Id) in N_Entity);
5015       Set_Flag8 (Id, V);
5016    end Set_In_Use;
5017 
5018    procedure Set_Initialization_Statements (Id : E; V : N) is
5019    begin
5020       --  Tolerate an E_Void entity since this can be called while resolving
5021       --  an aggregate used as the initialization expression for an object
5022       --  declaration, and this occurs before the Ekind for the object is set.
5023 
5024       pragma Assert (Ekind_In (Id, E_Void, E_Constant, E_Variable));
5025       Set_Node28 (Id, V);
5026    end Set_Initialization_Statements;
5027 
5028    procedure Set_Inner_Instances (Id : E; V : L) is
5029    begin
5030       Set_Elist23 (Id, V);
5031    end Set_Inner_Instances;
5032 
5033    procedure Set_Interface_Name (Id : E; V : N) is
5034    begin
5035       Set_Node21 (Id, V);
5036    end Set_Interface_Name;
5037 
5038    procedure Set_Is_Abstract_Subprogram (Id : E; V : B := True) is
5039    begin
5040       pragma Assert (Is_Overloadable (Id));
5041       Set_Flag19 (Id, V);
5042    end Set_Is_Abstract_Subprogram;
5043 
5044    procedure Set_Is_Abstract_Type (Id : E; V : B := True) is
5045    begin
5046       pragma Assert (Is_Type (Id));
5047       Set_Flag146 (Id, V);
5048    end Set_Is_Abstract_Type;
5049 
5050    procedure Set_Is_Local_Anonymous_Access (Id : E; V : B := True) is
5051    begin
5052       pragma Assert (Is_Access_Type (Id));
5053       Set_Flag194 (Id, V);
5054    end Set_Is_Local_Anonymous_Access;
5055 
5056    procedure Set_Is_Access_Constant (Id : E; V : B := True) is
5057    begin
5058       pragma Assert (Is_Access_Type (Id));
5059       Set_Flag69 (Id, V);
5060    end Set_Is_Access_Constant;
5061 
5062    procedure Set_Is_Actual_Subtype (Id : E; V : B := True) is
5063    begin
5064       pragma Assert (Is_Type (Id));
5065       Set_Flag293 (Id, V);
5066    end Set_Is_Actual_Subtype;
5067 
5068    procedure Set_Is_Ada_2005_Only (Id : E; V : B := True) is
5069    begin
5070       Set_Flag185 (Id, V);
5071    end Set_Is_Ada_2005_Only;
5072 
5073    procedure Set_Is_Ada_2012_Only (Id : E; V : B := True) is
5074    begin
5075       Set_Flag199 (Id, V);
5076    end Set_Is_Ada_2012_Only;
5077 
5078    procedure Set_Is_Aliased (Id : E; V : B := True) is
5079    begin
5080       pragma Assert (Nkind (Id) in N_Entity);
5081       Set_Flag15 (Id, V);
5082    end Set_Is_Aliased;
5083 
5084    procedure Set_Is_Asynchronous (Id : E; V : B := True) is
5085    begin
5086       pragma Assert
5087         (Ekind (Id) = E_Procedure or else Is_Type (Id));
5088       Set_Flag81 (Id, V);
5089    end Set_Is_Asynchronous;
5090 
5091    procedure Set_Is_Atomic (Id : E; V : B := True) is
5092    begin
5093       Set_Flag85 (Id, V);
5094    end Set_Is_Atomic;
5095 
5096    procedure Set_Is_Bit_Packed_Array (Id : E; V : B := True) is
5097    begin
5098       pragma Assert ((not V)
5099         or else (Is_Array_Type (Id) and then Is_Base_Type (Id)));
5100       Set_Flag122 (Id, V);
5101    end Set_Is_Bit_Packed_Array;
5102 
5103    procedure Set_Is_Called (Id : E; V : B := True) is
5104    begin
5105       pragma Assert (Ekind_In (Id, E_Procedure, E_Function));
5106       Set_Flag102 (Id, V);
5107    end Set_Is_Called;
5108 
5109    procedure Set_Is_Character_Type (Id : E; V : B := True) is
5110    begin
5111       Set_Flag63 (Id, V);
5112    end Set_Is_Character_Type;
5113 
5114    procedure Set_Is_Checked_Ghost_Entity (Id : E; V : B := True) is
5115    begin
5116       pragma Assert (Is_Formal (Id)
5117         or else Is_Object (Id)
5118         or else Is_Package_Or_Generic_Package (Id)
5119         or else Is_Subprogram_Or_Generic_Subprogram (Id)
5120         or else Is_Type (Id)
5121         or else Ekind (Id) = E_Abstract_State
5122         or else Ekind (Id) = E_Component
5123         or else Ekind (Id) = E_Discriminant
5124         or else Ekind (Id) = E_Exception
5125         or else Ekind (Id) = E_Package_Body
5126         or else Ekind (Id) = E_Subprogram_Body
5127 
5128         --  Allow this attribute to appear on non-analyzed entities
5129 
5130         or else Ekind (Id) = E_Void);
5131       Set_Flag277 (Id, V);
5132    end Set_Is_Checked_Ghost_Entity;
5133 
5134    procedure Set_Is_Child_Unit (Id : E; V : B := True) is
5135    begin
5136       Set_Flag73 (Id, V);
5137    end Set_Is_Child_Unit;
5138 
5139    procedure Set_Is_Class_Wide_Equivalent_Type (Id : E; V : B := True) is
5140    begin
5141       Set_Flag35 (Id, V);
5142    end Set_Is_Class_Wide_Equivalent_Type;
5143 
5144    procedure Set_Is_Compilation_Unit (Id : E; V : B := True) is
5145    begin
5146       Set_Flag149 (Id, V);
5147    end Set_Is_Compilation_Unit;
5148 
5149    procedure Set_Is_Completely_Hidden (Id : E; V : B := True) is
5150    begin
5151       pragma Assert (Ekind (Id) = E_Discriminant);
5152       Set_Flag103 (Id, V);
5153    end Set_Is_Completely_Hidden;
5154 
5155    procedure Set_Is_Concurrent_Record_Type (Id : E; V : B := True) is
5156    begin
5157       Set_Flag20 (Id, V);
5158    end Set_Is_Concurrent_Record_Type;
5159 
5160    procedure Set_Is_Constr_Subt_For_U_Nominal (Id : E; V : B := True) is
5161    begin
5162       Set_Flag80 (Id, V);
5163    end Set_Is_Constr_Subt_For_U_Nominal;
5164 
5165    procedure Set_Is_Constr_Subt_For_UN_Aliased (Id : E; V : B := True) is
5166    begin
5167       Set_Flag141 (Id, V);
5168    end Set_Is_Constr_Subt_For_UN_Aliased;
5169 
5170    procedure Set_Is_Constrained (Id : E; V : B := True) is
5171    begin
5172       pragma Assert (Nkind (Id) in N_Entity);
5173       Set_Flag12 (Id, V);
5174    end Set_Is_Constrained;
5175 
5176    procedure Set_Is_Constructor (Id : E; V : B := True) is
5177    begin
5178       Set_Flag76 (Id, V);
5179    end Set_Is_Constructor;
5180 
5181    procedure Set_Is_Controlled (Id : E; V : B := True) is
5182    begin
5183       pragma Assert (Id = Base_Type (Id));
5184       Set_Flag42 (Id, V);
5185    end Set_Is_Controlled;
5186 
5187    procedure Set_Is_Controlling_Formal (Id : E; V : B := True) is
5188    begin
5189       pragma Assert (Is_Formal (Id));
5190       Set_Flag97 (Id, V);
5191    end Set_Is_Controlling_Formal;
5192 
5193    procedure Set_Is_CPP_Class (Id : E; V : B := True) is
5194    begin
5195       Set_Flag74 (Id, V);
5196    end Set_Is_CPP_Class;
5197 
5198    procedure Set_Is_Default_Init_Cond_Procedure (Id : E; V : B := True) is
5199    begin
5200       pragma Assert (Ekind (Id) = E_Procedure);
5201       Set_Flag132 (Id, V);
5202    end Set_Is_Default_Init_Cond_Procedure;
5203 
5204    procedure Set_Is_Descendant_Of_Address (Id : E; V : B := True) is
5205    begin
5206       pragma Assert (Is_Type (Id));
5207       Set_Flag223 (Id, V);
5208    end Set_Is_Descendant_Of_Address;
5209 
5210    procedure Set_Is_Discrim_SO_Function (Id : E; V : B := True) is
5211    begin
5212       Set_Flag176 (Id, V);
5213    end Set_Is_Discrim_SO_Function;
5214 
5215    procedure Set_Is_Discriminant_Check_Function (Id : E; V : B := True) is
5216    begin
5217       Set_Flag264 (Id, V);
5218    end Set_Is_Discriminant_Check_Function;
5219 
5220    procedure Set_Is_Dispatch_Table_Entity (Id : E; V : B := True) is
5221    begin
5222       Set_Flag234 (Id, V);
5223    end Set_Is_Dispatch_Table_Entity;
5224 
5225    procedure Set_Is_Dispatching_Operation (Id : E; V : B := True) is
5226    begin
5227       pragma Assert
5228         (V = False
5229            or else
5230          Is_Overloadable (Id)
5231            or else
5232          Ekind (Id) = E_Subprogram_Type);
5233 
5234       Set_Flag6 (Id, V);
5235    end Set_Is_Dispatching_Operation;
5236 
5237    procedure Set_Is_Eliminated (Id : E; V : B := True) is
5238    begin
5239       Set_Flag124 (Id, V);
5240    end Set_Is_Eliminated;
5241 
5242    procedure Set_Is_Entry_Formal (Id : E; V : B := True) is
5243    begin
5244       Set_Flag52 (Id, V);
5245    end Set_Is_Entry_Formal;
5246 
5247    procedure Set_Is_Exception_Handler (Id : E; V : B := True) is
5248    begin
5249       pragma Assert (Ekind (Id) = E_Block);
5250       Set_Flag286 (Id, V);
5251    end Set_Is_Exception_Handler;
5252 
5253    procedure Set_Is_Exported (Id : E; V : B := True) is
5254    begin
5255       Set_Flag99 (Id, V);
5256    end Set_Is_Exported;
5257 
5258    procedure Set_Is_First_Subtype (Id : E; V : B := True) is
5259    begin
5260       Set_Flag70 (Id, V);
5261    end Set_Is_First_Subtype;
5262 
5263    procedure Set_Is_For_Access_Subtype (Id : E; V : B := True) is
5264    begin
5265       pragma Assert (Ekind_In (Id, E_Record_Subtype, E_Private_Subtype));
5266       Set_Flag118 (Id, V);
5267    end Set_Is_For_Access_Subtype;
5268 
5269    procedure Set_Is_Formal_Subprogram (Id : E; V : B := True) is
5270    begin
5271       Set_Flag111 (Id, V);
5272    end Set_Is_Formal_Subprogram;
5273 
5274    procedure Set_Is_Frozen (Id : E; V : B := True) is
5275    begin
5276       pragma Assert (Nkind (Id) in N_Entity);
5277       Set_Flag4 (Id, V);
5278    end Set_Is_Frozen;
5279 
5280    procedure Set_Is_Generic_Actual_Subprogram (Id : E; V : B := True) is
5281    begin
5282       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
5283       Set_Flag274 (Id, V);
5284    end Set_Is_Generic_Actual_Subprogram;
5285 
5286    procedure Set_Is_Generic_Actual_Type (Id : E; V : B := True) is
5287    begin
5288       pragma Assert (Is_Type (Id));
5289       Set_Flag94 (Id, V);
5290    end Set_Is_Generic_Actual_Type;
5291 
5292    procedure Set_Is_Generic_Instance (Id : E; V : B := True) is
5293    begin
5294       Set_Flag130 (Id, V);
5295    end Set_Is_Generic_Instance;
5296 
5297    procedure Set_Is_Generic_Type (Id : E; V : B := True) is
5298    begin
5299       pragma Assert (Nkind (Id) in N_Entity);
5300       Set_Flag13 (Id, V);
5301    end Set_Is_Generic_Type;
5302 
5303    procedure Set_Is_Hidden (Id : E; V : B := True) is
5304    begin
5305       Set_Flag57 (Id, V);
5306    end Set_Is_Hidden;
5307 
5308    procedure Set_Is_Hidden_Non_Overridden_Subpgm (Id : E; V : B := True) is
5309    begin
5310       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
5311       Set_Flag2 (Id, V);
5312    end Set_Is_Hidden_Non_Overridden_Subpgm;
5313 
5314    procedure Set_Is_Hidden_Open_Scope (Id : E; V : B := True) is
5315    begin
5316       Set_Flag171 (Id, V);
5317    end Set_Is_Hidden_Open_Scope;
5318 
5319    procedure Set_Is_Ignored_Ghost_Entity (Id : E; V : B := True) is
5320    begin
5321       pragma Assert (Is_Formal (Id)
5322         or else Is_Object (Id)
5323         or else Is_Package_Or_Generic_Package (Id)
5324         or else Is_Subprogram_Or_Generic_Subprogram (Id)
5325         or else Is_Type (Id)
5326         or else Ekind (Id) = E_Abstract_State
5327         or else Ekind (Id) = E_Component
5328         or else Ekind (Id) = E_Discriminant
5329         or else Ekind (Id) = E_Exception
5330         or else Ekind (Id) = E_Package_Body
5331         or else Ekind (Id) = E_Subprogram_Body
5332 
5333         --  Allow this attribute to appear on non-analyzed entities
5334 
5335         or else Ekind (Id) = E_Void);
5336       Set_Flag278 (Id, V);
5337    end Set_Is_Ignored_Ghost_Entity;
5338 
5339    procedure Set_Is_Immediately_Visible (Id : E; V : B := True) is
5340    begin
5341       pragma Assert (Nkind (Id) in N_Entity);
5342       Set_Flag7 (Id, V);
5343    end Set_Is_Immediately_Visible;
5344 
5345    procedure Set_Is_Implementation_Defined (Id : E; V : B := True) is
5346    begin
5347       Set_Flag254 (Id, V);
5348    end Set_Is_Implementation_Defined;
5349 
5350    procedure Set_Is_Imported (Id : E; V : B := True) is
5351    begin
5352       Set_Flag24 (Id, V);
5353    end Set_Is_Imported;
5354 
5355    procedure Set_Is_Independent (Id : E; V : B := True) is
5356    begin
5357       Set_Flag268 (Id, V);
5358    end Set_Is_Independent;
5359 
5360    procedure Set_Is_Inlined (Id : E; V : B := True) is
5361    begin
5362       Set_Flag11 (Id, V);
5363    end Set_Is_Inlined;
5364 
5365    procedure Set_Is_Inlined_Always (Id : E; V : B := True) is
5366    begin
5367       pragma Assert (Ekind (Id) = E_Function or else Ekind (Id) = E_Procedure);
5368       Set_Flag1 (Id, V);
5369    end Set_Is_Inlined_Always;
5370 
5371    procedure Set_Is_Interface (Id : E; V : B := True) is
5372    begin
5373       pragma Assert (Is_Record_Type (Id));
5374       Set_Flag186 (Id, V);
5375    end Set_Is_Interface;
5376 
5377    procedure Set_Is_Instantiated (Id : E; V : B := True) is
5378    begin
5379       Set_Flag126 (Id, V);
5380    end Set_Is_Instantiated;
5381 
5382    procedure Set_Is_Internal (Id : E; V : B := True) is
5383    begin
5384       pragma Assert (Nkind (Id) in N_Entity);
5385       Set_Flag17 (Id, V);
5386    end Set_Is_Internal;
5387 
5388    procedure Set_Is_Interrupt_Handler (Id : E; V : B := True) is
5389    begin
5390       pragma Assert (Nkind (Id) in N_Entity);
5391       Set_Flag89 (Id, V);
5392    end Set_Is_Interrupt_Handler;
5393 
5394    procedure Set_Is_Intrinsic_Subprogram (Id : E; V : B := True) is
5395    begin
5396       Set_Flag64 (Id, V);
5397    end Set_Is_Intrinsic_Subprogram;
5398 
5399    procedure Set_Is_Invariant_Procedure (Id : E; V : B := True) is
5400    begin
5401       pragma Assert (Ekind (Id) = E_Procedure);
5402       Set_Flag257 (Id, V);
5403    end Set_Is_Invariant_Procedure;
5404 
5405    procedure Set_Is_Itype (Id : E; V : B := True) is
5406    begin
5407       Set_Flag91 (Id, V);
5408    end Set_Is_Itype;
5409 
5410    procedure Set_Is_Known_Non_Null (Id : E; V : B := True) is
5411    begin
5412       Set_Flag37 (Id, V);
5413    end Set_Is_Known_Non_Null;
5414 
5415    procedure Set_Is_Known_Null (Id : E; V : B := True) is
5416    begin
5417       Set_Flag204 (Id, V);
5418    end Set_Is_Known_Null;
5419 
5420    procedure Set_Is_Known_Valid (Id : E; V : B := True) is
5421    begin
5422       Set_Flag170 (Id, V);
5423    end Set_Is_Known_Valid;
5424 
5425    procedure Set_Is_Limited_Composite (Id : E; V : B := True) is
5426    begin
5427       pragma Assert (Is_Type (Id));
5428       Set_Flag106 (Id, V);
5429    end Set_Is_Limited_Composite;
5430 
5431    procedure Set_Is_Limited_Interface (Id : E; V : B := True) is
5432    begin
5433       pragma Assert (Is_Interface (Id));
5434       Set_Flag197 (Id, V);
5435    end Set_Is_Limited_Interface;
5436 
5437    procedure Set_Is_Limited_Record (Id : E; V : B := True) is
5438    begin
5439       Set_Flag25 (Id, V);
5440    end Set_Is_Limited_Record;
5441 
5442    procedure Set_Is_Machine_Code_Subprogram (Id : E; V : B := True) is
5443    begin
5444       pragma Assert (Is_Subprogram (Id));
5445       Set_Flag137 (Id, V);
5446    end Set_Is_Machine_Code_Subprogram;
5447 
5448    procedure Set_Is_Non_Static_Subtype (Id : E; V : B := True) is
5449    begin
5450       pragma Assert (Is_Type (Id));
5451       Set_Flag109 (Id, V);
5452    end Set_Is_Non_Static_Subtype;
5453 
5454    procedure Set_Is_Null_Init_Proc (Id : E; V : B := True) is
5455    begin
5456       pragma Assert (Ekind (Id) = E_Procedure);
5457       Set_Flag178 (Id, V);
5458    end Set_Is_Null_Init_Proc;
5459 
5460    procedure Set_Is_Obsolescent (Id : E; V : B := True) is
5461    begin
5462       Set_Flag153 (Id, V);
5463    end Set_Is_Obsolescent;
5464 
5465    procedure Set_Is_Only_Out_Parameter (Id : E; V : B := True) is
5466    begin
5467       pragma Assert (Ekind (Id) = E_Out_Parameter);
5468       Set_Flag226 (Id, V);
5469    end Set_Is_Only_Out_Parameter;
5470 
5471    procedure Set_Is_Package_Body_Entity (Id : E; V : B := True) is
5472    begin
5473       Set_Flag160 (Id, V);
5474    end Set_Is_Package_Body_Entity;
5475 
5476    procedure Set_Is_Packed (Id : E; V : B := True) is
5477    begin
5478       pragma Assert (Id = Base_Type (Id));
5479       Set_Flag51 (Id, V);
5480    end Set_Is_Packed;
5481 
5482    procedure Set_Is_Packed_Array_Impl_Type (Id : E; V : B := True) is
5483    begin
5484       Set_Flag138 (Id, V);
5485    end Set_Is_Packed_Array_Impl_Type;
5486 
5487    procedure Set_Is_Param_Block_Component_Type (Id : E; V : B := True) is
5488    begin
5489       pragma Assert (Ekind_In (Id, E_Void, E_General_Access_Type));
5490       Set_Flag215 (Id, V);
5491    end Set_Is_Param_Block_Component_Type;
5492 
5493    procedure Set_Is_Partial_Invariant_Procedure (Id : E; V : B := True) is
5494    begin
5495       pragma Assert (Ekind (Id) = E_Procedure);
5496       Set_Flag292 (Id, V);
5497    end Set_Is_Partial_Invariant_Procedure;
5498 
5499    procedure Set_Is_Potentially_Use_Visible (Id : E; V : B := True) is
5500    begin
5501       pragma Assert (Nkind (Id) in N_Entity);
5502       Set_Flag9 (Id, V);
5503    end Set_Is_Potentially_Use_Visible;
5504 
5505    procedure Set_Is_Predicate_Function (Id : E; V : B := True) is
5506    begin
5507       pragma Assert (Ekind (Id) = E_Function);
5508       Set_Flag255 (Id, V);
5509    end Set_Is_Predicate_Function;
5510 
5511    procedure Set_Is_Predicate_Function_M (Id : E; V : B := True) is
5512    begin
5513       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
5514       Set_Flag256 (Id, V);
5515    end Set_Is_Predicate_Function_M;
5516 
5517    procedure Set_Is_Preelaborated (Id : E; V : B := True) is
5518    begin
5519       Set_Flag59 (Id, V);
5520    end Set_Is_Preelaborated;
5521 
5522    procedure Set_Is_Primitive (Id : E; V : B := True) is
5523    begin
5524       pragma Assert
5525         (Is_Overloadable (Id)
5526            or else Ekind_In (Id, E_Generic_Function, E_Generic_Procedure));
5527       Set_Flag218 (Id, V);
5528    end Set_Is_Primitive;
5529 
5530    procedure Set_Is_Primitive_Wrapper (Id : E; V : B := True) is
5531    begin
5532       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
5533       Set_Flag195 (Id, V);
5534    end Set_Is_Primitive_Wrapper;
5535 
5536    procedure Set_Is_Private_Composite (Id : E; V : B := True) is
5537    begin
5538       pragma Assert (Is_Type (Id));
5539       Set_Flag107 (Id, V);
5540    end Set_Is_Private_Composite;
5541 
5542    procedure Set_Is_Private_Descendant (Id : E; V : B := True) is
5543    begin
5544       Set_Flag53 (Id, V);
5545    end Set_Is_Private_Descendant;
5546 
5547    procedure Set_Is_Private_Primitive (Id : E; V : B := True) is
5548    begin
5549       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
5550       Set_Flag245 (Id, V);
5551    end Set_Is_Private_Primitive;
5552 
5553    procedure Set_Is_Processed_Transient (Id : E; V : B := True) is
5554    begin
5555       pragma Assert (Ekind_In (Id, E_Constant, E_Loop_Parameter, E_Variable));
5556       Set_Flag252 (Id, V);
5557    end Set_Is_Processed_Transient;
5558 
5559    procedure Set_Is_Public (Id : E; V : B := True) is
5560    begin
5561       pragma Assert (Nkind (Id) in N_Entity);
5562       Set_Flag10 (Id, V);
5563    end Set_Is_Public;
5564 
5565    procedure Set_Is_Pure (Id : E; V : B := True) is
5566    begin
5567       Set_Flag44 (Id, V);
5568    end Set_Is_Pure;
5569 
5570    procedure Set_Is_Pure_Unit_Access_Type (Id : E; V : B := True) is
5571    begin
5572       pragma Assert (Is_Access_Type (Id));
5573       Set_Flag189 (Id, V);
5574    end Set_Is_Pure_Unit_Access_Type;
5575 
5576    procedure Set_Is_RACW_Stub_Type (Id : E; V : B := True) is
5577    begin
5578       pragma Assert (Is_Type (Id));
5579       Set_Flag244 (Id, V);
5580    end Set_Is_RACW_Stub_Type;
5581 
5582    procedure Set_Is_Raised (Id : E; V : B := True) is
5583    begin
5584       pragma Assert (Ekind (Id) = E_Exception);
5585       Set_Flag224 (Id, V);
5586    end Set_Is_Raised;
5587 
5588    procedure Set_Is_Remote_Call_Interface (Id : E; V : B := True) is
5589    begin
5590       Set_Flag62 (Id, V);
5591    end Set_Is_Remote_Call_Interface;
5592 
5593    procedure Set_Is_Remote_Types (Id : E; V : B := True) is
5594    begin
5595       Set_Flag61 (Id, V);
5596    end Set_Is_Remote_Types;
5597 
5598    procedure Set_Is_Renaming_Of_Object (Id : E; V : B := True) is
5599    begin
5600       Set_Flag112 (Id, V);
5601    end Set_Is_Renaming_Of_Object;
5602 
5603    procedure Set_Is_Return_Object (Id : E; V : B := True) is
5604    begin
5605       Set_Flag209 (Id, V);
5606    end Set_Is_Return_Object;
5607 
5608    procedure Set_Is_Safe_To_Reevaluate (Id : E; V : B := True) is
5609    begin
5610       pragma Assert (Ekind (Id) = E_Variable);
5611       Set_Flag249 (Id, V);
5612    end Set_Is_Safe_To_Reevaluate;
5613 
5614    procedure Set_Is_Shared_Passive (Id : E; V : B := True) is
5615    begin
5616       Set_Flag60 (Id, V);
5617    end Set_Is_Shared_Passive;
5618 
5619    procedure Set_Is_Static_Type (Id : E; V : B := True) is
5620    begin
5621       pragma Assert (Is_Type (Id));
5622       Set_Flag281 (Id, V);
5623    end Set_Is_Static_Type;
5624 
5625    procedure Set_Is_Statically_Allocated (Id : E; V : B := True) is
5626    begin
5627       pragma Assert
5628         (Is_Type (Id)
5629            or else Ekind_In (Id, E_Exception,
5630                                  E_Variable,
5631                                  E_Constant,
5632                                  E_Void));
5633       Set_Flag28 (Id, V);
5634    end Set_Is_Statically_Allocated;
5635 
5636    procedure Set_Is_Tag (Id : E; V : B := True) is
5637    begin
5638       pragma Assert (Ekind_In (Id, E_Component, E_Constant, E_Variable));
5639       Set_Flag78 (Id, V);
5640    end Set_Is_Tag;
5641 
5642    procedure Set_Is_Tagged_Type (Id : E; V : B := True) is
5643    begin
5644       Set_Flag55 (Id, V);
5645    end Set_Is_Tagged_Type;
5646 
5647    procedure Set_Is_Thunk (Id : E; V : B := True) is
5648    begin
5649       pragma Assert (Is_Subprogram (Id));
5650       Set_Flag225 (Id, V);
5651    end Set_Is_Thunk;
5652 
5653    procedure Set_Is_Trivial_Subprogram (Id : E; V : B := True) is
5654    begin
5655       Set_Flag235 (Id, V);
5656    end Set_Is_Trivial_Subprogram;
5657 
5658    procedure Set_Is_True_Constant (Id : E; V : B := True) is
5659    begin
5660       Set_Flag163 (Id, V);
5661    end Set_Is_True_Constant;
5662 
5663    procedure Set_Is_Unchecked_Union (Id : E; V : B := True) is
5664    begin
5665       pragma Assert (Id = Base_Type (Id));
5666       Set_Flag117 (Id, V);
5667    end Set_Is_Unchecked_Union;
5668 
5669    procedure Set_Is_Underlying_Record_View (Id : E; V : B := True) is
5670    begin
5671       pragma Assert (Ekind (Id) = E_Record_Type);
5672       Set_Flag246 (Id, V);
5673    end Set_Is_Underlying_Record_View;
5674 
5675    procedure Set_Is_Unimplemented (Id : E; V : B := True) is
5676    begin
5677       Set_Flag284 (Id, V);
5678    end Set_Is_Unimplemented;
5679 
5680    procedure Set_Is_Unsigned_Type (Id : E; V : B := True) is
5681    begin
5682       pragma Assert (Is_Discrete_Or_Fixed_Point_Type (Id));
5683       Set_Flag144 (Id, V);
5684    end Set_Is_Unsigned_Type;
5685 
5686    procedure Set_Is_Uplevel_Referenced_Entity (Id : E; V : B := True) is
5687    begin
5688       pragma Assert
5689         (Ekind_In (Id, E_Constant, E_Variable)
5690           or else Is_Formal (Id)
5691           or else Is_Type (Id));
5692       Set_Flag283 (Id, V);
5693    end Set_Is_Uplevel_Referenced_Entity;
5694 
5695    procedure Set_Is_Valued_Procedure (Id : E; V : B := True) is
5696    begin
5697       pragma Assert (Ekind (Id) = E_Procedure);
5698       Set_Flag127 (Id, V);
5699    end Set_Is_Valued_Procedure;
5700 
5701    procedure Set_Is_Visible_Formal (Id : E; V : B := True) is
5702    begin
5703       Set_Flag206 (Id, V);
5704    end Set_Is_Visible_Formal;
5705 
5706    procedure Set_Is_Visible_Lib_Unit (Id : E; V : B := True) is
5707    begin
5708       Set_Flag116 (Id, V);
5709    end Set_Is_Visible_Lib_Unit;
5710 
5711    procedure Set_Is_Volatile (Id : E; V : B := True) is
5712    begin
5713       pragma Assert (Nkind (Id) in N_Entity);
5714       Set_Flag16 (Id, V);
5715    end Set_Is_Volatile;
5716 
5717    procedure Set_Is_Volatile_Full_Access (Id : E; V : B := True) is
5718    begin
5719       Set_Flag285 (Id, V);
5720    end Set_Is_Volatile_Full_Access;
5721 
5722    procedure Set_Itype_Printed (Id : E; V : B := True) is
5723    begin
5724       pragma Assert (Is_Itype (Id));
5725       Set_Flag202 (Id, V);
5726    end Set_Itype_Printed;
5727 
5728    procedure Set_Kill_Elaboration_Checks (Id : E; V : B := True) is
5729    begin
5730       Set_Flag32 (Id, V);
5731    end Set_Kill_Elaboration_Checks;
5732 
5733    procedure Set_Kill_Range_Checks (Id : E; V : B := True) is
5734    begin
5735       Set_Flag33 (Id, V);
5736    end Set_Kill_Range_Checks;
5737 
5738    procedure Set_Known_To_Have_Preelab_Init (Id : E; V : B := True) is
5739    begin
5740       pragma Assert (Is_Type (Id));
5741       Set_Flag207 (Id, V);
5742    end Set_Known_To_Have_Preelab_Init;
5743 
5744    procedure Set_Last_Aggregate_Assignment (Id : E; V : N) is
5745    begin
5746       pragma Assert (Ekind_In (Id, E_Constant, E_Variable));
5747       Set_Node30 (Id, V);
5748    end Set_Last_Aggregate_Assignment;
5749 
5750    procedure Set_Last_Assignment (Id : E; V : N) is
5751    begin
5752       pragma Assert (Is_Assignable (Id));
5753       Set_Node26 (Id, V);
5754    end Set_Last_Assignment;
5755 
5756    procedure Set_Last_Entity (Id : E; V : E) is
5757    begin
5758       Set_Node20 (Id, V);
5759    end Set_Last_Entity;
5760 
5761    procedure Set_Limited_View (Id : E; V : E) is
5762    begin
5763       pragma Assert (Ekind (Id) = E_Package);
5764       Set_Node23 (Id, V);
5765    end Set_Limited_View;
5766 
5767    procedure Set_Linker_Section_Pragma (Id : E; V : N) is
5768    begin
5769       pragma Assert (Is_Type (Id)
5770         or else Ekind_In (Id, E_Constant, E_Variable)
5771         or else Is_Subprogram (Id));
5772       Set_Node33 (Id, V);
5773    end Set_Linker_Section_Pragma;
5774 
5775    procedure Set_Lit_Indexes (Id : E; V : E) is
5776    begin
5777       pragma Assert (Is_Enumeration_Type (Id) and then Root_Type (Id) = Id);
5778       Set_Node18 (Id, V);
5779    end Set_Lit_Indexes;
5780 
5781    procedure Set_Lit_Strings (Id : E; V : E) is
5782    begin
5783       pragma Assert (Is_Enumeration_Type (Id) and then Root_Type (Id) = Id);
5784       Set_Node16 (Id, V);
5785    end Set_Lit_Strings;
5786 
5787    procedure Set_Low_Bound_Tested (Id : E; V : B := True) is
5788    begin
5789       pragma Assert (Is_Formal (Id));
5790       Set_Flag205 (Id, V);
5791    end Set_Low_Bound_Tested;
5792 
5793    procedure Set_Machine_Radix_10 (Id : E; V : B := True) is
5794    begin
5795       pragma Assert (Is_Decimal_Fixed_Point_Type (Id));
5796       Set_Flag84 (Id, V);
5797    end Set_Machine_Radix_10;
5798 
5799    procedure Set_Master_Id (Id : E; V : E) is
5800    begin
5801       pragma Assert (Is_Access_Type (Id));
5802       Set_Node17 (Id, V);
5803    end Set_Master_Id;
5804 
5805    procedure Set_Materialize_Entity (Id : E; V : B := True) is
5806    begin
5807       Set_Flag168 (Id, V);
5808    end Set_Materialize_Entity;
5809 
5810    procedure Set_May_Inherit_Delayed_Rep_Aspects (Id : E; V : B := True) is
5811    begin
5812       Set_Flag262 (Id, V);
5813    end Set_May_Inherit_Delayed_Rep_Aspects;
5814 
5815    procedure Set_Mechanism (Id : E; V : M) is
5816    begin
5817       pragma Assert (Ekind (Id) = E_Function or else Is_Formal (Id));
5818       Set_Uint8 (Id, UI_From_Int (V));
5819    end Set_Mechanism;
5820 
5821    procedure Set_Modulus (Id : E; V : U) is
5822    begin
5823       pragma Assert (Ekind (Id) = E_Modular_Integer_Type);
5824       Set_Uint17 (Id, V);
5825    end Set_Modulus;
5826 
5827    procedure Set_Must_Be_On_Byte_Boundary (Id : E; V : B := True) is
5828    begin
5829       pragma Assert (Is_Type (Id));
5830       Set_Flag183 (Id, V);
5831    end Set_Must_Be_On_Byte_Boundary;
5832 
5833    procedure Set_Must_Have_Preelab_Init (Id : E; V : B := True) is
5834    begin
5835       pragma Assert (Is_Type (Id));
5836       Set_Flag208 (Id, V);
5837    end Set_Must_Have_Preelab_Init;
5838 
5839    procedure Set_Needs_Debug_Info (Id : E; V : B := True) is
5840    begin
5841       Set_Flag147 (Id, V);
5842    end Set_Needs_Debug_Info;
5843 
5844    procedure Set_Needs_No_Actuals (Id : E; V : B := True) is
5845    begin
5846       pragma Assert
5847         (Is_Overloadable (Id)
5848            or else Ekind_In (Id, E_Subprogram_Type, E_Entry_Family));
5849       Set_Flag22 (Id, V);
5850    end Set_Needs_No_Actuals;
5851 
5852    procedure Set_Never_Set_In_Source (Id : E; V : B := True) is
5853    begin
5854       Set_Flag115 (Id, V);
5855    end Set_Never_Set_In_Source;
5856 
5857    procedure Set_Next_Inlined_Subprogram (Id : E; V : E) is
5858    begin
5859       Set_Node12 (Id, V);
5860    end Set_Next_Inlined_Subprogram;
5861 
5862    procedure Set_No_Dynamic_Predicate_On_Actual (Id : E; V : B := True) is
5863    begin
5864       pragma Assert (Is_Discrete_Type (Id));
5865       Set_Flag276 (Id, V);
5866    end Set_No_Dynamic_Predicate_On_Actual;
5867 
5868    procedure Set_No_Pool_Assigned (Id : E; V : B := True) is
5869    begin
5870       pragma Assert (Is_Access_Type (Id) and then Is_Base_Type (Id));
5871       Set_Flag131 (Id, V);
5872    end Set_No_Pool_Assigned;
5873 
5874    procedure Set_No_Predicate_On_Actual (Id : E; V : B := True) is
5875    begin
5876       pragma Assert (Is_Discrete_Type (Id));
5877       Set_Flag275 (Id, V);
5878    end Set_No_Predicate_On_Actual;
5879 
5880    procedure Set_No_Return (Id : E; V : B := True) is
5881    begin
5882       pragma Assert
5883         (V = False or else Ekind_In (Id, E_Procedure, E_Generic_Procedure));
5884       Set_Flag113 (Id, V);
5885    end Set_No_Return;
5886 
5887    procedure Set_No_Strict_Aliasing (Id : E; V : B := True) is
5888    begin
5889       pragma Assert (Is_Access_Type (Id) and then Is_Base_Type (Id));
5890       Set_Flag136 (Id, V);
5891    end Set_No_Strict_Aliasing;
5892 
5893    procedure Set_No_Tagged_Streams_Pragma (Id : E; V : E) is
5894    begin
5895       pragma Assert (Is_Tagged_Type (Id));
5896       Set_Node32 (Id, V);
5897    end Set_No_Tagged_Streams_Pragma;
5898 
5899    procedure Set_Non_Binary_Modulus (Id : E; V : B := True) is
5900    begin
5901       pragma Assert (Is_Type (Id) and then Is_Base_Type (Id));
5902       Set_Flag58 (Id, V);
5903    end Set_Non_Binary_Modulus;
5904 
5905    procedure Set_Non_Limited_View (Id : E; V : E) is
5906    begin
5907       pragma Assert
5908         (Ekind (Id) in Incomplete_Kind
5909           or else Ekind_In (Id, E_Abstract_State, E_Class_Wide_Type));
5910       Set_Node19 (Id, V);
5911    end Set_Non_Limited_View;
5912 
5913    procedure Set_Nonzero_Is_True (Id : E; V : B := True) is
5914    begin
5915       pragma Assert
5916         (Root_Type (Id) = Standard_Boolean
5917           and then Ekind (Id) = E_Enumeration_Type);
5918       Set_Flag162 (Id, V);
5919    end Set_Nonzero_Is_True;
5920 
5921    procedure Set_Normalized_First_Bit (Id : E; V : U) is
5922    begin
5923       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
5924       Set_Uint8 (Id, V);
5925    end Set_Normalized_First_Bit;
5926 
5927    procedure Set_Normalized_Position (Id : E; V : U) is
5928    begin
5929       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
5930       Set_Uint14 (Id, V);
5931    end Set_Normalized_Position;
5932 
5933    procedure Set_Normalized_Position_Max (Id : E; V : U) is
5934    begin
5935       pragma Assert (Ekind_In (Id, E_Component, E_Discriminant));
5936       Set_Uint10 (Id, V);
5937    end Set_Normalized_Position_Max;
5938 
5939    procedure Set_OK_To_Rename (Id : E; V : B := True) is
5940    begin
5941       pragma Assert (Ekind (Id) = E_Variable);
5942       Set_Flag247 (Id, V);
5943    end Set_OK_To_Rename;
5944 
5945    procedure Set_OK_To_Reorder_Components (Id : E; V : B := True) is
5946    begin
5947       pragma Assert
5948         (Is_Record_Type (Id) and then Is_Base_Type (Id));
5949       Set_Flag239 (Id, V);
5950    end Set_OK_To_Reorder_Components;
5951 
5952    procedure Set_Optimize_Alignment_Space (Id : E; V : B := True) is
5953    begin
5954       pragma Assert
5955         (Is_Type (Id) or else Ekind_In (Id, E_Constant, E_Variable));
5956       Set_Flag241 (Id, V);
5957    end Set_Optimize_Alignment_Space;
5958 
5959    procedure Set_Optimize_Alignment_Time (Id : E; V : B := True) is
5960    begin
5961       pragma Assert
5962         (Is_Type (Id) or else Ekind_In (Id, E_Constant, E_Variable));
5963       Set_Flag242 (Id, V);
5964    end Set_Optimize_Alignment_Time;
5965 
5966    procedure Set_Original_Access_Type (Id : E; V : E) is
5967    begin
5968       pragma Assert (Ekind (Id) = E_Access_Subprogram_Type);
5969       Set_Node28 (Id, V);
5970    end Set_Original_Access_Type;
5971 
5972    procedure Set_Original_Array_Type (Id : E; V : E) is
5973    begin
5974       pragma Assert (Is_Array_Type (Id) or else Is_Modular_Integer_Type (Id));
5975       Set_Node21 (Id, V);
5976    end Set_Original_Array_Type;
5977 
5978    procedure Set_Original_Protected_Subprogram (Id : E; V : N) is
5979    begin
5980       pragma Assert (Ekind_In (Id, E_Function, E_Procedure));
5981       Set_Node41 (Id, V);
5982    end Set_Original_Protected_Subprogram;
5983 
5984    procedure Set_Original_Record_Component (Id : E; V : E) is
5985    begin
5986       pragma Assert (Ekind_In (Id, E_Void, E_Component, E_Discriminant));
5987       Set_Node22 (Id, V);
5988    end Set_Original_Record_Component;
5989 
5990    procedure Set_Overlays_Constant (Id : E; V : B := True) is
5991    begin
5992       Set_Flag243 (Id, V);
5993    end Set_Overlays_Constant;
5994 
5995    procedure Set_Overridden_Operation (Id : E; V : E) is
5996    begin
5997       pragma Assert (Is_Subprogram (Id) or else Is_Generic_Subprogram (Id));
5998       Set_Node26 (Id, V);
5999    end Set_Overridden_Operation;
6000 
6001    procedure Set_Package_Instantiation (Id : E; V : N) is
6002    begin
6003       pragma Assert (Ekind_In (Id, E_Void, E_Generic_Package, E_Package));
6004       Set_Node26 (Id, V);
6005    end Set_Package_Instantiation;
6006 
6007    procedure Set_Packed_Array_Impl_Type (Id : E; V : E) is
6008    begin
6009       pragma Assert (Is_Array_Type (Id));
6010       Set_Node23 (Id, V);
6011    end Set_Packed_Array_Impl_Type;
6012 
6013    procedure Set_Parent_Subtype (Id : E; V : E) is
6014    begin
6015       pragma Assert (Ekind (Id) = E_Record_Type);
6016       Set_Node19 (Id, V);
6017    end Set_Parent_Subtype;
6018 
6019    procedure Set_Part_Of_Constituents (Id : E; V : L) is
6020    begin
6021       pragma Assert (Ekind_In (Id, E_Abstract_State, E_Variable));
6022       Set_Elist10 (Id, V);
6023    end Set_Part_Of_Constituents;
6024 
6025    procedure Set_Part_Of_References (Id : E; V : L) is
6026    begin
6027       pragma Assert (Ekind (Id) = E_Variable);
6028       Set_Elist11 (Id, V);
6029    end Set_Part_Of_References;
6030 
6031    procedure Set_Partial_View_Has_Unknown_Discr (Id : E; V : B := True) is
6032    begin
6033       pragma Assert (Is_Type (Id));
6034       Set_Flag280 (Id, V);
6035    end Set_Partial_View_Has_Unknown_Discr;
6036 
6037    procedure Set_Pending_Access_Types (Id : E; V : L) is
6038    begin
6039       pragma Assert (Is_Type (Id));
6040       Set_Elist15 (Id, V);
6041    end Set_Pending_Access_Types;
6042 
6043    procedure Set_Postconditions_Proc (Id : E; V : E) is
6044    begin
6045       pragma Assert (Ekind_In (Id, E_Entry,
6046                                    E_Entry_Family,
6047                                    E_Function,
6048                                    E_Procedure));
6049       Set_Node14 (Id, V);
6050    end Set_Postconditions_Proc;
6051 
6052    procedure Set_Predicates_Ignored (Id : E; V : B) is
6053    begin
6054       pragma Assert (Is_Type (Id));
6055       Set_Flag288 (Id, V);
6056    end Set_Predicates_Ignored;
6057 
6058    procedure Set_Direct_Primitive_Operations (Id : E; V : L) is
6059    begin
6060       pragma Assert (Is_Tagged_Type (Id));
6061       Set_Elist10 (Id, V);
6062    end Set_Direct_Primitive_Operations;
6063 
6064    procedure Set_Prival (Id : E; V : E) is
6065    begin
6066       pragma Assert (Is_Protected_Component (Id));
6067       Set_Node17 (Id, V);
6068    end Set_Prival;
6069 
6070    procedure Set_Prival_Link (Id : E; V : E) is
6071    begin
6072       pragma Assert (Ekind_In (Id, E_Constant, E_Variable));
6073       Set_Node20 (Id, V);
6074    end Set_Prival_Link;
6075 
6076    procedure Set_Private_Dependents (Id : E; V : L) is
6077    begin
6078       pragma Assert (Is_Incomplete_Or_Private_Type (Id));
6079       Set_Elist18 (Id, V);
6080    end Set_Private_Dependents;
6081 
6082    procedure Set_Private_View (Id : E; V : N) is
6083    begin
6084       pragma Assert (Is_Private_Type (Id));
6085       Set_Node22 (Id, V);
6086    end Set_Private_View;
6087 
6088    procedure Set_Protected_Body_Subprogram (Id : E; V : E) is
6089    begin
6090       pragma Assert (Is_Subprogram (Id) or else Is_Entry (Id));
6091       Set_Node11 (Id, V);
6092    end Set_Protected_Body_Subprogram;
6093 
6094    procedure Set_Protected_Formal (Id : E; V : E) is
6095    begin
6096       pragma Assert (Is_Formal (Id));
6097       Set_Node22 (Id, V);
6098    end Set_Protected_Formal;
6099 
6100    procedure Set_Protection_Object (Id : E; V : E) is
6101    begin
6102       pragma Assert (Ekind_In (Id, E_Entry,
6103                                    E_Entry_Family,
6104                                    E_Function,
6105                                    E_Procedure));
6106       Set_Node23 (Id, V);
6107    end Set_Protection_Object;
6108 
6109    procedure Set_Reachable (Id : E; V : B := True) is
6110    begin
6111       Set_Flag49 (Id, V);
6112    end Set_Reachable;
6113 
6114    procedure Set_Referenced (Id : E; V : B := True) is
6115    begin
6116       Set_Flag156 (Id, V);
6117    end Set_Referenced;
6118 
6119    procedure Set_Referenced_As_LHS (Id : E; V : B := True) is
6120    begin
6121       Set_Flag36 (Id, V);
6122    end Set_Referenced_As_LHS;
6123 
6124    procedure Set_Referenced_As_Out_Parameter (Id : E; V : B := True) is
6125    begin
6126       Set_Flag227 (Id, V);
6127    end Set_Referenced_As_Out_Parameter;
6128 
6129    procedure Set_Refinement_Constituents (Id : E; V : L) is
6130    begin
6131       pragma Assert (Ekind (Id) = E_Abstract_State);
6132       Set_Elist8 (Id, V);
6133    end Set_Refinement_Constituents;
6134 
6135    procedure Set_Register_Exception_Call (Id : E; V : N) is
6136    begin
6137       pragma Assert (Ekind (Id) = E_Exception);
6138       Set_Node20 (Id, V);
6139    end Set_Register_Exception_Call;
6140 
6141    procedure Set_Related_Array_Object (Id : E; V : E) is
6142    begin
6143       pragma Assert (Is_Array_Type (Id));
6144       Set_Node25 (Id, V);
6145    end Set_Related_Array_Object;
6146 
6147    procedure Set_Related_Expression (Id : E; V : N) is
6148    begin
6149       pragma Assert (Ekind (Id) in Type_Kind
6150                        or else Ekind_In (Id, E_Constant, E_Variable, E_Void));
6151       Set_Node24 (Id, V);
6152    end Set_Related_Expression;
6153 
6154    procedure Set_Related_Instance (Id : E; V : E) is
6155    begin
6156       pragma Assert (Ekind_In (Id, E_Package, E_Package_Body));
6157       Set_Node15 (Id, V);
6158    end Set_Related_Instance;
6159 
6160    procedure Set_Related_Type (Id : E; V : E) is
6161    begin
6162       pragma Assert (Ekind_In (Id, E_Component, E_Constant, E_Variable));
6163       Set_Node27 (Id, V);
6164    end Set_Related_Type;
6165 
6166    procedure Set_Relative_Deadline_Variable (Id : E; V : E) is
6167    begin
6168       pragma Assert (Is_Task_Type (Id) and then Is_Base_Type (Id));
6169       Set_Node28 (Id, V);
6170    end Set_Relative_Deadline_Variable;
6171 
6172    procedure Set_Renamed_Entity (Id : E; V : N) is
6173    begin
6174       Set_Node18 (Id, V);
6175    end Set_Renamed_Entity;
6176 
6177    procedure Set_Renamed_In_Spec (Id : E; V : B := True) is
6178    begin
6179       pragma Assert (Ekind (Id) = E_Package);
6180       Set_Flag231 (Id, V);
6181    end Set_Renamed_In_Spec;
6182 
6183    procedure Set_Renamed_Object (Id : E; V : N) is
6184    begin
6185       Set_Node18 (Id, V);
6186    end Set_Renamed_Object;
6187 
6188    procedure Set_Renaming_Map (Id : E; V : U) is
6189    begin
6190       Set_Uint9 (Id, V);
6191    end Set_Renaming_Map;
6192 
6193    procedure Set_Requires_Overriding (Id : E; V : B := True) is
6194    begin
6195       pragma Assert (Is_Overloadable (Id));
6196       Set_Flag213 (Id, V);
6197    end Set_Requires_Overriding;
6198 
6199    procedure Set_Return_Present (Id : E; V : B := True) is
6200    begin
6201       Set_Flag54 (Id, V);
6202    end Set_Return_Present;
6203 
6204    procedure Set_Return_Applies_To (Id : E; V : N) is
6205    begin
6206       Set_Node8 (Id, V);
6207    end Set_Return_Applies_To;
6208 
6209    procedure Set_Returns_By_Ref (Id : E; V : B := True) is
6210    begin
6211       Set_Flag90 (Id, V);
6212    end Set_Returns_By_Ref;
6213 
6214    procedure Set_Returns_Limited_View (Id : E; V : B := True) is
6215    begin
6216       pragma Assert (Ekind (Id) = E_Function);
6217       Set_Flag134 (Id, V);
6218    end Set_Returns_Limited_View;
6219 
6220    procedure Set_Reverse_Bit_Order (Id : E; V : B := True) is
6221    begin
6222       pragma Assert
6223         (Is_Record_Type (Id) and then Is_Base_Type (Id));
6224       Set_Flag164 (Id, V);
6225    end Set_Reverse_Bit_Order;
6226 
6227    procedure Set_Reverse_Storage_Order (Id : E; V : B := True) is
6228    begin
6229       pragma Assert
6230         (Is_Base_Type (Id)
6231            and then (Is_Record_Type (Id) or else Is_Array_Type (Id)));
6232       Set_Flag93 (Id, V);
6233    end Set_Reverse_Storage_Order;
6234 
6235    procedure Set_Rewritten_For_C (Id : E; V : B := True) is
6236    begin
6237       pragma Assert (Ekind (Id) = E_Function);
6238       Set_Flag287 (Id, V);
6239    end Set_Rewritten_For_C;
6240 
6241    procedure Set_RM_Size (Id : E; V : U) is
6242    begin
6243       pragma Assert (Is_Type (Id));
6244       Set_Uint13 (Id, V);
6245    end Set_RM_Size;
6246 
6247    procedure Set_Scalar_Range (Id : E; V : N) is
6248    begin
6249       Set_Node20 (Id, V);
6250    end Set_Scalar_Range;
6251 
6252    procedure Set_Scale_Value (Id : E; V : U) is
6253    begin
6254       Set_Uint16 (Id, V);
6255    end Set_Scale_Value;
6256 
6257    procedure Set_Scope_Depth_Value (Id : E; V : U) is
6258    begin
6259       pragma Assert (not Is_Record_Type (Id));
6260       Set_Uint22 (Id, V);
6261    end Set_Scope_Depth_Value;
6262 
6263    procedure Set_Sec_Stack_Needed_For_Return (Id : E; V : B := True) is
6264    begin
6265       Set_Flag167 (Id, V);
6266    end Set_Sec_Stack_Needed_For_Return;
6267 
6268    procedure Set_Shadow_Entities (Id : E; V : S) is
6269    begin
6270       pragma Assert (Ekind_In (Id, E_Package, E_Generic_Package));
6271       Set_List14 (Id, V);
6272    end Set_Shadow_Entities;
6273 
6274    procedure Set_Shared_Var_Procs_Instance (Id : E; V : E) is
6275    begin
6276       pragma Assert (Ekind (Id) = E_Variable);
6277       Set_Node22 (Id, V);
6278    end Set_Shared_Var_Procs_Instance;
6279 
6280    procedure Set_Size_Check_Code (Id : E; V : N) is
6281    begin
6282       pragma Assert (Ekind_In (Id, E_Constant, E_Variable));
6283       Set_Node19 (Id, V);
6284    end Set_Size_Check_Code;
6285 
6286    procedure Set_Size_Depends_On_Discriminant (Id : E; V : B := True) is
6287    begin
6288       Set_Flag177 (Id, V);
6289    end Set_Size_Depends_On_Discriminant;
6290 
6291    procedure Set_Size_Known_At_Compile_Time (Id : E; V : B := True) is
6292    begin
6293       Set_Flag92 (Id, V);
6294    end Set_Size_Known_At_Compile_Time;
6295 
6296    procedure Set_Small_Value (Id : E; V : R) is
6297    begin
6298       pragma Assert (Is_Fixed_Point_Type (Id));
6299       Set_Ureal21 (Id, V);
6300    end Set_Small_Value;
6301 
6302    procedure Set_SPARK_Aux_Pragma (Id : E; V : N) is
6303    begin
6304       pragma Assert
6305         (Ekind_In (Id, E_Protected_Type,   --  concurrent variants
6306                        E_Task_Type)
6307            or else
6308          Ekind_In (Id, E_Generic_Package,  --  package variants
6309                        E_Package,
6310                        E_Package_Body));
6311       Set_Node41 (Id, V);
6312    end Set_SPARK_Aux_Pragma;
6313 
6314    procedure Set_SPARK_Aux_Pragma_Inherited (Id : E; V : B := True) is
6315    begin
6316       pragma Assert
6317         (Ekind_In (Id, E_Protected_Type,   --  concurrent variants
6318                        E_Task_Type)
6319            or else
6320          Ekind_In (Id, E_Generic_Package,  --  package variants
6321                        E_Package,
6322                        E_Package_Body));
6323       Set_Flag266 (Id, V);
6324    end Set_SPARK_Aux_Pragma_Inherited;
6325 
6326    procedure Set_SPARK_Pragma (Id : E; V : N) is
6327    begin
6328       pragma Assert
6329         (Ekind_In (Id, E_Protected_Body,   --  concurrent variants
6330                        E_Protected_Type,
6331                        E_Task_Body,
6332                        E_Task_Type)
6333            or else
6334          Ekind_In (Id, E_Entry,            --  overloadable variants
6335                        E_Entry_Family,
6336                        E_Function,
6337                        E_Generic_Function,
6338                        E_Generic_Procedure,
6339                        E_Operator,
6340                        E_Procedure,
6341                        E_Subprogram_Body)
6342            or else
6343          Ekind_In (Id, E_Generic_Package,  --  package variants
6344                        E_Package,
6345                        E_Package_Body)
6346            or else
6347          Ekind (Id) = E_Variable);         --  variable
6348       Set_Node40 (Id, V);
6349    end Set_SPARK_Pragma;
6350 
6351    procedure Set_SPARK_Pragma_Inherited (Id : E; V : B := True) is
6352    begin
6353       pragma Assert
6354         (Ekind_In (Id, E_Protected_Body,   --  concurrent variants
6355                        E_Protected_Type,
6356                        E_Task_Body,
6357                        E_Task_Type)
6358            or else
6359          Ekind_In (Id, E_Entry,            --  overloadable variants
6360                        E_Entry_Family,
6361                        E_Function,
6362                        E_Generic_Function,
6363                        E_Generic_Procedure,
6364                        E_Operator,
6365                        E_Procedure,
6366                        E_Subprogram_Body)
6367            or else
6368          Ekind_In (Id, E_Generic_Package,  --  package variants
6369                        E_Package,
6370                        E_Package_Body)
6371            or else
6372          Ekind (Id) = E_Variable);         --  variable
6373       Set_Flag265 (Id, V);
6374    end Set_SPARK_Pragma_Inherited;
6375 
6376    procedure Set_Spec_Entity (Id : E; V : E) is
6377    begin
6378       pragma Assert (Ekind (Id) = E_Package_Body or else Is_Formal (Id));
6379       Set_Node19 (Id, V);
6380    end Set_Spec_Entity;
6381 
6382    procedure Set_SSO_Set_High_By_Default (Id : E; V : B := True) is
6383    begin
6384       pragma Assert
6385         (Is_Base_Type (Id)
6386          and then (Is_Record_Type (Id) or else Is_Array_Type (Id)));
6387       Set_Flag273 (Id, V);
6388    end Set_SSO_Set_High_By_Default;
6389 
6390    procedure Set_SSO_Set_Low_By_Default (Id : E; V : B := True) is
6391    begin
6392       pragma Assert
6393         (Is_Base_Type (Id)
6394          and then (Is_Record_Type (Id) or else Is_Array_Type (Id)));
6395       Set_Flag272 (Id, V);
6396    end Set_SSO_Set_Low_By_Default;
6397 
6398    procedure Set_Static_Discrete_Predicate (Id : E; V : S) is
6399    begin
6400       pragma Assert (Is_Discrete_Type (Id) and then Has_Predicates (Id));
6401       Set_List25 (Id, V);
6402    end Set_Static_Discrete_Predicate;
6403 
6404    procedure Set_Static_Real_Or_String_Predicate (Id : E; V : N) is
6405    begin
6406       pragma Assert ((Is_Real_Type (Id) or else Is_String_Type (Id))
6407                       and then Has_Predicates (Id));
6408       Set_Node25 (Id, V);
6409    end Set_Static_Real_Or_String_Predicate;
6410 
6411    procedure Set_Status_Flag_Or_Transient_Decl (Id : E; V : E) is
6412    begin
6413       pragma Assert (Ekind_In (Id, E_Constant, E_Variable));
6414       Set_Node15 (Id, V);
6415    end Set_Status_Flag_Or_Transient_Decl;
6416 
6417    procedure Set_Storage_Size_Variable (Id : E; V : E) is
6418    begin
6419       pragma Assert (Is_Access_Type (Id) or else Is_Task_Type (Id));
6420       pragma Assert (Id = Base_Type (Id));
6421       Set_Node26 (Id, V);
6422    end Set_Storage_Size_Variable;
6423 
6424    procedure Set_Static_Elaboration_Desired (Id : E; V : B) is
6425    begin
6426       pragma Assert (Ekind (Id) = E_Package);
6427       Set_Flag77 (Id, V);
6428    end Set_Static_Elaboration_Desired;
6429 
6430    procedure Set_Static_Initialization (Id : E; V : N) is
6431    begin
6432       pragma Assert
6433         (Ekind (Id) = E_Procedure and then not Is_Dispatching_Operation (Id));
6434       Set_Node30 (Id, V);
6435    end Set_Static_Initialization;
6436 
6437    procedure Set_Stored_Constraint (Id : E; V : L) is
6438    begin
6439       pragma Assert (Nkind (Id) in N_Entity);
6440       Set_Elist23 (Id, V);
6441    end Set_Stored_Constraint;
6442 
6443    procedure Set_Stores_Attribute_Old_Prefix (Id : E; V : B := True) is
6444    begin
6445       pragma Assert (Ekind (Id) = E_Constant);
6446       Set_Flag270 (Id, V);
6447    end Set_Stores_Attribute_Old_Prefix;
6448 
6449    procedure Set_Strict_Alignment (Id : E; V : B := True) is
6450    begin
6451       pragma Assert (Id = Base_Type (Id));
6452       Set_Flag145 (Id, V);
6453    end Set_Strict_Alignment;
6454 
6455    procedure Set_String_Literal_Length (Id : E; V : U) is
6456    begin
6457       pragma Assert (Ekind (Id) = E_String_Literal_Subtype);
6458       Set_Uint16 (Id, V);
6459    end Set_String_Literal_Length;
6460 
6461    procedure Set_String_Literal_Low_Bound (Id : E; V : N) is
6462    begin
6463       pragma Assert (Ekind (Id) = E_String_Literal_Subtype);
6464       Set_Node18 (Id, V);
6465    end Set_String_Literal_Low_Bound;
6466 
6467    procedure Set_Subprograms_For_Type (Id : E; V : L) is
6468    begin
6469       pragma Assert (Is_Type (Id));
6470       Set_Elist29 (Id, V);
6471    end Set_Subprograms_For_Type;
6472 
6473    procedure Set_Subps_Index (Id : E; V : U) is
6474    begin
6475       pragma Assert (Is_Subprogram (Id));
6476       Set_Uint24 (Id, V);
6477    end Set_Subps_Index;
6478 
6479    procedure Set_Suppress_Elaboration_Warnings (Id : E; V : B := True) is
6480    begin
6481       Set_Flag148 (Id, V);
6482    end Set_Suppress_Elaboration_Warnings;
6483 
6484    procedure Set_Suppress_Initialization (Id : E; V : B := True) is
6485    begin
6486       pragma Assert (Is_Type (Id) or else Ekind (Id) = E_Variable);
6487       Set_Flag105 (Id, V);
6488    end Set_Suppress_Initialization;
6489 
6490    procedure Set_Suppress_Style_Checks (Id : E; V : B := True) is
6491    begin
6492       Set_Flag165 (Id, V);
6493    end Set_Suppress_Style_Checks;
6494 
6495    procedure Set_Suppress_Value_Tracking_On_Call (Id : E; V : B := True) is
6496    begin
6497       Set_Flag217 (Id, V);
6498    end Set_Suppress_Value_Tracking_On_Call;
6499 
6500    procedure Set_Task_Body_Procedure (Id : E; V : N) is
6501    begin
6502       pragma Assert (Ekind (Id) in Task_Kind);
6503       Set_Node25 (Id, V);
6504    end Set_Task_Body_Procedure;
6505 
6506    procedure Set_Thunk_Entity (Id : E; V : E) is
6507    begin
6508       pragma Assert (Ekind_In (Id, E_Function, E_Procedure)
6509                        and then Is_Thunk (Id));
6510       Set_Node31 (Id, V);
6511    end Set_Thunk_Entity;
6512 
6513    procedure Set_Treat_As_Volatile (Id : E; V : B := True) is
6514    begin
6515       Set_Flag41 (Id, V);
6516    end Set_Treat_As_Volatile;
6517 
6518    procedure Set_Underlying_Full_View (Id : E; V : E) is
6519    begin
6520       pragma Assert (Ekind (Id) in Private_Kind);
6521       Set_Node19 (Id, V);
6522    end Set_Underlying_Full_View;
6523 
6524    procedure Set_Underlying_Record_View (Id : E; V : E) is
6525    begin
6526       pragma Assert (Ekind (Id) = E_Record_Type);
6527       Set_Node28 (Id, V);
6528    end Set_Underlying_Record_View;
6529 
6530    procedure Set_Universal_Aliasing (Id : E; V : B := True) is
6531    begin
6532       pragma Assert (Is_Type (Id) and then Is_Base_Type (Id));
6533       Set_Flag216 (Id, V);
6534    end Set_Universal_Aliasing;
6535 
6536    procedure Set_Unset_Reference (Id : E; V : N) is
6537    begin
6538       Set_Node16 (Id, V);
6539    end Set_Unset_Reference;
6540 
6541    procedure Set_Used_As_Generic_Actual (Id : E; V : B := True) is
6542    begin
6543       Set_Flag222 (Id, V);
6544    end Set_Used_As_Generic_Actual;
6545 
6546    procedure Set_Uses_Lock_Free (Id : E; V : B := True) is
6547    begin
6548       pragma Assert (Ekind (Id) = E_Protected_Type);
6549       Set_Flag188 (Id, V);
6550    end Set_Uses_Lock_Free;
6551 
6552    procedure Set_Uses_Sec_Stack (Id : E; V : B := True) is
6553    begin
6554       Set_Flag95 (Id, V);
6555    end Set_Uses_Sec_Stack;
6556 
6557    procedure Set_Warnings_Off (Id : E; V : B := True) is
6558    begin
6559       Set_Flag96 (Id, V);
6560    end Set_Warnings_Off;
6561 
6562    procedure Set_Warnings_Off_Used (Id : E; V : B := True) is
6563    begin
6564       Set_Flag236 (Id, V);
6565    end Set_Warnings_Off_Used;
6566 
6567    procedure Set_Warnings_Off_Used_Unmodified (Id : E; V : B := True) is
6568    begin
6569       Set_Flag237 (Id, V);
6570    end Set_Warnings_Off_Used_Unmodified;
6571 
6572    procedure Set_Warnings_Off_Used_Unreferenced (Id : E; V : B := True) is
6573    begin
6574       Set_Flag238 (Id, V);
6575    end Set_Warnings_Off_Used_Unreferenced;
6576 
6577    procedure Set_Was_Hidden (Id : E; V : B := True) is
6578    begin
6579       Set_Flag196 (Id, V);
6580    end Set_Was_Hidden;
6581 
6582    procedure Set_Wrapped_Entity (Id : E; V : E) is
6583    begin
6584       pragma Assert (Ekind_In (Id, E_Function, E_Procedure)
6585                        and then Is_Primitive_Wrapper (Id));
6586       Set_Node27 (Id, V);
6587    end Set_Wrapped_Entity;
6588 
6589    -----------------------------------
6590    -- Field Initialization Routines --
6591    -----------------------------------
6592 
6593    procedure Init_Alignment (Id : E) is
6594    begin
6595       Set_Uint14 (Id, Uint_0);
6596    end Init_Alignment;
6597 
6598    procedure Init_Alignment (Id : E; V : Int) is
6599    begin
6600       Set_Uint14 (Id, UI_From_Int (V));
6601    end Init_Alignment;
6602 
6603    procedure Init_Component_Bit_Offset (Id : E) is
6604    begin
6605       Set_Uint11 (Id, No_Uint);
6606    end Init_Component_Bit_Offset;
6607 
6608    procedure Init_Component_Bit_Offset (Id : E; V : Int) is
6609    begin
6610       Set_Uint11 (Id, UI_From_Int (V));
6611    end Init_Component_Bit_Offset;
6612 
6613    procedure Init_Component_Size (Id : E) is
6614    begin
6615       Set_Uint22 (Id, Uint_0);
6616    end Init_Component_Size;
6617 
6618    procedure Init_Component_Size (Id : E; V : Int) is
6619    begin
6620       Set_Uint22 (Id, UI_From_Int (V));
6621    end Init_Component_Size;
6622 
6623    procedure Init_Digits_Value (Id : E) is
6624    begin
6625       Set_Uint17 (Id, Uint_0);
6626    end Init_Digits_Value;
6627 
6628    procedure Init_Digits_Value (Id : E; V : Int) is
6629    begin
6630       Set_Uint17 (Id, UI_From_Int (V));
6631    end Init_Digits_Value;
6632 
6633    procedure Init_Esize (Id : E) is
6634    begin
6635       Set_Uint12 (Id, Uint_0);
6636    end Init_Esize;
6637 
6638    procedure Init_Esize (Id : E; V : Int) is
6639    begin
6640       Set_Uint12 (Id, UI_From_Int (V));
6641    end Init_Esize;
6642 
6643    procedure Init_Normalized_First_Bit (Id : E) is
6644    begin
6645       Set_Uint8 (Id, No_Uint);
6646    end Init_Normalized_First_Bit;
6647 
6648    procedure Init_Normalized_First_Bit (Id : E; V : Int) is
6649    begin
6650       Set_Uint8 (Id, UI_From_Int (V));
6651    end Init_Normalized_First_Bit;
6652 
6653    procedure Init_Normalized_Position (Id : E) is
6654    begin
6655       Set_Uint14 (Id, No_Uint);
6656    end Init_Normalized_Position;
6657 
6658    procedure Init_Normalized_Position (Id : E; V : Int) is
6659    begin
6660       Set_Uint14 (Id, UI_From_Int (V));
6661    end Init_Normalized_Position;
6662 
6663    procedure Init_Normalized_Position_Max (Id : E) is
6664    begin
6665       Set_Uint10 (Id, No_Uint);
6666    end Init_Normalized_Position_Max;
6667 
6668    procedure Init_Normalized_Position_Max (Id : E; V : Int) is
6669    begin
6670       Set_Uint10 (Id, UI_From_Int (V));
6671    end Init_Normalized_Position_Max;
6672 
6673    procedure Init_RM_Size (Id : E) is
6674    begin
6675       Set_Uint13 (Id, Uint_0);
6676    end Init_RM_Size;
6677 
6678    procedure Init_RM_Size (Id : E; V : Int) is
6679    begin
6680       Set_Uint13 (Id, UI_From_Int (V));
6681    end Init_RM_Size;
6682 
6683    -----------------------------
6684    -- Init_Component_Location --
6685    -----------------------------
6686 
6687    procedure Init_Component_Location (Id : E) is
6688    begin
6689       Set_Uint8  (Id, No_Uint);  -- Normalized_First_Bit
6690       Set_Uint10 (Id, No_Uint);  -- Normalized_Position_Max
6691       Set_Uint11 (Id, No_Uint);  -- Component_Bit_Offset
6692       Set_Uint12 (Id, Uint_0);   -- Esize
6693       Set_Uint14 (Id, No_Uint);  -- Normalized_Position
6694    end Init_Component_Location;
6695 
6696    ----------------------------
6697    -- Init_Object_Size_Align --
6698    ----------------------------
6699 
6700    procedure Init_Object_Size_Align (Id : E) is
6701    begin
6702       Set_Uint12 (Id, Uint_0);  -- Esize
6703       Set_Uint14 (Id, Uint_0);  -- Alignment
6704    end Init_Object_Size_Align;
6705 
6706    ---------------
6707    -- Init_Size --
6708    ---------------
6709 
6710    procedure Init_Size (Id : E; V : Int) is
6711    begin
6712       pragma Assert (not Is_Object (Id));
6713       Set_Uint12 (Id, UI_From_Int (V));  -- Esize
6714       Set_Uint13 (Id, UI_From_Int (V));  -- RM_Size
6715    end Init_Size;
6716 
6717    ---------------------
6718    -- Init_Size_Align --
6719    ---------------------
6720 
6721    procedure Init_Size_Align (Id : E) is
6722    begin
6723       pragma Assert (not Is_Object (Id));
6724       Set_Uint12 (Id, Uint_0);  -- Esize
6725       Set_Uint13 (Id, Uint_0);  -- RM_Size
6726       Set_Uint14 (Id, Uint_0);  -- Alignment
6727    end Init_Size_Align;
6728 
6729    ----------------------------------------------
6730    -- Type Representation Attribute Predicates --
6731    ----------------------------------------------
6732 
6733    function Known_Alignment                       (E : Entity_Id) return B is
6734    begin
6735       return Uint14 (E) /= Uint_0
6736         and then Uint14 (E) /= No_Uint;
6737    end Known_Alignment;
6738 
6739    function Known_Component_Bit_Offset            (E : Entity_Id) return B is
6740    begin
6741       return Uint11 (E) /= No_Uint;
6742    end Known_Component_Bit_Offset;
6743 
6744    function Known_Component_Size                  (E : Entity_Id) return B is
6745    begin
6746       return Uint22 (Base_Type (E)) /= Uint_0
6747         and then Uint22 (Base_Type (E)) /= No_Uint;
6748    end Known_Component_Size;
6749 
6750    function Known_Esize                           (E : Entity_Id) return B is
6751    begin
6752       return Uint12 (E) /= Uint_0
6753         and then Uint12 (E) /= No_Uint;
6754    end Known_Esize;
6755 
6756    function Known_Normalized_First_Bit            (E : Entity_Id) return B is
6757    begin
6758       return Uint8 (E) /= No_Uint;
6759    end Known_Normalized_First_Bit;
6760 
6761    function Known_Normalized_Position             (E : Entity_Id) return B is
6762    begin
6763       return Uint14 (E) /= No_Uint;
6764    end Known_Normalized_Position;
6765 
6766    function Known_Normalized_Position_Max         (E : Entity_Id) return B is
6767    begin
6768       return Uint10 (E) /= No_Uint;
6769    end Known_Normalized_Position_Max;
6770 
6771    function Known_RM_Size                         (E : Entity_Id) return B is
6772    begin
6773       return Uint13 (E) /= No_Uint
6774         and then (Uint13 (E) /= Uint_0
6775                     or else Is_Discrete_Type (E)
6776                     or else Is_Fixed_Point_Type (E));
6777    end Known_RM_Size;
6778 
6779    function Known_Static_Component_Bit_Offset     (E : Entity_Id) return B is
6780    begin
6781       return Uint11 (E) /= No_Uint
6782         and then Uint11 (E) >= Uint_0;
6783    end Known_Static_Component_Bit_Offset;
6784 
6785    function Known_Static_Component_Size           (E : Entity_Id) return B is
6786    begin
6787       return Uint22 (Base_Type (E)) > Uint_0;
6788    end Known_Static_Component_Size;
6789 
6790    function Known_Static_Esize                    (E : Entity_Id) return B is
6791    begin
6792       return Uint12 (E) > Uint_0
6793         and then not Is_Generic_Type (E);
6794    end Known_Static_Esize;
6795 
6796    function Known_Static_Normalized_First_Bit     (E : Entity_Id) return B is
6797    begin
6798       return Uint8 (E) /= No_Uint
6799         and then Uint8 (E) >= Uint_0;
6800    end Known_Static_Normalized_First_Bit;
6801 
6802    function Known_Static_Normalized_Position      (E : Entity_Id) return B is
6803    begin
6804       return Uint14 (E) /= No_Uint
6805         and then Uint14 (E) >= Uint_0;
6806    end Known_Static_Normalized_Position;
6807 
6808    function Known_Static_Normalized_Position_Max  (E : Entity_Id) return B is
6809    begin
6810       return Uint10 (E) /= No_Uint
6811         and then Uint10 (E) >= Uint_0;
6812    end Known_Static_Normalized_Position_Max;
6813 
6814    function Known_Static_RM_Size                  (E : Entity_Id) return B is
6815    begin
6816       return (Uint13 (E) > Uint_0
6817                 or else Is_Discrete_Type (E)
6818                 or else Is_Fixed_Point_Type (E))
6819         and then not Is_Generic_Type (E);
6820    end Known_Static_RM_Size;
6821 
6822    function Unknown_Alignment                     (E : Entity_Id) return B is
6823    begin
6824       return Uint14 (E) = Uint_0
6825         or else Uint14 (E) = No_Uint;
6826    end Unknown_Alignment;
6827 
6828    function Unknown_Component_Bit_Offset          (E : Entity_Id) return B is
6829    begin
6830       return Uint11 (E) = No_Uint;
6831    end Unknown_Component_Bit_Offset;
6832 
6833    function Unknown_Component_Size                (E : Entity_Id) return B is
6834    begin
6835       return Uint22 (Base_Type (E)) = Uint_0
6836                or else
6837              Uint22 (Base_Type (E)) = No_Uint;
6838    end Unknown_Component_Size;
6839 
6840    function Unknown_Esize                         (E : Entity_Id) return B is
6841    begin
6842       return Uint12 (E) = No_Uint
6843                or else
6844              Uint12 (E) = Uint_0;
6845    end Unknown_Esize;
6846 
6847    function Unknown_Normalized_First_Bit          (E : Entity_Id) return B is
6848    begin
6849       return Uint8 (E) = No_Uint;
6850    end Unknown_Normalized_First_Bit;
6851 
6852    function Unknown_Normalized_Position           (E : Entity_Id) return B is
6853    begin
6854       return Uint14 (E) = No_Uint;
6855    end Unknown_Normalized_Position;
6856 
6857    function Unknown_Normalized_Position_Max       (E : Entity_Id) return B is
6858    begin
6859       return Uint10 (E) = No_Uint;
6860    end Unknown_Normalized_Position_Max;
6861 
6862    function Unknown_RM_Size                       (E : Entity_Id) return B is
6863    begin
6864       return (Uint13 (E) = Uint_0
6865                 and then not Is_Discrete_Type (E)
6866                 and then not Is_Fixed_Point_Type (E))
6867         or else Uint13 (E) = No_Uint;
6868    end Unknown_RM_Size;
6869 
6870    --------------------
6871    -- Address_Clause --
6872    --------------------
6873 
6874    function Address_Clause (Id : E) return N is
6875    begin
6876       return Get_Attribute_Definition_Clause (Id, Attribute_Address);
6877    end Address_Clause;
6878 
6879    ---------------
6880    -- Aft_Value --
6881    ---------------
6882 
6883    function Aft_Value (Id : E) return U is
6884       Result    : Nat := 1;
6885       Delta_Val : Ureal := Delta_Value (Id);
6886    begin
6887       while Delta_Val < Ureal_Tenth loop
6888          Delta_Val := Delta_Val * Ureal_10;
6889          Result := Result + 1;
6890       end loop;
6891 
6892       return UI_From_Int (Result);
6893    end Aft_Value;
6894 
6895    ----------------------
6896    -- Alignment_Clause --
6897    ----------------------
6898 
6899    function Alignment_Clause (Id : E) return N is
6900    begin
6901       return Get_Attribute_Definition_Clause (Id, Attribute_Alignment);
6902    end Alignment_Clause;
6903 
6904    -------------------
6905    -- Append_Entity --
6906    -------------------
6907 
6908    procedure Append_Entity (Id : Entity_Id; V : Entity_Id) is
6909    begin
6910       if Last_Entity (V) = Empty then
6911          Set_First_Entity (Id => V, V => Id);
6912       else
6913          Set_Next_Entity (Last_Entity (V), Id);
6914       end if;
6915 
6916       Set_Next_Entity (Id, Empty);
6917       Set_Scope (Id, V);
6918       Set_Last_Entity (Id => V, V => Id);
6919    end Append_Entity;
6920 
6921    ---------------
6922    -- Base_Type --
6923    ---------------
6924 
6925    function Base_Type (Id : E) return E is
6926    begin
6927       if Is_Base_Type (Id) then
6928          return Id;
6929       else
6930          pragma Assert (Is_Type (Id));
6931          return Etype (Id);
6932       end if;
6933    end Base_Type;
6934 
6935    -------------------------
6936    -- Component_Alignment --
6937    -------------------------
6938 
6939    --  Component Alignment is encoded using two flags, Flag128/129 as
6940    --  follows. Note that both flags False = Align_Default, so that the
6941    --  default initialization of flags to False initializes component
6942    --  alignment to the default value as required.
6943 
6944    --     Flag128      Flag129      Value
6945    --     -------      -------      -----
6946    --      False        False       Calign_Default
6947    --      False        True        Calign_Component_Size
6948    --      True         False       Calign_Component_Size_4
6949    --      True         True        Calign_Storage_Unit
6950 
6951    function Component_Alignment (Id : E) return C is
6952       BT : constant Node_Id := Base_Type (Id);
6953 
6954    begin
6955       pragma Assert (Is_Array_Type (Id) or else Is_Record_Type (Id));
6956 
6957       if Flag128 (BT) then
6958          if Flag129 (BT) then
6959             return Calign_Storage_Unit;
6960          else
6961             return Calign_Component_Size_4;
6962          end if;
6963 
6964       else
6965          if Flag129 (BT) then
6966             return Calign_Component_Size;
6967          else
6968             return Calign_Default;
6969          end if;
6970       end if;
6971    end Component_Alignment;
6972 
6973    ----------------------
6974    -- Declaration_Node --
6975    ----------------------
6976 
6977    function Declaration_Node (Id : E) return N is
6978       P : Node_Id;
6979 
6980    begin
6981       if Ekind (Id) = E_Incomplete_Type
6982         and then Present (Full_View (Id))
6983       then
6984          P := Parent (Full_View (Id));
6985       else
6986          P := Parent (Id);
6987       end if;
6988 
6989       loop
6990          if Nkind (P) /= N_Selected_Component
6991            and then Nkind (P) /= N_Expanded_Name
6992            and then
6993              not (Nkind (P) = N_Defining_Program_Unit_Name
6994                    and then Is_Child_Unit (Id))
6995          then
6996             return P;
6997          else
6998             P := Parent (P);
6999          end if;
7000       end loop;
7001    end Declaration_Node;
7002 
7003    ---------------------------------
7004    -- Default_Init_Cond_Procedure --
7005    ---------------------------------
7006 
7007    function Default_Init_Cond_Procedure (Id : E) return E is
7008       Subp_Elmt : Elmt_Id;
7009       Subp_Id   : Entity_Id;
7010       Subps     : Elist_Id;
7011 
7012    begin
7013       pragma Assert
7014         (Is_Type (Id)
7015           and then (Has_Default_Init_Cond (Id)
7016                      or else Has_Inherited_Default_Init_Cond (Id)));
7017 
7018       Subps := Subprograms_For_Type (Base_Type (Id));
7019 
7020       if Present (Subps) then
7021          Subp_Elmt := First_Elmt (Subps);
7022          while Present (Subp_Elmt) loop
7023             Subp_Id := Node (Subp_Elmt);
7024 
7025             if Is_Default_Init_Cond_Procedure (Subp_Id) then
7026                return Subp_Id;
7027             end if;
7028 
7029             Next_Elmt (Subp_Elmt);
7030          end loop;
7031       end if;
7032 
7033       return Empty;
7034    end Default_Init_Cond_Procedure;
7035 
7036    ---------------------
7037    -- Designated_Type --
7038    ---------------------
7039 
7040    function Designated_Type (Id : E) return E is
7041       Desig_Type : E;
7042 
7043    begin
7044       Desig_Type := Directly_Designated_Type (Id);
7045 
7046       if Ekind (Desig_Type) = E_Incomplete_Type
7047         and then Present (Full_View (Desig_Type))
7048       then
7049          return Full_View (Desig_Type);
7050 
7051       elsif Is_Class_Wide_Type (Desig_Type)
7052         and then Ekind (Etype (Desig_Type)) = E_Incomplete_Type
7053         and then Present (Full_View (Etype (Desig_Type)))
7054         and then Present (Class_Wide_Type (Full_View (Etype (Desig_Type))))
7055       then
7056          return Class_Wide_Type (Full_View (Etype (Desig_Type)));
7057 
7058       else
7059          return Desig_Type;
7060       end if;
7061    end Designated_Type;
7062 
7063    ----------------------
7064    -- Entry_Index_Type --
7065    ----------------------
7066 
7067    function Entry_Index_Type (Id : E) return N is
7068    begin
7069       pragma Assert (Ekind (Id) = E_Entry_Family);
7070       return Etype (Discrete_Subtype_Definition (Parent (Id)));
7071    end Entry_Index_Type;
7072 
7073    ---------------------
7074    -- First_Component --
7075    ---------------------
7076 
7077    function First_Component (Id : E) return E is
7078       Comp_Id : E;
7079 
7080    begin
7081       pragma Assert
7082         (Is_Concurrent_Type (Id)
7083           or else Is_Incomplete_Or_Private_Type (Id)
7084           or else Is_Record_Type (Id));
7085 
7086       Comp_Id := First_Entity (Id);
7087       while Present (Comp_Id) loop
7088          exit when Ekind (Comp_Id) = E_Component;
7089          Comp_Id := Next_Entity (Comp_Id);
7090       end loop;
7091 
7092       return Comp_Id;
7093    end First_Component;
7094 
7095    -------------------------------------
7096    -- First_Component_Or_Discriminant --
7097    -------------------------------------
7098 
7099    function First_Component_Or_Discriminant (Id : E) return E is
7100       Comp_Id : E;
7101 
7102    begin
7103       pragma Assert
7104         (Is_Concurrent_Type (Id)
7105           or else Is_Incomplete_Or_Private_Type (Id)
7106           or else Is_Record_Type (Id)
7107           or else Has_Discriminants (Id));
7108 
7109       Comp_Id := First_Entity (Id);
7110       while Present (Comp_Id) loop
7111          exit when Ekind_In (Comp_Id, E_Component, E_Discriminant);
7112          Comp_Id := Next_Entity (Comp_Id);
7113       end loop;
7114 
7115       return Comp_Id;
7116    end First_Component_Or_Discriminant;
7117 
7118    ------------------
7119    -- First_Formal --
7120    ------------------
7121 
7122    function First_Formal (Id : E) return E is
7123       Formal : E;
7124 
7125    begin
7126       pragma Assert
7127         (Is_Generic_Subprogram (Id)
7128            or else Is_Overloadable (Id)
7129            or else Ekind_In (Id, E_Entry_Family,
7130                                  E_Subprogram_Body,
7131                                  E_Subprogram_Type));
7132 
7133       if Ekind (Id) = E_Enumeration_Literal then
7134          return Empty;
7135 
7136       else
7137          Formal := First_Entity (Id);
7138 
7139          --  Deal with the common, non-generic case first
7140 
7141          if No (Formal) or else Is_Formal (Formal) then
7142             return Formal;
7143          end if;
7144 
7145          --  The first/next entity chain of a generic subprogram contains all
7146          --  generic formal parameters, followed by the formal parameters.
7147 
7148          if Is_Generic_Subprogram (Id) then
7149             while Present (Formal) and then not Is_Formal (Formal) loop
7150                Next_Entity (Formal);
7151             end loop;
7152             return Formal;
7153          else
7154             return Empty;
7155          end if;
7156       end if;
7157    end First_Formal;
7158 
7159    ------------------------------
7160    -- First_Formal_With_Extras --
7161    ------------------------------
7162 
7163    function First_Formal_With_Extras (Id : E) return E is
7164       Formal : E;
7165 
7166    begin
7167       pragma Assert
7168         (Is_Generic_Subprogram (Id)
7169            or else Is_Overloadable (Id)
7170            or else Ekind_In (Id, E_Entry_Family,
7171                                  E_Subprogram_Body,
7172                                  E_Subprogram_Type));
7173 
7174       if Ekind (Id) = E_Enumeration_Literal then
7175          return Empty;
7176 
7177       else
7178          Formal := First_Entity (Id);
7179 
7180          --  The first/next entity chain of a generic subprogram contains all
7181          --  generic formal parameters, followed by the formal parameters. Go
7182          --  directly to the parameters by skipping the formal part.
7183 
7184          if Is_Generic_Subprogram (Id) then
7185             while Present (Formal) and then not Is_Formal (Formal) loop
7186                Next_Entity (Formal);
7187             end loop;
7188          end if;
7189 
7190          if Present (Formal) and then Is_Formal (Formal) then
7191             return Formal;
7192          else
7193             return Extra_Formals (Id);  -- Empty if no extra formals
7194          end if;
7195       end if;
7196    end First_Formal_With_Extras;
7197 
7198    -------------------------------------
7199    -- Get_Attribute_Definition_Clause --
7200    -------------------------------------
7201 
7202    function Get_Attribute_Definition_Clause
7203      (E  : Entity_Id;
7204       Id : Attribute_Id) return Node_Id
7205    is
7206       N : Node_Id;
7207 
7208    begin
7209       N := First_Rep_Item (E);
7210       while Present (N) loop
7211          if Nkind (N) = N_Attribute_Definition_Clause
7212            and then Get_Attribute_Id (Chars (N)) = Id
7213          then
7214             return N;
7215          else
7216             Next_Rep_Item (N);
7217          end if;
7218       end loop;
7219 
7220       return Empty;
7221    end Get_Attribute_Definition_Clause;
7222 
7223    -------------------
7224    -- Get_Full_View --
7225    -------------------
7226 
7227    function Get_Full_View (T : Entity_Id) return Entity_Id is
7228    begin
7229       if Ekind (T) = E_Incomplete_Type and then Present (Full_View (T)) then
7230          return Full_View (T);
7231 
7232       elsif Is_Class_Wide_Type (T)
7233         and then Ekind (Root_Type (T)) = E_Incomplete_Type
7234         and then Present (Full_View (Root_Type (T)))
7235       then
7236          return Class_Wide_Type (Full_View (Root_Type (T)));
7237 
7238       else
7239          return T;
7240       end if;
7241    end Get_Full_View;
7242 
7243    ----------------
7244    -- Get_Pragma --
7245    ----------------
7246 
7247    function Get_Pragma (E : Entity_Id; Id : Pragma_Id) return Node_Id is
7248 
7249       --  Classification pragmas
7250 
7251       Is_CLS : constant Boolean :=
7252                  Id = Pragma_Abstract_State             or else
7253                  Id = Pragma_Attach_Handler             or else
7254                  Id = Pragma_Async_Readers              or else
7255                  Id = Pragma_Async_Writers              or else
7256                  Id = Pragma_Constant_After_Elaboration or else
7257                  Id = Pragma_Depends                    or else
7258                  Id = Pragma_Effective_Reads            or else
7259                  Id = Pragma_Effective_Writes           or else
7260                  Id = Pragma_Extensions_Visible         or else
7261                  Id = Pragma_Global                     or else
7262                  Id = Pragma_Initial_Condition          or else
7263                  Id = Pragma_Initializes                or else
7264                  Id = Pragma_Interrupt_Handler          or else
7265                  Id = Pragma_Part_Of                    or else
7266                  Id = Pragma_Refined_Depends            or else
7267                  Id = Pragma_Refined_Global             or else
7268                  Id = Pragma_Refined_State              or else
7269                  Id = Pragma_Volatile_Function;
7270 
7271       --  Contract / test case pragmas
7272 
7273       Is_CTC : constant Boolean :=
7274                   Id = Pragma_Contract_Cases            or else
7275                   Id = Pragma_Test_Case;
7276 
7277       --  Pre / postcondition pragmas
7278 
7279       Is_PPC : constant Boolean :=
7280                   Id = Pragma_Precondition              or else
7281                   Id = Pragma_Postcondition             or else
7282                   Id = Pragma_Refined_Post;
7283 
7284       In_Contract : constant Boolean := Is_CLS or Is_CTC or Is_PPC;
7285 
7286       Item  : Node_Id;
7287       Items : Node_Id;
7288 
7289    begin
7290       --  Handle pragmas that appear in N_Contract nodes. Those have to be
7291       --  extracted from their specialized list.
7292 
7293       if In_Contract then
7294          Items := Contract (E);
7295 
7296          if No (Items) then
7297             return Empty;
7298 
7299          elsif Is_CLS then
7300             Item := Classifications (Items);
7301 
7302          elsif Is_CTC then
7303             Item := Contract_Test_Cases (Items);
7304 
7305          else
7306             Item := Pre_Post_Conditions (Items);
7307          end if;
7308 
7309       --  Regular pragmas
7310 
7311       else
7312          Item := First_Rep_Item (E);
7313       end if;
7314 
7315       while Present (Item) loop
7316          if Nkind (Item) = N_Pragma
7317            and then Get_Pragma_Id (Pragma_Name (Item)) = Id
7318          then
7319             return Item;
7320 
7321          --  All nodes in N_Contract are chained using Next_Pragma
7322 
7323          elsif In_Contract then
7324             Item := Next_Pragma (Item);
7325 
7326          --  Regular pragmas
7327 
7328          else
7329             Next_Rep_Item (Item);
7330          end if;
7331       end loop;
7332 
7333       return Empty;
7334    end Get_Pragma;
7335 
7336    --------------------------------------
7337    -- Get_Record_Representation_Clause --
7338    --------------------------------------
7339 
7340    function Get_Record_Representation_Clause (E : Entity_Id) return Node_Id is
7341       N : Node_Id;
7342 
7343    begin
7344       N := First_Rep_Item (E);
7345       while Present (N) loop
7346          if Nkind (N) = N_Record_Representation_Clause then
7347             return N;
7348          end if;
7349 
7350          Next_Rep_Item (N);
7351       end loop;
7352 
7353       return Empty;
7354    end Get_Record_Representation_Clause;
7355 
7356    ------------------------
7357    -- Has_Attach_Handler --
7358    ------------------------
7359 
7360    function Has_Attach_Handler (Id : E) return B is
7361       Ritem : Node_Id;
7362 
7363    begin
7364       pragma Assert (Is_Protected_Type (Id));
7365 
7366       Ritem := First_Rep_Item (Id);
7367       while Present (Ritem) loop
7368          if Nkind (Ritem) = N_Pragma
7369            and then Pragma_Name (Ritem) = Name_Attach_Handler
7370          then
7371             return True;
7372          else
7373             Next_Rep_Item (Ritem);
7374          end if;
7375       end loop;
7376 
7377       return False;
7378    end Has_Attach_Handler;
7379 
7380    -----------------
7381    -- Has_Entries --
7382    -----------------
7383 
7384    function Has_Entries (Id : E) return B is
7385       Ent : Entity_Id;
7386 
7387    begin
7388       pragma Assert (Is_Concurrent_Type (Id));
7389 
7390       Ent := First_Entity (Id);
7391       while Present (Ent) loop
7392          if Is_Entry (Ent) then
7393             return True;
7394          end if;
7395 
7396          Ent := Next_Entity (Ent);
7397       end loop;
7398 
7399       return False;
7400    end Has_Entries;
7401 
7402    ----------------------------
7403    -- Has_Foreign_Convention --
7404    ----------------------------
7405 
7406    function Has_Foreign_Convention (Id : E) return B is
7407    begin
7408       --  While regular Intrinsics such as the Standard operators fit in the
7409       --  "Ada" convention, those with an Interface_Name materialize GCC
7410       --  builtin imports for which Ada special treatments shouldn't apply.
7411 
7412       return Convention (Id) in Foreign_Convention
7413         or else (Convention (Id) = Convention_Intrinsic
7414                    and then Present (Interface_Name (Id)));
7415    end Has_Foreign_Convention;
7416 
7417    ---------------------------
7418    -- Has_Interrupt_Handler --
7419    ---------------------------
7420 
7421    function Has_Interrupt_Handler (Id : E) return B is
7422       Ritem : Node_Id;
7423 
7424    begin
7425       pragma Assert (Is_Protected_Type (Id));
7426 
7427       Ritem := First_Rep_Item (Id);
7428       while Present (Ritem) loop
7429          if Nkind (Ritem) = N_Pragma
7430            and then Pragma_Name (Ritem) = Name_Interrupt_Handler
7431          then
7432             return True;
7433          else
7434             Next_Rep_Item (Ritem);
7435          end if;
7436       end loop;
7437 
7438       return False;
7439    end Has_Interrupt_Handler;
7440 
7441    --------------------
7442    -- Has_Invariants --
7443    --------------------
7444 
7445    function Has_Invariants (Id : E) return B is
7446    begin
7447       return Has_Own_Invariants (Id) or else Has_Inherited_Invariants (Id);
7448    end Has_Invariants;
7449 
7450    --------------------------
7451    -- Has_Non_Limited_View --
7452    --------------------------
7453 
7454    function Has_Non_Limited_View (Id : E) return B is
7455    begin
7456       return (Ekind (Id) in Incomplete_Kind
7457                or else Ekind (Id) in Class_Wide_Kind
7458                or else Ekind (Id) = E_Abstract_State)
7459         and then Present (Non_Limited_View (Id));
7460    end Has_Non_Limited_View;
7461 
7462    ---------------------------------
7463    -- Has_Non_Null_Abstract_State --
7464    ---------------------------------
7465 
7466    function Has_Non_Null_Abstract_State (Id : E) return B is
7467    begin
7468       pragma Assert (Ekind_In (Id, E_Generic_Package, E_Package));
7469 
7470       return
7471         Present (Abstract_States (Id))
7472           and then
7473             not Is_Null_State (Node (First_Elmt (Abstract_States (Id))));
7474    end Has_Non_Null_Abstract_State;
7475 
7476    -------------------------------------
7477    -- Has_Non_Null_Visible_Refinement --
7478    -------------------------------------
7479 
7480    function Has_Non_Null_Visible_Refinement (Id : E) return B is
7481       Constits : Elist_Id;
7482 
7483    begin
7484       --  "Refinement" is a concept applicable only to abstract states
7485 
7486       pragma Assert (Ekind (Id) = E_Abstract_State);
7487       Constits := Refinement_Constituents (Id);
7488 
7489       --  For a refinement to be non-null, the first constituent must be
7490       --  anything other than null.
7491 
7492       return
7493         Has_Visible_Refinement (Id)
7494           and then Present (Constits)
7495           and then Nkind (Node (First_Elmt (Constits))) /= N_Null;
7496    end Has_Non_Null_Visible_Refinement;
7497 
7498    -----------------------------
7499    -- Has_Null_Abstract_State --
7500    -----------------------------
7501 
7502    function Has_Null_Abstract_State (Id : E) return B is
7503    begin
7504       pragma Assert (Ekind_In (Id, E_Generic_Package, E_Package));
7505 
7506       return
7507         Present (Abstract_States (Id))
7508           and then Is_Null_State (Node (First_Elmt (Abstract_States (Id))));
7509    end Has_Null_Abstract_State;
7510 
7511    ---------------------------------
7512    -- Has_Null_Visible_Refinement --
7513    ---------------------------------
7514 
7515    function Has_Null_Visible_Refinement (Id : E) return B is
7516       Constits : Elist_Id;
7517 
7518    begin
7519       --  "Refinement" is a concept applicable only to abstract states
7520 
7521       pragma Assert (Ekind (Id) = E_Abstract_State);
7522       Constits := Refinement_Constituents (Id);
7523 
7524       --  For a refinement to be null, the state's sole constituent must be a
7525       --  null.
7526 
7527       return
7528         Has_Visible_Refinement (Id)
7529           and then Present (Constits)
7530           and then Nkind (Node (First_Elmt (Constits))) = N_Null;
7531    end Has_Null_Visible_Refinement;
7532 
7533    --------------------
7534    -- Has_Unmodified --
7535    --------------------
7536 
7537    function Has_Unmodified (E : Entity_Id) return Boolean is
7538    begin
7539       if Has_Pragma_Unmodified (E) then
7540          return True;
7541       elsif Warnings_Off (E) then
7542          Set_Warnings_Off_Used_Unmodified (E);
7543          return True;
7544       else
7545          return False;
7546       end if;
7547    end Has_Unmodified;
7548 
7549    ---------------------
7550    -- Has_Unreferenced --
7551    ---------------------
7552 
7553    function Has_Unreferenced (E : Entity_Id) return Boolean is
7554    begin
7555       if Has_Pragma_Unreferenced (E) then
7556          return True;
7557       elsif Warnings_Off (E) then
7558          Set_Warnings_Off_Used_Unreferenced (E);
7559          return True;
7560       else
7561          return False;
7562       end if;
7563    end Has_Unreferenced;
7564 
7565    ----------------------
7566    -- Has_Warnings_Off --
7567    ----------------------
7568 
7569    function Has_Warnings_Off (E : Entity_Id) return Boolean is
7570    begin
7571       if Warnings_Off (E) then
7572          Set_Warnings_Off_Used (E);
7573          return True;
7574       else
7575          return False;
7576       end if;
7577    end Has_Warnings_Off;
7578 
7579    ------------------------------
7580    -- Implementation_Base_Type --
7581    ------------------------------
7582 
7583    function Implementation_Base_Type (Id : E) return E is
7584       Bastyp : Entity_Id;
7585       Imptyp : Entity_Id;
7586 
7587    begin
7588       Bastyp := Base_Type (Id);
7589 
7590       if Is_Incomplete_Or_Private_Type (Bastyp) then
7591          Imptyp := Underlying_Type (Bastyp);
7592 
7593          --  If we have an implementation type, then just return it,
7594          --  otherwise we return the Base_Type anyway. This can only
7595          --  happen in error situations and should avoid some error bombs.
7596 
7597          if Present (Imptyp) then
7598             return Base_Type (Imptyp);
7599          else
7600             return Bastyp;
7601          end if;
7602 
7603       else
7604          return Bastyp;
7605       end if;
7606    end Implementation_Base_Type;
7607 
7608    -------------------------
7609    -- Invariant_Procedure --
7610    -------------------------
7611 
7612    function Invariant_Procedure (Id : E) return E is
7613       Subp_Elmt : Elmt_Id;
7614       Subp_Id   : Entity_Id;
7615       Subps     : Elist_Id;
7616 
7617    begin
7618       pragma Assert (Is_Type (Id));
7619 
7620       Subps := Subprograms_For_Type (Id);
7621 
7622       if Present (Subps) then
7623          Subp_Elmt := First_Elmt (Subps);
7624          while Present (Subp_Elmt) loop
7625             Subp_Id := Node (Subp_Elmt);
7626 
7627             if Is_Invariant_Procedure (Subp_Id) then
7628                return Subp_Id;
7629             end if;
7630 
7631             Next_Elmt (Subp_Elmt);
7632          end loop;
7633       end if;
7634 
7635       return Empty;
7636    end Invariant_Procedure;
7637 
7638    ----------------------
7639    -- Is_Atomic_Or_VFA --
7640    ----------------------
7641 
7642    function Is_Atomic_Or_VFA (Id : E) return B is
7643    begin
7644       return Is_Atomic (Id) or else Is_Volatile_Full_Access (Id);
7645    end Is_Atomic_Or_VFA;
7646 
7647    ------------------
7648    -- Is_Base_Type --
7649    ------------------
7650 
7651    --  Global flag table allowing rapid computation of this function
7652 
7653    Entity_Is_Base_Type : constant array (Entity_Kind) of Boolean :=
7654      (E_Enumeration_Subtype          |
7655       E_Incomplete_Type              |
7656       E_Signed_Integer_Subtype       |
7657       E_Modular_Integer_Subtype      |
7658       E_Floating_Point_Subtype       |
7659       E_Ordinary_Fixed_Point_Subtype |
7660       E_Decimal_Fixed_Point_Subtype  |
7661       E_Array_Subtype                |
7662       E_Record_Subtype               |
7663       E_Private_Subtype              |
7664       E_Record_Subtype_With_Private  |
7665       E_Limited_Private_Subtype      |
7666       E_Access_Subtype               |
7667       E_Protected_Subtype            |
7668       E_Task_Subtype                 |
7669       E_String_Literal_Subtype       |
7670       E_Class_Wide_Subtype           => False,
7671       others                         => True);
7672 
7673    function Is_Base_Type (Id : E) return Boolean is
7674    begin
7675       return Entity_Is_Base_Type (Ekind (Id));
7676    end Is_Base_Type;
7677 
7678    ---------------------
7679    -- Is_Boolean_Type --
7680    ---------------------
7681 
7682    function Is_Boolean_Type (Id : E) return B is
7683    begin
7684       return Root_Type (Id) = Standard_Boolean;
7685    end Is_Boolean_Type;
7686 
7687    ------------------------
7688    -- Is_Constant_Object --
7689    ------------------------
7690 
7691    function Is_Constant_Object (Id : E) return B is
7692       K : constant Entity_Kind := Ekind (Id);
7693    begin
7694       return
7695         K = E_Constant or else K = E_In_Parameter or else K = E_Loop_Parameter;
7696    end Is_Constant_Object;
7697 
7698    --------------------------
7699    -- Is_Controlled_Active --
7700    --------------------------
7701 
7702    function Is_Controlled_Active (Id : E) return B is
7703    begin
7704       return Is_Controlled (Id) and then not Disable_Controlled (Id);
7705    end Is_Controlled_Active;
7706 
7707    --------------------
7708    -- Is_Discriminal --
7709    --------------------
7710 
7711    function Is_Discriminal (Id : E) return B is
7712    begin
7713       return (Ekind_In (Id, E_Constant, E_In_Parameter)
7714                 and then Present (Discriminal_Link (Id)));
7715    end Is_Discriminal;
7716 
7717    ----------------------
7718    -- Is_Dynamic_Scope --
7719    ----------------------
7720 
7721    function Is_Dynamic_Scope (Id : E) return B is
7722    begin
7723       return
7724         Ekind (Id) = E_Block
7725           or else
7726         Ekind (Id) = E_Function
7727           or else
7728         Ekind (Id) = E_Procedure
7729           or else
7730         Ekind (Id) = E_Subprogram_Body
7731           or else
7732         Ekind (Id) = E_Task_Type
7733           or else
7734        (Ekind (Id) = E_Limited_Private_Type
7735          and then Present (Full_View (Id))
7736          and then Ekind (Full_View (Id)) = E_Task_Type)
7737           or else
7738         Ekind (Id) = E_Entry
7739           or else
7740         Ekind (Id) = E_Entry_Family
7741           or else
7742         Ekind (Id) = E_Return_Statement;
7743    end Is_Dynamic_Scope;
7744 
7745    --------------------
7746    -- Is_Entity_Name --
7747    --------------------
7748 
7749    function Is_Entity_Name (N : Node_Id) return Boolean is
7750       Kind : constant Node_Kind := Nkind (N);
7751 
7752    begin
7753       --  Identifiers, operator symbols, expanded names are entity names
7754 
7755       return Kind = N_Identifier
7756         or else Kind = N_Operator_Symbol
7757         or else Kind = N_Expanded_Name
7758 
7759       --  Attribute references are entity names if they refer to an entity.
7760       --  Note that we don't do this by testing for the presence of the
7761       --  Entity field in the N_Attribute_Reference node, since it may not
7762       --  have been set yet.
7763 
7764         or else (Kind = N_Attribute_Reference
7765                   and then Is_Entity_Attribute_Name (Attribute_Name (N)));
7766    end Is_Entity_Name;
7767 
7768    -----------------------
7769    -- Is_External_State --
7770    -----------------------
7771 
7772    function Is_External_State (Id : E) return B is
7773    begin
7774       return
7775         Ekind (Id) = E_Abstract_State and then Has_Option (Id, Name_External);
7776    end Is_External_State;
7777 
7778    ------------------
7779    -- Is_Finalizer --
7780    ------------------
7781 
7782    function Is_Finalizer (Id : E) return B is
7783    begin
7784       return Ekind (Id) = E_Procedure and then Chars (Id) = Name_uFinalizer;
7785    end Is_Finalizer;
7786 
7787    -------------------
7788    -- Is_Null_State --
7789    -------------------
7790 
7791    function Is_Null_State (Id : E) return B is
7792    begin
7793       return
7794         Ekind (Id) = E_Abstract_State and then Nkind (Parent (Id)) = N_Null;
7795    end Is_Null_State;
7796 
7797    ---------------------
7798    -- Is_Packed_Array --
7799    ---------------------
7800 
7801    function Is_Packed_Array (Id : E) return B is
7802    begin
7803       return Is_Array_Type (Id) and then Is_Packed (Id);
7804    end Is_Packed_Array;
7805 
7806    -----------------------------------
7807    -- Is_Package_Or_Generic_Package --
7808    -----------------------------------
7809 
7810    function Is_Package_Or_Generic_Package (Id : E) return B is
7811    begin
7812       return Ekind_In (Id, E_Generic_Package, E_Package);
7813    end Is_Package_Or_Generic_Package;
7814 
7815    ---------------
7816    -- Is_Prival --
7817    ---------------
7818 
7819    function Is_Prival (Id : E) return B is
7820    begin
7821       return (Ekind_In (Id, E_Constant, E_Variable)
7822                 and then Present (Prival_Link (Id)));
7823    end Is_Prival;
7824 
7825    ----------------------------
7826    -- Is_Protected_Component --
7827    ----------------------------
7828 
7829    function Is_Protected_Component (Id : E) return B is
7830    begin
7831       return Ekind (Id) = E_Component and then Is_Protected_Type (Scope (Id));
7832    end Is_Protected_Component;
7833 
7834    ----------------------------
7835    -- Is_Protected_Interface --
7836    ----------------------------
7837 
7838    function Is_Protected_Interface (Id : E) return B is
7839       Typ : constant Entity_Id := Base_Type (Id);
7840    begin
7841       if not Is_Interface (Typ) then
7842          return False;
7843       elsif Is_Class_Wide_Type (Typ) then
7844          return Is_Protected_Interface (Etype (Typ));
7845       else
7846          return Protected_Present (Type_Definition (Parent (Typ)));
7847       end if;
7848    end Is_Protected_Interface;
7849 
7850    ------------------------------
7851    -- Is_Protected_Record_Type --
7852    ------------------------------
7853 
7854    function Is_Protected_Record_Type (Id : E) return B is
7855    begin
7856       return
7857         Is_Concurrent_Record_Type (Id)
7858           and then Is_Protected_Type (Corresponding_Concurrent_Type (Id));
7859    end Is_Protected_Record_Type;
7860 
7861    --------------------------------
7862    -- Is_Standard_Character_Type --
7863    --------------------------------
7864 
7865    function Is_Standard_Character_Type (Id : E) return B is
7866    begin
7867       if Is_Type (Id) then
7868          declare
7869             R : constant Entity_Id := Root_Type (Id);
7870          begin
7871             return
7872               R = Standard_Character
7873                 or else
7874               R = Standard_Wide_Character
7875                 or else
7876               R = Standard_Wide_Wide_Character;
7877          end;
7878 
7879       else
7880          return False;
7881       end if;
7882    end Is_Standard_Character_Type;
7883 
7884    -----------------------------
7885    -- Is_Standard_String_Type --
7886    -----------------------------
7887 
7888    function Is_Standard_String_Type (Id : E) return B is
7889    begin
7890       if Is_Type (Id) then
7891          declare
7892             R : constant Entity_Id := Root_Type (Id);
7893          begin
7894             return
7895               R = Standard_String
7896                 or else
7897               R = Standard_Wide_String
7898                 or else
7899               R = Standard_Wide_Wide_String;
7900          end;
7901 
7902       else
7903          return False;
7904       end if;
7905    end Is_Standard_String_Type;
7906 
7907    --------------------
7908    -- Is_String_Type --
7909    --------------------
7910 
7911    function Is_String_Type (Id : E) return B is
7912    begin
7913       return Is_Array_Type (Id)
7914         and then Id /= Any_Composite
7915         and then Number_Dimensions (Id) = 1
7916         and then Is_Character_Type (Component_Type (Id));
7917    end Is_String_Type;
7918 
7919    -------------------------------
7920    -- Is_Synchronized_Interface --
7921    -------------------------------
7922 
7923    function Is_Synchronized_Interface (Id : E) return B is
7924       Typ : constant Entity_Id := Base_Type (Id);
7925 
7926    begin
7927       if not Is_Interface (Typ) then
7928          return False;
7929 
7930       elsif Is_Class_Wide_Type (Typ) then
7931          return Is_Synchronized_Interface (Etype (Typ));
7932 
7933       else
7934          return    Protected_Present    (Type_Definition (Parent (Typ)))
7935            or else Synchronized_Present (Type_Definition (Parent (Typ)))
7936            or else Task_Present         (Type_Definition (Parent (Typ)));
7937       end if;
7938    end Is_Synchronized_Interface;
7939 
7940    ---------------------------
7941    -- Is_Synchronized_State --
7942    ---------------------------
7943 
7944    function Is_Synchronized_State (Id : E) return B is
7945    begin
7946       return
7947         Ekind (Id) = E_Abstract_State
7948           and then Has_Option (Id, Name_Synchronous);
7949    end Is_Synchronized_State;
7950 
7951    -----------------------
7952    -- Is_Task_Interface --
7953    -----------------------
7954 
7955    function Is_Task_Interface (Id : E) return B is
7956       Typ : constant Entity_Id := Base_Type (Id);
7957    begin
7958       if not Is_Interface (Typ) then
7959          return False;
7960       elsif Is_Class_Wide_Type (Typ) then
7961          return Is_Task_Interface (Etype (Typ));
7962       else
7963          return Task_Present (Type_Definition (Parent (Typ)));
7964       end if;
7965    end Is_Task_Interface;
7966 
7967    -------------------------
7968    -- Is_Task_Record_Type --
7969    -------------------------
7970 
7971    function Is_Task_Record_Type (Id : E) return B is
7972    begin
7973       return
7974         Is_Concurrent_Record_Type (Id)
7975           and then Is_Task_Type (Corresponding_Concurrent_Type (Id));
7976    end Is_Task_Record_Type;
7977 
7978    ------------------------
7979    -- Is_Wrapper_Package --
7980    ------------------------
7981 
7982    function Is_Wrapper_Package (Id : E) return B is
7983    begin
7984       return (Ekind (Id) = E_Package and then Present (Related_Instance (Id)));
7985    end Is_Wrapper_Package;
7986 
7987    -----------------
7988    -- Last_Formal --
7989    -----------------
7990 
7991    function Last_Formal (Id : E) return E is
7992       Formal : E;
7993 
7994    begin
7995       pragma Assert
7996         (Is_Overloadable (Id)
7997           or else Ekind_In (Id, E_Entry_Family,
7998                                 E_Subprogram_Body,
7999                                 E_Subprogram_Type));
8000 
8001       if Ekind (Id) = E_Enumeration_Literal then
8002          return Empty;
8003 
8004       else
8005          Formal := First_Formal (Id);
8006 
8007          if Present (Formal) then
8008             while Present (Next_Formal (Formal)) loop
8009                Formal := Next_Formal (Formal);
8010             end loop;
8011          end if;
8012 
8013          return Formal;
8014       end if;
8015    end Last_Formal;
8016 
8017    function Model_Emin_Value (Id : E) return Uint is
8018    begin
8019       return Machine_Emin_Value (Id);
8020    end Model_Emin_Value;
8021 
8022    -------------------------
8023    -- Model_Epsilon_Value --
8024    -------------------------
8025 
8026    function Model_Epsilon_Value (Id : E) return Ureal is
8027       Radix : constant Ureal := UR_From_Uint (Machine_Radix_Value (Id));
8028    begin
8029       return Radix ** (1 - Model_Mantissa_Value (Id));
8030    end Model_Epsilon_Value;
8031 
8032    --------------------------
8033    -- Model_Mantissa_Value --
8034    --------------------------
8035 
8036    function Model_Mantissa_Value (Id : E) return Uint is
8037    begin
8038       return Machine_Mantissa_Value (Id);
8039    end Model_Mantissa_Value;
8040 
8041    -----------------------
8042    -- Model_Small_Value --
8043    -----------------------
8044 
8045    function Model_Small_Value (Id : E) return Ureal is
8046       Radix : constant Ureal := UR_From_Uint (Machine_Radix_Value (Id));
8047    begin
8048       return Radix ** (Model_Emin_Value (Id) - 1);
8049    end Model_Small_Value;
8050 
8051    ------------------------
8052    -- Machine_Emax_Value --
8053    ------------------------
8054 
8055    function Machine_Emax_Value (Id : E) return Uint is
8056       Digs : constant Pos := UI_To_Int (Digits_Value (Base_Type (Id)));
8057 
8058    begin
8059       case Float_Rep (Id) is
8060          when IEEE_Binary =>
8061             case Digs is
8062                when  1 ..  6 => return Uint_128;
8063                when  7 .. 15 => return 2**10;
8064                when 16 .. 33 => return 2**14;
8065                when others => return No_Uint;
8066             end case;
8067 
8068          when AAMP =>
8069             return Uint_2 ** Uint_7 - Uint_1;
8070       end case;
8071    end Machine_Emax_Value;
8072 
8073    ------------------------
8074    -- Machine_Emin_Value --
8075    ------------------------
8076 
8077    function Machine_Emin_Value (Id : E) return Uint is
8078    begin
8079       case Float_Rep (Id) is
8080          when IEEE_Binary => return Uint_3 - Machine_Emax_Value (Id);
8081          when AAMP        => return -Machine_Emax_Value (Id);
8082       end case;
8083    end Machine_Emin_Value;
8084 
8085    ----------------------------
8086    -- Machine_Mantissa_Value --
8087    ----------------------------
8088 
8089    function Machine_Mantissa_Value (Id : E) return Uint is
8090       Digs : constant Pos := UI_To_Int (Digits_Value (Base_Type (Id)));
8091 
8092    begin
8093       case Float_Rep (Id) is
8094          when IEEE_Binary =>
8095             case Digs is
8096                when  1 ..  6 => return Uint_24;
8097                when  7 .. 15 => return UI_From_Int (53);
8098                when 16 .. 18 => return Uint_64;
8099                when 19 .. 33 => return UI_From_Int (113);
8100                when others => return No_Uint;
8101             end case;
8102 
8103          when AAMP =>
8104             case Digs is
8105                when  1 ..  6 => return Uint_24;
8106                when  7 ..  9 => return UI_From_Int (40);
8107                when others => return No_Uint;
8108             end case;
8109       end case;
8110    end Machine_Mantissa_Value;
8111 
8112    -------------------------
8113    -- Machine_Radix_Value --
8114    -------------------------
8115 
8116    function Machine_Radix_Value (Id : E) return U is
8117    begin
8118       case Float_Rep (Id) is
8119          when IEEE_Binary | AAMP =>
8120             return Uint_2;
8121       end case;
8122    end Machine_Radix_Value;
8123 
8124    --------------------
8125    -- Next_Component --
8126    --------------------
8127 
8128    function Next_Component (Id : E) return E is
8129       Comp_Id : E;
8130 
8131    begin
8132       Comp_Id := Next_Entity (Id);
8133       while Present (Comp_Id) loop
8134          exit when Ekind (Comp_Id) = E_Component;
8135          Comp_Id := Next_Entity (Comp_Id);
8136       end loop;
8137 
8138       return Comp_Id;
8139    end Next_Component;
8140 
8141    ------------------------------------
8142    -- Next_Component_Or_Discriminant --
8143    ------------------------------------
8144 
8145    function Next_Component_Or_Discriminant (Id : E) return E is
8146       Comp_Id : E;
8147 
8148    begin
8149       Comp_Id := Next_Entity (Id);
8150       while Present (Comp_Id) loop
8151          exit when Ekind_In (Comp_Id, E_Component, E_Discriminant);
8152          Comp_Id := Next_Entity (Comp_Id);
8153       end loop;
8154 
8155       return Comp_Id;
8156    end Next_Component_Or_Discriminant;
8157 
8158    -----------------------
8159    -- Next_Discriminant --
8160    -----------------------
8161 
8162    --  This function actually implements both Next_Discriminant and
8163    --  Next_Stored_Discriminant by making sure that the Discriminant
8164    --  returned is of the same variety as Id.
8165 
8166    function Next_Discriminant (Id : E) return E is
8167 
8168       --  Derived Tagged types with private extensions look like this...
8169 
8170       --       E_Discriminant d1
8171       --       E_Discriminant d2
8172       --       E_Component    _tag
8173       --       E_Discriminant d1
8174       --       E_Discriminant d2
8175       --       ...
8176 
8177       --  so it is critical not to go past the leading discriminants
8178 
8179       D : E := Id;
8180 
8181    begin
8182       pragma Assert (Ekind (Id) = E_Discriminant);
8183 
8184       loop
8185          D := Next_Entity (D);
8186          if No (D)
8187            or else (Ekind (D) /= E_Discriminant
8188                       and then not Is_Itype (D))
8189          then
8190             return Empty;
8191          end if;
8192 
8193          exit when Ekind (D) = E_Discriminant
8194            and then (Is_Completely_Hidden (D) = Is_Completely_Hidden (Id));
8195       end loop;
8196 
8197       return D;
8198    end Next_Discriminant;
8199 
8200    -----------------
8201    -- Next_Formal --
8202    -----------------
8203 
8204    function Next_Formal (Id : E) return E is
8205       P : E;
8206 
8207    begin
8208       --  Follow the chain of declared entities as long as the kind of the
8209       --  entity corresponds to a formal parameter. Skip internal entities
8210       --  that may have been created for implicit subtypes, in the process
8211       --  of analyzing default expressions.
8212 
8213       P := Id;
8214       loop
8215          Next_Entity (P);
8216 
8217          if No (P) or else Is_Formal (P) then
8218             return P;
8219          elsif not Is_Internal (P) then
8220             return Empty;
8221          end if;
8222       end loop;
8223    end Next_Formal;
8224 
8225    -----------------------------
8226    -- Next_Formal_With_Extras --
8227    -----------------------------
8228 
8229    function Next_Formal_With_Extras (Id : E) return E is
8230    begin
8231       if Present (Extra_Formal (Id)) then
8232          return Extra_Formal (Id);
8233       else
8234          return Next_Formal (Id);
8235       end if;
8236    end Next_Formal_With_Extras;
8237 
8238    ----------------
8239    -- Next_Index --
8240    ----------------
8241 
8242    function Next_Index (Id : Node_Id) return Node_Id is
8243    begin
8244       return Next (Id);
8245    end Next_Index;
8246 
8247    ------------------
8248    -- Next_Literal --
8249    ------------------
8250 
8251    function Next_Literal (Id : E) return E is
8252    begin
8253       pragma Assert (Nkind (Id) in N_Entity);
8254       return Next (Id);
8255    end Next_Literal;
8256 
8257    ------------------------------
8258    -- Next_Stored_Discriminant --
8259    ------------------------------
8260 
8261    function Next_Stored_Discriminant (Id : E) return E is
8262    begin
8263       --  See comment in Next_Discriminant
8264 
8265       return Next_Discriminant (Id);
8266    end Next_Stored_Discriminant;
8267 
8268    -----------------------
8269    -- Number_Dimensions --
8270    -----------------------
8271 
8272    function Number_Dimensions (Id : E) return Pos is
8273       N : Int;
8274       T : Node_Id;
8275 
8276    begin
8277       if Ekind (Id) = E_String_Literal_Subtype then
8278          return 1;
8279 
8280       else
8281          N := 0;
8282          T := First_Index (Id);
8283          while Present (T) loop
8284             N := N + 1;
8285             Next_Index (T);
8286          end loop;
8287 
8288          return N;
8289       end if;
8290    end Number_Dimensions;
8291 
8292    --------------------
8293    -- Number_Entries --
8294    --------------------
8295 
8296    function Number_Entries (Id : E) return Nat is
8297       N   : Int;
8298       Ent : Entity_Id;
8299 
8300    begin
8301       pragma Assert (Is_Concurrent_Type (Id));
8302 
8303       N := 0;
8304       Ent := First_Entity (Id);
8305       while Present (Ent) loop
8306          if Is_Entry (Ent) then
8307             N := N + 1;
8308          end if;
8309 
8310          Ent := Next_Entity (Ent);
8311       end loop;
8312 
8313       return N;
8314    end Number_Entries;
8315 
8316    --------------------
8317    -- Number_Formals --
8318    --------------------
8319 
8320    function Number_Formals (Id : E) return Pos is
8321       N      : Int;
8322       Formal : Entity_Id;
8323 
8324    begin
8325       N := 0;
8326       Formal := First_Formal (Id);
8327       while Present (Formal) loop
8328          N := N + 1;
8329          Formal := Next_Formal (Formal);
8330       end loop;
8331 
8332       return N;
8333    end Number_Formals;
8334 
8335    --------------------
8336    -- Parameter_Mode --
8337    --------------------
8338 
8339    function Parameter_Mode (Id : E) return Formal_Kind is
8340    begin
8341       return Ekind (Id);
8342    end Parameter_Mode;
8343 
8344    ---------------------------------
8345    -- Partial_Invariant_Procedure --
8346    ---------------------------------
8347 
8348    function Partial_Invariant_Procedure (Id : E) return E is
8349       Subp_Elmt : Elmt_Id;
8350       Subp_Id   : Entity_Id;
8351       Subps     : Elist_Id;
8352 
8353    begin
8354       pragma Assert (Is_Type (Id));
8355 
8356       Subps := Subprograms_For_Type (Id);
8357 
8358       if Present (Subps) then
8359          Subp_Elmt := First_Elmt (Subps);
8360          while Present (Subp_Elmt) loop
8361             Subp_Id := Node (Subp_Elmt);
8362 
8363             if Is_Partial_Invariant_Procedure (Subp_Id) then
8364                return Subp_Id;
8365             end if;
8366 
8367             Next_Elmt (Subp_Elmt);
8368          end loop;
8369       end if;
8370 
8371       return Empty;
8372    end Partial_Invariant_Procedure;
8373 
8374    ------------------------
8375    -- Predicate_Function --
8376    ------------------------
8377 
8378    function Predicate_Function (Id : E) return E is
8379       Subp_Elmt : Elmt_Id;
8380       Subp_Id   : Entity_Id;
8381       Subps     : Elist_Id;
8382       Typ       : Entity_Id;
8383 
8384    begin
8385       pragma Assert (Is_Type (Id));
8386 
8387       --  If type is private and has a completion, predicate may be defined on
8388       --  the full view.
8389 
8390       if Is_Private_Type (Id)
8391          and then
8392            (not Has_Predicates (Id) or else No (Subprograms_For_Type (Id)))
8393          and then Present (Full_View (Id))
8394       then
8395          Typ := Full_View (Id);
8396 
8397       else
8398          Typ := Id;
8399       end if;
8400 
8401       Subps := Subprograms_For_Type (Typ);
8402 
8403       if Present (Subps) then
8404          Subp_Elmt := First_Elmt (Subps);
8405          while Present (Subp_Elmt) loop
8406             Subp_Id := Node (Subp_Elmt);
8407 
8408             if Ekind (Subp_Id) = E_Function
8409               and then Is_Predicate_Function (Subp_Id)
8410             then
8411                return Subp_Id;
8412             end if;
8413 
8414             Next_Elmt (Subp_Elmt);
8415          end loop;
8416       end if;
8417 
8418       return Empty;
8419    end Predicate_Function;
8420 
8421    --------------------------
8422    -- Predicate_Function_M --
8423    --------------------------
8424 
8425    function Predicate_Function_M (Id : E) return E is
8426       Subp_Elmt : Elmt_Id;
8427       Subp_Id   : Entity_Id;
8428       Subps     : Elist_Id;
8429       Typ       : Entity_Id;
8430 
8431    begin
8432       pragma Assert (Is_Type (Id));
8433 
8434       --  If type is private and has a completion, predicate may be defined on
8435       --  the full view.
8436 
8437       if Is_Private_Type (Id)
8438          and then
8439            (not Has_Predicates (Id) or else No (Subprograms_For_Type (Id)))
8440          and then Present (Full_View (Id))
8441       then
8442          Typ := Full_View (Id);
8443 
8444       else
8445          Typ := Id;
8446       end if;
8447 
8448       Subps := Subprograms_For_Type (Typ);
8449 
8450       if Present (Subps) then
8451          Subp_Elmt := First_Elmt (Subps);
8452          while Present (Subp_Elmt) loop
8453             Subp_Id := Node (Subp_Elmt);
8454 
8455             if Ekind (Subp_Id) = E_Function
8456               and then Is_Predicate_Function_M (Subp_Id)
8457             then
8458                return Subp_Id;
8459             end if;
8460 
8461             Next_Elmt (Subp_Elmt);
8462          end loop;
8463       end if;
8464 
8465       return Empty;
8466    end Predicate_Function_M;
8467 
8468    -------------------------
8469    -- Present_In_Rep_Item --
8470    -------------------------
8471 
8472    function Present_In_Rep_Item (E : Entity_Id; N : Node_Id) return Boolean is
8473       Ritem : Node_Id;
8474 
8475    begin
8476       Ritem := First_Rep_Item (E);
8477 
8478       while Present (Ritem) loop
8479          if Ritem = N then
8480             return True;
8481          end if;
8482 
8483          Next_Rep_Item (Ritem);
8484       end loop;
8485 
8486       return False;
8487    end Present_In_Rep_Item;
8488 
8489    --------------------------
8490    -- Primitive_Operations --
8491    --------------------------
8492 
8493    function Primitive_Operations (Id : E) return L is
8494    begin
8495       if Is_Concurrent_Type (Id) then
8496          if Present (Corresponding_Record_Type (Id)) then
8497             return Direct_Primitive_Operations
8498               (Corresponding_Record_Type (Id));
8499 
8500          --  If expansion is disabled the corresponding record type is absent,
8501          --  but if the type has ancestors it may have primitive operations.
8502 
8503          elsif Is_Tagged_Type (Id) then
8504             return Direct_Primitive_Operations (Id);
8505 
8506          else
8507             return No_Elist;
8508          end if;
8509       else
8510          return Direct_Primitive_Operations (Id);
8511       end if;
8512    end Primitive_Operations;
8513 
8514    ---------------------
8515    -- Record_Rep_Item --
8516    ---------------------
8517 
8518    procedure Record_Rep_Item (E : Entity_Id; N : Node_Id) is
8519    begin
8520       Set_Next_Rep_Item (N, First_Rep_Item (E));
8521       Set_First_Rep_Item (E, N);
8522    end Record_Rep_Item;
8523 
8524    ---------------
8525    -- Root_Type --
8526    ---------------
8527 
8528    function Root_Type (Id : E) return E is
8529       T, Etyp : E;
8530 
8531    begin
8532       pragma Assert (Nkind (Id) in N_Entity);
8533 
8534       T := Base_Type (Id);
8535 
8536       if Ekind (T) = E_Class_Wide_Type then
8537          return Etype (T);
8538 
8539       --  Other cases
8540 
8541       else
8542          loop
8543             Etyp := Etype (T);
8544 
8545             if T = Etyp then
8546                return T;
8547 
8548             --  Following test catches some error cases resulting from
8549             --  previous errors.
8550 
8551             elsif No (Etyp) then
8552                Check_Error_Detected;
8553                return T;
8554 
8555             elsif Is_Private_Type (T) and then Etyp = Full_View (T) then
8556                return T;
8557 
8558             elsif Is_Private_Type (Etyp) and then Full_View (Etyp) = T then
8559                return T;
8560             end if;
8561 
8562             T := Etyp;
8563 
8564             --  Return if there is a circularity in the inheritance chain. This
8565             --  happens in some error situations and we do not want to get
8566             --  stuck in this loop.
8567 
8568             if T = Base_Type (Id) then
8569                return T;
8570             end if;
8571          end loop;
8572       end if;
8573    end Root_Type;
8574 
8575    ---------------------
8576    -- Safe_Emax_Value --
8577    ---------------------
8578 
8579    function Safe_Emax_Value (Id : E) return Uint is
8580    begin
8581       return Machine_Emax_Value (Id);
8582    end Safe_Emax_Value;
8583 
8584    ----------------------
8585    -- Safe_First_Value --
8586    ----------------------
8587 
8588    function Safe_First_Value (Id : E) return Ureal is
8589    begin
8590       return -Safe_Last_Value (Id);
8591    end Safe_First_Value;
8592 
8593    ---------------------
8594    -- Safe_Last_Value --
8595    ---------------------
8596 
8597    function Safe_Last_Value (Id : E) return Ureal is
8598       Radix       : constant Uint := Machine_Radix_Value (Id);
8599       Mantissa    : constant Uint := Machine_Mantissa_Value (Id);
8600       Emax        : constant Uint := Safe_Emax_Value (Id);
8601       Significand : constant Uint := Radix ** Mantissa - 1;
8602       Exponent    : constant Uint := Emax - Mantissa;
8603 
8604    begin
8605       if Radix = 2 then
8606          return
8607            UR_From_Components
8608              (Num   => Significand * 2 ** (Exponent mod 4),
8609               Den   => -Exponent / 4,
8610               Rbase => 16);
8611       else
8612          return
8613            UR_From_Components
8614              (Num => Significand,
8615               Den => -Exponent,
8616               Rbase => 16);
8617       end if;
8618    end Safe_Last_Value;
8619 
8620    -----------------
8621    -- Scope_Depth --
8622    -----------------
8623 
8624    function Scope_Depth (Id : E) return Uint is
8625       Scop : Entity_Id;
8626 
8627    begin
8628       Scop := Id;
8629       while Is_Record_Type (Scop) loop
8630          Scop := Scope (Scop);
8631       end loop;
8632 
8633       return Scope_Depth_Value (Scop);
8634    end Scope_Depth;
8635 
8636    ---------------------
8637    -- Scope_Depth_Set --
8638    ---------------------
8639 
8640    function Scope_Depth_Set (Id : E) return B is
8641    begin
8642       return not Is_Record_Type (Id)
8643         and then Field22 (Id) /= Union_Id (Empty);
8644    end Scope_Depth_Set;
8645 
8646    -----------------------------
8647    -- Set_Component_Alignment --
8648    -----------------------------
8649 
8650    --  Component Alignment is encoded using two flags, Flag128/129 as
8651    --  follows. Note that both flags False = Align_Default, so that the
8652    --  default initialization of flags to False initializes component
8653    --  alignment to the default value as required.
8654 
8655    --     Flag128      Flag129      Value
8656    --     -------      -------      -----
8657    --      False        False       Calign_Default
8658    --      False        True        Calign_Component_Size
8659    --      True         False       Calign_Component_Size_4
8660    --      True         True        Calign_Storage_Unit
8661 
8662    procedure Set_Component_Alignment (Id : E; V : C) is
8663    begin
8664       pragma Assert ((Is_Array_Type (Id) or else Is_Record_Type (Id))
8665                        and then Is_Base_Type (Id));
8666 
8667       case V is
8668          when Calign_Default          =>
8669             Set_Flag128 (Id, False);
8670             Set_Flag129 (Id, False);
8671 
8672          when Calign_Component_Size   =>
8673             Set_Flag128 (Id, False);
8674             Set_Flag129 (Id, True);
8675 
8676          when Calign_Component_Size_4 =>
8677             Set_Flag128 (Id, True);
8678             Set_Flag129 (Id, False);
8679 
8680          when Calign_Storage_Unit     =>
8681             Set_Flag128 (Id, True);
8682             Set_Flag129 (Id, True);
8683       end case;
8684    end Set_Component_Alignment;
8685 
8686    -------------------------------------
8687    -- Set_Default_Init_Cond_Procedure --
8688    -------------------------------------
8689 
8690    procedure Set_Default_Init_Cond_Procedure (Id : E; V : E) is
8691       Base_Typ  : Entity_Id;
8692       Subp_Elmt : Elmt_Id;
8693       Subp_Id   : Entity_Id;
8694       Subps     : Elist_Id;
8695 
8696    begin
8697       --  Once set, this attribute cannot be reset
8698 
8699       if No (V) then
8700          pragma Assert (No (Default_Init_Cond_Procedure (Id)));
8701          return;
8702       end if;
8703 
8704       pragma Assert
8705         (Is_Type (Id)
8706           and then (Has_Default_Init_Cond (Id)
8707                      or else Has_Inherited_Default_Init_Cond (Id)));
8708 
8709       Base_Typ := Base_Type (Id);
8710       Subps    := Subprograms_For_Type (Base_Typ);
8711 
8712       if No (Subps) then
8713          Subps := New_Elmt_List;
8714          Set_Subprograms_For_Type (Base_Typ, Subps);
8715       end if;
8716 
8717       Subp_Elmt := First_Elmt (Subps);
8718       Prepend_Elmt (V, Subps);
8719 
8720       --  Check for a duplicate default initial condition procedure
8721 
8722       while Present (Subp_Elmt) loop
8723          Subp_Id := Node (Subp_Elmt);
8724 
8725          if Is_Default_Init_Cond_Procedure (Subp_Id) then
8726             raise Program_Error;
8727          end if;
8728 
8729          Next_Elmt (Subp_Elmt);
8730       end loop;
8731    end Set_Default_Init_Cond_Procedure;
8732 
8733    -----------------------------
8734    -- Set_Invariant_Procedure --
8735    -----------------------------
8736 
8737    procedure Set_Invariant_Procedure (Id : E; V : E) is
8738       Subp_Elmt : Elmt_Id;
8739       Subp_Id   : Entity_Id;
8740       Subps     : Elist_Id;
8741 
8742    begin
8743       pragma Assert (Is_Type (Id));
8744 
8745       Subps := Subprograms_For_Type (Id);
8746 
8747       if No (Subps) then
8748          Subps := New_Elmt_List;
8749          Set_Subprograms_For_Type (Id, Subps);
8750       end if;
8751 
8752       Subp_Elmt := First_Elmt (Subps);
8753       Prepend_Elmt (V, Subps);
8754 
8755       --  Check for a duplicate invariant procedure
8756 
8757       while Present (Subp_Elmt) loop
8758          Subp_Id := Node (Subp_Elmt);
8759 
8760          if Is_Invariant_Procedure (Subp_Id) then
8761             raise Program_Error;
8762          end if;
8763 
8764          Next_Elmt (Subp_Elmt);
8765       end loop;
8766    end Set_Invariant_Procedure;
8767 
8768    -------------------------------------
8769    -- Set_Partial_Invariant_Procedure --
8770    -------------------------------------
8771 
8772    procedure Set_Partial_Invariant_Procedure (Id : E; V : E) is
8773       Subp_Elmt : Elmt_Id;
8774       Subp_Id   : Entity_Id;
8775       Subps     : Elist_Id;
8776 
8777    begin
8778       pragma Assert (Is_Type (Id));
8779 
8780       Subps := Subprograms_For_Type (Id);
8781 
8782       if No (Subps) then
8783          Subps := New_Elmt_List;
8784          Set_Subprograms_For_Type (Id, Subps);
8785       end if;
8786 
8787       Subp_Elmt := First_Elmt (Subps);
8788       Prepend_Elmt (V, Subps);
8789 
8790       --  Check for a duplicate partial invariant procedure
8791 
8792       while Present (Subp_Elmt) loop
8793          Subp_Id := Node (Subp_Elmt);
8794 
8795          if Is_Partial_Invariant_Procedure (Subp_Id) then
8796             raise Program_Error;
8797          end if;
8798 
8799          Next_Elmt (Subp_Elmt);
8800       end loop;
8801    end Set_Partial_Invariant_Procedure;
8802 
8803    ----------------------------
8804    -- Set_Predicate_Function --
8805    ----------------------------
8806 
8807    procedure Set_Predicate_Function (Id : E; V : E) is
8808       Subp_Elmt : Elmt_Id;
8809       Subp_Id   : Entity_Id;
8810       Subps     : Elist_Id;
8811 
8812    begin
8813       pragma Assert (Is_Type (Id) and then Has_Predicates (Id));
8814 
8815       Subps := Subprograms_For_Type (Id);
8816 
8817       if No (Subps) then
8818          Subps := New_Elmt_List;
8819          Set_Subprograms_For_Type (Id, Subps);
8820       end if;
8821 
8822       Subp_Elmt := First_Elmt (Subps);
8823       Prepend_Elmt (V, Subps);
8824 
8825       --  Check for a duplicate predication function
8826 
8827       while Present (Subp_Elmt) loop
8828          Subp_Id := Node (Subp_Elmt);
8829 
8830          if Ekind (Subp_Id) = E_Function
8831            and then Is_Predicate_Function (Subp_Id)
8832          then
8833             raise Program_Error;
8834          end if;
8835 
8836          Next_Elmt (Subp_Elmt);
8837       end loop;
8838    end Set_Predicate_Function;
8839 
8840    ------------------------------
8841    -- Set_Predicate_Function_M --
8842    ------------------------------
8843 
8844    procedure Set_Predicate_Function_M (Id : E; V : E) is
8845       Subp_Elmt : Elmt_Id;
8846       Subp_Id   : Entity_Id;
8847       Subps     : Elist_Id;
8848 
8849    begin
8850       pragma Assert (Is_Type (Id) and then Has_Predicates (Id));
8851 
8852       Subps := Subprograms_For_Type (Id);
8853 
8854       if No (Subps) then
8855          Subps := New_Elmt_List;
8856          Set_Subprograms_For_Type (Id, Subps);
8857       end if;
8858 
8859       Subp_Elmt := First_Elmt (Subps);
8860       Prepend_Elmt (V, Subps);
8861 
8862       --  Check for a duplicate predication function
8863 
8864       while Present (Subp_Elmt) loop
8865          Subp_Id := Node (Subp_Elmt);
8866 
8867          if Ekind (Subp_Id) = E_Function
8868            and then Is_Predicate_Function_M (Subp_Id)
8869          then
8870             raise Program_Error;
8871          end if;
8872 
8873          Next_Elmt (Subp_Elmt);
8874       end loop;
8875    end Set_Predicate_Function_M;
8876 
8877    -----------------
8878    -- Size_Clause --
8879    -----------------
8880 
8881    function Size_Clause (Id : E) return N is
8882    begin
8883       return Get_Attribute_Definition_Clause (Id, Attribute_Size);
8884    end Size_Clause;
8885 
8886    ------------------------
8887    -- Stream_Size_Clause --
8888    ------------------------
8889 
8890    function Stream_Size_Clause (Id : E) return N is
8891    begin
8892       return Get_Attribute_Definition_Clause (Id, Attribute_Stream_Size);
8893    end Stream_Size_Clause;
8894 
8895    ------------------
8896    -- Subtype_Kind --
8897    ------------------
8898 
8899    function Subtype_Kind (K : Entity_Kind) return Entity_Kind is
8900       Kind : Entity_Kind;
8901 
8902    begin
8903       case K is
8904          when Access_Kind                    =>
8905             Kind := E_Access_Subtype;
8906 
8907          when E_Array_Type                   |
8908               E_Array_Subtype                =>
8909             Kind := E_Array_Subtype;
8910 
8911          when E_Class_Wide_Type              |
8912               E_Class_Wide_Subtype           =>
8913             Kind := E_Class_Wide_Subtype;
8914 
8915          when E_Decimal_Fixed_Point_Type     |
8916               E_Decimal_Fixed_Point_Subtype  =>
8917             Kind := E_Decimal_Fixed_Point_Subtype;
8918 
8919          when E_Ordinary_Fixed_Point_Type    |
8920               E_Ordinary_Fixed_Point_Subtype =>
8921             Kind := E_Ordinary_Fixed_Point_Subtype;
8922 
8923          when E_Private_Type                 |
8924               E_Private_Subtype              =>
8925             Kind := E_Private_Subtype;
8926 
8927          when E_Limited_Private_Type         |
8928               E_Limited_Private_Subtype      =>
8929             Kind := E_Limited_Private_Subtype;
8930 
8931          when E_Record_Type_With_Private     |
8932               E_Record_Subtype_With_Private  =>
8933             Kind := E_Record_Subtype_With_Private;
8934 
8935          when E_Record_Type                  |
8936               E_Record_Subtype               =>
8937             Kind := E_Record_Subtype;
8938 
8939          when Enumeration_Kind               =>
8940             Kind := E_Enumeration_Subtype;
8941 
8942          when Float_Kind                     =>
8943             Kind := E_Floating_Point_Subtype;
8944 
8945          when Signed_Integer_Kind            =>
8946             Kind := E_Signed_Integer_Subtype;
8947 
8948          when Modular_Integer_Kind           =>
8949             Kind := E_Modular_Integer_Subtype;
8950 
8951          when Protected_Kind                 =>
8952             Kind := E_Protected_Subtype;
8953 
8954          when Task_Kind                      =>
8955             Kind := E_Task_Subtype;
8956 
8957          when others                         =>
8958             Kind := E_Void;
8959             raise Program_Error;
8960       end case;
8961 
8962       return Kind;
8963    end Subtype_Kind;
8964 
8965    ---------------------
8966    -- Type_High_Bound --
8967    ---------------------
8968 
8969    function Type_High_Bound (Id : E) return Node_Id is
8970       Rng : constant Node_Id := Scalar_Range (Id);
8971    begin
8972       if Nkind (Rng) = N_Subtype_Indication then
8973          return High_Bound (Range_Expression (Constraint (Rng)));
8974       else
8975          return High_Bound (Rng);
8976       end if;
8977    end Type_High_Bound;
8978 
8979    --------------------
8980    -- Type_Low_Bound --
8981    --------------------
8982 
8983    function Type_Low_Bound (Id : E) return Node_Id is
8984       Rng : constant Node_Id := Scalar_Range (Id);
8985    begin
8986       if Nkind (Rng) = N_Subtype_Indication then
8987          return Low_Bound (Range_Expression (Constraint (Rng)));
8988       else
8989          return Low_Bound (Rng);
8990       end if;
8991    end Type_Low_Bound;
8992 
8993    ---------------------
8994    -- Underlying_Type --
8995    ---------------------
8996 
8997    function Underlying_Type (Id : E) return E is
8998    begin
8999       --  For record_with_private the underlying type is always the direct
9000       --  full view. Never try to take the full view of the parent it
9001       --  doesn't make sense.
9002 
9003       if Ekind (Id) = E_Record_Type_With_Private then
9004          return Full_View (Id);
9005 
9006       elsif Ekind (Id) in Incomplete_Or_Private_Kind then
9007 
9008          --  If we have an incomplete or private type with a full view,
9009          --  then we return the Underlying_Type of this full view.
9010 
9011          if Present (Full_View (Id)) then
9012             if Id = Full_View (Id) then
9013 
9014                --  Previous error in declaration
9015 
9016                return Empty;
9017 
9018             else
9019                return Underlying_Type (Full_View (Id));
9020             end if;
9021 
9022          --  If we have a private type with an underlying full view, then we
9023          --  return the Underlying_Type of this underlying full view.
9024 
9025          elsif Ekind (Id) in Private_Kind
9026            and then Present (Underlying_Full_View (Id))
9027          then
9028             return Underlying_Type (Underlying_Full_View (Id));
9029 
9030          --  If we have an incomplete entity that comes from the limited
9031          --  view then we return the Underlying_Type of its non-limited
9032          --  view.
9033 
9034          elsif From_Limited_With (Id)
9035            and then Present (Non_Limited_View (Id))
9036          then
9037             return Underlying_Type (Non_Limited_View (Id));
9038 
9039          --  Otherwise check for the case where we have a derived type or
9040          --  subtype, and if so get the Underlying_Type of the parent type.
9041 
9042          elsif Etype (Id) /= Id then
9043             return Underlying_Type (Etype (Id));
9044 
9045          --  Otherwise we have an incomplete or private type that has
9046          --  no full view, which means that we have not encountered the
9047          --  completion, so return Empty to indicate the underlying type
9048          --  is not yet known.
9049 
9050          else
9051             return Empty;
9052          end if;
9053 
9054       --  For non-incomplete, non-private types, return the type itself Also
9055       --  for entities that are not types at all return the entity itself.
9056 
9057       else
9058          return Id;
9059       end if;
9060    end Underlying_Type;
9061 
9062    ------------------------
9063    -- Write_Entity_Flags --
9064    ------------------------
9065 
9066    procedure Write_Entity_Flags (Id : Entity_Id; Prefix : String) is
9067 
9068       procedure W (Flag_Name : String; Flag : Boolean);
9069       --  Write out given flag if it is set
9070 
9071       -------
9072       -- W --
9073       -------
9074 
9075       procedure W (Flag_Name : String; Flag : Boolean) is
9076       begin
9077          if Flag then
9078             Write_Str (Prefix);
9079             Write_Str (Flag_Name);
9080             Write_Str (" = True");
9081             Write_Eol;
9082          end if;
9083       end W;
9084 
9085    --  Start of processing for Write_Entity_Flags
9086 
9087    begin
9088       if (Is_Array_Type (Id) or else Is_Record_Type (Id))
9089         and then Is_Base_Type (Id)
9090       then
9091          Write_Str (Prefix);
9092          Write_Str ("Component_Alignment = ");
9093 
9094          case Component_Alignment (Id) is
9095             when Calign_Default =>
9096                Write_Str ("Calign_Default");
9097 
9098             when Calign_Component_Size =>
9099                Write_Str ("Calign_Component_Size");
9100 
9101             when Calign_Component_Size_4 =>
9102                Write_Str ("Calign_Component_Size_4");
9103 
9104             when Calign_Storage_Unit =>
9105                Write_Str ("Calign_Storage_Unit");
9106          end case;
9107 
9108          Write_Eol;
9109       end if;
9110 
9111       W ("Address_Taken",                   Flag104 (Id));
9112       W ("Body_Needed_For_SAL",             Flag40  (Id));
9113       W ("C_Pass_By_Copy",                  Flag125 (Id));
9114       W ("Can_Never_Be_Null",               Flag38  (Id));
9115       W ("Checks_May_Be_Suppressed",        Flag31  (Id));
9116       W ("Contains_Ignored_Ghost_Code",     Flag279 (Id));
9117       W ("Debug_Info_Off",                  Flag166 (Id));
9118       W ("Default_Expressions_Processed",   Flag108 (Id));
9119       W ("Delay_Cleanups",                  Flag114 (Id));
9120       W ("Delay_Subprogram_Descriptors",    Flag50  (Id));
9121       W ("Depends_On_Private",              Flag14  (Id));
9122       W ("Discard_Names",                   Flag88  (Id));
9123       W ("Elaboration_Entity_Required",     Flag174 (Id));
9124       W ("Elaborate_Body_Desirable",        Flag210 (Id));
9125       W ("Entry_Accepted",                  Flag152 (Id));
9126       W ("Can_Use_Internal_Rep",            Flag229 (Id));
9127       W ("Finalize_Storage_Only",           Flag158 (Id));
9128       W ("From_Limited_With",               Flag159 (Id));
9129       W ("Has_Aliased_Components",          Flag135 (Id));
9130       W ("Has_Alignment_Clause",            Flag46  (Id));
9131       W ("Has_All_Calls_Remote",            Flag79  (Id));
9132       W ("Has_Atomic_Components",           Flag86  (Id));
9133       W ("Has_Biased_Representation",       Flag139 (Id));
9134       W ("Has_Completion",                  Flag26  (Id));
9135       W ("Has_Completion_In_Body",          Flag71  (Id));
9136       W ("Has_Complex_Representation",      Flag140 (Id));
9137       W ("Has_Component_Size_Clause",       Flag68  (Id));
9138       W ("Has_Contiguous_Rep",              Flag181 (Id));
9139       W ("Has_Controlled_Component",        Flag43  (Id));
9140       W ("Has_Controlling_Result",          Flag98  (Id));
9141       W ("Has_Convention_Pragma",           Flag119 (Id));
9142       W ("Has_Default_Aspect",              Flag39  (Id));
9143       W ("Has_Default_Init_Cond",           Flag3   (Id));
9144       W ("Has_Delayed_Aspects",             Flag200 (Id));
9145       W ("Has_Delayed_Freeze",              Flag18  (Id));
9146       W ("Has_Delayed_Rep_Aspects",         Flag261 (Id));
9147       W ("Has_Discriminants",               Flag5   (Id));
9148       W ("Has_Dispatch_Table",              Flag220 (Id));
9149       W ("Has_Dynamic_Predicate_Aspect",    Flag258 (Id));
9150       W ("Has_Enumeration_Rep_Clause",      Flag66  (Id));
9151       W ("Has_Exit",                        Flag47  (Id));
9152       W ("Has_Expanded_Contract",           Flag240 (Id));
9153       W ("Has_Forward_Instantiation",       Flag175 (Id));
9154       W ("Has_Fully_Qualified_Name",        Flag173 (Id));
9155       W ("Has_Gigi_Rep_Item",               Flag82  (Id));
9156       W ("Has_Homonym",                     Flag56  (Id));
9157       W ("Has_Implicit_Dereference",        Flag251 (Id));
9158       W ("Has_Independent_Components",      Flag34  (Id));
9159       W ("Has_Inheritable_Invariants",      Flag248 (Id));
9160       W ("Has_Inherited_Default_Init_Cond", Flag133 (Id));
9161       W ("Has_Inherited_Invariants",        Flag291 (Id));
9162       W ("Has_Initial_Value",               Flag219 (Id));
9163       W ("Has_Loop_Entry_Attributes",       Flag260 (Id));
9164       W ("Has_Machine_Radix_Clause",        Flag83  (Id));
9165       W ("Has_Master_Entity",               Flag21  (Id));
9166       W ("Has_Missing_Return",              Flag142 (Id));
9167       W ("Has_Nested_Block_With_Handler",   Flag101 (Id));
9168       W ("Has_Nested_Subprogram",           Flag282 (Id));
9169       W ("Has_Non_Standard_Rep",            Flag75  (Id));
9170       W ("Has_Out_Or_In_Out_Parameter",     Flag110 (Id));
9171       W ("Has_Object_Size_Clause",          Flag172 (Id));
9172       W ("Has_Own_Invariants",              Flag232 (Id));
9173       W ("Has_Per_Object_Constraint",       Flag154 (Id));
9174       W ("Has_Pragma_Controlled",           Flag27  (Id));
9175       W ("Has_Pragma_Elaborate_Body",       Flag150 (Id));
9176       W ("Has_Pragma_Inline",               Flag157 (Id));
9177       W ("Has_Pragma_Inline_Always",        Flag230 (Id));
9178       W ("Has_Pragma_No_Inline",            Flag201 (Id));
9179       W ("Has_Pragma_Ordered",              Flag198 (Id));
9180       W ("Has_Pragma_Pack",                 Flag121 (Id));
9181       W ("Has_Pragma_Preelab_Init",         Flag221 (Id));
9182       W ("Has_Pragma_Pure",                 Flag203 (Id));
9183       W ("Has_Pragma_Pure_Function",        Flag179 (Id));
9184       W ("Has_Pragma_Thread_Local_Storage", Flag169 (Id));
9185       W ("Has_Pragma_Unmodified",           Flag233 (Id));
9186       W ("Has_Pragma_Unreferenced",         Flag180 (Id));
9187       W ("Has_Pragma_Unreferenced_Objects", Flag212 (Id));
9188       W ("Has_Pragma_Unused",               Flag294 (Id));
9189       W ("Has_Predicates",                  Flag250 (Id));
9190       W ("Has_Primitive_Operations",        Flag120 (Id));
9191       W ("Has_Private_Ancestor",            Flag151 (Id));
9192       W ("Has_Private_Declaration",         Flag155 (Id));
9193       W ("Has_Protected",                   Flag271 (Id));
9194       W ("Has_Qualified_Name",              Flag161 (Id));
9195       W ("Has_RACW",                        Flag214 (Id));
9196       W ("Has_Record_Rep_Clause",           Flag65  (Id));
9197       W ("Has_Recursive_Call",              Flag143 (Id));
9198       W ("Has_Shift_Operator",              Flag267 (Id));
9199       W ("Has_Size_Clause",                 Flag29  (Id));
9200       W ("Has_Small_Clause",                Flag67  (Id));
9201       W ("Has_Specified_Layout",            Flag100 (Id));
9202       W ("Has_Specified_Stream_Input",      Flag190 (Id));
9203       W ("Has_Specified_Stream_Output",     Flag191 (Id));
9204       W ("Has_Specified_Stream_Read",       Flag192 (Id));
9205       W ("Has_Specified_Stream_Write",      Flag193 (Id));
9206       W ("Has_Static_Discriminants",        Flag211 (Id));
9207       W ("Has_Static_Predicate",            Flag269 (Id));
9208       W ("Has_Static_Predicate_Aspect",     Flag259 (Id));
9209       W ("Has_Storage_Size_Clause",         Flag23  (Id));
9210       W ("Has_Stream_Size_Clause",          Flag184 (Id));
9211       W ("Has_Task",                        Flag30  (Id));
9212       W ("Has_Timing_Event",                Flag289 (Id));
9213       W ("Has_Thunks",                      Flag228 (Id));
9214       W ("Has_Unchecked_Union",             Flag123 (Id));
9215       W ("Has_Unknown_Discriminants",       Flag72  (Id));
9216       W ("Has_Visible_Refinement",          Flag263 (Id));
9217       W ("Has_Volatile_Components",         Flag87  (Id));
9218       W ("Has_Xref_Entry",                  Flag182 (Id));
9219       W ("In_Package_Body",                 Flag48  (Id));
9220       W ("In_Private_Part",                 Flag45  (Id));
9221       W ("In_Use",                          Flag8   (Id));
9222       W ("Is_Abstract_Subprogram",          Flag19  (Id));
9223       W ("Is_Abstract_Type",                Flag146 (Id));
9224       W ("Is_Access_Constant",              Flag69  (Id));
9225       W ("Is_Actual_Subtype",               Flag293 (Id));
9226       W ("Is_Ada_2005_Only",                Flag185 (Id));
9227       W ("Is_Ada_2012_Only",                Flag199 (Id));
9228       W ("Is_Aliased",                      Flag15  (Id));
9229       W ("Is_Asynchronous",                 Flag81  (Id));
9230       W ("Is_Atomic",                       Flag85  (Id));
9231       W ("Is_Bit_Packed_Array",             Flag122 (Id));
9232       W ("Is_CPP_Class",                    Flag74  (Id));
9233       W ("Is_Called",                       Flag102 (Id));
9234       W ("Is_Character_Type",               Flag63  (Id));
9235       W ("Is_Checked_Ghost_Entity",         Flag277 (Id));
9236       W ("Is_Child_Unit",                   Flag73  (Id));
9237       W ("Is_Class_Wide_Equivalent_Type",   Flag35  (Id));
9238       W ("Is_Compilation_Unit",             Flag149 (Id));
9239       W ("Is_Completely_Hidden",            Flag103 (Id));
9240       W ("Is_Concurrent_Record_Type",       Flag20  (Id));
9241       W ("Is_Constr_Subt_For_UN_Aliased",   Flag141 (Id));
9242       W ("Is_Constr_Subt_For_U_Nominal",    Flag80  (Id));
9243       W ("Is_Constrained",                  Flag12  (Id));
9244       W ("Is_Constructor",                  Flag76  (Id));
9245       W ("Is_Controlled",                   Flag42  (Id));
9246       W ("Is_Controlling_Formal",           Flag97  (Id));
9247       W ("Is_Default_Init_Cond_Procedure",  Flag132 (Id));
9248       W ("Is_Descendant_Of_Address",        Flag223 (Id));
9249       W ("Is_Discrim_SO_Function",          Flag176 (Id));
9250       W ("Is_Discriminant_Check_Function",  Flag264 (Id));
9251       W ("Is_Dispatch_Table_Entity",        Flag234 (Id));
9252       W ("Is_Dispatching_Operation",        Flag6   (Id));
9253       W ("Is_Eliminated",                   Flag124 (Id));
9254       W ("Is_Entry_Formal",                 Flag52  (Id));
9255       W ("Is_Exception_Handler",            Flag286 (Id));
9256       W ("Is_Exported",                     Flag99  (Id));
9257       W ("Is_First_Subtype",                Flag70  (Id));
9258       W ("Is_For_Access_Subtype",           Flag118 (Id));
9259       W ("Is_Formal_Subprogram",            Flag111 (Id));
9260       W ("Is_Frozen",                       Flag4   (Id));
9261       W ("Is_Generic_Actual_Subprogram",    Flag274 (Id));
9262       W ("Is_Generic_Actual_Type",          Flag94  (Id));
9263       W ("Is_Generic_Instance",             Flag130 (Id));
9264       W ("Is_Generic_Type",                 Flag13  (Id));
9265       W ("Is_Hidden",                       Flag57  (Id));
9266       W ("Is_Hidden_Non_Overridden_Subpgm", Flag2   (Id));
9267       W ("Is_Hidden_Open_Scope",            Flag171 (Id));
9268       W ("Is_Ignored_Ghost_Entity",         Flag278 (Id));
9269       W ("Is_Immediately_Visible",          Flag7   (Id));
9270       W ("Is_Implementation_Defined",       Flag254 (Id));
9271       W ("Is_Imported",                     Flag24  (Id));
9272       W ("Is_Independent",                  Flag268 (Id));
9273       W ("Is_Inlined",                      Flag11  (Id));
9274       W ("Is_Inlined_Always",               Flag1   (Id));
9275       W ("Is_Instantiated",                 Flag126 (Id));
9276       W ("Is_Interface",                    Flag186 (Id));
9277       W ("Is_Internal",                     Flag17  (Id));
9278       W ("Is_Interrupt_Handler",            Flag89  (Id));
9279       W ("Is_Intrinsic_Subprogram",         Flag64  (Id));
9280       W ("Is_Invariant_Procedure",          Flag257 (Id));
9281       W ("Is_Itype",                        Flag91  (Id));
9282       W ("Is_Known_Non_Null",               Flag37  (Id));
9283       W ("Is_Known_Null",                   Flag204 (Id));
9284       W ("Is_Known_Valid",                  Flag170 (Id));
9285       W ("Is_Limited_Composite",            Flag106 (Id));
9286       W ("Is_Limited_Interface",            Flag197 (Id));
9287       W ("Is_Limited_Record",               Flag25  (Id));
9288       W ("Is_Local_Anonymous_Access",       Flag194 (Id));
9289       W ("Is_Machine_Code_Subprogram",      Flag137 (Id));
9290       W ("Is_Non_Static_Subtype",           Flag109 (Id));
9291       W ("Is_Null_Init_Proc",               Flag178 (Id));
9292       W ("Is_Obsolescent",                  Flag153 (Id));
9293       W ("Is_Only_Out_Parameter",           Flag226 (Id));
9294       W ("Is_Package_Body_Entity",          Flag160 (Id));
9295       W ("Is_Packed",                       Flag51  (Id));
9296       W ("Is_Packed_Array_Impl_Type",       Flag138 (Id));
9297       W ("Is_Param_Block_Component_Type",   Flag215 (Id));
9298       W ("Is_Partial_Invariant_Procedure",  Flag292 (Id));
9299       W ("Is_Potentially_Use_Visible",      Flag9   (Id));
9300       W ("Is_Predicate_Function",           Flag255 (Id));
9301       W ("Is_Predicate_Function_M",         Flag256 (Id));
9302       W ("Is_Preelaborated",                Flag59  (Id));
9303       W ("Is_Primitive",                    Flag218 (Id));
9304       W ("Is_Primitive_Wrapper",            Flag195 (Id));
9305       W ("Is_Private_Composite",            Flag107 (Id));
9306       W ("Is_Private_Descendant",           Flag53  (Id));
9307       W ("Is_Private_Primitive",            Flag245 (Id));
9308       W ("Is_Processed_Transient",          Flag252 (Id));
9309       W ("Is_Public",                       Flag10  (Id));
9310       W ("Is_Pure",                         Flag44  (Id));
9311       W ("Is_Pure_Unit_Access_Type",        Flag189 (Id));
9312       W ("Is_RACW_Stub_Type",               Flag244 (Id));
9313       W ("Is_Raised",                       Flag224 (Id));
9314       W ("Is_Remote_Call_Interface",        Flag62  (Id));
9315       W ("Is_Remote_Types",                 Flag61  (Id));
9316       W ("Is_Renaming_Of_Object",           Flag112 (Id));
9317       W ("Is_Return_Object",                Flag209 (Id));
9318       W ("Is_Safe_To_Reevaluate",           Flag249 (Id));
9319       W ("Is_Shared_Passive",               Flag60  (Id));
9320       W ("Is_Static_Type",                  Flag281 (Id));
9321       W ("Is_Statically_Allocated",         Flag28  (Id));
9322       W ("Is_Tag",                          Flag78  (Id));
9323       W ("Is_Tagged_Type",                  Flag55  (Id));
9324       W ("Is_Thunk",                        Flag225 (Id));
9325       W ("Is_Trivial_Subprogram",           Flag235 (Id));
9326       W ("Is_True_Constant",                Flag163 (Id));
9327       W ("Is_Unchecked_Union",              Flag117 (Id));
9328       W ("Is_Underlying_Record_View",       Flag246 (Id));
9329       W ("Is_Unimplemented",                Flag284 (Id));
9330       W ("Is_Unsigned_Type",                Flag144 (Id));
9331       W ("Is_Uplevel_Referenced_Entity",    Flag283 (Id));
9332       W ("Is_Valued_Procedure",             Flag127 (Id));
9333       W ("Is_Visible_Formal",               Flag206 (Id));
9334       W ("Is_Visible_Lib_Unit",             Flag116 (Id));
9335       W ("Is_Volatile",                     Flag16  (Id));
9336       W ("Is_Volatile_Full_Access",         Flag285 (Id));
9337       W ("Itype_Printed",                   Flag202 (Id));
9338       W ("Kill_Elaboration_Checks",         Flag32  (Id));
9339       W ("Kill_Range_Checks",               Flag33  (Id));
9340       W ("Known_To_Have_Preelab_Init",      Flag207 (Id));
9341       W ("Low_Bound_Tested",                Flag205 (Id));
9342       W ("Machine_Radix_10",                Flag84  (Id));
9343       W ("Materialize_Entity",              Flag168 (Id));
9344       W ("May_Inherit_Delayed_Rep_Aspects", Flag262 (Id));
9345       W ("Must_Be_On_Byte_Boundary",        Flag183 (Id));
9346       W ("Must_Have_Preelab_Init",          Flag208 (Id));
9347       W ("Needs_Debug_Info",                Flag147 (Id));
9348       W ("Needs_No_Actuals",                Flag22  (Id));
9349       W ("Never_Set_In_Source",             Flag115 (Id));
9350       W ("No_Dynamic_Predicate_On_actual",  Flag276 (Id));
9351       W ("No_Pool_Assigned",                Flag131 (Id));
9352       W ("No_Predicate_On_actual",          Flag275 (Id));
9353       W ("No_Return",                       Flag113 (Id));
9354       W ("No_Strict_Aliasing",              Flag136 (Id));
9355       W ("Non_Binary_Modulus",              Flag58  (Id));
9356       W ("Nonzero_Is_True",                 Flag162 (Id));
9357       W ("OK_To_Rename",                    Flag247 (Id));
9358       W ("OK_To_Reorder_Components",        Flag239 (Id));
9359       W ("Optimize_Alignment_Space",        Flag241 (Id));
9360       W ("Optimize_Alignment_Time",         Flag242 (Id));
9361       W ("Overlays_Constant",               Flag243 (Id));
9362       W ("Partial_View_Has_Unknown_Discr",  Flag280 (Id));
9363       W ("Reachable",                       Flag49  (Id));
9364       W ("Referenced",                      Flag156 (Id));
9365       W ("Referenced_As_LHS",               Flag36  (Id));
9366       W ("Referenced_As_Out_Parameter",     Flag227 (Id));
9367       W ("Renamed_In_Spec",                 Flag231 (Id));
9368       W ("Requires_Overriding",             Flag213 (Id));
9369       W ("Return_Present",                  Flag54  (Id));
9370       W ("Returns_By_Ref",                  Flag90  (Id));
9371       W ("Returns_Limited_View",            Flag134 (Id));
9372       W ("Reverse_Bit_Order",               Flag164 (Id));
9373       W ("Reverse_Storage_Order",           Flag93  (Id));
9374       W ("Rewritten_For_C",                 Flag287 (Id));
9375       W ("Predicates_Ignored",              Flag288 (Id));
9376       W ("Sec_Stack_Needed_For_Return",     Flag167 (Id));
9377       W ("Size_Depends_On_Discriminant",    Flag177 (Id));
9378       W ("Size_Known_At_Compile_Time",      Flag92  (Id));
9379       W ("SPARK_Aux_Pragma_Inherited",      Flag266 (Id));
9380       W ("SPARK_Pragma_Inherited",          Flag265 (Id));
9381       W ("SSO_Set_High_By_Default",         Flag273 (Id));
9382       W ("SSO_Set_Low_By_Default",          Flag272 (Id));
9383       W ("Static_Elaboration_Desired",      Flag77  (Id));
9384       W ("Stores_Attribute_Old_Prefix",     Flag270 (Id));
9385       W ("Strict_Alignment",                Flag145 (Id));
9386       W ("Suppress_Elaboration_Warnings",   Flag148 (Id));
9387       W ("Suppress_Initialization",         Flag105 (Id));
9388       W ("Suppress_Style_Checks",           Flag165 (Id));
9389       W ("Suppress_Value_Tracking_On_Call", Flag217 (Id));
9390       W ("Treat_As_Volatile",               Flag41  (Id));
9391       W ("Universal_Aliasing",              Flag216 (Id));
9392       W ("Used_As_Generic_Actual",          Flag222 (Id));
9393       W ("Uses_Sec_Stack",                  Flag95  (Id));
9394       W ("Warnings_Off",                    Flag96  (Id));
9395       W ("Warnings_Off_Used",               Flag236 (Id));
9396       W ("Warnings_Off_Used_Unmodified",    Flag237 (Id));
9397       W ("Warnings_Off_Used_Unreferenced",  Flag238 (Id));
9398       W ("Was_Hidden",                      Flag196 (Id));
9399    end Write_Entity_Flags;
9400 
9401    -----------------------
9402    -- Write_Entity_Info --
9403    -----------------------
9404 
9405    procedure Write_Entity_Info (Id : Entity_Id; Prefix : String) is
9406 
9407       procedure Write_Attribute (Which : String; Nam : E);
9408       --  Write attribute value with given string name
9409 
9410       procedure Write_Kind (Id : Entity_Id);
9411       --  Write Ekind field of entity
9412 
9413       ---------------------
9414       -- Write_Attribute --
9415       ---------------------
9416 
9417       procedure Write_Attribute (Which : String; Nam : E) is
9418       begin
9419          Write_Str (Prefix);
9420          Write_Str (Which);
9421          Write_Int (Int (Nam));
9422          Write_Str (" ");
9423          Write_Name (Chars (Nam));
9424          Write_Str (" ");
9425       end Write_Attribute;
9426 
9427       ----------------
9428       -- Write_Kind --
9429       ----------------
9430 
9431       procedure Write_Kind (Id : Entity_Id) is
9432          K : constant String := Entity_Kind'Image (Ekind (Id));
9433 
9434       begin
9435          Write_Str (Prefix);
9436          Write_Str ("   Kind    ");
9437 
9438          if Is_Type (Id) and then Is_Tagged_Type (Id) then
9439             Write_Str ("TAGGED ");
9440          end if;
9441 
9442          Write_Str (K (3 .. K'Length));
9443          Write_Str (" ");
9444 
9445          if Is_Type (Id) and then Depends_On_Private (Id) then
9446             Write_Str ("Depends_On_Private ");
9447          end if;
9448       end Write_Kind;
9449 
9450    --  Start of processing for Write_Entity_Info
9451 
9452    begin
9453       Write_Eol;
9454       Write_Attribute ("Name ", Id);
9455       Write_Int (Int (Id));
9456       Write_Eol;
9457       Write_Kind (Id);
9458       Write_Eol;
9459       Write_Attribute ("   Type    ", Etype (Id));
9460       Write_Eol;
9461       Write_Attribute ("   Scope   ", Scope (Id));
9462       Write_Eol;
9463 
9464       case Ekind (Id) is
9465 
9466          when Discrete_Kind =>
9467             Write_Str ("Bounds: Id = ");
9468 
9469             if Present (Scalar_Range (Id)) then
9470                Write_Int (Int (Type_Low_Bound (Id)));
9471                Write_Str (" .. Id = ");
9472                Write_Int (Int (Type_High_Bound (Id)));
9473             else
9474                Write_Str ("Empty");
9475             end if;
9476 
9477             Write_Eol;
9478 
9479          when Array_Kind =>
9480             declare
9481                Index : E;
9482 
9483             begin
9484                Write_Attribute
9485                  ("   Component Type    ", Component_Type (Id));
9486                Write_Eol;
9487                Write_Str (Prefix);
9488                Write_Str ("   Indexes ");
9489 
9490                Index := First_Index (Id);
9491                while Present (Index) loop
9492                   Write_Attribute (" ", Etype (Index));
9493                   Index := Next_Index (Index);
9494                end loop;
9495 
9496                Write_Eol;
9497             end;
9498 
9499          when Access_Kind =>
9500                Write_Attribute
9501                  ("   Directly Designated Type ",
9502                   Directly_Designated_Type (Id));
9503                Write_Eol;
9504 
9505          when Overloadable_Kind =>
9506             if Present (Homonym (Id)) then
9507                Write_Str ("   Homonym   ");
9508                Write_Name (Chars (Homonym (Id)));
9509                Write_Str ("   ");
9510                Write_Int (Int (Homonym (Id)));
9511                Write_Eol;
9512             end if;
9513 
9514             Write_Eol;
9515 
9516          when E_Component =>
9517             if Ekind (Scope (Id)) in Record_Kind then
9518                Write_Attribute (
9519                   "   Original_Record_Component   ",
9520                   Original_Record_Component (Id));
9521                Write_Int (Int (Original_Record_Component (Id)));
9522                Write_Eol;
9523             end if;
9524 
9525          when others => null;
9526       end case;
9527    end Write_Entity_Info;
9528 
9529    -----------------------
9530    -- Write_Field6_Name --
9531    -----------------------
9532 
9533    procedure Write_Field6_Name (Id : Entity_Id) is
9534       pragma Unreferenced (Id);
9535    begin
9536       Write_Str ("First_Rep_Item");
9537    end Write_Field6_Name;
9538 
9539    -----------------------
9540    -- Write_Field7_Name --
9541    -----------------------
9542 
9543    procedure Write_Field7_Name (Id : Entity_Id) is
9544       pragma Unreferenced (Id);
9545    begin
9546       Write_Str ("Freeze_Node");
9547    end Write_Field7_Name;
9548 
9549    -----------------------
9550    -- Write_Field8_Name --
9551    -----------------------
9552 
9553    procedure Write_Field8_Name (Id : Entity_Id) is
9554    begin
9555       case Ekind (Id) is
9556          when Type_Kind                                    =>
9557             Write_Str ("Associated_Node_For_Itype");
9558 
9559          when E_Package                                    =>
9560             Write_Str ("Dependent_Instances");
9561 
9562          when E_Loop                                       =>
9563             Write_Str ("First_Exit_Statement");
9564 
9565          when E_Variable                                   =>
9566             Write_Str ("Hiding_Loop_Variable");
9567 
9568          when Formal_Kind                                  |
9569               E_Function                                   |
9570               E_Subprogram_Body                            =>
9571             Write_Str ("Mechanism");
9572 
9573          when E_Component                                  |
9574               E_Discriminant                               =>
9575             Write_Str ("Normalized_First_Bit");
9576 
9577          when E_Abstract_State                             =>
9578             Write_Str ("Refinement_Constituents");
9579 
9580          when E_Return_Statement                           =>
9581             Write_Str ("Return_Applies_To");
9582 
9583          when others                                       =>
9584             Write_Str ("Field8??");
9585       end case;
9586    end Write_Field8_Name;
9587 
9588    -----------------------
9589    -- Write_Field9_Name --
9590    -----------------------
9591 
9592    procedure Write_Field9_Name (Id : Entity_Id) is
9593    begin
9594       case Ekind (Id) is
9595          when Type_Kind                                    =>
9596             Write_Str ("Class_Wide_Type");
9597 
9598          when Object_Kind                                  =>
9599             Write_Str ("Current_Value");
9600 
9601          when E_Function                                   |
9602               E_Generic_Function                           |
9603               E_Generic_Package                            |
9604               E_Generic_Procedure                          |
9605               E_Package                                    |
9606               E_Procedure                                  =>
9607             Write_Str ("Renaming_Map");
9608 
9609          when others                                       =>
9610             Write_Str ("Field9??");
9611       end case;
9612    end Write_Field9_Name;
9613 
9614    ------------------------
9615    -- Write_Field10_Name --
9616    ------------------------
9617 
9618    procedure Write_Field10_Name (Id : Entity_Id) is
9619    begin
9620       case Ekind (Id) is
9621          when Class_Wide_Kind                              |
9622               Incomplete_Kind                              |
9623               E_Record_Type                                |
9624               E_Record_Subtype                             |
9625               Private_Kind                                 |
9626               Concurrent_Kind                              =>
9627             Write_Str ("Direct_Primitive_Operations");
9628 
9629          when E_In_Parameter                               |
9630               E_Constant                                   =>
9631             Write_Str ("Discriminal_Link");
9632 
9633          when Float_Kind                                   =>
9634             Write_Str ("Float_Rep");
9635 
9636          when E_Function                                   |
9637               E_Package                                    |
9638               E_Package_Body                               |
9639               E_Procedure                                  =>
9640             Write_Str ("Handler_Records");
9641 
9642          when E_Component                                  |
9643               E_Discriminant                               =>
9644             Write_Str ("Normalized_Position_Max");
9645 
9646          when E_Abstract_State                             |
9647               E_Variable                                   =>
9648             Write_Str ("Part_Of_Constituents");
9649 
9650          when others                                       =>
9651             Write_Str ("Field10??");
9652       end case;
9653    end Write_Field10_Name;
9654 
9655    ------------------------
9656    -- Write_Field11_Name --
9657    ------------------------
9658 
9659    procedure Write_Field11_Name (Id : Entity_Id) is
9660    begin
9661       case Ekind (Id) is
9662          when E_Block                                      =>
9663             Write_Str ("Block_Node");
9664 
9665          when E_Component                                  |
9666               E_Discriminant                               =>
9667             Write_Str ("Component_Bit_Offset");
9668 
9669          when Formal_Kind                                  =>
9670             Write_Str ("Entry_Component");
9671 
9672          when E_Enumeration_Literal                        =>
9673             Write_Str ("Enumeration_Pos");
9674 
9675          when Type_Kind                                    |
9676               E_Constant                                   =>
9677             Write_Str ("Full_View");
9678 
9679          when E_Generic_Package                            =>
9680             Write_Str ("Generic_Homonym");
9681 
9682          when E_Variable                                   =>
9683             Write_Str ("Part_Of_References");
9684 
9685          when E_Entry                                      |
9686               E_Entry_Family                               |
9687               E_Function                                   |
9688               E_Procedure                                  =>
9689             Write_Str ("Protected_Body_Subprogram");
9690 
9691          when others                                       =>
9692             Write_Str ("Field11??");
9693       end case;
9694    end Write_Field11_Name;
9695 
9696    ------------------------
9697    -- Write_Field12_Name --
9698    ------------------------
9699 
9700    procedure Write_Field12_Name (Id : Entity_Id) is
9701    begin
9702       case Ekind (Id) is
9703          when E_Package                                    =>
9704             Write_Str ("Associated_Formal_Package");
9705 
9706          when Entry_Kind                                   =>
9707             Write_Str ("Barrier_Function");
9708 
9709          when E_Enumeration_Literal                        =>
9710             Write_Str ("Enumeration_Rep");
9711 
9712          when Type_Kind                                    |
9713               E_Component                                  |
9714               E_Constant                                   |
9715               E_Discriminant                               |
9716               E_Exception                                  |
9717               E_In_Parameter                               |
9718               E_In_Out_Parameter                           |
9719               E_Out_Parameter                              |
9720               E_Loop_Parameter                             |
9721               E_Variable                                   =>
9722             Write_Str ("Esize");
9723 
9724          when E_Function                                   |
9725               E_Procedure                                  =>
9726             Write_Str ("Next_Inlined_Subprogram");
9727 
9728          when others                                       =>
9729             Write_Str ("Field12??");
9730       end case;
9731    end Write_Field12_Name;
9732 
9733    ------------------------
9734    -- Write_Field13_Name --
9735    ------------------------
9736 
9737    procedure Write_Field13_Name (Id : Entity_Id) is
9738    begin
9739       case Ekind (Id) is
9740          when E_Component                                  |
9741               E_Discriminant                               =>
9742             Write_Str ("Component_Clause");
9743 
9744          when E_Function                                   =>
9745             Write_Str ("Elaboration_Entity");
9746 
9747          when E_Procedure                                  |
9748               E_Package                                    |
9749               Generic_Unit_Kind                            =>
9750             Write_Str ("Elaboration_Entity");
9751 
9752          when Formal_Kind                                  |
9753               E_Variable                                   =>
9754             Write_Str ("Extra_Accessibility");
9755 
9756          when Type_Kind                                    =>
9757             Write_Str ("RM_Size");
9758 
9759          when others                                       =>
9760             Write_Str ("Field13??");
9761       end case;
9762    end Write_Field13_Name;
9763 
9764    -----------------------
9765    -- Write_Field14_Name --
9766    -----------------------
9767 
9768    procedure Write_Field14_Name (Id : Entity_Id) is
9769    begin
9770       case Ekind (Id) is
9771          when Type_Kind                                    |
9772               Formal_Kind                                  |
9773               E_Constant                                   |
9774               E_Exception                                  |
9775               E_Loop_Parameter                             |
9776               E_Variable                                   =>
9777             Write_Str ("Alignment");
9778 
9779          when E_Component                                  |
9780               E_Discriminant                               =>
9781             Write_Str ("Normalized_Position");
9782 
9783          when E_Entry                                      |
9784               E_Entry_Family                               |
9785               E_Function                                   |
9786               E_Procedure                                  =>
9787             Write_Str ("Postconditions_Proc");
9788 
9789          when E_Generic_Package                            |
9790               E_Package                                    =>
9791             Write_Str ("Shadow_Entities");
9792 
9793          when others                                       =>
9794             Write_Str ("Field14??");
9795       end case;
9796    end Write_Field14_Name;
9797 
9798    ------------------------
9799    -- Write_Field15_Name --
9800    ------------------------
9801 
9802    procedure Write_Field15_Name (Id : Entity_Id) is
9803    begin
9804       case Ekind (Id) is
9805          when E_Discriminant                               =>
9806             Write_Str ("Discriminant_Number");
9807 
9808          when E_Component                                  =>
9809             Write_Str ("DT_Entry_Count");
9810 
9811          when E_Function                                   |
9812               E_Procedure                                  =>
9813             Write_Str ("DT_Position");
9814 
9815          when Entry_Kind                                   =>
9816             Write_Str ("Entry_Parameters_Type");
9817 
9818          when Formal_Kind                                  =>
9819             Write_Str ("Extra_Formal");
9820 
9821          when Type_Kind                                    =>
9822             Write_Str ("Pending_Access_Types");
9823 
9824          when E_Package                                    |
9825               E_Package_Body                               =>
9826             Write_Str ("Related_Instance");
9827 
9828          when E_Constant                                   |
9829               E_Variable                                   =>
9830             Write_Str ("Status_Flag_Or_Transient_Decl");
9831 
9832          when others                                       =>
9833             Write_Str ("Field15??");
9834       end case;
9835    end Write_Field15_Name;
9836 
9837    ------------------------
9838    -- Write_Field16_Name --
9839    ------------------------
9840 
9841    procedure Write_Field16_Name (Id : Entity_Id) is
9842    begin
9843       case Ekind (Id) is
9844          when E_Record_Type                                |
9845               E_Record_Type_With_Private                   =>
9846             Write_Str ("Access_Disp_Table");
9847 
9848          when E_Abstract_State                             =>
9849             Write_Str ("Body_References");
9850 
9851          when E_Record_Subtype                             |
9852               E_Class_Wide_Subtype                         =>
9853             Write_Str ("Cloned_Subtype");
9854 
9855          when E_Function                                   |
9856               E_Procedure                                  =>
9857             Write_Str ("DTC_Entity");
9858 
9859          when E_Component                                  =>
9860             Write_Str ("Entry_Formal");
9861 
9862          when E_Package                                    |
9863               E_Generic_Package                            |
9864               Concurrent_Kind                              =>
9865             Write_Str ("First_Private_Entity");
9866 
9867          when Enumeration_Kind                             =>
9868             Write_Str ("Lit_Strings");
9869 
9870          when Decimal_Fixed_Point_Kind                     =>
9871             Write_Str ("Scale_Value");
9872 
9873          when E_String_Literal_Subtype                     =>
9874             Write_Str ("String_Literal_Length");
9875 
9876          when E_Variable                                   |
9877               E_Out_Parameter                              =>
9878             Write_Str ("Unset_Reference");
9879 
9880          when others                                       =>
9881             Write_Str ("Field16??");
9882       end case;
9883    end Write_Field16_Name;
9884 
9885    ------------------------
9886    -- Write_Field17_Name --
9887    ------------------------
9888 
9889    procedure Write_Field17_Name (Id : Entity_Id) is
9890    begin
9891       case Ekind (Id) is
9892          when Formal_Kind                                  |
9893               E_Constant                                   |
9894               E_Generic_In_Out_Parameter                   |
9895               E_Variable                                   =>
9896             Write_Str ("Actual_Subtype");
9897 
9898          when Digits_Kind                                  =>
9899             Write_Str ("Digits_Value");
9900 
9901          when E_Discriminant                               =>
9902             Write_Str ("Discriminal");
9903 
9904          when E_Block                                      |
9905               Class_Wide_Kind                              |
9906               Concurrent_Kind                              |
9907               Private_Kind                                 |
9908               E_Entry                                      |
9909               E_Entry_Family                               |
9910               E_Function                                   |
9911               E_Generic_Function                           |
9912               E_Generic_Package                            |
9913               E_Generic_Procedure                          |
9914               E_Loop                                       |
9915               E_Operator                                   |
9916               E_Package                                    |
9917               E_Package_Body                               |
9918               E_Procedure                                  |
9919               E_Record_Type                                |
9920               E_Record_Subtype                             |
9921               E_Return_Statement                           |
9922               E_Subprogram_Body                            |
9923               E_Subprogram_Type                            =>
9924             Write_Str ("First_Entity");
9925 
9926          when Array_Kind                                   =>
9927             Write_Str ("First_Index");
9928 
9929          when Enumeration_Kind                             =>
9930             Write_Str ("First_Literal");
9931 
9932          when Access_Kind                                  =>
9933             Write_Str ("Master_Id");
9934 
9935          when Modular_Integer_Kind                         =>
9936             Write_Str ("Modulus");
9937 
9938          when E_Component                                  =>
9939             Write_Str ("Prival");
9940 
9941          when others                                       =>
9942             Write_Str ("Field17??");
9943       end case;
9944    end Write_Field17_Name;
9945 
9946    ------------------------
9947    -- Write_Field18_Name --
9948    ------------------------
9949 
9950    procedure Write_Field18_Name (Id : Entity_Id) is
9951    begin
9952       case Ekind (Id) is
9953          when E_Enumeration_Literal                        |
9954               E_Function                                   |
9955               E_Operator                                   |
9956               E_Procedure                                  =>
9957             Write_Str ("Alias");
9958 
9959          when E_Record_Type                                =>
9960             Write_Str ("Corresponding_Concurrent_Type");
9961 
9962          when E_Subprogram_Body                            =>
9963             Write_Str ("Corresponding_Protected_Entry");
9964 
9965          when Concurrent_Kind                              =>
9966             Write_Str ("Corresponding_Record_Type");
9967 
9968          when E_Label                                      |
9969               E_Loop                                       |
9970               E_Block                                      =>
9971             Write_Str ("Enclosing_Scope");
9972 
9973          when E_Entry_Index_Parameter                      =>
9974             Write_Str ("Entry_Index_Constant");
9975 
9976          when E_Class_Wide_Subtype                         |
9977               E_Access_Protected_Subprogram_Type           |
9978               E_Anonymous_Access_Protected_Subprogram_Type |
9979               E_Access_Subprogram_Type                     |
9980               E_Exception_Type                             =>
9981             Write_Str ("Equivalent_Type");
9982 
9983          when Fixed_Point_Kind                             =>
9984             Write_Str ("Delta_Value");
9985 
9986          when Enumeration_Kind                             =>
9987             Write_Str ("Lit_Indexes");
9988 
9989          when Incomplete_Or_Private_Kind                   |
9990               E_Record_Subtype                             =>
9991             Write_Str ("Private_Dependents");
9992 
9993          when Object_Kind                                  =>
9994             Write_Str ("Renamed_Object");
9995 
9996          when E_Exception                                  |
9997               E_Package                                    |
9998               E_Generic_Function                           |
9999               E_Generic_Procedure                          |
10000               E_Generic_Package                            =>
10001             Write_Str ("Renamed_Entity");
10002 
10003          when E_String_Literal_Subtype                     =>
10004             Write_Str ("String_Literal_Low_Bound");
10005 
10006          when others                                       =>
10007             Write_Str ("Field18??");
10008       end case;
10009    end Write_Field18_Name;
10010 
10011    -----------------------
10012    -- Write_Field19_Name --
10013    -----------------------
10014 
10015    procedure Write_Field19_Name (Id : Entity_Id) is
10016    begin
10017       case Ekind (Id) is
10018          when E_Package                                    |
10019               E_Generic_Package                            =>
10020             Write_Str ("Body_Entity");
10021 
10022          when E_Discriminant                               =>
10023             Write_Str ("Corresponding_Discriminant");
10024 
10025          when Scalar_Kind                                  =>
10026             Write_Str ("Default_Aspect_Value");
10027 
10028          when E_Abstract_State                             |
10029               E_Class_Wide_Type                            |
10030               E_Incomplete_Type                            =>
10031             Write_Str ("Non_Limited_View");
10032 
10033          when E_Incomplete_Subtype                         =>
10034             if From_Limited_With (Id) then
10035                Write_Str ("Non_Limited_View");
10036             end if;
10037 
10038          when E_Array_Type                                 =>
10039             Write_Str ("Default_Component_Value");
10040 
10041          when E_Protected_Type                             =>
10042             Write_Str ("Entry_Bodies_Array");
10043 
10044          when E_Function                                   |
10045               E_Operator                                   |
10046               E_Subprogram_Type                            =>
10047             Write_Str ("Extra_Accessibility_Of_Result");
10048 
10049          when E_Record_Type                                =>
10050             Write_Str ("Parent_Subtype");
10051 
10052          when E_Constant                                   |
10053               E_Variable                                   =>
10054             Write_Str ("Size_Check_Code");
10055 
10056          when E_Package_Body                               |
10057               Formal_Kind                                  =>
10058             Write_Str ("Spec_Entity");
10059 
10060          when Private_Kind                                 =>
10061             Write_Str ("Underlying_Full_View");
10062 
10063          when others                                       =>
10064             Write_Str ("Field19??");
10065       end case;
10066    end Write_Field19_Name;
10067 
10068    -----------------------
10069    -- Write_Field20_Name --
10070    -----------------------
10071 
10072    procedure Write_Field20_Name (Id : Entity_Id) is
10073    begin
10074       case Ekind (Id) is
10075          when Array_Kind                                   =>
10076             Write_Str ("Component_Type");
10077 
10078          when E_In_Parameter                               |
10079               E_Generic_In_Parameter                       =>
10080             Write_Str ("Default_Value");
10081 
10082          when Access_Kind                                  =>
10083             Write_Str ("Directly_Designated_Type");
10084 
10085          when E_Component                                  =>
10086             Write_Str ("Discriminant_Checking_Func");
10087 
10088          when E_Discriminant                               =>
10089             Write_Str ("Discriminant_Default_Value");
10090 
10091          when E_Block                                      |
10092               Class_Wide_Kind                              |
10093               Concurrent_Kind                              |
10094               Private_Kind                                 |
10095               E_Entry                                      |
10096               E_Entry_Family                               |
10097               E_Function                                   |
10098               E_Generic_Function                           |
10099               E_Generic_Package                            |
10100               E_Generic_Procedure                          |
10101               E_Loop                                       |
10102               E_Operator                                   |
10103               E_Package                                    |
10104               E_Package_Body                               |
10105               E_Procedure                                  |
10106               E_Record_Type                                |
10107               E_Record_Subtype                             |
10108               E_Return_Statement                           |
10109               E_Subprogram_Body                            |
10110               E_Subprogram_Type                            =>
10111             Write_Str ("Last_Entity");
10112 
10113          when E_Constant                                   |
10114               E_Variable                                   =>
10115             Write_Str ("Prival_Link");
10116 
10117          when Scalar_Kind                                  =>
10118             Write_Str ("Scalar_Range");
10119 
10120          when E_Exception                                  =>
10121             Write_Str ("Register_Exception_Call");
10122 
10123          when others                                       =>
10124             Write_Str ("Field20??");
10125       end case;
10126    end Write_Field20_Name;
10127 
10128    -----------------------
10129    -- Write_Field21_Name --
10130    -----------------------
10131 
10132    procedure Write_Field21_Name (Id : Entity_Id) is
10133    begin
10134       case Ekind (Id) is
10135          when Entry_Kind                                   =>
10136             Write_Str ("Accept_Address");
10137 
10138          when E_In_Parameter                               =>
10139             Write_Str ("Default_Expr_Function");
10140 
10141          when Concurrent_Kind                              |
10142               Incomplete_Or_Private_Kind                   |
10143               Class_Wide_Kind                              |
10144               E_Record_Type                                |
10145               E_Record_Subtype                             =>
10146             Write_Str ("Discriminant_Constraint");
10147 
10148          when E_Constant                                   |
10149               E_Exception                                  |
10150               E_Function                                   |
10151               E_Generic_Function                           |
10152               E_Procedure                                  |
10153               E_Generic_Procedure                          |
10154               E_Variable                                   =>
10155             Write_Str ("Interface_Name");
10156 
10157          when Array_Kind                                   |
10158               Modular_Integer_Kind                         =>
10159             Write_Str ("Original_Array_Type");
10160 
10161          when Fixed_Point_Kind                             =>
10162             Write_Str ("Small_Value");
10163 
10164          when others                                       =>
10165             Write_Str ("Field21??");
10166       end case;
10167    end Write_Field21_Name;
10168 
10169    -----------------------
10170    -- Write_Field22_Name --
10171    -----------------------
10172 
10173    procedure Write_Field22_Name (Id : Entity_Id) is
10174    begin
10175       case Ekind (Id) is
10176          when Access_Kind                                  =>
10177             Write_Str ("Associated_Storage_Pool");
10178 
10179          when Array_Kind                                   =>
10180             Write_Str ("Component_Size");
10181 
10182          when E_Record_Type                                =>
10183             Write_Str ("Corresponding_Remote_Type");
10184 
10185          when E_Component                                  |
10186               E_Discriminant                               =>
10187             Write_Str ("Original_Record_Component");
10188 
10189          when E_Enumeration_Literal                        =>
10190             Write_Str ("Enumeration_Rep_Expr");
10191 
10192          when E_Record_Type_With_Private                   |
10193               E_Record_Subtype_With_Private                |
10194               E_Private_Type                               |
10195               E_Private_Subtype                            |
10196               E_Limited_Private_Type                       |
10197               E_Limited_Private_Subtype                    =>
10198             Write_Str ("Private_View");
10199 
10200          when Formal_Kind                                  =>
10201             Write_Str ("Protected_Formal");
10202 
10203          when E_Block                                      |
10204               E_Entry                                      |
10205               E_Entry_Family                               |
10206               E_Function                                   |
10207               E_Loop                                       |
10208               E_Package                                    |
10209               E_Package_Body                               |
10210               E_Generic_Package                            |
10211               E_Generic_Function                           |
10212               E_Generic_Procedure                          |
10213               E_Procedure                                  |
10214               E_Protected_Type                             |
10215               E_Return_Statement                           |
10216               E_Subprogram_Body                            |
10217               E_Task_Type                                  =>
10218             Write_Str ("Scope_Depth_Value");
10219 
10220          when E_Variable                                   =>
10221             Write_Str ("Shared_Var_Procs_Instance");
10222 
10223          when others                                       =>
10224             Write_Str ("Field22??");
10225       end case;
10226    end Write_Field22_Name;
10227 
10228    ------------------------
10229    -- Write_Field23_Name --
10230    ------------------------
10231 
10232    procedure Write_Field23_Name (Id : Entity_Id) is
10233    begin
10234       case Ekind (Id) is
10235          when E_Discriminant                               =>
10236             Write_Str ("CR_Discriminant");
10237 
10238          when E_Block                                      =>
10239             Write_Str ("Entry_Cancel_Parameter");
10240 
10241          when E_Enumeration_Type                           =>
10242             Write_Str ("Enum_Pos_To_Rep");
10243 
10244          when Formal_Kind                                  |
10245               E_Variable                                   =>
10246             Write_Str ("Extra_Constrained");
10247 
10248          when Access_Kind                                  =>
10249             Write_Str ("Finalization_Master");
10250 
10251          when E_Generic_Function                           |
10252               E_Generic_Package                            |
10253               E_Generic_Procedure                          =>
10254             Write_Str ("Inner_Instances");
10255 
10256          when Array_Kind                                   =>
10257             Write_Str ("Packed_Array_Impl_Type");
10258 
10259          when Entry_Kind                                   =>
10260             Write_Str ("Protection_Object");
10261 
10262          when Concurrent_Kind                              |
10263               Incomplete_Or_Private_Kind                   |
10264               Class_Wide_Kind                              |
10265               E_Record_Type                                |
10266               E_Record_Subtype                             =>
10267             Write_Str ("Stored_Constraint");
10268 
10269          when E_Function                                   |
10270               E_Procedure                                  =>
10271             if Present (Scope (Id))
10272               and then Is_Protected_Type (Scope (Id))
10273             then
10274                Write_Str ("Protection_Object");
10275             else
10276                Write_Str ("Generic_Renamings");
10277             end if;
10278 
10279          when E_Package                                    =>
10280             if Is_Generic_Instance (Id) then
10281                Write_Str ("Generic_Renamings");
10282             else
10283                Write_Str ("Limited_View");
10284             end if;
10285 
10286          when others                                       =>
10287             Write_Str ("Field23??");
10288       end case;
10289    end Write_Field23_Name;
10290 
10291    ------------------------
10292    -- Write_Field24_Name --
10293    ------------------------
10294 
10295    procedure Write_Field24_Name (Id : Entity_Id) is
10296    begin
10297       case Ekind (Id) is
10298          when E_Constant                                   |
10299               E_Variable                                   |
10300               Type_Kind                                    =>
10301             Write_Str ("Related_Expression");
10302 
10303          when E_Function                                   |
10304               E_Operator                                   |
10305               E_Procedure                                  =>
10306             Write_Str ("Subps_Index");
10307 
10308          when E_Package                                    =>
10309             Write_Str ("Incomplete_Actuals");
10310 
10311          when others                                       =>
10312             Write_Str ("Field24???");
10313       end case;
10314    end Write_Field24_Name;
10315 
10316    ------------------------
10317    -- Write_Field25_Name --
10318    ------------------------
10319 
10320    procedure Write_Field25_Name (Id : Entity_Id) is
10321    begin
10322       case Ekind (Id) is
10323          when E_Generic_Package                            |
10324               E_Package                                    =>
10325             Write_Str ("Abstract_States");
10326 
10327          when E_Entry                                      |
10328               E_Entry_Family                               =>
10329             Write_Str ("Contract_Wrapper");
10330 
10331          when E_Variable                                   =>
10332             Write_Str ("Debug_Renaming_Link");
10333 
10334          when E_Component                                  =>
10335             Write_Str ("DT_Offset_To_Top_Func");
10336 
10337          when E_Procedure                                  |
10338               E_Function                                   =>
10339             Write_Str ("Interface_Alias");
10340 
10341          when E_Record_Type                                |
10342               E_Record_Subtype                             |
10343               E_Record_Type_With_Private                   |
10344               E_Record_Subtype_With_Private                =>
10345             Write_Str ("Interfaces");
10346 
10347          when E_Array_Type                                 |
10348               E_Array_Subtype                              =>
10349             Write_Str ("Related_Array_Object");
10350 
10351          when Task_Kind                                    =>
10352             Write_Str ("Task_Body_Procedure");
10353 
10354          when Discrete_Kind                                =>
10355             Write_Str ("Static_Discrete_Predicate");
10356 
10357          when Real_Kind                                    =>
10358             Write_Str ("Static_Real_Or_String_Predicate");
10359 
10360          when others                                       =>
10361             Write_Str ("Field25??");
10362       end case;
10363    end Write_Field25_Name;
10364 
10365    ------------------------
10366    -- Write_Field26_Name --
10367    ------------------------
10368 
10369    procedure Write_Field26_Name (Id : Entity_Id) is
10370    begin
10371       case Ekind (Id) is
10372          when E_Record_Type                                |
10373               E_Record_Type_With_Private                   =>
10374             Write_Str ("Dispatch_Table_Wrappers");
10375 
10376          when E_In_Out_Parameter                           |
10377               E_Out_Parameter                              |
10378               E_Variable                                   =>
10379             Write_Str ("Last_Assignment");
10380 
10381          when E_Procedure                                  |
10382               E_Function                                   =>
10383             Write_Str ("Overridden_Operation");
10384 
10385          when E_Generic_Package                            |
10386               E_Package                                    =>
10387             Write_Str ("Package_Instantiation");
10388 
10389          when E_Component                                  |
10390               E_Constant                                   =>
10391             Write_Str ("Related_Type");
10392 
10393          when Access_Kind                                  |
10394               Task_Kind                                    =>
10395             Write_Str ("Storage_Size_Variable");
10396 
10397          when others                                       =>
10398             Write_Str ("Field26??");
10399       end case;
10400    end Write_Field26_Name;
10401 
10402    ------------------------
10403    -- Write_Field27_Name --
10404    ------------------------
10405 
10406    procedure Write_Field27_Name (Id : Entity_Id) is
10407    begin
10408       case Ekind (Id) is
10409          when E_Package                                    |
10410               Type_Kind                                    =>
10411             Write_Str ("Current_Use_Clause");
10412 
10413          when E_Component                                  |
10414               E_Constant                                   |
10415               E_Variable                                   =>
10416             Write_Str ("Related_Type");
10417 
10418          when E_Procedure                                  |
10419               E_Function                                   =>
10420             Write_Str ("Wrapped_Entity");
10421 
10422          when others                                       =>
10423             Write_Str ("Field27??");
10424       end case;
10425    end Write_Field27_Name;
10426 
10427    ------------------------
10428    -- Write_Field28_Name --
10429    ------------------------
10430 
10431    procedure Write_Field28_Name (Id : Entity_Id) is
10432    begin
10433       case Ekind (Id) is
10434          when E_Entry                                      |
10435               E_Entry_Family                               |
10436               E_Function                                   |
10437               E_Procedure                                  |
10438               E_Subprogram_Body                            |
10439               E_Subprogram_Type                            =>
10440             Write_Str ("Extra_Formals");
10441 
10442          when E_Package                                    |
10443               E_Package_Body                               =>
10444             Write_Str ("Finalizer");
10445 
10446          when E_Constant                                   |
10447               E_Variable                                   =>
10448             Write_Str ("Initialization_Statements");
10449 
10450          when E_Access_Subprogram_Type                     =>
10451             Write_Str ("Original_Access_Type");
10452 
10453          when Task_Kind                                    =>
10454             Write_Str ("Relative_Deadline_Variable");
10455 
10456          when E_Record_Type =>
10457             Write_Str ("Underlying_Record_View");
10458 
10459          when others                                       =>
10460             Write_Str ("Field28??");
10461       end case;
10462    end Write_Field28_Name;
10463 
10464    ------------------------
10465    -- Write_Field29_Name --
10466    ------------------------
10467 
10468    procedure Write_Field29_Name (Id : Entity_Id) is
10469    begin
10470       case Ekind (Id) is
10471          when E_Constant                                   |
10472               E_Variable                                   =>
10473             Write_Str ("BIP_Initialization_Call");
10474 
10475          when Type_Kind =>
10476             Write_Str ("Subprograms_For_Type");
10477 
10478          when others                                       =>
10479             Write_Str ("Field29??");
10480       end case;
10481    end Write_Field29_Name;
10482 
10483    ------------------------
10484    -- Write_Field30_Name --
10485    ------------------------
10486 
10487    procedure Write_Field30_Name (Id : Entity_Id) is
10488    begin
10489       case Ekind (Id) is
10490          when E_Protected_Type                             |
10491               E_Task_Type                                  =>
10492             Write_Str ("Anonymous_Object");
10493 
10494          when E_Function                                   =>
10495             Write_Str ("Corresponding_Equality");
10496 
10497          when E_Constant                                   |
10498               E_Variable                                   =>
10499             Write_Str ("Last_Aggregate_Assignment");
10500 
10501          when E_Procedure                                  =>
10502             Write_Str ("Static_Initialization");
10503 
10504          when others                                       =>
10505             Write_Str ("Field30??");
10506       end case;
10507    end Write_Field30_Name;
10508 
10509    ------------------------
10510    -- Write_Field31_Name --
10511    ------------------------
10512 
10513    procedure Write_Field31_Name (Id : Entity_Id) is
10514    begin
10515       case Ekind (Id) is
10516          when E_Procedure                                  |
10517               E_Function                                   =>
10518             Write_Str ("Thunk_Entity");
10519 
10520          when Type_Kind                                    =>
10521             Write_Str ("Derived_Type_Link");
10522 
10523          when E_Constant                                   |
10524               E_In_Parameter                               |
10525               E_In_Out_Parameter                           |
10526               E_Loop_Parameter                             |
10527               E_Out_Parameter                              |
10528               E_Variable                                   =>
10529             Write_Str ("Activation_Record_Component");
10530 
10531          when others                                       =>
10532             Write_Str ("Field31??");
10533       end case;
10534    end Write_Field31_Name;
10535 
10536    ------------------------
10537    -- Write_Field32_Name --
10538    ------------------------
10539 
10540    procedure Write_Field32_Name (Id : Entity_Id) is
10541    begin
10542       case Ekind (Id) is
10543          when E_Abstract_State                             |
10544               E_Constant                                   |
10545               E_Variable                                   =>
10546             Write_Str ("Encapsulating_State");
10547 
10548          when E_Function                                   =>
10549             Write_Str ("Corresponding_Procedure");
10550 
10551          when E_Procedure                                  =>
10552             Write_Str ("Corresponding_Function");
10553 
10554          when Type_Kind                                    =>
10555             Write_Str ("No_Tagged_Streams_Pragma");
10556 
10557          when others                                       =>
10558             Write_Str ("Field32??");
10559       end case;
10560    end Write_Field32_Name;
10561 
10562    ------------------------
10563    -- Write_Field33_Name --
10564    ------------------------
10565 
10566    procedure Write_Field33_Name (Id : Entity_Id) is
10567    begin
10568       case Ekind (Id) is
10569          when E_Constant                                   |
10570               E_Variable                                   |
10571               Subprogram_Kind                              |
10572               Type_Kind                                    =>
10573             Write_Str ("Linker_Section_Pragma");
10574 
10575          when others                                       =>
10576             Write_Str ("Field33??");
10577       end case;
10578    end Write_Field33_Name;
10579 
10580    ------------------------
10581    -- Write_Field34_Name --
10582    ------------------------
10583 
10584    procedure Write_Field34_Name (Id : Entity_Id) is
10585    begin
10586       case Ekind (Id) is
10587          when E_Constant                                   |
10588               E_Entry                                      |
10589               E_Entry_Family                               |
10590               E_Function                                   |
10591               E_Generic_Function                           |
10592               E_Generic_Package                            |
10593               E_Generic_Procedure                          |
10594               E_Operator                                   |
10595               E_Package                                    |
10596               E_Package_Body                               |
10597               E_Procedure                                  |
10598               E_Protected_Type                             |
10599               E_Subprogram_Body                            |
10600               E_Task_Body                                  |
10601               E_Task_Type                                  |
10602               E_Variable                                   |
10603               E_Void                                       =>
10604             Write_Str ("Contract");
10605 
10606          when others                                       =>
10607             Write_Str ("Field34??");
10608       end case;
10609    end Write_Field34_Name;
10610 
10611    ------------------------
10612    -- Write_Field35_Name --
10613    ------------------------
10614 
10615    procedure Write_Field35_Name (Id : Entity_Id) is
10616    begin
10617       case Ekind (Id) is
10618          when Type_Kind                                    =>
10619             Write_Str ("Anonymous_Master");
10620 
10621          when Subprogram_Kind                              =>
10622             Write_Str ("Import_Pragma");
10623 
10624          when others                                       =>
10625             Write_Str ("Field35??");
10626       end case;
10627    end Write_Field35_Name;
10628 
10629    ------------------------
10630    -- Write_Field36_Name --
10631    ------------------------
10632 
10633    procedure Write_Field36_Name (Id : Entity_Id) is
10634       pragma Unreferenced (Id);
10635    begin
10636       Write_Str ("Field36??");
10637    end Write_Field36_Name;
10638 
10639    ------------------------
10640    -- Write_Field37_Name --
10641    ------------------------
10642 
10643    procedure Write_Field37_Name (Id : Entity_Id) is
10644       pragma Unreferenced (Id);
10645    begin
10646       Write_Str ("Associated_Entity");
10647    end Write_Field37_Name;
10648 
10649    ------------------------
10650    -- Write_Field38_Name --
10651    ------------------------
10652 
10653    procedure Write_Field38_Name (Id : Entity_Id) is
10654    begin
10655       case Ekind (Id) is
10656          when E_Function                                   |
10657               E_Procedure                                  =>
10658             Write_Str ("Class-wide preconditions");
10659 
10660          when others                                       =>
10661             Write_Str ("Field38??");
10662       end case;
10663    end Write_Field38_Name;
10664 
10665    ------------------------
10666    -- Write_Field39_Name --
10667    ------------------------
10668 
10669    procedure Write_Field39_Name (Id : Entity_Id) is
10670    begin
10671       case Ekind (Id) is
10672          when E_Function                                   |
10673               E_Procedure                                  =>
10674             Write_Str ("Class-wide postcondition");
10675 
10676          when others                                       =>
10677             Write_Str ("Field39??");
10678       end case;
10679    end Write_Field39_Name;
10680 
10681    ------------------------
10682    -- Write_Field40_Name --
10683    ------------------------
10684 
10685    procedure Write_Field40_Name (Id : Entity_Id) is
10686    begin
10687       case Ekind (Id) is
10688          when E_Entry                                      |
10689               E_Entry_Family                               |
10690               E_Function                                   |
10691               E_Generic_Function                           |
10692               E_Generic_Package                            |
10693               E_Generic_Procedure                          |
10694               E_Operator                                   |
10695               E_Package                                    |
10696               E_Package_Body                               |
10697               E_Procedure                                  |
10698               E_Protected_Body                             |
10699               E_Protected_Type                             |
10700               E_Subprogram_Body                            |
10701               E_Task_Body                                  |
10702               E_Task_Type                                  |
10703               E_Variable                                   =>
10704             Write_Str ("SPARK_Pragma");
10705 
10706          when others                                       =>
10707             Write_Str ("Field40??");
10708       end case;
10709    end Write_Field40_Name;
10710 
10711    ------------------------
10712    -- Write_Field41_Name --
10713    ------------------------
10714 
10715    procedure Write_Field41_Name (Id : Entity_Id) is
10716    begin
10717       case Ekind (Id) is
10718          when E_Generic_Package                            |
10719               E_Package                                    |
10720               E_Package_Body                               |
10721               E_Protected_Type                             |
10722               E_Task_Type                                  =>
10723             Write_Str ("SPARK_Aux_Pragma");
10724 
10725          when E_Function                                   |
10726               E_Procedure                                  =>
10727             Write_Str ("Original_Protected_Subprogram");
10728 
10729          when others                                       =>
10730             Write_Str ("Field41??");
10731       end case;
10732    end Write_Field41_Name;
10733 
10734    -------------------------
10735    -- Iterator Procedures --
10736    -------------------------
10737 
10738    procedure Proc_Next_Component                 (N : in out Node_Id) is
10739    begin
10740       N := Next_Component (N);
10741    end Proc_Next_Component;
10742 
10743    procedure Proc_Next_Component_Or_Discriminant (N : in out Node_Id) is
10744    begin
10745       N := Next_Entity (N);
10746       while Present (N) loop
10747          exit when Ekind_In (N, E_Component, E_Discriminant);
10748          N := Next_Entity (N);
10749       end loop;
10750    end Proc_Next_Component_Or_Discriminant;
10751 
10752    procedure Proc_Next_Discriminant              (N : in out Node_Id) is
10753    begin
10754       N := Next_Discriminant (N);
10755    end Proc_Next_Discriminant;
10756 
10757    procedure Proc_Next_Formal                    (N : in out Node_Id) is
10758    begin
10759       N := Next_Formal (N);
10760    end Proc_Next_Formal;
10761 
10762    procedure Proc_Next_Formal_With_Extras        (N : in out Node_Id) is
10763    begin
10764       N := Next_Formal_With_Extras (N);
10765    end Proc_Next_Formal_With_Extras;
10766 
10767    procedure Proc_Next_Index                     (N : in out Node_Id) is
10768    begin
10769       N := Next_Index (N);
10770    end Proc_Next_Index;
10771 
10772    procedure Proc_Next_Inlined_Subprogram        (N : in out Node_Id) is
10773    begin
10774       N := Next_Inlined_Subprogram (N);
10775    end Proc_Next_Inlined_Subprogram;
10776 
10777    procedure Proc_Next_Literal                   (N : in out Node_Id) is
10778    begin
10779       N := Next_Literal (N);
10780    end Proc_Next_Literal;
10781 
10782    procedure Proc_Next_Stored_Discriminant       (N : in out Node_Id) is
10783    begin
10784       N := Next_Stored_Discriminant (N);
10785    end Proc_Next_Stored_Discriminant;
10786 
10787 end Einfo;