OSDN Git Service

2009-04-08 Thomas Quinot <quinot@adacore.com>
[pf3gnuchains/gcc-fork.git] / gcc / ada / einfo.ads
1 ------------------------------------------------------------------------------
2 --                                                                          --
3 --                         GNAT COMPILER COMPONENTS                         --
4 --                                                                          --
5 --                                E I N F O                                 --
6 --                                                                          --
7 --                                 S p e c                                  --
8 --                                                                          --
9 --          Copyright (C) 1992-2008, 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 2,  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.  See the GNU General Public License --
17 -- for  more details.  You should have  received  a copy of the GNU General --
18 -- Public License  distributed with GNAT;  see file COPYING.  If not, write --
19 -- to  the  Free Software Foundation,  51  Franklin  Street,  Fifth  Floor, --
20 -- Boston, MA 02110-1301, USA.                                              --
21 --                                                                          --
22 -- As a special exception,  if other files  instantiate  generics from this --
23 -- unit, or you link  this unit with other files  to produce an executable, --
24 -- this  unit  does not  by itself cause  the resulting  executable  to  be --
25 -- covered  by the  GNU  General  Public  License.  This exception does not --
26 -- however invalidate  any other reasons why  the executable file  might be --
27 -- covered by the  GNU Public License.                                      --
28 --                                                                          --
29 -- GNAT was originally developed  by the GNAT team at  New York University. --
30 -- Extensive contributions were provided by Ada Core Technologies Inc.      --
31 --                                                                          --
32 ------------------------------------------------------------------------------
33
34 with Namet;  use Namet;
35 with Snames; use Snames;
36 with Types;  use Types;
37 with Uintp;  use Uintp;
38 with Urealp; use Urealp;
39
40 package Einfo is
41
42 --  This package defines the annotations to the abstract syntax tree that
43 --  are needed to support semantic processing of an Ada compilation.
44
45 --  Note that after editing this spec and the corresponding body it is
46 --  required to run ceinfo to check the consistentcy of spec and body.
47 --  See ceinfo.adb for more information about the checks made.
48
49 --  These annotations are for the most part attributes of declared entities,
50 --  and they correspond to conventional symbol table information. Other
51 --  attributes include sets of meanings for overloaded names, possible
52 --  types for overloaded expressions, flags to indicate deferred constants,
53 --  incomplete types, etc. These attributes are stored in available fields
54 --  in tree nodes (i.e. fields not used by the parser, as defined by the
55 --  Sinfo package specification), and accessed by means of a set of
56 --  subprograms which define an abstract interface.
57
58 --  There are two kinds of semantic information
59
60 --    First, the tree nodes with the following Nkind values:
61
62 --      N_Defining_Identifier
63 --      N_Defining_Character_Literal
64 --      N_Defining_Operator_Symbol
65
66 --    are called Entities, and constitute the information that would often
67 --    be stored separately in a symbol table. These nodes are all extended
68 --    to provide extra space, and contain fields which depend on the entity
69 --    kind, as defined by the contents of the Ekind field. The use of the
70 --    Ekind field, and the associated fields in the entity, are defined
71 --    in this package, as are the access functions to these fields.
72
73 --    Second, in some cases semantic information is stored directly in other
74 --    kinds of nodes, e.g. the Etype field, used to indicate the type of an
75 --    expression. The access functions to these fields are defined in the
76 --    Sinfo package, but their full documentation is to be found in
77 --    the Einfo package specification.
78
79 --  Declaration processing places information in the nodes of their defining
80 --  identifiers. Name resolution places in all other occurrences of an
81 --  identifier a pointer to the corresponding defining occurrence.
82
83 --------------------------------
84 -- The XEINFO Utility Program --
85 --------------------------------
86
87 --  XEINFO is a utility program which automatically produces a C header file,
88 --  einfo.h from the spec and body of package Einfo. It reads the input
89 --  files einfo.ads and einfo.adb and produces the output file einfo.h.
90 --  XEINFO is run automatically by the build scripts when you do a full
91 --  bootstrap.
92
93 --  In order for this utility program to operate correctly, the form of the
94 --  einfo.ads and einfo.adb files must meet certain requirements and be laid
95 --  out in a specific manner.
96
97 --  The general form of einfo.ads is as follows:
98
99 --     type declaration for type Entity_Kind
100 --     subtype declarations declaring subranges of Entity_Kind
101 --     subtype declarations declaring synonyms for some standard types
102 --     function specs for attributes
103 --     procedure specs
104 --     pragma Inline declarations
105
106 --  This order must be observed. There are no restrictions on the procedures,
107 --  since the C header file only includes functions (Gigi is not allowed to
108 --  modify the generated tree). However, functions are required to have headers
109 --  that fit on a single line.
110
111 --  XEINFO reads and processes the function specs and the pragma Inlines. For
112 --  functions that are declared as inlined, XEINFO reads the corresponding body
113 --  from einfo.adb, and processes it into C code. This results in some strict
114 --  restrictions on which functions can be inlined:
115
116 --     The function spec must be on a single line
117
118 --     There can only be a single statement, contained on a single line,
119 --     not counting any pragma Assert statements.
120
121 --     This single statement must either be a function call with simple,
122 --     single token arguments, or it must be a membership test of the form
123 --     a in b, where a and b are single tokens.
124
125 --  For functions that are not inlined, there is no restriction on the body,
126 --  and XEINFO generates a direct reference in the C header file which allows
127 --  the C code in Gigi to directly call the corresponding Ada body.
128
129 ----------------------------------
130 -- Handling of Type'Size Values --
131 ----------------------------------
132
133 --  The Ada 95 RM contains some rather peculiar (to us!) rules on the value
134 --  of type'Size (see RM 13.3(55)). We have found that attempting to use
135 --  these RM Size values generally, and in particular for determining the
136 --  default size of objects, creates chaos, and major incompatibilies in
137 --  existing code.
138
139 --  We proceed as follows, for discrete and fixed-point subtypes, we have
140 --  two separate sizes for each subtype:
141
142 --    The Object_Size, which is used for determining the default size of
143 --    objects and components. This size value can be referred to using the
144 --    Object_Size attribute. The phrase "is used" here means that it is
145 --    the basis of the determination of the size. The backend is free to
146 --    pad this up if necessary for efficiency, e.g. an 8-bit stand-alone
147 --    character might be stored in 32 bits on a machine with no efficient
148 --    byte access instructions such as the Alpha.
149
150 --    The default rules for the value of Object_Size for fixed-point and
151 --    discrete types are as follows:
152
153 --       The Object_Size for base subtypes reflect the natural hardware
154 --       size in bits (see Ttypes and Cstand for integer types). For
155 --       enumeration and fixed-point base subtypes have 8. 16. 32 or 64
156 --       bits for this size, depending on the range of values to be stored.
157
158 --       The Object_Size of a subtype is the same as the Object_Size of
159 --       the subtype from which it is obtained.
160
161 --       The Object_Size of a derived base type is copied from the parent
162 --       base type, and the Object_Size of a derived first subtype is copied
163 --       from the parent first subtype.
164
165 --    The Value_Size which is the number of bits required to store a value
166 --    of the type. This size can be referred to using the Value_Size
167 --    attribute. This value is used to determine how tightly to pack
168 --    records or arrays with components of this type, and also affects
169 --    the semantics of unchecked conversion (unchecked conversions where
170 --    the Value_Size values differ generate a warning, and are potentially
171 --    target dependent).
172
173 --    The default rule for the value of Value_Size are as follows:
174
175 --       The Value_Size for a base subtype is the minimum number of bits
176 --       required to store all values of the type (including the sign bit
177 --       only if negative values are possible).
178
179 --       If a subtype statically matches the first subtype, then it has
180 --       by default the same Value_Size as the first subtype. This is a
181 --       consequence of RM 13.1(14) ("if two subtypes statically match,
182 --       then their subtype-specific aspects are the same".)
183
184 --       All other subtypes have a Value_Size corresponding to the minimum
185 --       number of bits required to store all values of the subtype. For
186 --       dynamic bounds, it is assumed that the value can range down or up
187 --       to the corresponding bound of the ancestor
188
189 --    The RM defined attribute Size corresponds to the Value_Size attribute
190
191 --    The Size attribute may be defined for a first-named subtype. This sets
192 --    the Value_Size of the first-named subtype to the given value, and the
193 --    Object_Size of this first-named subtype to the given value padded up
194 --    to an appropriate boundary. It is a consequence of the default rules
195 --    above that this Object_Size will apply to all further subtypes. On the
196 --    other hand, Value_Size is affected only for the first subtype, any
197 --    dynamic subtypes obtained from it directly, and any statically matching
198 --    subtypes. The Value_Size of any other static subtypes is not affected.
199
200 --    Value_Size and Object_Size may be explicitly set for any subtype using
201 --    an attribute definition clause. Note that the use of these attributes
202 --    can cause the RM 13.1(14) rule to be violated. If two access types
203 --    reference aliased objects whose subtypes have differing Object_Size
204 --    values as a result of explicit attribute definition clauses, then it
205 --    is erroneous to convert from one access subtype to the other.
206
207 --    At the implementation level, Esize stores the Object_Size and the
208 --    RM_Size field stores the Value_Size (and hence the value of the
209 --    Size attribute, which, as noted above, is equivalent to Value_Size).
210
211 --  To get a feel for the difference, consider the following examples (note
212 --  that in each case the base is short_short_integer with a size of 8):
213
214 --                                            Object_Size     Value_Size
215
216 --     type x1 is range 0..5;                      8               3
217
218 --     type x2 is range 0..5;
219 --     for x2'size use 12;                        12              12
220
221 --     subtype x3 is x2 range 0 .. 3;             12               2
222
223 --     subtype x4 is x2'base range 0 .. 10;        8               4
224
225 --     subtype x5 is x2 range 0 .. dynamic;       12              (7)
226
227 --     subtype x6 is x2'base range 0 .. dynamic;   8              (7)
228
229 --  Note: the entries marked (7) are not actually specified by the Ada 95 RM,
230 --  but it seems in the spirit of the RM rules to allocate the minimum number
231 --  of bits known to be large enough to hold the given range of values.
232
233 --  So far, so good, but GNAT has to obey the RM rules, so the question is
234 --  under what conditions must the RM Size be used. The following is a list
235 --  of the occasions on which the RM Size must be used:
236
237 --    Component size for packed arrays or records
238 --    Value of the attribute Size for a type
239 --    Warning about sizes not matching for unchecked conversion
240
241 --  The RM_Size field keeps track of the RM Size as needed in these
242 --  three situations.
243
244 --  For types other than discrete and fixed-point types, the Object_Size
245 --  and Value_Size are the same (and equivalent to the RM attribute Size).
246 --  Only Size may be specified for such types.
247
248 --  All size attributes are stored as Uint values. Negative values are used to
249 --  reference GCC expressions for the case of non-static sizes, as explained
250 --  in Repinfo.
251
252 -----------------------
253 -- Entity Attributes --
254 -----------------------
255
256 --  This section contains a complete list of the attributes that are defined
257 --  on entities. Some attributes apply to all entities, others only to certain
258 --  kinds of entities. In the latter case the attribute should only be set or
259 --  accessed if the Ekind field indicates an appropriate entity.
260
261 --  There are two kinds of attributes that apply to entities, stored and
262 --  synthesized. Stored attributes correspond to a field or flag in the entity
263 --  itself. Such attributes are identified in the table below by giving the
264 --  field or flag in the attribute that is used to hold the attribute value.
265 --  Synthesized attributes are not stored directly, but are rather computed as
266 --  needed from other attributes, or from information in the tree. These are
267 --  marked "synthesized" in the table below. The stored attributes have both
268 --  access functions and set procedures to set the corresponding values, while
269 --  synthesized attributes have only access functions.
270
271 --  Note: in the case of Node, Uint, or Elist fields, there are cases where
272 --  the same physical field is used for different purposes in different
273 --  entities, so these access functions should only be referenced for the
274 --  class of entities in which they are defined as being present. Flags are
275 --  not overlapped in this way, but nevertheless as a matter of style and
276 --  abstraction (which may or may not be checked by assertions in the body),
277 --  this restriction should be observed for flag fields as well.
278
279 --  Note: certain of the attributes on types apply only to base types, and
280 --  are so noted by the notation [base type only]. These are cases where the
281 --  attribute of any subtype is the same as the attribute of the base type.
282 --  The attribute can be referenced on a subtype (and automatically retrieves
283 --  the value from the base type). However, it is an error to try to set the
284 --  attribute on other than the base type, and if assertions are enabled,
285 --  an attempt to set the attribute on a subtype will raise an assert error.
286
287 --  Other attributes are noted as applying to the [implementation base type
288 --  only].  These are representation attributes which must always apply to a
289 --  full non-private type, and where the attributes are always on the full
290 --  type.  The attribute can be referenced on a subtype (and automatically
291 --  retries the value from the implementation base type). However, it is an
292 --  error to try to set the attribute on other than the implementation base
293 --  type, and if assertions are enabled, an attempt to set the attribute on a
294 --  subtype will raise an assert error.
295
296 --    Accept_Address (Elist21)
297 --       Present in entries. If an accept has a statement sequence, then an
298 --       address variable is created, which is used to hold the address of the
299 --       parameters, as passed by the runtime. Accept_Address holds an element
300 --       list which represents a stack of entities for these address variables.
301 --       The current entry is the top of the stack, which is the last element
302 --       on the list. A stack is required to handle the case of nested select
303 --       statements referencing the same entry.
304
305 --    Actual_Subtype (Node17)
306 --       Present in variables, constants, and formal parameters. This is the
307 --       subtype imposed by the value of the object, as opposed to its nominal
308 --       subtype, which is imposed by the declaration. The actual subtype
309 --       differs from the nominal one when the latter is indefinite (as in the
310 --       case of an unconstrained formal parameter, or a variable declared
311 --       with an unconstrained type and an initial value). The nominal subtype
312 --       is the Etype entry for the entity. The Actual_Subtype field is set
313 --       only if the actual subtype differs from the nominal subtype. If the
314 --       actual and nominal subtypes are the same, then the Actual_Subtype
315 --       field is Empty, and Etype indicates both types.
316 --
317 --       For objects, the Actual_Subtype is set only if this is a discriminated
318 --       type. For arrays, the bounds of the expression are obtained and the
319 --       Etype of the object is directly the constrained subtype. This is
320 --       rather irregular, and the semantic checks that depend on the nominal
321 --       subtype being unconstrained use flag Is_Constr_Subt_For_U_Nominal(qv).
322
323 --    Access_Disp_Table (Elist16) [implementation base type only]
324 --       Present in record type entities. For a tagged type, points to the
325 --       dispatch tables associated with the tagged type. The first two
326 --       entities correspond with the primary dispatch table: 1) primary
327 --       dispatch table with user-defined primitives, 2) primary dispatch table
328 --       with predefined primitives. For each interface type covered by the
329 --       tagged type we also have: 3) secondary dispatch table with thunks of
330 --       primitives covering user-defined interface primitives, 4) secondary
331 --       dispatch table with thunks of predefined primitives, 5) secondary
332 --       dispatch table with user-defined primitives, and 6) secondary dispatch
333 --       table with predefined primitives. The last entity of this list is an
334 --       access type declaration used to expand dispatching calls through the
335 --       primary dispatch table. For a non-tagged record, contains Empty.
336
337 --    Address_Clause (synthesized)
338 --       Applies to entries, objects and subprograms. Set if an address clause
339 --       is present which references the object or subprogram and points to
340 --       the N_Attribute_Definition_Clause node. Empty if no Address clause.
341 --       The expression in the address clause is always a constant that is
342 --       defined before the entity to which the address clause applies.
343 --       Note: Gigi references this field in E_Task_Type entities???
344
345 --    Address_Taken (Flag104)
346 --       Present in all entities. Set if the Address or Unrestricted_Access
347 --       attribute is applied directly to the entity, i.e. the entity is the
348 --       entity of the prefix of the attribute reference. Used by Gigi to
349 --       make sure that the address can be meaningfully taken, and also in
350 --       the case of subprograms to control output of certain warnings.
351
352 --    Alias (Node18)
353 --       Present in overloaded entities (literals, subprograms, entries) and
354 --       subprograms that cover a primitive operation of an abstract interface
355 --       (that is, subprograms with the Interface_Alias attribute). In case of
356 --       overloaded entities it points to the parent subprogram of a derived
357 --       subprogram. In case of abstract interface subprograms it points to the
358 --       subprogram that covers the abstract interface primitive. Also used for
359 --       a subprogram renaming, where it points to the renamed subprogram.
360 --       Always empty for entries.
361
362 --    Alignment (Uint14)
363 --       Present in entities for types and also in constants, variables
364 --       (including exceptions where it refers to the static data allocated for
365 --       an exception), loop parameters, and formal parameters. This indicates
366 --       the desired alignment for a type, or the actual alignment for an
367 --       object. A value of zero (Uint_0) indicates that the alignment has not
368 --       been set yet. The alignment can be set by an explicit alignment
369 --       clause, or set by the front-end in package Layout, or set by the
370 --       back-end as part of the back end back-annotation process. The
371 --       alignment field is also present in E_Exception entities, but there it
372 --       is used only by the back-end for back annotation.
373
374 --    Alignment_Clause (synthesized)
375 --       Applies to all entities for types and objects. If an alignment
376 --       attribute definition clause is present for the entity, then this
377 --       function returns the N_Attribute_Definition clause that specifies the
378 --       alignment. If no alignment clause applies to the type, then the call
379 --       to this function returns Empty. Note that the call can return a
380 --       non-Empty value even if Has_Alignment_Clause is not set (happens with
381 --       subtype and derived type declarations). Note also that a record
382 --       definition clause with an (obsolescent) mod clause is converted
383 --       into an attribute definition clause for this purpose.
384
385 --    Ancestor_Subtype (synthesized)
386 --       Applies to all type and subtype entities. If the argument is a
387 --       subtype then it returns the subtype or type from which the subtype
388 --       was obtained, otherwise it returns Empty.
389
390 --    Available_View (synthesized)
391 --       Applies to types that have the With_Type flag set. Returns the
392 --       non-limited view of the type, if available, otherwise the type
393 --       itself. For class-wide types, there is no direct link in the tree,
394 --       so we have to retrieve the class-wide type of the non-limited view
395 --       of the Etype.
396
397 --    Associated_Formal_Package (Node12)
398 --       Present in packages that are the actuals of formal_packages. Points
399 --       to the entity in the declaration for the formal package.
400
401 --    Associated_Node_For_Itype (Node8)
402 --       Present in all type and subtype entities. Set non-Empty only for
403 --       Itypes. Set to point to the associated node for the Itype, i.e.
404 --       the node whose elaboration generated the Itype. This is used for
405 --       copying trees, to determine whether or not to copy an Itype, and
406 --       also for accessibility checks on anonymous access types. This
407 --       node is typically an object declaration, component declaration,
408 --       type or subtype declaration. For an access discriminant in a type
409 --       declaration, the associated_node_for_itype is the discriminant
410 --       specification. For an access parameter it is the enclosing subprogram
411 --       declaration.
412
413 --    Associated_Storage_Pool (Node22) [root type only]
414 --       Present in simple and general access type entities. References the
415 --       storage pool to be used for the corresponding collection. A value of
416 --       Empty means that the default pool is to be used. This is present
417 --       only in the root type, since derived types must have the same pool
418 --       as the parent type.
419
420 --    Associated_Final_Chain (Node23)
421 --       Present in simple and general access type entities. References the
422 --       List_Controller object that holds the finalization chain on which
423 --       are attached dynamically allocated objects referenced by the access
424 --       type. Empty when the access type cannot reference a controlled object.
425
426 --    Barrier_Function (Node12)
427 --       Present in protected entries and entry families. This is the
428 --       subprogram declaration for the body of the function that returns
429 --       the value of the entry barrier.
430
431 --    Base_Type (synthesized)
432 --       Applies to all type entities. Returns the base type of a type or
433 --       subtype. The base type of a type is the type itself. The base type
434 --       of a subtype is the type that it constrains (which is always a type
435 --       entity, not some other subtype). Note that in the case of a subtype
436 --       of a private type, it is possible for the base type attribute to
437 --       return a private type, even if the subtype to which it applies is
438 --       non-private. See also Implementation_Base_Type. Note: it is allowed
439 --       to apply Base_Type to other than a type, in which case it simply
440 --       returns the entity unchanged.
441
442 --    Block_Node (Node11)
443 --       Present in block entities. Points to the identifier in the
444 --       Block_Statement itself. Used when retrieving the block construct
445 --       for finalization purposes, The block entity has an implicit label
446 --       declaration in the enclosing declarative part, and has otherwise
447 --       no direct connection in the tree with the block statement. The
448 --       link is to the identifier (which is an occurrence of the entity)
449 --       and not to the block_statement itself, because the statement may
450 --       be rewritten, e.g. in the process of removing dead code.
451
452 --    Body_Entity (Node19)
453 --       Present in package and generic package entities, points to the
454 --       corresponding package body entity if one is present.
455
456 --    Body_Needed_For_SAL (Flag40)
457 --       Present in package and subprogram entities that are compilation
458 --       units. Indicates that the source for the body must be included
459 --       when the unit is part of a standalone library.
460
461 --    C_Pass_By_Copy (Flag125) [implementation base type only]
462 --       Present in record types. Set if a pragma Convention for the record
463 --       type specifies convention C_Pass_By_Copy. This convention name is
464 --       treated as identical in all respects to convention C, except that
465 --       if it is specified for a record type, then the C_Pass_By_Copy flag
466 --       is set, and if a foreign convention subprogram has a formal of the
467 --       corresponding type, then the parameter passing mechanism will be
468 --       set to By_Copy (unless specifically overridden by an Import or
469 --       Export pragma).
470
471 --    Can_Never_Be_Null (Flag38)
472 --       This flag is present in all entities, but can only be set in an object
473 --       which can never have a null value. This is set True for constant
474 --       access values initialized to a non-null value. This is also True for
475 --       all access parameters in Ada 83 and Ada 95 modes, and for access
476 --       parameters that explicily exlude null in Ada 2005.
477 --
478 --       This is used to avoid unnecessary resetting of the Is_Known_Non_Null
479 --       flag for such entities. In Ada 2005 mode, this is also used when
480 --       determining subtype conformance of subprogram profiles to ensure
481 --       that two formals have the same null-exclusion status.
482 --
483 --       ??? This is also set on some access types, eg the Etype of the
484 --       anonymous access type of a controlling formal.
485
486 --    Chars (Name1)
487 --       Present in all entities. This field contains an entry into the names
488 --       table that has the character string of the identifier, character
489 --       literal or operator symbol. See Namet for further details. Note that
490 --       throughout the processing of the front end, this name is the simple
491 --       unqualified name. However, just before gigi is called, a call is made
492 --       to Qualify_All_Entity_Names. This causes entity names to be qualified
493 --       using the encoding described in exp_dbug.ads, and from that point on
494 --       (including post gigi steps such as cross-reference generation), the
495 --       entities will contain the encoded qualified names.
496
497 --    Checks_May_Be_Suppressed (Flag31)
498 --       Present in all entities. Set if a pragma Suppress or Unsuppress
499 --       mentions the entity specifically in the second argument. If this
500 --       flag is set the Global_Entity_Suppress and Local_Entity_Suppress
501 --       tables must be consulted to determine if the is actually an active
502 --       Suppress or Unsuppress pragma that applies to the entity.
503
504 --    Class_Wide_Type (Node9)
505 --       Present in all type entities. For a tagged type or subtype, returns
506 --       the corresponding implicitly declared class-wide type. Set to Empty
507 --       for non-tagged types.
508
509 --    Cloned_Subtype (Node16)
510 --       Present in E_Record_Subtype and E_Class_Wide_Subtype entities.
511 --       Each such entity can either have a Discriminant_Constraint, in
512 --       which case it represents a distinct type from the base type (and
513 --       will have a list of components and discrimants in the list headed by
514 --       First_Entity) or else no such constraint, in which case it will be a
515 --       copy of the base type.
516 --
517 --       o  Each element of the list in First_Entity is copied from the base
518 --          type; in that case, this field is Empty.
519 --
520 --       o  The list in First_Entity is shared with the base type; in that
521 --          case, this field points to that entity.
522 --
523 --       A record or classwide subtype may also be a copy of some other
524 --       subtype and share the entities in the First_Entity with that subtype.
525 --       In that case, this field points to that subtype.
526 --
527 --       For E_Class_Wide_Subtype, the presence of Equivalent_Type overrides
528 --       this field. Note that this field ONLY appears in subtype entries, not
529 --       in type entries, it is not present, and it is an error to reference
530 --       Cloned_Subtype in an E_Record_Type or E_Class_Wide_Type entity.
531
532 --    Comes_From_Source
533 --       This flag appears on all nodes, including entities, and indicates
534 --       that the node was created by the scanner or parser from the original
535 --       source. Thus for entities, it indicates that the entity is defined
536 --       in the original source program.
537
538 --    Component_Alignment (special field) [base type only]
539 --       Present in array and record entities. Contains a value of type
540 --       Component_Alignment_Kind indicating the alignment of components.
541 --       Set to Calign_Default normally, but can be overridden by use of
542 --       the Component_Alignment pragma. Note: this field is currently
543 --       stored in a non-standard way, see body for details.
544
545 --    Component_Bit_Offset (Uint11)
546 --       Present in record components (E_Component, E_Discriminant) if a
547 --       component clause applies to the component. First bit position of
548 --       given component, computed from the first bit and position values
549 --       given in the component clause. A value of No_Uint means that the
550 --       value is not yet known. The value can be set by the appearance of
551 --       an explicit component clause in a record representation clause,
552 --       or it can be set by the front-end in package Layout, or it can be
553 --       set by the backend. By the time backend processing is completed,
554 --       this field is always set. A negative value is used to represent
555 --       a value which is not known at compile time, and must be computed
556 --       at run-time (this happens if fields of a record have variable
557 --       lengths). See package Layout for details of these values.
558 --
559 --       Note: this field is obsolescent, to be eventually replaced entirely
560 --       by Normalized_First_Bit and Normalized_Position, but for the moment,
561 --       gigi is still using (and back annotating) this field, and gigi does
562 --       not know about the new fields. For the front end layout case, the
563 --       Component_Bit_Offset field is only set if it is static, and otherwise
564 --       the new Normalized_First_Bit and Normalized_Position fields are used.
565
566 --    Component_Clause (Node13)
567 --       Present in record components and discriminants. If a record
568 --       representation clause is present for the corresponding record
569 --       type a that specifies a position for the component, then the
570 --       Component_Clause field of the E_Component entity points to the
571 --       N_Component_Clause node. Set to Empty if no record representation
572 --       clause was present, or if there was no specification for this
573 --       component.
574
575 --    Component_Size (Uint22) [implementation base type only]
576 --       Present in array types. It contains the component size value for
577 --       the array. A value of No_Uint means that the value is not yet set.
578 --       The value can be set by the use of a component size clause, or
579 --       by the front end in package Layout, or by the backend. A negative
580 --       value is used to represent a value which is not known at compile
581 --       time, and must be computed at run-time (this happens if the type
582 --       of the component has a variable length size). See package Layout
583 --       for details of these values.
584
585 --    Component_Type (Node20) [implementation base type only]
586 --       Present in array types and string types. References component type.
587
588 --    Constant_Value (synthesized)
589 --       Applies to variables, constants, named integers, and named reals.
590 --       Obtains the initialization expression for the entity. Will return
591 --       Empty for a deferred constant whose full view is not available
592 --       or in some other cases of internal entities, which cannot be treated
593 --       as constants from the point of view of constant folding. Empty is
594 --       also returned for variables with no initialization expression.
595
596 --    Corresponding_Concurrent_Type (Node18)
597 --       Present in record types that are constructed by the expander to
598 --       represent task and protected types (Is_Concurrent_Record_Type flag
599 --       set True). Points to the entity for the corresponding task type or
600 --       protected type.
601
602 --    Corresponding_Discriminant (Node19)
603 --       Present in discriminants of a derived type, when the discriminant is
604 --       used to constrain a discriminant of the parent type. Points to the
605 --       corresponding discriminant in the parent type. Otherwise it is Empty.
606
607 --    Corresponding_Equality (Node13)
608 --       Present in function entities for implicit inequality operators.
609 --       Denotes the explicit or derived equality operation that creates
610 --       the implicit inequality. Note that this field is not present in
611 --       other function entities, only in implicit inequality routines,
612 --       where Comes_From_Source is always False.
613
614 --    Corresponding_Record_Type (Node18)
615 --       Present in protected and task types and subtypes. References the
616 --       entity for the corresponding record type constructed by the expander
617 --       (see Exp_Ch9). This type is used to represent values of the task type.
618
619 --    Corresponding_Remote_Type (Node22)
620 --       Present in record types that describe the fat pointer structure for
621 --       Remote_Access_To_Subrogram types. References the original access type.
622
623 --    CR_Discriminant (Node23)
624 --       Present in discriminants of concurrent types. Denotes the homologous
625 --       discriminant of the corresponding record type. The CR_Discriminant is
626 --       created at the same time as the discriminal, and used to replace
627 --       occurrences of the discriminant within the type declaration.
628
629 --    Current_Use_Clause (Node27)
630 --       Present in packages and in types. For packages, denotes the use
631 --       package clause currently in scope that makes the package use_visible.
632 --       For types, it denotes the use_type clause that makes the operators of
633 --       the type visible. Used for more precise warning messages on redundant
634 --       use clauses.
635
636 --    Current_Value (Node9)
637 --       Present in all object entities. Set in E_Variable, E_Constant, formal
638 --       parameters and E_Loop_Parameter entities if we have trackable current
639 --       values. Set non-Empty if the (constant) current value of the variable
640 --       is known, This value is valid only for references from the same
641 --       sequential scope as the entity. The sequential scope of an entity
642 --       includes the immediate scope and any contained scopes that are package
643 --       specs, package bodies, blocks (at any nesting level) or statement
644 --       sequences in IF or loop statements.
645 --
646 --       Another related use of this field is to record information about the
647 --       value obtained from an IF or WHILE statement condition. If the IF or
648 --       ELSIF or WHILE condition has the form "NOT {,NOT] OBJ RELOP VAL ",
649 --       or OBJ [AND [THEN]] expr, where OBJ refers to an entity with a
650 --       Current_Value field, RELOP is one of the six relational operators, and
651 --       VAL is a compile-time known value then the Current_Value field of OBJ
652 --       points to the N_If_Statement, N_Elsif_Part, or N_Iteration_Scheme node
653 --       of the relevant construct, and the Condition field of this can be
654 --       consulted to give information about the value of OBJ. For more details
655 --       on this usage, see the procedure Exp_Util.Get_Current_Value_Condition.
656
657 --    Debug_Info_Off (Flag166)
658 --       Present in all entities. Set if a pragma Suppress_Debug_Info applies
659 --       to the entity, or if internal processing in the compiler determines
660 --       that suppression of debug information is desirable. Note that this
661 --       flag is only for use by the front end as part of the processing for
662 --       determining if Needs_Debug_Info should be set. The back end should
663 --       always test Needs_Debug_Info, it should never test Debug_Info_Off.
664
665 --    Debug_Renaming_Link (Node25)
666 --       Used to link the variable associated with a debug renaming declaration
667 --       to the renamed entity. See Exp_Dbug.Debug_Renaming_Declaration for
668 --       details of the use of this field.
669
670 --    Declaration_Node (synthesized)
671 --       Applies to all entities. Returns the tree node for the declaration
672 --       that declared the entity. Normally this is just the Parent of the
673 --       entity. One exception arises with child units, where the parent of
674 --       the entity is a selected component or a defining program unit name.
675 --       Another exception is that if the entity is an incomplete type that
676 --       has been completed, then we obtain the declaration node denoted by
677 --       the full type, i.e. the full type declaration node.
678
679 --    Default_Expr_Function (Node21)
680 --       Present in parameters. It holds the entity of the parameterless
681 --       function that is built to evaluate the default expression if it is
682 --       more complex than a simple identifier or literal. For the latter
683 --       simple cases or if there is no default value, this field is Empty.
684
685 --    Default_Expressions_Processed (Flag108)
686 --       A flag in subprograms (functions, operators, procedures) and in
687 --       entries and entry families used to indicate that default expressions
688 --       have been processed and to avoid multiple calls to process the
689 --       default expressions (see Freeze.Process_Default_Expressions), which
690 --       would not only waste time, but also generate false error messages.
691
692 --    Default_Value (Node20)
693 --       Present in formal parameters. Points to the node representing the
694 --       expression for the default value for the parameter. Empty if the
695 --       parameter has no default value (which is always the case for OUT
696 --       and IN OUT parameters in the absence of errors).
697
698 --    Delay_Cleanups (Flag114)
699 --       Present in entities that have finalization lists (subprograms
700 --       blocks, and tasks). Set if there are pending generic body
701 --       instantiations for the corresponding entity. If this flag is
702 --       set, then generation of cleanup actions for the corresponding
703 --       entity must be delayed, since the insertion of the generic body
704 --       may affect cleanup generation (see Inline for further details).
705
706 --    Delay_Subprogram_Descriptors (Flag50)
707 --       Present in entities for which exception subprogram descriptors
708 --       are generated (subprograms, package declarations and package
709 --       bodies). Present if there are pending generic body instantiations
710 --       for the corresponding entity. If this flag is set, then generation
711 --       of the subprogram descriptor for the corresponding enities must
712 --       be delayed, since the insertion of the generic body may add entries
713 --       to the list of handlers.
714 --
715 --       Note: for subprograms, Delay_Subprogram_Descriptors is set if and
716 --       only if Delay_Cleanups is set. But Delay_Cleanups can be set for a
717 --       a block (in which case Delay_Subprogram_Descriptors is set for the
718 --       containing subprogram). In addition Delay_Subprogram_Descriptors is
719 --       set for a library level package declaration or body which contains
720 --       delayed instantiations (in this case the descriptor refers to the
721 --       enclosing elaboration procedure).
722
723 --    Delta_Value (Ureal18)
724 --       Present in fixed and decimal types. Points to a universal real
725 --       that holds value of delta for the type, as given in the declaration
726 --       or as inherited by a subtype or derived type.
727
728 --    Dependent_Instances (Elist8)
729 --       Present in packages that are instances. Holds list of instances
730 --       of inner generics. Used to place freeze nodes for those instances
731 --       after that of the current one, i.e. after the corresponding generic
732 --       bodies.
733
734 --    Depends_On_Private (Flag14)
735 --       Present in all type entities. Set if the type is private or if it
736 --       depends on a private type.
737
738 --    Designated_Type (synthesized)
739 --       Applies to access types. Returns the designated type. Differs
740 --       from Directly_Designated_Type in that if the access type refers
741 --       to an incomplete type, and the full type is available, then this
742 --       full type is returned instead of the incomplete type.
743
744 --    Digits_Value (Uint17)
745 --       Present in floating point types and subtypes and decimal types and
746 --       subtypes. Contains the Digits value specified in the declaration.
747
748 --    Directly_Designated_Type (Node20)
749 --       Present in access types. This field points to the type that is
750 --       directly designated by the access type. In the case of an access
751 --       type to an incomplete type, this field references the incomplete
752 --       type. Note that in the semantic processing, what is useful in
753 --       nearly all cases is the full type designated by the access type.
754 --       The function Designated_Type obtains this full type in the case of
755 --       access to an incomplete type.
756
757 --    Discard_Names (Flag88)
758 --       Present in types and exception entities. Set if pragma Discard_Names
759 --       applies to the entity. It is also set for declarative regions and
760 --       package specs for which a Discard_Names pragma with zero arguments
761 --       has been encountered. The purpose of setting this flag is to be able
762 --       to set the Discard_Names attribute on enumeration types declared
763 --       after the pragma within the same declarative region. This flag is
764 --       set to False if a Keep_Names pragma appears for an enumeration type.
765
766 --    Discriminal (Node17)
767 --       Present in discriminants (Discriminant formal: GNAT's first
768 --       coinage). The entity used as a formal parameter that corresponds
769 --       to a discriminant. See section "Handling of Discriminants" for
770 --       full details of the use of discriminals.
771
772 --    Discriminal_Link (Node10)
773 --       Present in discriminals (which have an Ekind of E_In_Parameter,
774 --       or E_Constant), points back to corresponding discriminant.
775
776 --    Discriminant_Checking_Func (Node20)
777 --       Present in components. Points to the defining identifier of the
778 --       function built by the expander returns a Boolean indicating whether
779 --       the given record component exists for the current discriminant
780 --       values.
781
782 --    Discriminant_Constraint (Elist21)
783 --       Present in entities whose Has_Discriminants flag is set (concurrent
784 --       types, subtypes, record types and subtypes, private types and
785 --       subtypes, limited private types and subtypes and incomplete types).
786 --       It is an error to reference the Discriminant_Constraint field if
787 --       Has_Discriminants is False.
788 --
789 --       If the Is_Constrained flag is set, Discriminant_Constraint points
790 --       to an element list containing the discriminant constraints in the
791 --       same order in which the discriminants are declared.
792 --
793 --       If the Is_Constrained flag is not set but the discriminants of the
794 --       unconstrained type have default initial values then this field
795 --       points to an element list giving these default initial values in
796 --       the same order in which the discriminants are declared. Note that
797 --       in this case the entity cannot be a tagged record type, because
798 --       discriminants in this case cannot have defaults.
799 --
800 --       If the entity is a tagged record implicit type, then this field is
801 --       inherited from the first subtype (so that the itype is subtype
802 --       conformant with its first subtype, which is needed when the first
803 --       subtype overrides primitive operations inherited by the implicit
804 --       base type).
805 --
806 --       In all other cases Discriminant_Constraint contains the empty
807 --       Elist (ie it is initialized with a call to New_Elmt_List).
808
809 --    Discriminant_Default_Value (Node20)
810 --       Present in discriminants. Points to the node representing the
811 --       expression for the default value of the discriminant. Set to
812 --       Empty if the discriminant has no default value.
813
814 --    Discriminant_Number (Uint15)
815 --       Present in discriminants. Gives the ranking of a discriminant in
816 --       the list of discriminants of the type, i.e. a sequential integer
817 --       index starting at 1 and ranging up to Number_Discriminants.
818
819 --    Dispatch_Table_Wrapper (Node26) [implementation base type only]
820 --       Present in library level record type entities if we are generating
821 --       statically allocated dispatch tables. For a tagged type, points to
822 --       the dispatch table wrapper associated with the tagged type. For a
823 --       non-tagged record, contains Empty.
824
825 --    DTC_Entity (Node16)
826 --       Present in function and procedure entities. Set to Empty unless
827 --       the subprogram is dispatching in which case it references the
828 --       Dispatch Table pointer Component. That is to say the component _tag
829 --       for regular Ada tagged types, for CPP_Class types and their
830 --       descendants this field points to the component entity in the record
831 --       that is the Vtable pointer for the Vtable containing the entry that
832 --       references the subprogram.
833
834 --    DT_Entry_Count (Uint15)
835 --       Present in E_Component entities. Only used for component marked
836 --       Is_Tag. Store the number of entries in the Vtable (or Dispatch Table)
837
838 --    DT_Offset_To_Top_Func (Node25)
839 --       Present in E_Component entities. Only used for component marked
840 --       Is_Tag. If present it stores the Offset_To_Top function used to
841 --       provide this value in tagged types whose ancestor has discriminants.
842
843 --    DT_Position (Uint15)
844 --       Present in function and procedure entities which are dispatching
845 --       (should not be referenced without first checking that flag
846 --       Is_Dispatching_Operation is True). Contains the offset into
847 --       the Vtable for the entry that references the subprogram.
848
849 --    Ekind (Ekind)
850 --       Present in all entities. Contains a value of the enumeration type
851 --       Entity_Kind declared in a subsequent section in this spec.
852
853 --    Elaborate_Body_Desirable (Flag210)
854 --       Present in package entities. Set if the elaboration circuitry detects
855 --       a case where there is a package body that modifies one or more visible
856 --       entities in the package spec and there is no explicit Elaborate_Body
857 --       pragma for the package. This information is passed on to the binder,
858 --       which attempts, but does not promise, to elaborate the body as close
859 --       to the spec as possible.
860
861 --    Elaboration_Entity (Node13)
862 --       Present in generic and non-generic package and subprogram
863 --       entities. This is a boolean entity associated with the unit that
864 --       is initially set to False, and is set True when the unit is
865 --       elaborated. This is used for two purposes. First, it is used to
866 --       implement required access before elaboration checks (the flag
867 --       must be true to call a subprogram at elaboration time). Second,
868 --       it is used to guard against repeated execution of the generated
869 --       elaboration code.
870 --
871 --       Note that we always allocate this flag, and set this field, but
872 --       we do not always actually use it. It is only used if it is needed
873 --       for access-before-elaboration use (see Elaboration_Entity_Required
874 --       flag) or if either the spec or the body has elaboration code. If
875 --       neither of these two conditions holds, then the entity is still
876 --       allocated (since we don't know early enough whether or not there
877 --       is elaboration code), but is simply not used for any purpose.
878
879 --    Elaboration_Entity_Required (Flag174)
880 --       Present in generics and non-generic package and subprogram
881 --       entities. Set only if Elaboration_Entity is non-Empty to indicate
882 --       that the boolean is required to be set even if there is no other
883 --       elaboration code. This occurs when the Elaboration_Entity flag
884 --       is used for required access-before-elaboration checking. If the
885 --       flag is only for preventing multiple execution of the elaboration
886 --       code, then if there is no other elaboration code, obviously there
887 --       is no need to set the flag.
888
889 --    Enclosing_Dynamic_Scope (synthesized)
890 --       Applies to all entities. Returns the closest dynamic scope in which
891 --       the entity is declared or Standard_Standard for library-level entities
892
893 --    Enclosing_Scope (Node18)
894 --       Present in labels. Denotes the innermost enclosing construct that
895 --       contains the label. Identical to the scope of the label, except for
896 --       labels declared in the body of an accept statement, in which case the
897 --       entry_name is the Enclosing_Scope. Used to validate goto's within
898 --       accept statements.
899
900 --    Entry_Accepted (Flag152)
901 --       Present in E_Entry and E_Entry_Family entities. Set if there is
902 --       at least one accept for this entry in the task body. Used to
903 --       generate warnings for missing accepts.
904
905 --    Entry_Bodies_Array (Node15)
906 --       Present in protected types for which Has_Entries is true.
907 --       This is the defining identifier for the array of entry body
908 --       action procedures and barrier functions used by the runtime to
909 --       execute the user code associated with each entry.
910
911 --    Entry_Cancel_Parameter (Node23)
912 --       Present in blocks. This only applies to a block statement for
913 --       which the Is_Asynchronous_Call_Block flag is set. It
914 --       contains the defining identifier of an object that must be
915 --       passed to the Cancel_Task_Entry_Call or Cancel_Protected_Entry_Call
916 --       call in the cleanup handler added to the block by
917 --       Exp_Ch7.Expand_Cleanup_Actions. This parameter is a Boolean
918 --       object for task entry calls and a Communications_Block object
919 --       in the case of protected entry calls. In both cases the objects
920 --       are declared in outer scopes to this block.
921
922 --    Entry_Component (Node11)
923 --       Present in formal parameters (in, in out and out parameters). Used
924 --       only for formals of entries. References the corresponding component
925 --       of the entry parameter record for the entry.
926
927 --    Entry_Formal (Node16)
928 --       Present in components of the record built to correspond to entry
929 --       parameters. This field points from the component to the formal. It
930 --       is the back pointer corresponding to Entry_Component.
931
932 --    Entry_Index_Constant (Node18)
933 --       Present in an entry index parameter. This is an identifier that
934 --       eventually becomes the name of a constant representing the index
935 --       of the entry family member whose entry body is being executed. Used
936 --       to expand references to the entry index specification identifier.
937
938 --    Entry_Index_Type (synthesized)
939 --       Applies to an entry family. Denotes Etype of the subtype indication
940 --       in the entry declaration. Used to resolve the index expression in an
941 --       accept statement for a member of the family, and in the prefix of
942 --       'COUNT when it applies to a family member.
943
944 --    Entry_Parameters_Type (Node15)
945 --       Present in entries. Points to the access-to-record type that is
946 --       constructed by the expander to hold a reference to the parameter
947 --       values. This reference is manipulated (as an address) by the
948 --       tasking runtime. The designated record represents a packaging
949 --       up of the entry parameters (see Exp_Ch9.Expand_N_Entry_Declaration
950 --       for further details). Entry_Parameters_Type is Empty if the entry
951 --       has no parameters.
952
953 --    Enumeration_Pos (Uint11)
954 --       Present in enumeration literals. Contains the position number
955 --       corresponding to the value of the enumeration literal.
956
957 --    Enumeration_Rep (Uint12)
958 --       Present in enumeration literals. Contains the representation that
959 --       corresponds to the value of the enumeration literal. Note that
960 --       this is normally the same as Enumeration_Pos except in the presence
961 --       of representation clauses, where Pos will still represent the
962 --       position of the literal within the type and Rep will have be the
963 --       value given in the representation clause.
964
965 --    Enumeration_Rep_Expr (Node22)
966 --       Present in enumeration literals. Points to the expression in an
967 --       associated enumeration rep clause that provides the representation
968 --       value for this literal. Empty if no enumeration rep clause for this
969 --       literal (or if rep clause does not have an entry for this literal,
970 --       an error situation). This is also used to catch duplicate entries
971 --       for the same literal.
972
973 --    Enum_Pos_To_Rep (Node23)
974 --       Present in enumeration types (but not enumeration subtypes). Set to
975 --       Empty unless the enumeration type has a non-standard representation
976 --       (i.e. at least one literal has a representation value different from
977 --       its pos value). In this case, Enum_Pos_To_Rep is the entity for an
978 --       array constructed when the type is frozen that maps Pos values to
979 --       corresponding Rep values. The index type of this array is Natural,
980 --       and the component type is a suitable integer type that holds the
981 --       full range of representation values.
982
983 --    Equivalent_Type (Node18)
984 --       Present in class wide types and subtypes, access to protected
985 --       subprogram types, and in exception types. For a classwide type, it
986 --       is always Empty. For a class wide subtype, it points to an entity
987 --       created by the expander which gives Gigi an easily understandable
988 --       equivalent of the class subtype with a known size (given by an
989 --       initial value). See Exp_Util.Expand_Class_Wide_Subtype for further
990 --       details. For E_Exception_Type, this points to the record containing
991 --       the data necessary to represent exceptions (for further details, see
992 --       System.Standard_Library. For access_to_protected subprograms, it
993 --       denotes a record that holds pointers to the operation and to the
994 --       protected object. For remote Access_To_Subprogram types, it denotes
995 --       the record that is the fat pointer representation of an RAST.
996
997 --    Esize (Uint12)
998 --       Present in all types and subtypes, and also for components, constants,
999 --       and variables, including exceptions where it refers to the static data
1000 --       allocated for an exception. Contains the Object_Size of the type or of
1001 --       the object. A value of zero indicates that the value is not yet known.
1002 --
1003 --       For the case of components where a component clause is present, the
1004 --       value is the value from the component clause, which must be non-
1005 --       negative (but may be zero, which is acceptable for the case of
1006 --       a type with only one possible value). It is also possible for Esize
1007 --       of a component to be set without a component clause present, which
1008 --       means that the component size is specified, but not the position.
1009 --       See also RM_Size and the section on "Handling of Type'Size Values".
1010 --       During gigi processing, the value is back annotated for all zero
1011 --       values, so that after the call to gigi, the value is properly set.
1012
1013 --    Etype (Node5)
1014 --       Present in all entities. Represents the type of the entity, which
1015 --       is itself another entity. For a type entity, points to the parent
1016 --       type for a derived type, or if the type is not derived, points to
1017 --       itself. For a subtype entity, Etype points to the base type. For
1018 --       a class wide type, points to the parent type. For a subprogram or
1019 --       subprogram type, Etype has the return type of a function or is set
1020 --       to Standard_Void_Type to represent a procedure.
1021
1022 --    Exception_Code (Uint22)
1023 --       Present in exception entitites. Set to zero unless either an
1024 --       Import_Exception or Export_Exception pragma applies to the
1025 --       pragma and specifies a Code value. See description of these
1026 --       pragmas for details. Note that this field is relevant only if
1027 --       Is_VMS_Exception is set.
1028
1029 --    Extra_Formal (Node15)
1030 --       Present in formal parameters in the non-generic case. Certain
1031 --       parameters require extra implicit information to be passed (e.g. the
1032 --       flag indicating if an unconstrained variant record argument is
1033 --       constrained, and the accessibility level for access parameters. See
1034 --       description of Extra_Constrained, Extra_Accessibility fields for
1035 --       further details. Extra formal parameters are constructed to represent
1036 --       these values, and chained to the end of the list of formals using the
1037 --       Extra_Formal field (i.e. the Extra_Formal field of the last "real"
1038 --       formal points to the first extra formal, and the Extra_Formal field of
1039 --       each extra formal points to the next one, with Empty indicating the
1040 --       end of the list of extra formals.
1041
1042 --    Extra_Formals (Node28)
1043 --       Applies to subprograms and subprogram types, and also in entries
1044 --       and entry families. Returns first extra formal of the subprogram
1045 --       or entry. Returns Empty if there are no extra formals.
1046
1047 --    Extra_Accessibility (Node13)
1048 --       Present in formal parameters in the non-generic case if expansion is
1049 --       active. Normally Empty, but if a parameter is one for which a dynamic
1050 --       accessibility check is required, then an extra formal of type
1051 --       Natural is created (see description of field Extra_Formal), and the
1052 --       Extra_Accessibility field of the formal parameter points to the entity
1053 --       for this extra formal. Also present in variables when compiling
1054 --       receiving stubs. In this case, a non Empty value means that this
1055 --       variable's accessibility depth has been transmitted by the caller and
1056 --       must be retrieved through the entity designed by this field instead of
1057 --       being computed.
1058
1059 --    Extra_Constrained (Node23)
1060 --       Present in formal parameters in the non-generic case if expansion is
1061 --       active. Normally Empty, but if a parameter is one for which a dynamic
1062 --       indication of its constrained status is required, then an extra formal
1063 --       of type Boolean is created (see description of field Extra_Formal),
1064 --       and the Extra_Constrained field of the formal parameter points to the
1065 --       entity for this extra formal. Also present in variables when compiling
1066 --       receiving stubs. In this case, a non empty value means that this
1067 --       variable's constrained status has been transmitted by the caller and
1068 --       must be retrieved through the entity designed by this field instead of
1069 --       being computed.
1070
1071 --    Can_Use_Internal_Rep (Flag229) [base type only]
1072 --       Present in Access_Subprogram_Kind nodes. This flag is set by the
1073 --       front end and used by the back end. False means that the back end
1074 --       must represent the type in the same way as Convention-C types (and
1075 --       other foreign-convention types). On many targets, this means that
1076 --       the back end will use dynamically generated trampolines for nested
1077 --       subprograms. True means that the back end can represent the type in
1078 --       some internal way. On the aforementioned targets, this means that the
1079 --       back end will not use dynamically generated trampolines. This flag
1080 --       must be False if Has_Foreign_Convention is True; otherwise, the front
1081 --       end is free to set the policy.
1082 --
1083 --       Setting this False in all cases corresponds to the traditional back
1084 --       end strategy, where all access-to-subprogram types are represented the
1085 --       same way, independent of the Convention. See also
1086 --       Always_Compatible_Rep in Targparm.
1087 --
1088 --       Efficiency note: On targets that use dynamically generated
1089 --       trampolines, False generally favors efficiency of top-level
1090 --       subprograms, whereas True generally favors efficiency of nested
1091 --       ones. On other targets, this flag has little or no effect on
1092 --       efficiency. The front end should take this into account. In
1093 --       particular, pragma Favor_Top_Level gives a hint that the flag should
1094 --       be False.
1095 --
1096 --       Note: We considered using Convention-C for this purpose, but we need
1097 --       this separate flag, because Convention-C implies that for
1098 --       P'[Unrestricted_]Access, P also have convention C. Sometimes we want
1099 --       to have Can_Use_Internal_Rep False for an access type, but allow P to
1100 --       have convention Ada.
1101
1102 --    Finalization_Chain_Entity (Node19)
1103 --       Present in scopes that can have finalizable entities (blocks,
1104 --       functions, procedures, tasks, entries, return statements). When this
1105 --       field is empty it means that there are no finalization actions to
1106 --       perform on exit of the scope. When this field contains 'Error', it
1107 --       means that no finalization actions should happen at this level and
1108 --       the finalization chain of a parent scope shall be used (??? this is
1109 --       an improper use of 'Error' and should be changed). Otherwise it
1110 --       contains an entity of type Finalizable_Ptr that is the head of the
1111 --       list of objects to finalize on exit. See "Finalization Management"
1112 --       section in exp_ch7.adb for more details.
1113
1114 --    Finalize_Storage_Only (Flag158) [base type only]
1115 --       Present in all types. Set on direct controlled types to which a
1116 --       valid Finalize_Storage_Only pragma applies. This flag is also set on
1117 --       composite types when they have at least one controlled component and
1118 --       all their controlled components are Finalize_Storage_Only. It is also
1119 --       inherited by type derivation except for direct controlled types where
1120 --       the Finalize_Storage_Only pragma is required at each level of
1121 --       derivation.
1122
1123 --    First_Component (synthesized)
1124 --       Applies to record types. Returns the first component by following the
1125 --       chain of declared entities for the record until a component is found
1126 --       (one with an Ekind of E_Component). The discriminants are skipped. If
1127 --       the record is null, then Empty is returned.
1128
1129 --    First_Component_Or_Discriminant (synthesized)
1130 --      Similar to First_Component, but discriminants are not skipped, so will
1131 --      find the first discriminant if discriminants are present.
1132
1133 --    First_Discriminant (synthesized)
1134 --       Applies to types with discriminants. The discriminants are the first
1135 --       entities declared in the type, so normally this is equivalent to
1136 --       First_Entity. The exception arises for tagged types, where the tag
1137 --       itself is prepended to the front of the entity chain, so the
1138 --       First_Discriminant function steps past the tag if it is present.
1139
1140 --    First_Entity (Node17)
1141 --       Present in all entities which act as scopes to which a list of
1142 --       associated entities is attached (blocks, class subtypes and types,
1143 --       entries, functions, loops, packages, procedures, protected objects,
1144 --       record types and subtypes, private types, task types and subtypes).
1145 --       Points to a list of associated entities using the Next_Entity field
1146 --       as a chain pointer with Empty marking the end of the list.
1147
1148 --    First_Formal (synthesized)
1149 --       Applies to subprograms and subprogram types, and also in entries
1150 --       and entry families. Returns first formal of the subprogram or entry.
1151 --       The formals are the first entities declared in a subprogram or in
1152 --       a subprogram type (the designated type of an Access_To_Subprogram
1153 --       definition) or in an entry.
1154
1155 --    First_Formal_With_Extras (synthesized)
1156 --       Applies to subprograms and subprogram types, and also in entries
1157 --       and entry families. Returns first formal of the subprogram or entry.
1158 --       Returns Empty if there are no formals. The list returned includes
1159 --       all the extra formals (see description of Extra_Formals field).
1160
1161 --    First_Index (Node17)
1162 --       Present in array types and subtypes and in string types and subtypes.
1163 --       By introducing implicit subtypes for the index constraints, we have
1164 --       the same structure for constrained and unconstrained arrays, subtype
1165 --       marks and discrete ranges are both represented by a subtype. This
1166 --       function returns the tree node corresponding to an occurrence of the
1167 --       first index (NOT the entity for the type). Subsequent indexes are
1168 --       obtained using Next_Index. Note that this field is present for the
1169 --       case of string literal subtypes, but is always Empty.
1170
1171 --    First_Literal (Node17)
1172 --       Present in all enumeration types, including character and boolean
1173 --       types. This field points to the first enumeration literal entity
1174 --       for the type (i.e. it is set to First (Literals (N)) where N is
1175 --       the enumeration type definition node. A special case occurs with
1176 --       standard character and wide character types, where this field is
1177 --       Empty, since there are no enumeration literal lists in these cases.
1178 --       Note that this field is set in enumeration subtypes, but it still
1179 --       points to the first literal of the base type in this case.
1180
1181 --    First_Optional_Parameter (Node14)
1182 --       Present in (non-generic) function and procedure entities. Set to a
1183 --       non-null value only if a pragma Import_Function, Import_Procedure
1184 --       or Import_Valued_Procedure specifies a First_Optional_Parameter
1185 --       argument, in which case this field points to the parameter entity
1186 --       corresponding to the specified parameter.
1187
1188 --    First_Private_Entity (Node16)
1189 --       Present in all entities containing private parts (packages, protected
1190 --       types and subtypes, task types and subtypes). The entities on the
1191 --       entity chain are in order of declaration, so the entries for private
1192 --       entities are at the end of the chain. This field points to the first
1193 --       entity for the private part. It is Empty if there are no entities
1194 --       declared in the private part or if there is no private part.
1195
1196 --    First_Rep_Item (Node6)
1197 --       Present in all entities. If non-empty, points to a linked list of
1198 --       representation pragmas nodes and representation clause nodes that
1199 --       apply to the entity, linked using Next_Rep_Item, with Empty marking
1200 --       the end of the list. In the case of derived types and subtypes, the
1201 --       new entity inherits the chain at the point of declaration. This
1202 --       means that it is possible to have multiple instances of the same
1203 --       kind of rep item on the chain, in which case it is the first one
1204 --       that applies to the entity.
1205 --
1206 --       Note: pragmas that can apply to more than one overloadable entity,
1207 --       (Convention, Interface, Inline, Inline_Always, Import, Export,
1208 --       External) are never present on this chain when they apply to
1209 --       overloadable entities, since it is impossible for a given pragma
1210 --       to be on more than one chain at a time.
1211 --
1212 --       For most representation items, the representation information is
1213 --       reflected in other fields and flags in the entity. For example if a
1214 --       record representation clause is present, the component entities
1215 --       reflect the specified information. However, there are some items that
1216 --       are only reflected in the chain. These include:
1217 --
1218 --          Alignment attribute definition clause
1219 --          Machine_Attribute pragma
1220 --          Link_Alias pragma
1221 --          Link-Section pragma
1222 --          Weak_External pragma
1223 --
1224 --       If any of these items are present, then the flag Has_Gigi_Rep_Item
1225 --       is set, indicating that Gigi should search the chain.
1226 --
1227 --       Other representation items are included in the chain so that error
1228 --       messages can easily locate the relevant nodes for posting errors.
1229 --       Note in particular that size clauses are present only for this
1230 --       purpose, and should only be accessed if Has_Size_Clause is set.
1231
1232 --    First_Stored_Discriminant (synthesized)
1233 --       Applies to types with discriminants. Gives the first discriminant
1234 --       stored in the object. In many cases, these are the same as the
1235 --       normal visible discriminants for the type, but in the case of
1236 --       renamed discriminants, this is not always the case.
1237 --
1238 --       For tagged types, and untagged types which are root types or
1239 --       derived types but which do not rename discriminants in their
1240 --       root type, the stored discriminants are the same as the actual
1241 --       discriminants of the type, and hence this function is the same
1242 --       as First_Discriminant.
1243 --
1244 --       For derived non-tagged types that rename discriminants in the root
1245 --       type this is the first of the discriminants that occur in the
1246 --       root type. To be precise, in this case stored discriminants are
1247 --       entities attached to the entity chain of the derived type which
1248 --       are a copy of the discriminants of the root type. Furthermore their
1249 --       Is_Completely_Hidden flag is set since although they are actually
1250 --       stored in the object, they are not in the set of discriminants that
1251 --       is visble in the type.
1252 --
1253 --       For derived untagged types, stored discriminants are the real
1254 --       discriminants from Gigi's standpoint, i.e. those that will be
1255 --       stored in actual objects of the type.
1256
1257 --    First_Subtype (synthesized)
1258 --       Applies to all types and subtypes. For types, yields the first subtype
1259 --       of the type. For subtypes, yields the first subtype of the base type
1260 --       of the subtype.
1261
1262 --    First_Tag_Component (synthesized)
1263 --       Applies to tagged record types, returns the entity for the first
1264 --       _Tag field in this record.
1265
1266 --    Freeze_Node (Node7)
1267 --       Present in all entities. If there is an associated freeze node for
1268 --       the entity, this field references this freeze node. If no freeze
1269 --       node is associated with the entity, then this field is Empty. See
1270 --       package Freeze for further details.
1271
1272 --    From_With_Type (Flag159)
1273 --       Present in package and type entities. Indicates that the entity
1274 --       appears in a With_Type clause in the context of some other unit,
1275 --       either as the prefix (which must be a package), or as a type name.
1276 --       The package can only be used to retrieve such a type, and the type
1277 --       can be used only in component declarations and access definitions.
1278 --       The With_Type clause is used to construct mutually recursive
1279 --       types, i.e. record types (Java classes) that hold pointers to each
1280 --       other. If such a type is an access type, it has no explicit freeze
1281 --       node, so that the back-end does not attempt to elaborate it.
1282 --       Currently this flag is also used to implement Ada 2005 (AI-50217).
1283 --       It will be renamed to From_Limited_With after removal of the current
1284 --       GNAT with_type clause???
1285
1286 --    Full_View (Node11)
1287 --       Present in all type and subtype entities and in deferred constants.
1288 --       References the entity for the corresponding full type declaration.
1289 --       For all types other than private and incomplete types, this field
1290 --       always contains Empty. See also Underlying_Type.
1291
1292 --    Generic_Homonym (Node11)
1293 --       Present in generic packages. The generic homonym is the entity of
1294 --       a renaming declaration inserted in every generic unit. It is used
1295 --       to resolve the name of a local entity that is given by a qualified
1296 --       name, when the generic entity itself is hidden by a local name.
1297
1298 --    Generic_Renamings (Elist23)
1299 --       Present in package and subprogram instances. Holds mapping that
1300 --       associates generic parameters with the corresponding instances, in
1301 --       those cases where the instance is an entity.
1302
1303 --    Handler_Records (List10)
1304 --       Present in subprogram and package entities. Points to a list of
1305 --       identifiers referencing the handler record entities for the
1306 --       corresponding unit.
1307
1308 --    Has_Aliased_Components (Flag135) [implementation base type only]
1309 --       Present in array type entities. Indicates that the component type
1310 --       of the array is aliased.
1311
1312 --    Has_Alignment_Clause (Flag46)
1313 --       Present in all type entities and objects. Indicates if an alignment
1314 --       clause has been given for the entity. If set, then Alignment_Clause
1315 --       returns the N_Attribute_Definition node for the alignment attribute
1316 --       definition clause. Note that it is possible for this flag to be False
1317 --       even when Alignment_Clause returns non_Empty (this happens in the case
1318 --       of derived type declarations).
1319
1320 --    Has_All_Calls_Remote (Flag79)
1321 --       Present in all library unit entities. Set true if the library unit
1322 --       has an All_Calls_Remote pragma. Note that such entities must also
1323 --       be RCI entities, so the flag Is_Remote_Call_Interface will always
1324 --       be set if this flag is set.
1325
1326 --    Has_Anon_Block_Suffix (Flag201)
1327 --       Present in all entities. Set if the entity is nested within one or
1328 --       more anonymous blocks and the Chars field contains a name with an
1329 --       anonymous block suffix (see Exp_Dbug for furthert details).
1330
1331 --    Has_Atomic_Components (Flag86) [implementation base type only]
1332 --       Present in all types and objects. Set only for an array type or
1333 --       an array object if a valid pragma Atomic_Components applies to the
1334 --       type or object. Note that in the case of an object, this flag is
1335 --       only set on the object if there was an explicit pragma for the
1336 --       object. In other words, the proper test for whether an object has
1337 --       atomic components is to see if either the object or its base type
1338 --       has this flag set. Note that in the case of a type, the pragma will
1339 --       be chained to the rep item chain of the first subtype in the usual
1340 --       manner.
1341
1342 --    Has_Attach_Handler (synthesized)
1343 --       Applies to record types that are constructed by the expander to
1344 --       represent protected types. Returns True if there is at least one
1345 --       Attach_Handler pragma in the corresponding specification.
1346
1347 --    Has_Biased_Representation (Flag139)
1348 --       Present in discrete types (where it applies to the type'size value),
1349 --       and to objects (both stand-alone and components), where it applies to
1350 --       the size of the object from a size or record component clause. In
1351 --       all cases it indicates that the size in question is smaller than
1352 --       would normally be required, but that the size requirement can be
1353 --       satisfied by using a biased representation, in which stored values
1354 --       have the low bound (Expr_Value (Type_Low_Bound (T)) subtracted to
1355 --       reduce the required size. For example, a type with a range of 1..2
1356 --       takes one bit, using 0 to represent 1 and 1 to represent 2.
1357 --
1358 --       Note that in the object and component cases, the flag is only set if
1359 --       the type is unbiased, but the object specifies a smaller size than the
1360 --       size of the type, forcing biased representation for the object, but
1361 --       the subtype is still an unbiased type.
1362
1363 --    Has_Completion (Flag26)
1364 --       Present in all entities that require a completion (functions,
1365 --       procedures, private types, limited private types, incomplete types,
1366 --       constants and packages that require a body). The flag is set if the
1367 --       completion has been encountered and analyzed.
1368
1369 --    Has_Completion_In_Body (Flag71)
1370 --       Present in all entities for types and subtypes. Set only in "Taft
1371 --       amendment types" (incomplete types whose full declaration appears in
1372 --       the package body).
1373
1374 --    Has_Complex_Representation (Flag140) [implementation base type only]
1375 --       Present in all type entities. Set only for a record base type to
1376 --       which a valid pragma Complex_Representation applies.
1377
1378 --    Has_Component_Size_Clause (Flag68) [implementation base type only]
1379 --       Present in all type entities. Set if a component size clause is
1380 --       present for the given type. Note that this flag can be False even
1381 --       if Component_Size is non-zero (happens in the case of derived types).
1382
1383 --    Has_Constrained_Partial_View (Flag187)
1384 --       Present in private type and their completions, when the private
1385 --       type has no discriminants and the full view has discriminants with
1386 --       defaults. In Ada 2005 heap-allocated objects of such types are not
1387 --       constrained, and can change their discriminants with full assignment.
1388
1389 --    Has_Contiguous_Rep (Flag181)
1390 --       Present in enumeration types. True if the type as a representation
1391 --       clause whose entries are successive integers.
1392
1393 --    Has_Controlling_Result (Flag98)
1394 --       Present in E_Function entities. True if the function is a primitive
1395 --       function of a tagged type which can dispatch on result.
1396
1397 --    Has_Controlled_Component (Flag43) [base type only]
1398 --       Present in all entities. Set only for composite type entities which
1399 --       contain a component that either is a controlled type, or itself
1400 --       contains controlled component (i.e. either Has_Controlled_Component
1401 --       or Is_Controlled is set for at least one component).
1402
1403 --    Has_Convention_Pragma (Flag119)
1404 --       Present in all entities. Set true for an entity for which a valid
1405 --       Convention, Import, or Export pragma has been given. Used to prevent
1406 --       more than one such pragma appearing for a given entity (RM B.1(45)).
1407
1408 --    Has_Delayed_Freeze (Flag18)
1409 --       Present in all entities. Set to indicate that an explicit freeze
1410 --       node must be generated for the entity at its freezing point. See
1411 --       separate section ("Delayed Freezing and Elaboration") for details.
1412
1413 --    Has_Discriminants (Flag5)
1414 --       Present in all types and subtypes. For types that are allowed to have
1415 --       discriminants (record types and subtypes, task types and subtypes,
1416 --       protected types and subtypes, private types, limited private types,
1417 --       and incomplete types), indicates if the corresponding type or subtype
1418 --       has a known discriminant part. Always false for all other types.
1419
1420 --    Has_Dispatch_Table (Flag220)
1421 --       Present in E_Record_Types that are tagged. Set to indicate that the
1422 --       corresponding dispatch table is already built. This flag is used to
1423 --       avoid duplicate construction of library level dispatch tables (because
1424 --       the declaration of library level objects cause premature construction
1425 --       of the table); otherwise the code that builds the table is added at
1426 --       the end of the list of declarations of the package.
1427
1428 --    Has_Entries (synthesized)
1429 --       Applies to concurrent types. True if any entries are declared
1430 --       within the task or protected definition for the type.
1431
1432 --    Has_Enumeration_Rep_Clause (Flag66)
1433 --       Present in enumeration types. Set if an enumeration representation
1434 --       clause has been given for this enumeration type. Used to prevent more
1435 --       than one enumeration representation clause for a given type. Note
1436 --       that this does not imply a representation with holes, since the rep
1437 --       clause may merely confirm the default 0..N representation.
1438
1439 --    Has_External_Tag_Rep_Clause (Flag110)
1440 --       Present in tagged types. Set if an external_tag rep. clause has been
1441 --       given for this type. Use to avoid the generation of the default
1442 --       external_tag.
1443
1444 --    Has_Exit (Flag47)
1445 --       Present in loop entities. Set if the loop contains an exit statement.
1446
1447 --    Has_Foreign_Convention (synthesized)
1448 --       Applies to all entities. Determines if the Convention for the
1449 --       entity is a foreign convention (i.e. is other than Convention_Ada,
1450 --       Convention_Intrinsic, Convention_Entry or Convention_Protected).
1451
1452 --    Has_Forward_Instantiation (Flag175)
1453 --       Present in package entities. Set true for packages that contain
1454 --       instantiations of local generic entities, before the corresponding
1455 --       generic body has been seen. If a package has a forward instantiation,
1456 --       we cannot inline subprograms appearing in the same package because
1457 --       the placement requirements of the instance will conflict with the
1458 --       linear elaboration of front-end inlining.
1459
1460 --    Has_Fully_Qualified_Name (Flag173)
1461 --       Present in all entities. Set True if the name in the Chars field has
1462 --       been replaced by the fully qualified name, as used for debug output.
1463 --       See Exp_Dbug for a full description of the use of this flag and also
1464 --       the related flag Has_Qualified_Name.
1465
1466 --    Has_Gigi_Rep_Item (Flag82)
1467 --       Present in all entities. Set if the rep item chain (referenced by
1468 --       First_Rep_Item and linked through the Next_Rep_Item chain) contains a
1469 --       representation item that needs to be specially processed by Gigi, i.e.
1470 --       one of the following items:
1471 --
1472 --          Machine_Attribute pragma
1473 --          Linker_Alias pragma
1474 --          Linker_Section pragma
1475 --          Linker_Constructor pragma
1476 --          Linker_Destructor pragma
1477 --          Weak_External pragma
1478 --
1479 --       If this flag is set, then Gigi should scan the rep item chain to
1480 --       process any of these items that appear. At least one such item will
1481 --       be present.
1482
1483 --    Has_Homonym (Flag56)
1484 --       Present in all entities. Set if an entity has a homonym in the same
1485 --       scope. Used by Gigi to generate unique names for such entities.
1486 --
1487 --    Has_Initial_Value (Flag219)
1488 --       Present in entities for variables and out parameters. Set if there
1489 --       is an explicit initial value expression in the declaration of the
1490 --       variable. Note that this is set only if this initial value is
1491 --       explicit, it is not set for the case of implicit initialization
1492 --       of access types or controlled types. Always set to False for out
1493 --       parameters. Also present in entities for in and in-out parameters,
1494 --       but always false in these cases.
1495 --
1496 --    Has_Interrupt_Handler (synthesized)
1497 --       Applies to all protected type entities. Set if the protected type
1498 --       definition contains at least one procedure to which a pragma
1499 --       Interrupt_Handler applies.
1500
1501 --    Has_Machine_Radix_Clause (Flag83)
1502 --       Present in decimal types and subtypes, set if a Machine_Radix
1503 --       representation clause is present. This flag is used to detect
1504 --       the error of multiple machine radix clauses for a single type.
1505
1506 --    Has_Master_Entity (Flag21)
1507 --       Present in entities that can appear in the scope stack (see spec
1508 --       of Sem). It is set if a task master entity (_master) has been
1509 --       declared and initialized in the corresponding scope.
1510
1511 --    Has_Missing_Return (Flag142)
1512 --       Present in functions and generic functions. Set if there is one or
1513 --       more missing return statements in the function. This is used to
1514 --       control wrapping of the body in Exp_Ch6 to ensure that the program
1515 --       error exeption is correctly raised in this case at runtime.
1516
1517 --    Has_Up_Level_Access (Flag215)
1518 --      Present in E_Variable and E_Constant entities. Set if the entity
1519 --      is a local variable declared in a subprogram p and is accessed in
1520 --      a subprogram nested inside p. Currently this flag is only set when
1521 --      VM_Target /= No_VM, for efficiency, since only the .NET back-end
1522 --      makes use of it to generate proper code for up-level references.
1523
1524 --    Has_Nested_Block_With_Handler (Flag101)
1525 --       Present in scope entities. Set if there is a nested block within the
1526 --       scope that has an exception handler and the two scopes are in the
1527 --       same procedure. This is used by the backend for controlling certain
1528 --       optimizations to ensure that they are consistent with exceptions.
1529 --       See documentation in Gigi for further details.
1530
1531 --    Has_Non_Standard_Rep (Flag75) [implementation base type only]
1532 --       Present in all type entities. Set when some representation clause
1533 --       or pragma causes the representation of the item to be significantly
1534 --       modified. In this category are changes of small or radix for a
1535 --       fixed-point type, change of component size for an array, and record
1536 --       or enumeration representation clauses, as well as packed pragmas.
1537 --       All other representation clauses (e.g. Size and Alignment clauses)
1538 --       are not considered to be significant since they do not affect
1539 --       stored bit patterns.
1540
1541 --    Has_Object_Size_Clause (Flag172)
1542 --       Present in entities for types and subtypes. Set if an Object_Size
1543 --       clause has been processed for the type Used to prevent multiple
1544 --       Object_Size clauses for a given entity.
1545
1546 --    Has_Per_Object_Constraint (Flag154)
1547 --       Present in E_Component entities, true if the subtype of the
1548 --       component has a per object constraint. Per object constraints result
1549 --       from the following situations:
1550 --
1551 --       1. N_Attribute_Reference - when the prefix is the enclosing type and
1552 --          the attribute is Access.
1553 --       2. N_Discriminant_Association - when the expression uses the
1554 --          discriminant of the enclosing type.
1555 --       3. N_Index_Or_Discriminant_Constraint - when at least one of the
1556 --          individual constraints is a per object constraint.
1557 --       4. N_Range - when the lower or upper bound uses the discriminant of
1558 --          the enclosing type.
1559 --       5. N_Range_Constraint - when the range expression uses the
1560 --          discriminant of the enclosing type.
1561
1562 --    Has_Persistent_BSS (Flag188)
1563 --       Present in all entities. Set True for entities to which a valid
1564 --       pragma Persistent_BSS applies. Note that although the pragma is
1565 --       only meaningful for objects, we set it for all entities in a unit
1566 --       to which the pragma applies, as well as the unit entity itself, for
1567 --       convenience in propagating the flag to contained entities.
1568
1569 --    Has_Postconditions (Flag240)
1570 --      Present in subprogram entities. Set if postconditions are active for
1571 --      the procedure, and a _postconditions procedure has been generated.
1572
1573 --    Has_Pragma_Controlled (Flag27) [implementation base type only]
1574 --       Present in access type entities. It is set if a pragma Controlled
1575 --       applies to the access type.
1576
1577 --    Has_Pragma_Elaborate_Body (Flag150)
1578 --       Present in all entities. Set in compilation unit entities if a
1579 --       pragma Elaborate_Body applies to the compilation unit.
1580
1581 --    Has_Pragma_Inline (Flag157)
1582 --       Present in all entities. Set for functions and procedures for which a
1583 --       pragma Inline or Inline_Always applies to the subprogram. Note that
1584 --       this flag can be set even if Is_Inlined is not set. This happens for
1585 --       pragma Inline (if Inline_Active is False). In other words, the flag
1586 --       Has_Pragma_Inline represents the formal semantic status, and is used
1587 --       for checking semantic correctness. The flag Is_Inlined indicates
1588 --       whether inlining is actually active for the entity.
1589
1590 --    Has_Pragma_Inline_Always (Flag230)
1591 --       Present in all entities. Set for functions and procedures for which a
1592 --       pragma Inline_Always applies. Note that if this flag is set, the flag
1593 --       Has_Pragma_Inline is also set.
1594
1595 --    Has_Pragma_Pack (Flag121) [implementation base type only]
1596 --       Present in all entities. If set, indicates that a valid pragma Pack
1597 --       was given for the type. Note that this flag is not inherited by
1598 --       derived type. See also the Is_Packed flag.
1599
1600 --    Has_Pragma_Pure (Flag203)
1601 --       Present in all entities. If set, indicates that a valid pragma Pure
1602 --       was given for the entity. In some cases, we need to test whether
1603 --       Is_Pure was explicitly set using this pragma.
1604
1605 --    Has_Pragma_Preelab_Init (Flag221)
1606 --       Present in type and subtype entities. If set indicates that a valid
1607 --       pragma Preelaborable_Initialization applies to the type.
1608
1609 --    Has_Pragma_Pure_Function (Flag179)
1610 --       Present in all entities. If set, indicates that a valid pragma
1611 --       Pure_Function was given for the entity. In some cases, we need to
1612 --       know that Is_Pure was explicitly set using this pragma.
1613
1614 --    Has_Pragma_Thread_Local_Storage (Flag169)
1615 --       Present in all entities. If set, indicates that a valid pragma
1616 --       Thread_Local_Storage was given for the entity.
1617
1618 --    Has_Pragma_Unmodified (Flag233)
1619 --       Present in all entities. Can only be set for variables (E_Variable,
1620 --       E_Out_Parameter, E_In_Out_Parameter). Set if a valid pragma Unmodified
1621 --       applies to the variable, indicating that no warning should be given
1622 --       if the entity is never modified. Note that clients should generally
1623 --       not test this flag directly, but instead use function Has_Unmodified.
1624
1625 --    Has_Pragma_Unreferenced (Flag180)
1626 --       Present in all entities. Set if a valid pragma Unreferenced applies
1627 --       to the entity, indicating that no warning should be given if the
1628 --       entity has no references, but a warning should be given if it is
1629 --       in fact referenced. For private types, this flag is set in both the
1630 --       private entity and full entity if the pragma applies to either. Note
1631 --       that clients should generally not test this flag directly, but instead
1632 --       use function Has_Unreferenced.
1633
1634 --    Has_Pragma_Unreferenced_Objects (Flag212)
1635 --       Present in type and subtype entities. Set if a valid pragma
1636 --       Unreferenced_Objects applies to the type, indicating that no warning
1637 --       should be given for objects of such a type for being unreferenced
1638 --       (but unlike the case with pragma Unreferenced, it is ok to reference
1639 --       such an object and no warning is generated.
1640
1641 --    Has_Primitive_Operations (Flag120) [base type only]
1642 --       Present in all type entities. Set if at least one primitive operation
1643 --       is defined for the type.
1644
1645 --    Has_Private_Ancestor (synthesized)
1646 --       Applies to all type and subtype entities. Returns True if at least
1647 --       one ancestor is private, and otherwise False if there are no private
1648 --       ancestors.
1649
1650 --    Has_Private_Declaration (Flag155)
1651 --       Present in all entities. Returns True if it is the defining entity
1652 --       of a private type declaration or its corresponding full declaration.
1653 --       This flag is thus preserved when the full and the partial views are
1654 --       exchanged, to indicate if a full type declaration is a completion.
1655 --       Used for semantic checks in E.4 (18), and elsewhere.
1656
1657 --    Has_Qualified_Name (Flag161)
1658 --       Present in all entities. Set True if the name in the Chars field
1659 --       has been replaced by its qualified name, as used for debug output.
1660 --       See Exp_Dbug for a full description of qualification requirements.
1661 --       For some entities, the name is the fully qualified name, but there
1662 --       are exceptions. In particular, for local variables in procedures,
1663 --       we do not include the procedure itself or higher scopes. See also
1664 --       the flag Has_Fully_Qualified_Name, which is set if the name does
1665 --       indeed include the fully qualified name.
1666
1667 --    Has_RACW (Flag214)
1668 --      Present in package spec entities. Set if the spec contains the
1669 --      declaration of a remote access-to-classwide type.
1670
1671 --    Has_Record_Rep_Clause (Flag65) [implementation base type only]
1672 --       Present in record types. Set if a record representation clause has
1673 --       been given for this record type. Used to prevent more than one such
1674 --       clause for a given record type. Note that this is initially cleared
1675 --       for a derived type, even though the representation is inherited. See
1676 --       also the flag Has_Specified_Layout.
1677
1678 --    Has_Recursive_Call (Flag143)
1679 --       Present in procedures. Set if a direct parameterless recursive call
1680 --       is detected while analyzing the body. Used to activate some error
1681 --       checks for infinite recursion.
1682
1683 --    Has_Size_Clause (Flag29)
1684 --       Present in entities for types and objects. Set if a size clause is
1685 --       present for the entity. Used to prevent multiple Size clauses for a
1686 --       given entity. Note that it is always initially cleared for a derived
1687 --       type, even though the Size for such a type is inherited from a Size
1688 --       clause given for the parent type.
1689
1690 --    Has_Small_Clause (Flag67)
1691 --       Present in ordinary fixed point types (but not subtypes). Indicates
1692 --       that a small clause has been given for the entity. Used to prevent
1693 --       multiple Small clauses for a given entity. Note that it is always
1694 --       initially cleared for a derived type, even though the Small for such
1695 --       a type is inherited from a Small clause given for the parent type.
1696
1697 --    Has_Specified_Layout (Flag100) [implementation base type only]
1698 --       Present in all type entities. Set for a record type or subtype if
1699 --       the record layout has been specified by a record representation
1700 --       clause. Note that this differs from the flag Has_Record_Rep_Clause
1701 --       in that it is inherited by a derived type. Has_Record_Rep_Clause is
1702 --       used to indicate that the type is mentioned explicitly in a record
1703 --       representation clause, and thus is not inherited by a derived type.
1704 --       This flag is always False for non-record types.
1705
1706 --    Has_Specified_Stream_Input (Flag190)
1707 --    Has_Specified_Stream_Output (Flag191)
1708 --    Has_Specified_Stream_Read (Flag192)
1709 --    Has_Specified_Stream_Write (Flag193)
1710 --       Present in all type and subtype entities. Set for a given view if the
1711 --       corresponding stream-oriented attribute has been defined by an
1712 --       attribute definition clause. When such a clause occurs, a TSS is set
1713 --       on the underlying full view; the flags are used to track visibility of
1714 --       the attribute definition clause for partial or incomplete views.
1715 --
1716 --    Has_Static_Discriminants (Flag211)
1717 --       Present in record subtypes constrained by discriminant values. Set if
1718 --       all the discriminant values have static values, meaning that in the
1719 --       case of a variant record, the component list can be trimmed down to
1720 --       include only the components corresponding to these discriminants.
1721 --
1722 --    Has_Storage_Size_Clause (Flag23) [implementation base type only]
1723 --       Present in task types and access types. It is set if a Storage_Size
1724 --       clause is present for the type. Used to prevent multiple clauses for
1725 --       one type. Note that this flag is initially cleared for a derived type
1726 --       even though the Storage_Size for such a type is inherited from a
1727 --       Storage_Size clause given for the parent type. Note that in the case
1728 --       of access types, this flag is present only in the root type, since a
1729 --       storage size clause cannot be given to a derived type.
1730
1731 --    Has_Stream_Size_Clause (Flag184)
1732 --       Present in all entities. It is set for types which have a Stream_Size
1733 --       clause attribute. Used to prevent multiple Stream_Size clauses for a
1734 --       given entity, and also whether it is necessary to check for a stream
1735 --       size clause.
1736
1737 --    Has_Subprogram_Descriptor (Flag93)
1738 --       This flag is set on entities for which zero-cost exception subprogram
1739 --       descriptors can be generated (subprograms and library level package
1740 --       declarations and bodies). It indicates that a subprogram descriptor
1741 --       has been generated, and is used to suppress generation of multiple
1742 --       descriptors (e.g. when instantiating generic bodies).
1743
1744 --    Has_Task (Flag30) [base type only]
1745 --       Present in all type entities. Set on task types themselves, and also
1746 --       (recursively) on any composite type which has a component for which
1747 --       Has_Task is set. The meaning is that an allocator or declaration of
1748 --       such an object must create the required tasks. Note: the flag is not
1749 --       set on access types, even if they designate an object that Has_Task.
1750
1751 --    Has_Thunks (Flag228)
1752 --       Applies to E_Constant entities marked Is_Tag. True for secondary tag
1753 --       referencing a dispatch table whose contents are pointers to thunks.
1754
1755 --    Has_Unchecked_Union (Flag123) [base type only]
1756 --       Present in all type entities. Set on unchecked unions themselves
1757 --       and (recursively) on any composite type which has a component for
1758 --       which Has_Unchecked_Union is set. The meaning is that a comparison
1759 --       operation for the type is not permitted. Note that the flag is not
1760 --       set on access types, even if they designate an object that has
1761 --       the flag Has_Unchecked_Union set.
1762
1763 --    Has_Unknown_Discriminants (Flag72)
1764 --       Present in all entities. Set for types with unknown discriminants.
1765 --       Types can have unknown discriminants either from their declaration or
1766 --       through type derivation. The use of this flag exactly meets the spec
1767 --       in RM 3.7(26). Note that all class-wide types are considered to have
1768 --       unknown discriminants. Note that both Has_Discriminants and
1769 --       Has_Unknown_Discriminants may be true for a type. Class-wide types and
1770 --       their subtypes have unknown discriminants and can have declared ones
1771 --       as well. Private types declared with unknown discriminants may have a
1772 --       full view that has explicit discriminants, and both flag will be set
1773 --       on the partial view, to insure that discriminants are properly
1774 --       inherited in certain contexts.
1775
1776 --    Has_Volatile_Components (Flag87) [implementation base type only]
1777 --       Present in all types and objects. Set only for an array type or array
1778 --       object if a valid pragma Volatile_Components or a valid pragma
1779 --       Atomic_Components applies to the type or object. Note that in the case
1780 --       of an object, this flag is only set on the object if there was an
1781 --       explicit pragma for the object. In other words, the proper test for
1782 --       whether an object has volatile components is to see if either the
1783 --       object or its base type has this flag set. Note that in the case of a
1784 --       type the pragma will be chained to the rep item chain of the first
1785 --       subtype in the usual manner.
1786
1787 --    Has_Xref_Entry (Flag182)
1788 --       Present in all entities. Set if an entity has an entry in the Xref
1789 --       information generated in ali files. This is true for all source
1790 --       entities in the extended main source file. It is also true of entities
1791 --       in other packages that are referenced directly or indirectly from the
1792 --       main source file (indirect reference occurs when the main source file
1793 --       references an entity with a type reference. See package Lib.Xref for
1794 --       further details).
1795
1796 --    Hiding_Loop_Variable (Node8)
1797 --       Present in variables. Set only if a variable of a discrete type is
1798 --       hidden by a loop variable in the same local scope, in which case
1799 --       the Hiding_Loop_Variable field of the hidden variable points to
1800 --       the E_Loop_Parameter entity doing the hiding. Used in processing
1801 --       warning messages if the hidden variable turns out to be unused
1802 --       or is referenced without being set.
1803
1804 --    Homonym (Node4)
1805 --       Present in all entities. Link for list of entities that have the
1806 --       same source name and that are declared in the same or enclosing
1807 --       scopes. Homonyms in the same scope are overloaded. Used for name
1808 --       resolution and for the generation of debugging information.
1809
1810 --    Implementation_Base_Type (synthesized)
1811 --       Applies to all entities. For types, similar to Base_Type, but never
1812 --       returns a private type when applied to a non-private type. Instead in
1813 --       this case, it always returns the Underlying_Type of the base type, so
1814 --       that we still have a concrete type. For entities other than types,
1815 --       returns the entity unchanged.
1816
1817 --    Implemented_By_Entry (Flag232)
1818 --       Applies to functions and procedures. Set if pragma Implemented_By_
1819 --       Entry is applied on the subprogram entity.
1820
1821 --    Interfaces (Elist25)
1822 --       Present in record types and subtypes. List of abstract interfaces
1823 --       implemented by a tagged type that are not already implemented by the
1824 --       ancestors (Ada 2005: AI-251).
1825
1826 --    Interface_Alias (Node25)
1827 --       Present in subprograms that cover a primitive operation of an abstract
1828 --       interface type. Can be set only if the Is_Hidden flag is also set,
1829 --       since such entities are always hidden. Points to its associated
1830 --       interface subprogram. It is used to register the subprogram in
1831 --       secondary dispatch table of the interface (Ada 2005: AI-251).
1832
1833 --    In_Package_Body (Flag48)
1834 --       Present in package entities. Set on the entity that denotes the
1835 --       package (the defining occurrence of the package declaration) while
1836 --       analyzing and expanding the package body. Reset on completion of
1837 --       analysis/expansion.
1838
1839 --    In_Private_Part (Flag45)
1840 --       Present in all entities. Can be set only in package entities and
1841 --       objects. For package entities, this flag is set to indicate that the
1842 --       private part of the package is being analyzed. The flag is reset at
1843 --       the end of the package declaration. For objects it indicates that the
1844 --       declaration of the object occurs in the private part of a package.
1845
1846 --    Inner_Instances (Elist23)
1847 --       Present in generic units. Contains element list of units that are
1848 --       instantiated within the given generic. Used to diagnose circular
1849 --       instantiations.
1850
1851 --    Interface_Name (Node21)
1852 --       Present in exceptions, functions, procedures, variables, constants,
1853 --       and packages. Set to Empty unless an export, import, or interface
1854 --       name pragma has explicitly specified an external name, in which
1855 --       case it references an N_String_Literal node for the specified
1856 --       external name. In the case of exceptions, the field is set by
1857 --       Import_Exception/Export_Exception (which can be used in OpenVMS
1858 --       versions only). Note that if this field is Empty, and Is_Imported
1859 --       or Is_Exported is set, then the default interface name is the name
1860 --       of the entity, cased in a manner that is appropriate to the system
1861 --       in use. Note that Interface_Name is ignored if an address clause
1862 --       is present (since it is meaningless in this case).
1863 --
1864 --       An additional special case usage of this field is in JGNAT for
1865 --       E_Component and E_Discriminant. JGNAT allows these entities to be
1866 --       imported by specifying pragma Import within a component's containing
1867 --       record definition. This supports interfacing to object fields defined
1868 --       within Java classes, and such pragmas are generated by the jvm2ada
1869 --       binding generator tool whenever it processes classes with public
1870 --       object fields. A pragma Import for a component can define the
1871 --       External_Name of the imported Java field (which is generally needed,
1872 --       because Java names are case sensitive).
1873 --
1874 --    In_Use (Flag8)
1875 --       Present in packages and types. Set when analyzing a use clause for
1876 --       the corresponding entity. Reset at end of corresponding declarative
1877 --       part. The flag on a type is also used to determine the visibility of
1878 --       the primitive operators of the type.
1879
1880 --    Is_Abstract_Subprogram (Flag19)
1881 --       Present in all subprograms and entries. Set for abstract subprograms.
1882 --       Always False for enumeration literals and entries. See also
1883 --       Requires_Overriding.
1884
1885 --    Is_Abstract_Type (Flag146)
1886 --       Present in all types. Set for abstract types.
1887
1888 --    Is_Access_Constant (Flag69)
1889 --       Present in access types and subtypes. Indicates that the keyword
1890 --       constant was present in the access type definition.
1891
1892 --    Is_Access_Protected_Subprogram_Type (synthesized)
1893 --       Applies to all types, true for named and anonymous access to
1894 --       protected subprograms.
1895
1896 --    Is_Access_Type (synthesized)
1897 --       Applies to all entities, true for access types and subtypes
1898
1899 --    Is_Ada_2005_Only (Flag185)
1900 --       Present in all entities, true if a valid pragma Ada_05 applies to the
1901 --       entity which specifically names the entity, indicating that the entity
1902 --       is Ada 2005 only. Note that this flag is not set if the entity is part
1903 --       of a unit compiled with the normal no-argument form of pragma Ada_05.
1904
1905 --    Is_Aliased (Flag15)
1906 --       Present in objects whose declarations carry the keyword aliased,
1907 --       and on record components that have the keyword.
1908
1909 --    Is_AST_Entry (Flag132)
1910 --       Present in entry entities. Set if a valid pragma AST_Entry applies
1911 --       to the entry. This flag can only be set in OpenVMS versions of GNAT.
1912 --       Note: we also allow the flag to appear in entry families, but given
1913 --       the current implementation of the pragma AST_Entry, this flag will
1914 --       always be False in entry families.
1915
1916 --    Is_Atomic (Flag85)
1917 --       Present in all type entities, and also in constants, components and
1918 --       variables. Set if a pragma Atomic or Shared applies to the entity.
1919 --       In the case of private and incomplete types, this flag is set in
1920 --       both the partial view and the full view.
1921
1922 --    Is_Array_Type (synthesized)
1923 --       Applies to all entities, true for array types and subtypes
1924
1925 --    Is_Asynchronous (Flag81)
1926 --       Present in all type entities and in procedure entities. Set
1927 --       if a pragma Asynchronous applies to the entity.
1928
1929 --    Is_Bit_Packed_Array (Flag122) [implementation base type only]
1930 --       Present in all entities. This flag is set for a packed array type that
1931 --       is bit packed (i.e. the component size is known by the front end and
1932 --       is in the range 1-7, 9-15, 17-31, or 33-63). Is_Packed is always set
1933 --       if Is_Bit_Packed_Array is set, but it is possible for Is_Packed to be
1934 --       set without Is_Bit_Packed_Array for the case of an array having one or
1935 --       more index types that are enumeration types with non-standard
1936 --       enumeration representations.
1937
1938 --    Is_Boolean_Type (synthesized)
1939 --       Applies to all entities, true for boolean types and subtypes,
1940 --       i.e. Standard.Boolean and all types ultimately derived from it.
1941
1942 --    Is_By_Copy_Type (synthesized)
1943 --       Applies to all type entities. Returns true if the entity is
1944 --       a by copy type (RM 6.2(3)).
1945
1946 --    Is_By_Reference_Type (synthesized)
1947 --       Applies to all type entities. True if the type is required to
1948 --       be passed by reference, as defined in (RM 6.2(4-9)).
1949
1950 --    Is_Called (Flag102)
1951 --       Present in subprograms. Returns true if the subprogram is called
1952 --       in the unit being compiled or in a unit in the context. Used for
1953 --       inlining.
1954
1955 --    Is_Character_Type (Flag63)
1956 --       Present in all entities. Set for character types and subtypes,
1957 --       i.e. enumeration types that have at least one character literal.
1958
1959 --    Is_Child_Unit (Flag73)
1960 --       Present in all entities. Set only for defining entities of program
1961 --       units that are child units (but False for subunits).
1962
1963 --    Is_Class_Wide_Type (synthesized)
1964 --       Applies to all entities, true for class wide types and subtypes
1965
1966 --    Is_Class_Wide_Equivalent_Type (Flag35)
1967 --       Present in record types and subtypes. Set to True, if the type acts
1968 --       as a class-wide equivalent type, i.e. the Equivalent_Type field of
1969 --       some class-wide subtype entity references this record type.
1970
1971 --    Is_Compilation_Unit (Flag149)
1972 --       Present in all entities. Set if the entity is a package or subprogram
1973 --       entity for a compilation unit other than a subunit (since we treat
1974 --       subunits as part of the same compilation operation as the ultimate
1975 --       parent, we do not consider them to be separate units for this flag).
1976
1977 --    Is_Completely_Hidden (Flag103)
1978 --       Present in all entities. This flag can be set only for E_Discriminant
1979 --       entities. This flag can be set only for girder discriminants of
1980 --       untagged types. When set, the entity is a girder discriminant of a
1981 --       derived untagged type which is not directly visible in the derived
1982 --       type because the derived type or one of its ancestors have renamed the
1983 --       discriminants in the root type. Note: there are girder discriminants
1984 --       which are not Completely_Hidden (e.g. discriminants of a root type).
1985
1986 --    Is_Composite_Type (synthesized)
1987 --       Applies to all entities, true for all composite types and
1988 --       subtypes. Either Is_Composite_Type or Is_Elementary_Type (but
1989 --       not both) is true of any type.
1990
1991 --    Is_Concurrent_Record_Type (Flag20)
1992 --       Present in record types and subtypes. Set if the type was created
1993 --       by the expander to represent a task or protected type. For every
1994 --       concurrent type, such as record type is constructed, and task and
1995 --       protected objects are instances of this record type at runtime
1996 --       (Gigi will replace declarations of the concurrent type using the
1997 --       declarations of the corresponding record type). See package Exp_Ch9
1998 --       for further details.
1999
2000 --    Is_Concurrent_Type (synthesized)
2001 --       Applies to all entities, true for task types and subtypes and for
2002 --       protected types and subtypes.
2003
2004 --    Is_Constant_Object (synthesized)
2005 --       Applies to all entities, true for E_Constant, E_Loop_Parameter, and
2006 --       E_In_Parameter entities.
2007
2008 --    Is_Constrained (Flag12)
2009 --       Present in types or subtypes which may have index, discriminant
2010 --       or range constraint (i.e. array types and subtypes, record types
2011 --       and subtypes, string types and subtypes, and all numeric types).
2012 --       Set if the type or subtype is constrained.
2013
2014 --    Is_Constr_Subt_For_U_Nominal (Flag80)
2015 --       Present in all types and subtypes. Set true only for the constructed
2016 --       subtype of an object whose nominal subtype is unconstrained. Note
2017 --       that the constructed subtype itself will be constrained.
2018
2019 --    Is_Constr_Subt_For_UN_Aliased (Flag141)
2020 --       Present in all types and subtypes. This flag can be set only if
2021 --       Is_Constr_Subt_For_U_Nominal is also set. It indicates that in
2022 --       addition the object concerned is aliased. This flag is used by
2023 --       Gigi to determine whether a template must be constructed.
2024
2025 --    Is_Constructor (Flag76)
2026 --       Present in function and procedure entities. Set if a pragma
2027 --       CPP_Constructor applies to the subprogram.
2028
2029 --    Is_Controlled (Flag42) [base type only]
2030 --       Present in all type entities. Indicates that the type is controlled,
2031 --       i.e. is either a descendant of Ada.Finalization.Controlled or of
2032 --       Ada.Finalization.Limited_Controlled.
2033
2034 --    Is_Controlling_Formal (Flag97)
2035 --       Present in all Formal_Kind entities. Marks the controlling parameters
2036 --       of dispatching operations.
2037
2038 --    Is_CPP_Class (Flag74)
2039 --       Present in all type entities, set only for tagged types to which a
2040 --       valid pragma Import (CPP, ...) or pragma CPP_Class has been applied.
2041
2042 --    Is_Decimal_Fixed_Point_Type (synthesized)
2043 --       Applies to all type entities, true for decimal fixed point
2044 --       types and subtypes.
2045
2046 --    Is_Derived_Type (synthesized)
2047 --       Applies to all entities. Determine if given entity is a derived type.
2048 --       Always false if argument is not a type.
2049
2050 --    Is_Descendent_Of_Address (Flag223)
2051 --       Present in all type and subtype entities. Indicates that a type is an
2052 --       address type that is visibly a numeric type. Used for semantic checks
2053 --       on VMS to remove ambiguities in universal integer expressions that may
2054 --       have an address interpretation
2055
2056 --    Is_Discrete_Type (synthesized)
2057 --       Applies to all entities, true for all discrete types and subtypes
2058
2059 --    Is_Discrete__Or_Fixed_Point_Type (synthesized)
2060 --       Applies to all entities, true for all discrete types and subtypes
2061 --       and all fixed-point types and subtypes.
2062
2063 --    Is_Discrim_SO_Function (Flag176)
2064 --       Present in all entities. Set only in E_Function entities that Layout
2065 --       creates to compute discriminant-dependent dynamic size/offset values.
2066
2067 --    Is_Discriminal (synthesized)
2068 --       Applies to all entities, true for renamings of discriminants. Such
2069 --       entities appear as constants or in parameters.
2070
2071 --    Is_Dispatch_Table_Entity (Flag234)
2072 --       Applies to all entities. Set to indicate to the backend that this
2073 --       entity is associated with a dispatch table.
2074
2075 --    Is_Dispatching_Operation (Flag6)
2076 --       Present in all entities. Set true for procedures, functions,
2077 --       generic procedures and generic functions if the corresponding
2078 --       operation is dispatching.
2079
2080 --    Is_Dynamic_Scope (synthesized)
2081 --       Applies to all Entities. Returns True if the entity is a dynamic
2082 --       scope (i.e. a block, subprogram, task_type, entry
2083 --       or extended return statement).
2084
2085 --    Is_Elementary_Type (synthesized)
2086 --       Applies to all entities, true for all elementary types and
2087 --       subtypes. Either Is_Composite_Type or Is_Elementary_Type (but
2088 --       not both) is true of any type.
2089
2090 --    Is_Eliminated (Flag124)
2091 --       Present in type entities, subprogram entities, and object entities.
2092 --       Indicates that the corresponding entity has been eliminated by use
2093 --       of pragma Eliminate. Also used to mark subprogram entities whose
2094 --       declaration and body are within unreachable code that is removed.
2095
2096 --    Is_Enumeration_Type (synthesized)
2097 --       Present in all entities, true for enumeration types and subtypes
2098
2099 --    Is_Entry (synthesized)
2100 --       Applies to all entities, True only for entry and entry family
2101 --       entities and False for all other entity kinds.
2102
2103 --    Is_Entry_Formal (Flag52)
2104 --       Present in all entities. Set only for entry formals (which can
2105 --       only be in, in-out or out parameters). This flag is used to speed
2106 --       up the test for the need to replace references in Exp_Ch2.
2107
2108 --    Is_Exported (Flag99)
2109 --       Present in all entities. Set if the entity is exported. For now we
2110 --       only allow the export of constants, exceptions, functions, procedures
2111 --       and variables, but that may well change later on. Exceptions can only
2112 --       be exported in the OpenVMS and Java VM implementations of GNAT.
2113
2114 --    Is_First_Subtype (Flag70)
2115 --       Present in all entities. True for first subtypes (RM 3.2.1(6)),
2116 --       i.e. the entity in the type declaration that introduced the type.
2117 --       This may be the base type itself (e.g. for record declarations and
2118 --       enumeration type declarations), or it may be the first subtype of
2119 --       an anonymous base type (e.g. for integer type declarations or
2120 --       constrained array declarations).
2121
2122 --    Is_Fixed_Point_Type (synthesized)
2123 --       Applies to all entities, true for decimal and ordinary fixed
2124 --       point types and subtypes
2125
2126 --    Is_Floating_Point_Type (synthesized)
2127 --       Applies to all entities, true for float types and subtypes
2128
2129 --    Is_Formal (synthesized)
2130 --       Applies to all entities, true for IN, IN OUT and OUT parameters
2131
2132 --    Is_Formal_Object (synthesized)
2133 --       Applies to all entities, true for generic IN and IN OUT parameters
2134
2135 --    Is_Formal_Subprogram (Flag111)
2136 --       Present in all entities. Set for generic formal subprograms.
2137
2138 --    Is_For_Access_Subtype (Flag118)
2139 --       Present in E_Private_Subtype and E_Record_Subtype entities. Means the
2140 --       sole purpose of the type is to be designated by an Access_Subtype and
2141 --       hence should not be expanded into components because the type may not
2142 --       have been found or frozen yet.
2143
2144 --    Is_Frozen (Flag4)
2145 --       Present in all type and subtype entities. Set if type or subtype has
2146 --       been frozen.
2147
2148 --    Is_Generic_Actual_Type (Flag94)
2149 --       Present in all type and subtype entities. Set in the subtype
2150 --       declaration that renames the generic formal as a subtype of the
2151 --       actual. Guarantees that the subtype is not static within the instance.
2152
2153 --    Is_Generic_Instance (Flag130)
2154 --       Present in all entities. Set to indicate that the entity is an
2155 --       instance of a generic unit, or a formal package (which is an instance
2156 --       of the template).
2157
2158 --    Is_Generic_Subprogram (synthesized)
2159 --       Applies to all entities. Yields True for a generic subprogram
2160 --       (generic function, generic subprogram), False for all other entities.
2161
2162 --    Is_Generic_Type (Flag13)
2163 --       Present in all types and subtypes. Set for types which are generic
2164 --       formal types. Such types have an Ekind that corresponds to their
2165 --       classification, so the Ekind cannot be used to identify generic types.
2166
2167 --    Is_Generic_Unit (synthesized)
2168 --       Applies to all entities. Yields True for a generic unit (generic
2169 --       package, generic function, generic procedure), and False for all
2170 --       other entities.
2171
2172 --    Is_Hidden (Flag57)
2173 --       Present in all entities. Set true for all entities declared in the
2174 --       private part or body of a package. Also marks generic formals of a
2175 --       formal package declared without a box. For library level entities,
2176 --       this flag is set if the entity is not publicly visible.
2177
2178 --    Is_Hidden_Open_Scope (Flag171)
2179 --       Present in all entities. Set true for a scope that contains the
2180 --       instantiation of a child unit, and whose entities are not visible
2181 --       during analysis of the instance.
2182
2183 --    Is_Immediately_Visible (Flag7)
2184 --       Present in all entities. Set if entity is immediately visible, i.e.
2185 --       is defined in some currently open scope (RM 8.3(4)).
2186
2187 --    Is_Imported (Flag24)
2188 --       Present in all entities. Set if the entity is imported. For now we
2189 --       only allow the import of exceptions, functions, procedures, packages.
2190 --       and variables. Exceptions can only be imported in the OpenVMS and
2191 --       Java VM implementations of GNAT. Packages and types can only be
2192 --       imported in the Java VM implementation.
2193
2194 --    Is_Incomplete_Or_Private_Type (synthesized)
2195 --       Applies to all entities, true for private and incomplete types
2196
2197 --    Is_Incomplete_Type (synthesized)
2198 --       Applies to all entities, true for incomplete types and subtypes
2199
2200 --    Is_Indefinite_Subtype (synthesized)
2201 --       Applies to all entities for types and subtypes. Determines if given
2202 --       entity is an unconstrained array type or subtype, a discriminated
2203 --       record type or subtype with no initial discriminant values or a
2204 --       class wide type or subtype.
2205
2206 --    Is_Inlined (Flag11)
2207 --       Present in all entities. Set for functions and procedures which are
2208 --       to be inlined. For subprograms created during expansion, this flag
2209 --       may be set directly by the expander to request inlining. Also set
2210 --       for packages that contain inlined subprograms, whose bodies must be
2211 --       be compiled. Is_Inlined is also set on generic subprograms and is
2212 --       inherited by their instances. It is also set on the body entities
2213 --       of inlined subprograms. See also Has_Pragma_Inline.
2214
2215 --    Is_Instantiated (Flag126)
2216 --       Present in generic packages and generic subprograms. Set if the unit
2217 --       is instantiated from somewhere in the extended main source unit. This
2218 --       flag is used to control warnings about the unit being uninstantiated.
2219 --       Also set in a package that is used as an actual for a generic package
2220 --       formal in an instantiation. Also set on a parent instance, in the
2221 --       instantiation of a child, which is implicitly declared in the parent.
2222
2223 --    Is_Integer_Type (synthesized)
2224 --       Applies to all entities, true for integer types and subtypes
2225
2226 --    Is_Interface (Flag186)
2227 --       Present in record types and subtypes. Set to indicate that the current
2228 --       entity corresponds with an abstract interface. Because abstract
2229 --       interfaces are conceptually a special kind of abstract tagged types
2230 --       we represent them by means of tagged record types and subtypes
2231 --       marked with this attribute. This allows us to reuse most of the
2232 --       compiler support for abstract tagged types to implement interfaces
2233 --       (Ada 2005: AI-251).
2234
2235 --    Is_Internal (Flag17)
2236 --       Present in all entities. Set to indicate an entity created during
2237 --       semantic processing (e.g. an implicit type, or a temporary). The
2238 --       current uses of this flag are:
2239 --
2240 --         1) Internal entities (such as temporaries generated for the result
2241 --         of an inlined function call or dummy variables generated for the
2242 --         debugger). Set to indicate that they need not be initialized, even
2243 --         when scalars are initialized or normalized;
2244 --
2245 --         2) Predefined primitives of tagged types. Set to mark that they
2246 --         have specific properties: first they are primitives even if they
2247 --         are not defined in the type scope (the freezing point is not
2248 --         necessarily in the same scope), and second the predefined equality
2249 --         can be overridden by a user-defined equality, no body will be
2250 --         generated in this case.
2251 --
2252 --         3) Object declarations generated by the expander that are implicitly
2253 --         imported or exported so that they can be marked in Sprint output.
2254 --
2255 --         4) Internal entities in the list of primitives of tagged types that
2256 --         are used to handle secondary dispatch tables. These entities have
2257 --         also the attribute Interface_Alias.
2258 --
2259 --    Is_Interrupt_Handler (Flag89)
2260 --       Present in procedures. Set if a pragma Interrupt_Handler applies
2261 --       to the procedure. The procedure must be parameterless, and on all
2262 --       targets except AAMP it must be a protected procedure.
2263
2264 --    Is_Intrinsic_Subprogram (Flag64)
2265 --       Present in functions and procedures. It is set if a valid pragma
2266 --       Interface or Import is present for this subprogram specifying pragma
2267 --       Intrinsic. Valid means that the name and profile of the subprogram
2268 --       match the requirements of one of the recognized intrinsic subprograms
2269 --       (see package Sem_Intr for details). Note: the value of Convention for
2270 --       such an entity will be set to Convention_Intrinsic, but it is the
2271 --       setting of Is_Intrinsic_Subprogram, NOT simply having convention set
2272 --       to intrinsic, which causes intrinsic code to be generated.
2273
2274 --    Is_Itype (Flag91)
2275 --       Present in all entities. Set to indicate that a type is an Itype,
2276 --       which means that the declaration for the type does not appear
2277 --       explicitly in the tree. Instead gigi will elaborate the type when it
2278 --       is first used. Has_Delayed_Freeze can be set for Itypes, and the
2279 --       meaning is that the first use (the one which causes the type to be
2280 --       defined) will be the freeze node. Note that an important restriction
2281 --       on Itypes is that the first use of such a type (the one that causes it
2282 --       to be defined) must be in the same scope as the type.
2283
2284 --    Is_Known_Non_Null (Flag37)
2285 --       Present in all entities. Relevant (and can be set True) only for
2286 --       objects of an access type. It is set if the object is currently
2287 --       known to have a non-null value (meaning that no access checks
2288 --       are needed). The indication can for example come from assignment
2289 --       of an access parameter or an allocator whose value is known non-null.
2290 --
2291 --       Note: this flag is set according to the sequential flow of the
2292 --       program, watching the current value of the variable. However,
2293 --       this processing can miss cases of changing the value of an aliased
2294 --       or constant object, so even if this flag is set, it should not
2295 --       be believed if the variable is aliased or volatile. It would
2296 --       be a little neater to avoid the flag being set in the first
2297 --       place in such cases, but that's trickier, and there is only
2298 --       one place that tests the value anyway.
2299 --
2300 --       The flag is dynamically set and reset as semantic analysis and
2301 --       expansion proceeds. Its value is meaningless once the tree is
2302 --       fully constructed, since it simply indicates the last state.
2303 --       Thus this flag has no meaning to the back end.
2304
2305 --    Is_Known_Null (Flag204)
2306 --       Present in all entities. Relevant (and can be set True) only for
2307 --       objects of an access type. It is set if the object is currently known
2308 --       to have a null value (meaning that a dereference will surely raise
2309 --       constraint error exception). The indication can come from an
2310 --       assignment or object declaration.
2311 --
2312 --       The comments above about sequential flow and aliased and volatile for
2313 --       the Is_Known_Non_Null flag apply equally to the Is_Known_Null flag.
2314
2315 --    Is_Known_Valid (Flag170)
2316 --       Present in all entities. Relevant for types (and subtype) and
2317 --       for objects (and enumeration literals) of a discrete type.
2318 --
2319 --       The purpose of this flag is to implement the requirement stated
2320 --       in (RM 13.9.1(9-11)) which require that the use of possibly invalid
2321 --       values may not cause programs to become erroneous. See the function
2322 --       Exp_Util.Expr_Known_Valid for further details. Note that the setting
2323 --       is conservative, in the sense that if the flag is set, it must be
2324 --       right. If the flag is not set, nothing is known about the validity.
2325 --
2326 --       For enumeration literals, the flag is always set, since clearly
2327 --       an enumeration literal represents a valid value. Range checks
2328 --       where necessary will ensure that this valid value is appropriate.
2329 --
2330 --       For objects, the flag indicates the state of knowledge about the
2331 --       current value of the object. This may be modified during expansion,
2332 --       and thus the final value is not relevant to gigi.
2333 --
2334 --       For types and subtypes, the flag is set if all possible bit patterns
2335 --       of length Object_Size (i.e. Esize of the type) represent valid values
2336 --       of the type. In general for such tytpes, all values are valid, the
2337 --       only exception being the case where an object of the type has an
2338 --       explicit size that is greater than Object_Size.
2339 --
2340 --       For non-discrete objects, the setting of the Is_Known_Valid flag is
2341 --       not defined, and is not relevant, since the considerations of the
2342 --       requirement in (RM 13.9.1(9-11)) do not apply.
2343 --
2344 --       The flag is dynamically set and reset as semantic analysis and
2345 --       expansion proceeds. Its value is meaningless once the tree is
2346 --       fully constructed, since it simply indicates the last state.
2347 --       Thus this flag has no meaning to the back end.
2348
2349 --    Is_Limited_Composite (Flag106)
2350 --       Present in all entities. Set for composite types that have a
2351 --       limited component. Used to enforce the rule that operations on
2352 --       the composite type that depend on the full view of the component
2353 --       do not become visible until the immediate scope of the composite
2354 --       type itself (RM 7.3.1 (5)).
2355
2356 --    Is_Limited_Interface (Flag197)
2357 --       Present in record types and subtypes. True for interface types, if
2358 --       interface is declared limited, task, protected, or synchronized, or
2359 --       is derived from a limited interface.
2360
2361 --    Is_Limited_Record (Flag25)
2362 --       Present in all entities. Set to true for record (sub)types if the
2363 --       record is declared to be limited. Note that this flag is not set
2364 --       simply because some components of the record are limited.
2365
2366 --    Is_Limited_Type (synthesized)
2367 --       Applies to all entities. True if entity is a limited type (limited
2368 --       private type, limited interface type, task type, protected type,
2369 --       composite containing a limited component, or a subtype of any of
2370 --       these types).
2371
2372 --    Is_Local_Anonymous_Access (Flag194)
2373 --       Present in access types. Set for an anonymous access type to indicate
2374 --       that the type is created for a record component with an access
2375 --       definition, an array component, or a stand-alone object. Such
2376 --       anonymous types have an accessibility level equal to that of the
2377 --       declaration in which they appear, unlike the anonymous access types
2378 --       that are created for access parameters and access discriminants.
2379
2380 --    Is_Machine_Code_Subprogram (Flag137)
2381 --       Present in subprogram entities. Set to indicate that the subprogram
2382 --       is a machine code subprogram (i.e. its body includes at least one
2383 --       code statement). Also indicates that all necessary semantic checks
2384 --       as required by RM 13.8(3) have been performed.
2385
2386 --    Is_Modular_Integer_Type (synthesized)
2387 --       Applies to all entities. True if entity is a modular integer type
2388
2389 --    Is_Non_Static_Subtype (Flag109)
2390 --       Present in all type and subtype entities. It is set in some (but not
2391 --       all) cases in which a subtype is known to be non-static. Before this
2392 --       flag was added, the computation of whether a subtype was static was
2393 --       entirely synthesized, by looking at the bounds, and the immediate
2394 --       subtype parent. However, this method does not work for some Itypes
2395 --       that have no parent set (and the only way to find the immediate
2396 --       subtype parent is to go through the tree). For now, this flay is set
2397 --       conservatively, i.e. if it is set then for sure the subtype is non-
2398 --       static, but if it is not set, then the type may or may not be static.
2399 --       Thus the test for a static subtype is that this flag is clear AND that
2400 --       the bounds are static AND that the parent subtype (if available to be
2401 --       tested) is static. Eventually we should make sure this flag is always
2402 --       set right, at which point, these comments can be removed, and the
2403 --       tests for static subtypes greatly simplified.
2404
2405 --    Is_Null_Init_Proc (Flag178)
2406 --       Present in procedure entities. Set for generated init proc procedures
2407 --       (used to initialize composite types), if the code for the procedure
2408 --       is null (i.e. is a return and nothing else). Such null initialization
2409 --       procedures are generated in case some client is compiled using the
2410 --       Initialize_Scalars pragma, generating a call to this null procedure,
2411 --       but there is no need to call such procedures within a compilation
2412 --       unit, and this flag is used to suppress such calls.
2413
2414 --    Is_Numeric_Type (synthesized)
2415 --       Applies to all entities, true for all numeric types and subtypes
2416 --       (integer, fixed, float).
2417
2418 --    Is_Object (synthesized)
2419 --       Applies to all entities, true for entities representing objects,
2420 --       including generic formal parameters.
2421
2422 --    Is_Obsolescent (Flag153)
2423 --       Present in all entities. Set for any entity for which a valid pragma
2424 --       Obsolescent applies.
2425
2426 --    Is_Only_Out_Parameter (Flag226)
2427 --       Present in formal parameter entities. Set if this parameter is the
2428 --       only OUT parameter for this formal part. If there is more than one
2429 --       out parameter, or if there is some other IN OUT parameter then this
2430 --       flag is not set in any of them. Used in generation of warnings.
2431
2432 --    Is_Optional_Parameter (Flag134)
2433 --       Present in parameter entities. Set if the parameter is specified as
2434 --       optional by use of a First_Optional_Parameter argument to one of the
2435 --       extended Import pragmas. Can only be set for OpenVMS versions of GNAT.
2436
2437 --    Is_Ordinary_Fixed_Point_Type (synthesized)
2438 --       Applies to all entities, true for ordinary fixed point types and
2439 --       subtypes.
2440
2441 --    Is_Overriding_Operation (Flag39)
2442 --       Present in subprograms. Set if the subprogram is a primitive
2443 --       operation of a derived type, that overrides an inherited operation.
2444
2445 --    Is_Package_Or_Generic_Package (synthesized)
2446 --       Applies to all entities. True for packages and generic packages.
2447 --       False for all other entities.
2448
2449 --    Is_Package_Body_Entity (Flag160)
2450 --       Present in all entities. Set for entities defined at the top level
2451 --       of a package body. Used to control externally generated names.
2452
2453 --    Is_Packed (Flag51) [implementation base type only]
2454 --       Present in all type entities. This flag is set only for record and
2455 --       array types which have a packed representation. There are three
2456 --       cases which cause packing:
2457 --
2458 --         1. Explicit use of pragma Pack for an array of package components
2459 --         2. Explicit use of pragma Pack to pack a record
2460 --         4. Setting Component_Size of an array to a bit-packable value
2461 --         3. Indexing an array with a non-standard enumeration type.
2462 --
2463 --       For records, Is_Packed is always set if Has_Pack_Pragma is set,
2464 --       and can also be set on its own in a derived type which inherited
2465 --       its packed status.
2466 --
2467 --       For arrays, Is_Packed is set if an array is bit packed (i.e. the
2468 --       component size is known at compile time and is 1-7, 9-15 or 17-31),
2469 --       or if the array has one or more index types that are enumeration
2470 --       types with non-standard representations (in GNAT, we store such
2471 --       arrays compactly, using the Pos of the enumeration type value).
2472 --
2473 --       As for the case of records, Is_Packed can be set on its own for a
2474 --       derived type, with the same dual before/after freeze meaning.
2475 --       Is_Packed can also be set as the result of an explicit component
2476 --       size clause that specifies an appropriate component size.
2477 --
2478 --       In the bit packed array case, Is_Bit_Packed_Array will be set in
2479 --       the bit packed case once the array type is frozen.
2480 --
2481 --       Before an array type is frozen, Is_Packed will always be set if
2482 --       Has_Pack_Pragma is set. Before the freeze point, it is not possible
2483 --       to know the component size, since the component type is not frozen
2484 --       until the array type is frozen. Thus Is_Packed for an array type
2485 --       before it is frozen means that packed is required. Then if it turns
2486 --       out that the component size is not suitable for bit packing, the
2487 --       Is_Packed flag gets turned off.
2488
2489 --    Is_Packed_Array_Type (Flag138)
2490 --       Present in all entities. This flag is set on the entity for the type
2491 --       used to implement a packed array (either a modular type, or a subtype
2492 --       of Packed_Bytes{1,2,4} as appropriate). The flag is set if and only
2493 --       if the type appears in the Packed_Array_Type field of some other type
2494 --       entity. It is used by Gigi to activate the special processing for such
2495 --       types (unchecked conversions that would not otherwise be allowed are
2496 --       allowed for such types). If the Is_Packed_Array_Type flag is set in
2497 --       an entity, then the Original_Array_Type field of this entity points
2498 --       to the original array type for which this is the packed array type.
2499
2500 --    Is_Potentially_Use_Visible (Flag9)
2501 --       Present in all entities. Set if entity is potentially use visible,
2502 --       i.e. it is defined in a package that appears in a currently active
2503 --       use clause (RM 8.4(8)). Note that potentially use visible entities
2504 --       are not necessarily use visible (RM 8.4(9-11)).
2505
2506 --    Is_Preelaborated (Flag59)
2507 --       Present in all entities, set in E_Package and E_Generic_Package
2508 --       entities to which a pragma Preelaborate is applied, and also in
2509 --       all entities within such packages. Note that the fact that this
2510 --       flag is set does not necesarily mean that no elaboration code is
2511 --       generated for the package.
2512
2513 --    Is_Primitive (Flag218)
2514 --       Present in overloadable entities and in generic subprograms. Set to
2515 --       indicate that this is a primitive operation of some type, which may
2516 --       be a tagged type or a non-tagged type. Used to verify overriding
2517 --       indicators in bodies.
2518
2519 --    Is_Primitive_Wrapper (Flag195)
2520 --       Present in functions and procedures created by the expander to serve
2521 --       as an indirection mechanism to overriding primitives of concurrent
2522 --       types, entries and protected procedures.
2523
2524 --    Is_Prival (synthesized)
2525 --       Applies to all entities, true for renamings of private protected
2526 --       components. Such entities appear as constants or variables.
2527
2528 --    Is_Private_Composite (Flag107)
2529 --       Present in composite types that have a private component. Used to
2530 --       enforce the rule that operations on the composite type that depend
2531 --       on the full view of the component, do not become visible until the
2532 --       immediate scope of the composite type itself (7.3.1 (5)). Both this
2533 --       flag and Is_Limited_Composite are needed.
2534
2535 --    Is_Private_Descendant (Flag53)
2536 --       Present in entities that can represent library units (packages,
2537 --       functions, procedures). Set if the library unit is itself a private
2538 --       child unit, or if it is the descendent of a private child unit.
2539
2540 --    Is_Private_Primitive (Flag245)
2541 --       Present in subprograms. Set if the first parameter of the subprogram
2542 --       is of concurrent tagged type with a private view.
2543
2544 --    Is_Private_Type (synthesized)
2545 --       Applies to all entities, true for private types and subtypes,
2546 --       as well as for record with private types as subtypes
2547
2548 --    Is_Protected_Component (synthesized)
2549 --       Applicable to all entities, true if the entity denotes a private
2550 --       component of a protected type.
2551
2552 --    Is_Protected_Interface (Flag198)
2553 --       Present in types that are interfaces. True if interface is declared
2554 --       protected, or is derived from protected interfaces.
2555
2556 --    Is_Protected_Type (synthesized)
2557 --       Applies to all entities, true for protected types and subtypes
2558
2559 --    Is_Public (Flag10)
2560 --       Present in all entities. Set to indicate that an entity defined in
2561 --       one compilation unit can be referenced from other compilation units.
2562 --       If this reference causes a reference in the generated variable, for
2563 --       example in the case of a variable name, then Gigi will generate an
2564 --       appropriate external name for use by the linker.
2565
2566 --    Is_Protected_Record_Type (synthesized)
2567 --       Applies to all entities, true if Is_Concurrent_Record_Type
2568 --       Corresponding_Concurrent_Type is a protected type.
2569
2570 --    Is_Pure (Flag44)
2571 --       Present in all entities. Set in all entities of a unit to which a
2572 --       pragma Pure is applied, and also set for the entity of the unit
2573 --       itself. In addition, this flag may be set for any other functions
2574 --       or procedures that are known to be side effect free, so in the case
2575 --       of subprograms, the Is_Pure flag may be used by the optimizer to
2576 --       imply that it can assume freedom from side effects (other than those
2577 --       resulting from assignment to out parameters, or to objects designated
2578 --       by access parameters).
2579
2580 --    Is_Pure_Unit_Access_Type (Flag189)
2581 --       Present in access type and subtype entities. Set if the type or
2582 --       subtype appears in a pure unit. Used to give an error message at
2583 --       freeze time if the access type has a storage pool.
2584
2585 --    Is_RACW_Stub_Type (Flag244)
2586 --       Present in all types, true for the stub types generated for remote
2587 --       access-to-class-wide types.
2588
2589 --    Is_Raised (Flag224)
2590 --       Present in exception entities. Set if the entity is referenced by a
2591 --       a raise statement.
2592
2593 --    Is_Real_Type (synthesized)
2594 --       Applies to all entities, true for real types and subtypes
2595
2596 --    Is_Record_Type (synthesized)
2597 --       Applies to all entities, true for record types and subtypes,
2598 --       includes class-wide types and subtypes (which are also records)
2599
2600 --    Is_Remote_Call_Interface (Flag62)
2601 --       Present in all entities. Set in E_Package and E_Generic_Package
2602 --       entities to which a pragma Remote_Call_Interface is applied, and
2603 --       also on entities declared in the visible part of such a package.
2604
2605 --    Is_Remote_Types (Flag61)
2606 --       Present in all entities. Set in E_Package and E_Generic_Package
2607 --       entities to which a pragma Remote_Types is applied, and also on
2608 --       entities declared in the visible part of the spec of such a package.
2609
2610 --    Is_Renaming_Of_Object (Flag112)
2611 --       Present in all entities, set only for a variable or constant for
2612 --       which the Renamed_Object field is non-empty and for which the
2613 --       renaming is handled by the front end, by macro substitution of
2614 --       a copy of the (evaluated) name tree whereever the variable is used.
2615
2616 --    Is_Inherently_Limited_Type (synthesized)
2617 --       Applies to all type entities. True if the type is "inherently"
2618 --       limited (i.e. cannot become nonlimited). From the Ada 2005
2619 --       RM-7.5(8.1/2), "a type with a part that is of a task, protected, or
2620 --       explicitly limited record type". These are the types that are defined
2621 --       as return-by-reference types in Ada 95 (see RM95-6.5(11-16)). In Ada
2622 --       2005, these are the types that require build-in-place for function
2623 --       calls. Note that build-in-place is allowed for other types, too.
2624
2625 --    Is_Return_Object (Flag209)
2626 --       Present in all object entities. True if the object is the return
2627 --       object of an extended_return_statement; False otherwise.
2628
2629 --    Is_Scalar_Type (synthesized)
2630 --       Applies to all entities, true for scalar types and subtypes
2631
2632 --    Is_Shared_Passive (Flag60)
2633 --       Present in all entities. Set in E_Package and E_Generic_Package
2634 --       entities to which a pragma Shared_Passive is applied, and also in
2635 --       all entities within such packages.
2636
2637 --    Is_Standard_Character_Type (synthesized)
2638 --       Applies to all entities, true for types and subtypes whose root type
2639 --       is one of the standard character types (Character, Wide_Character,
2640 --       Wide_Wide_Character).
2641
2642 --    Is_Statically_Allocated (Flag28)
2643 --       Present in all entities. This can only be set True for exception,
2644 --       variable, constant, and type/subtype entities. If the flag is set,
2645 --       then the variable or constant must be allocated statically rather
2646 --       than on the local stack frame. For exceptions, the meaning is that
2647 --       the exception data should be allocated statically (and indeed this
2648 --       flag is always set for exceptions, since exceptions do not have
2649 --       local scope). For a type, the meaning is that the type must be
2650 --       elaborated at the global level rather than locally. No type marked
2651 --       with this flag may depend on a local variable, or on any other type
2652 --       which does not also have this flag set to True. For a variable or
2653 --       or constant, if the flag is set, then the type of the object must
2654 --       either be declared at the library level, or it must also have the
2655 --       flag set (since to allocate the object statically, its type must
2656 --       also be elaborated globally).
2657
2658 --    Is_String_Type (synthesized)
2659 --       Applies to all type entities. Determines if the given type is a
2660 --       string type, i.e. it is directly a string type or string subtype,
2661 --       or a string slice type, or an array type with one dimension and a
2662 --       component type that is a character type.
2663
2664 --    Is_Subprogram (synthesized)
2665 --       Applies to all entities, true for function, procedure and operator
2666 --       entities.
2667
2668 --    Is_Synchronized_Interface (Flag199)
2669 --       Present in types that are interfaces. True if interface is declared
2670 --       synchronized, task, or protected, or is derived from a synchronized
2671 --       interface.
2672
2673 --    Is_Tag (Flag78)
2674 --       Present in E_Component and E_Constant entities. For regular tagged
2675 --       type this flag is set on the tag component (whose name is Name_uTag).
2676 --       For CPP_Class tagged types, this flag marks the pointer to the main
2677 --       vtable (i.e. the one to be extended by derivation).
2678
2679 --    Is_Tagged_Type (Flag55)
2680 --       Present in all entities. Set for an entity for a tagged type.
2681
2682 --    Is_Task_Interface (Flag200)
2683 --       Present in types that are interfaces. True if interface is declared as
2684 --       a task interface, or if it is derived from task interfaces.
2685
2686 --    Is_Task_Record_Type (synthesized)
2687 --       Applies to all entities. True if Is_Concurrent_Record_Type
2688 --       Corresponding_Concurrent_Type is a task type.
2689
2690 --    Is_Task_Type (synthesized)
2691 --       Applies to all entities. True for task types and subtypes
2692
2693 --    Is_Thunk (Flag225)
2694 --       Present in all entities for subprograms (functions, procedures, and
2695 --       operators). True for subprograms that are thunks, that is small
2696 --       subprograms built by the expander for tagged types that cover
2697 --       interface types. At run-time thunks displace the pointer to the object
2698 --       (pointer named "this" in the C++ terminology) from a secondary
2699 --       dispatch table to the primary dispatch table associated with a given
2700 --       tagged type. Set by Expand_Interface Thunk and used by Expand_Call to
2701 --       handle extra actuals associated with accessibility level.
2702
2703 --    Is_Trivial_Subprogram (Flag235)
2704 --       Present in all entities. Set in subprograms where either the body
2705 --       consists of a single null statement, or the first or only statement
2706 --       of the body raises an exception. This is used for suppressing certain
2707 --       warnings, see Sem_Ch6.Analyze_Subprogram_Body discussion for details.
2708
2709 --    Is_True_Constant (Flag163)
2710 --       Present in all entities for constants and variables. Set in constants
2711 --       and variables which have an initial value specified but which are
2712 --       never assigned, partially or in the whole. For variables, it means
2713 --       that the variable was initialized but never modified, and hence can be
2714 --       treated as a constant by the code generator. For a constant, it means
2715 --       that the constant was not modified by generated code (e.g. to set a
2716 --       discriminant in an init proc). Assignments by user or generated code
2717 --       will reset this flag.
2718 --
2719 --       Note: there is one situation in which the back end does not permit
2720 --       this flag to be set, even if no assignments are generated. This is
2721 --       the case of an object of a record or array type which is initialized
2722 --       with an aggregate, and is itself used as the expression initializing
2723 --       an atomic object, or the right hand side of an assignment to an atomic
2724 --       object. In this case the object must not have Is_True_Constant set,
2725 --       even though no assignments are generated (the reason for this is that
2726 --       the back end must not optimize the object away, because that would
2727 --       violate the restriction on aggregates in these positions).
2728
2729 --    Is_Type (synthesized)
2730 --       Applies to all entities, true for a type entity
2731
2732 --    Is_Unchecked_Union (Flag117) [implementation base type only]
2733 --       Present in all entities. Set only in record types to which the
2734 --       pragma Unchecked_Union has been validly applied.
2735
2736 --    Is_Unsigned_Type (Flag144)
2737 --       Present in all types, but can be set only for discrete and fixed-point
2738 --       type and subtype entities. This flag is only valid if the entity is
2739 --       frozen. If set it indicates that the representation is known to be
2740 --       unsigned (i.e. that no negative values appear in the range). This is
2741 --       normally just a reflection of the lower bound of the subtype or base
2742 --       type, but there is one case in which the setting is non-obvious,
2743 --       namely the case of an unsigned subtype of a signed type from which
2744 --       a further subtype is obtained using variable bounds. This further
2745 --       subtype is still unsigned, but this cannot be determined by looking
2746 --       at its bounds or the bounds of the corresponding base type.
2747
2748 --    Is_Valued_Procedure (Flag127)
2749 --       Present in procedure entities. Set if an Import_Valued_Procedure
2750 --       or Export_Valued_Procedure pragma applies to the procedure entity.
2751
2752 --    Is_Visible_Child_Unit (Flag116)
2753 --       Present in compilation units that are child units. Once compiled,
2754 --       child units remain chained to the entities in the parent unit, and
2755 --       a separate flag must be used to indicate whether the names are
2756 --       visible by selected notation, or not.
2757
2758 --    Is_Visible_Formal (Flag206)
2759 --       Present in all entities. Set for instances of the formals of a formal
2760 --       package. Indicates that the entity must be made visible in the body
2761 --       of the instance, to reproduce the visibility of the generic. This
2762 --       simplifies visibility settings in instance bodies.
2763 --       ??? confusion in above comments between being present and being set
2764
2765 --    Is_VMS_Exception (Flag133)
2766 --       Present in all entities. Set only for exception entities where the
2767 --       exception was specified in an Import_Exception or Export_Exception
2768 --       pragma with the VMS option for Form. See description of these pragmas
2769 --       for details. This flag can only be set in OpenVMS versions of GNAT.
2770
2771 --    Is_Volatile (Flag16)
2772 --       Present in all type entities, and also in constants, components and
2773 --       variables. Set if a pragma Volatile applies to the entity. Also set
2774 --       if pragma Shared or pragma Atomic applies to entity. In the case of
2775 --       private or incomplete types, this flag is set in both the private
2776 --       and full view. The flag is not set reliably on private subtypes,
2777 --       and is always retrieved from the base type (but this is not a base-
2778 --       type-only attribute because it applies to other entities). Note that
2779 --       the back end should use Treat_As_Volatile, rather than Is_Volatile
2780 --       to indicate code generation requirements for volatile variables.
2781 --       Similarly, any front end test which is concerned with suppressing
2782 --       optimizations on volatile objects should test Treat_As_Volatile
2783 --       rather than testing this flag.
2784
2785 --    Is_Wrapper_Package (synthesized)
2786 --       Present in package entities. Indicates that the package has been
2787 --       created as a wrapper for a subprogram instantiation.
2788
2789 --    Itype_Printed (Flag202)
2790 --       Present in all type and subtype entities. Set in Itypes if the Itype
2791 --       has been printed by Sprint. This is used to avoid printing an Itype
2792 --       more than once.
2793
2794 --    Kill_Elaboration_Checks (Flag32)
2795 --       Present in all entities. Set by the expander to kill elaboration
2796 --       checks which are known not to be needed. Equivalent in effect to
2797 --       the use of pragma Suppress (Elaboration_Checks) for that entity
2798 --       except that the effect is permanent and cannot be undone by a
2799 --       subsequent pragma Unsuppress.
2800
2801 --    Kill_Range_Checks (Flag33)
2802 --       Present in all entities. Equivalent in effect to the use of pragma
2803 --       Suppress (Range_Checks) for that entity except that the result is
2804 --       permanent and cannot be undone by a subsequent pragma Unsuppress.
2805 --       This is currently only used in one odd situation in Sem_Ch3 for
2806 --       record types, and it would be good to get rid of it???
2807
2808 --    Kill_Tag_Checks (Flag34)
2809 --       Present in all entities. Set by the expander to kill elaboration
2810 --       checks which are known not to be needed. Equivalent in effect to
2811 --       the use of pragma Suppress (Tag_Checks) for that entity except
2812 --       that the result is permanent and cannot be undone by a subsequent
2813 --       pragma Unsuppress.
2814
2815 --    Known_To_Have_Preelab_Init (Flag207)
2816 --       Present in all type and subtype entities. If set, then the type is
2817 --       known to have preelaborable initialization. In the case of a partial
2818 --       view of a private type, it is only possible for this to be set if a
2819 --       pragma Preelaborable_Initialization is given for the type. For other
2820 --       types, it is never set if the type does not have preelaborable
2821 --       initialization, it may or may not be set if the type does have
2822 --       preelaborable initialization.
2823
2824 --    Last_Assignment (Node26)
2825 --       Present in entities for variables, and OUT or IN OUT formals. Set for
2826 --       a local variable or formal to point to the left side of an assignment
2827 --       statement assigning a value to the variable. Cleared if the value of
2828 --       the entity is referenced. Used to warn about dubious assignment
2829 --       statements whose value is not used.
2830
2831 --    Last_Entity (Node20)
2832 --       Present in all entities which act as scopes to which a list of
2833 --       associated entities is attached (blocks, class subtypes and types,
2834 --       entries, functions, loops, packages, procedures, protected objects,
2835 --       record types and subtypes, private types, task types and subtypes).
2836 --       Points to the last entry in the list of associated entities chained
2837 --       through the Next_Entity field. Empty if no entities are chained.
2838
2839 --    Limited_View (Node23)
2840 --       Present in non-generic package entities that are not instances. Bona
2841 --       fide package with the limited-view list through the first_entity and
2842 --       first_private attributes. The elements of this list are the shadow
2843 --       entities created for the types and local packages that are declared
2844 --       in a package appearing in a limited_with clause (Ada 2005: AI-50217)
2845
2846 --    Lit_Indexes (Node15)
2847 --       Present in enumeration types and subtypes. Non-empty only for the
2848 --       case of an enumeration root type, where it contains the entity for
2849 --       the generated indexes entity. See unit Exp_Imgv for full details of
2850 --       the nature and use of this entity for implementing the Image and
2851 --       Value attributes for the enumeration type in question.
2852 --
2853 --    Lit_Strings (Node16)
2854 --       Present in enumeration types and subtypes. Non-empty only for the
2855 --       case of an enumeration root type, where it contains the entity for
2856 --       the literals string entity. See unit Exp_Imgv for full details of
2857 --       the nature and use of this entity for implementing the Image and
2858 --       Value attributes for the enumeration type in question.
2859
2860 --    Low_Bound_Known (Flag205)
2861 --       Present in all entities. Currently this can only be set True for
2862 --       formal parameter entries of a standard unconstrained one-dimensional
2863 --       array or string type, where the lower bound of the index type is zero
2864 --       or one. Indicates that the low bound is known to be equal to the lower
2865 --       bound of the index type (e.g. 1 for String, since the index type is
2866 --       Positive). This flag can only be set by a pragma Assert which
2867 --       specifies this. If this flag is set, warnings about assuming the index
2868 --       low bound to be zero or one are suppressed.
2869
2870 --    Machine_Radix_10 (Flag84)
2871 --       Present in decimal types and subtypes, set if the Machine_Radix
2872 --       is 10, as the result of the specification of a machine radix
2873 --       representation clause. Note that it is possible for this flag
2874 --       to be set without having Has_Machine_Radix_Clause True. This
2875 --       happens when a type is derived from a type with a clause present.
2876
2877 --    Master_Id (Node17)
2878 --       Present in access types and subtypes. Empty unless Has_Task is
2879 --       set for the designated type, in which case it points to the entity
2880 --       for the Master_Id for the access type master. Also set for access-to-
2881 --       limited-class-wide types whose root may be extended with task
2882 --       components, and for access-to-limited-interfaces because they can be
2883 --       used to reference tasks implementing such interface.
2884
2885 --    Materialize_Entity (Flag168)
2886 --       Present in all entities. Set only for constant or renamed entities
2887 --       which should be materialized for debugging purposes. In the case of
2888 --       a constant, a memory location should be allocated containing the
2889 --       value. In the case of a renaming, a memory location containing the
2890 --       renamed address should be allocated.
2891
2892 --    Mechanism (Uint8) (returned as Mechanism_Type)
2893 --       Present in functions and non-generic formal parameters. Indicates
2894 --       the mechanism to be used for the function return or for the formal
2895 --       parameter. See separate section on passing mechanisms. This field
2896 --       is also set (to the default value of zero) in a subprogram body
2897 --       entity but not used in this context.
2898
2899 --    Modulus (Uint17) [base type only]
2900 --       Present in modular types. Contains the modulus. For the binary
2901 --       case, this will be a power of 2, but if Non_Binary_Modulus is
2902 --       set, then it will not be a power of 2.
2903
2904 --    Must_Be_On_Byte_Boundary (Flag183)
2905 --       Present in entities for types and subtypes. Set if objects of
2906 --       the type must always be allocated on a byte boundary (more
2907 --       accurately a storage unit boundary). The front end checks that
2908 --       component clauses respect this rule, and the back end ensures
2909 --       that record packing does not violate this rule. Currently the
2910 --       flag is set only for packed arrays longer than 64 bits where
2911 --       the component size is not a power of 2.
2912
2913 --    Must_Have_Preelab_Init (Flag208)
2914 --       Present in entities for types and subtypes. Set in the full type of a
2915 --       private type or subtype if a pragma Has_Preelaborable_Initialization
2916 --       is present for the private type. Used to check that the full type has
2917 --       preelaborable initialization at freeze time (this has to be deferred
2918 --       to the freeze point because of the rule about overriding Initialize).
2919
2920 --    Needs_Debug_Info (Flag147)
2921 --       Present in all entities. Set if the entity requires normal debugging
2922 --       information to be generated. This is true of all entities that have
2923 --       Comes_From_Source set, and also transitively for entities associated
2924 --       with such components (e.g. their types). It is true for all entities
2925 --       in Debug_Generated_Code mode (-gnatD switch). This is the flag that
2926 --       the back end should check to determine whether or not to generate
2927 --       debugging information for an entity. Note that callers should always
2928 --       use Sem_Util.Set_Debug_Info_Needed, rather than Set_Needs_Debug_Info,
2929 --       so that the flag is set properly on subsidiary entities.
2930
2931 --    Needs_No_Actuals (Flag22)
2932 --       Present in callable entities (subprograms, entries, access to
2933 --       subprograms)  which can be called without actuals because all of
2934 --       their formals (if any) have default values. This flag simplifies the
2935 --       resolution of the syntactic ambiguity involving a call to these
2936 --       entities when the return type is an array type, and a call can be
2937 --       interpreted as an indexing of the result of the call. It is also
2938 --       used to resolve various cases of entry calls.
2939 --
2940 --    Never_Set_In_Source (Flag115)
2941 --       Present in all entities, but can be set only for variables and
2942 --       parameters. This flag is set if the object is never assigned a value
2943 --       in user source code, either by assignment or by being used as an out
2944 --       or in out parameter. Note that this flag is not reset from using an
2945 --       initial value, so if you want to test for this case as well, test the
2946 --       Has_Initial_Value flag also.
2947 --
2948 --       This flag is only for the purposes of issuing warnings, it must not
2949 --       be used by the code generator to indicate that the variable is in
2950 --       fact a constant, since some assignments in generated code do not
2951 --       count (for example, the call to an init proc to assign some but
2952 --       not all of the fields in a partially initialized record). The code
2953 --       generator should instead use the flag Is_True_Constant.
2954 --
2955 --       For the purposes of this warning, the default assignment of
2956 --       access variables to null is not considered the assignment of
2957 --       of a value (so the warning can be given for code that relies
2958 --       on this initial null value, when no other value is ever set).
2959 --
2960 --       In variables and out parameters, if this flag is set after full
2961 --       processing of the corresponding declarative unit, it indicates that
2962 --       the variable or parameter was never set, and a warning message can
2963 --       be issued.
2964 --
2965 --       Note: this flag is initially set, and then cleared on encountering
2966 --       any construct that might conceivably legitimately set the value.
2967 --       Thus during the analysis of a declarative region and its associated
2968 --       statement sequence, the meaning of the flag is "not set yet", and
2969 --       once this analysis is complete the flag means "never assigned".
2970
2971 --       Note: for variables appearing in package declarations, this flag
2972 --       is never set. That is because there is no way to tell if some
2973 --       client modifies the variable (or in the case of variables in the
2974 --       private part, if some child unit modifies the variables).
2975
2976 --       Note: in the case of renamed objects, the flag must be set in the
2977 --       ultimate renamed object. Clients noting a possible modification
2978 --       should use the Note_Possible_Modification procedure in Sem_Util
2979 --       rather than Set_Never_Set_In_Source precisely to deal properly with
2980 --       the renaming possibility.
2981
2982 --    Next_Component (synthesized)
2983 --       Applies to record components. Returns the next component by following
2984 --       the chain of declared entities until one is found which corresponds to
2985 --       a component (Ekind is E_Component). Any internal types generated from
2986 --       the subtype indications of the record components are skipped. Returns
2987 --       Empty if no more components.
2988
2989 --    Next_Component_Or_Discriminant (synthesized)
2990 --      Similar to Next_Component, but includes components and discriminants
2991 --      so the input can have either E_Component or E_Discriminant, and the
2992 --      same is true for the result. Returns Empty if no more components or
2993 --      discriminants in the record.
2994
2995 --    Next_Discriminant (synthesized)
2996 --       Applies to discriminants returned by First/Next_Discriminant.
2997 --       Returns the next language-defined (ie: perhaps non-girder)
2998 --       discriminant by following the chain of declared entities as long as
2999 --       the kind of the entity corresponds to a discriminant. Note that the
3000 --       discriminants might be the only components of the record.
3001 --       Returns Empty if there are no more.
3002
3003 --    Next_Entity (Node2)
3004 --       Present in all entities. The entities of a scope are chained, with
3005 --       the head of the list being in the First_Entity field of the scope
3006 --       entity. All entities use the Next_Entity field as a forward pointer
3007 --       for this list, with Empty indicating the end of the list. Since this
3008 --       field is in the base part of the entity, the access routines for this
3009 --       field are in Sinfo.
3010
3011 --    Next_Formal (synthesized)
3012 --       Applies to the entity for a formal parameter. Returns the next
3013 --       formal parameter of the subprogram or subprogram type. Returns
3014 --       Empty if there are no more formals.
3015
3016 --    Next_Formal_With_Extras (synthesized)
3017 --       Applies to the entity for a formal parameter. Returns the next
3018 --       formal parameter of the subprogram or subprogram type. Returns
3019 --       Empty if there are no more formals. The list returned includes
3020 --       all the extra formals (see description of Extra_Formal field)
3021
3022 --    Next_Girder_Discriminant (synthesized)
3023 --       Applies to discriminants. Set only for a discriminant returned by
3024 --       a call to First/Next_Girder_Discriminant. Returns next girder
3025 --       discriminant, if there are more (see complete description in
3026 --       First_Girder_Discriminant), or Empty if there are no more.
3027
3028 --    Next_Index (synthesized)
3029 --       Applies to array types and subtypes and to string types and
3030 --       subtypes. Yields the next index. The first index is obtained by
3031 --       using the First_Index attribute, and then subsequent indexes are
3032 --       obtained by applying Next_Index to the previous index. Empty is
3033 --       returned to indicate that there are no more indexes. Note that
3034 --       unlike most attributes in this package, Next_Index applies to
3035 --       nodes for the indexes, not to entities.
3036
3037 --    Next_Inlined_Subprogram (Node12)
3038 --       Present in subprograms. Used to chain inlined subprograms used in
3039 --       the current compilation, in the order in which they must be compiled
3040 --       by Gigi to insure that all inlinings are performed.
3041
3042 --    Next_Literal (synthesized)
3043 --       Applies to enumeration literals, returns the next literal, or
3044 --       Empty if applied to the last literal. This is actually a synonym
3045 --       for Next, but its use is preferred in this context.
3046
3047 --    Next_Tag_Component (synthesized)
3048 --       Applies to components of tagged record types. Given a _Tag field
3049 --       of a record, returns the next _Tag field in this record.
3050
3051 --    Non_Binary_Modulus (Flag58) [base type only]
3052 --       Present in all subtype and type entities. Set for modular integer
3053 --       types if the modulus value is other than a power of 2.
3054
3055 --    Non_Limited_View (Node17)
3056 --       Present in incomplete types that are the shadow entities created
3057 --       when analyzing a limited_with_clause (Ada 2005: AI-50217). Points to
3058 --       the defining entity in the original declaration.
3059
3060 --    Nonzero_Is_True (Flag162) [base type only]
3061 --       Present in enumeration types. True if any non-zero value is to be
3062 --       interpreted as true. Currently this is set true for derived Boolean
3063 --       types which have a convention of C, C++ or Fortran.
3064
3065 --    No_Pool_Assigned (Flag131) [root type only]
3066 --       Present in access types. Set if a storage size clause applies to
3067 --       the variable with a compile time known value of zero. This flag is
3068 --       used to generate warnings if any attempt is made to allocate or free
3069 --       an instance of such an access type. This is set only in the root
3070 --       type, since derived types must have the same pool.
3071
3072 --    No_Return (Flag113)
3073 --       Present in all entities. Always false except in the case of procedures
3074 --       and generic procedures for which a pragma No_Return is given.
3075
3076 --    Normalized_First_Bit (Uint8)
3077 --       Present in components and discriminants. Indicates the normalized
3078 --       value of First_Bit for the component, i.e. the offset within the
3079 --       lowest addressed storage unit containing part or all of the field.
3080 --       Set to No_Uint if no first bit position is assigned yet.
3081
3082 --    Normalized_Position (Uint14)
3083 --       Present in components and discriminants. Indicates the normalized
3084 --       value of Position for the component, i.e. the offset in storage
3085 --       units from the start of the record to the lowest addressed storage
3086 --       unit containing part or all of the field.
3087
3088 --    Normalized_Position_Max (Uint10)
3089 --       Present in components and discriminants. For almost all cases, this
3090 --       is the same as Normalized_Position. The one exception is for the case
3091 --       of a discriminated record containing one or more arrays whose length
3092 --       depends on discriminants. In this case, the Normalized_Position_Max
3093 --       field represents the maximum possible value of Normalized_Position
3094 --       assuming min/max values for discriminant subscripts in all fields.
3095 --       This is used by Layout in front end layout mode to properly computed
3096 --       the maximum size such records (needed for allocation purposes when
3097 --       there are default discriminants, and also for the 'Size value).
3098
3099 --    No_Strict_Aliasing (Flag136) [base type only]
3100 --       Present in access types. Set to direct the back end to avoid any
3101 --       optimizations based on an assumption about the aliasing status of
3102 --       objects designated by the access type. For the case of the gcc