OSDN Git Service

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