OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [ada/] [einfo.adb] - Blame information for rev 711

Go to most recent revision | Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.