1------------------------------------------------------------------------------ 2-- -- 3-- GNAT COMPILER COMPONENTS -- 4-- -- 5-- E I N F O -- 6-- -- 7-- S p e c -- 8-- -- 9-- Copyright (C) 1992-2013, Free Software Foundation, Inc. -- 10-- -- 11-- GNAT is free software; you can redistribute it and/or modify it under -- 12-- terms of the GNU General Public License as published by the Free Soft- -- 13-- ware Foundation; either version 3, or (at your option) any later ver- -- 14-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- 15-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- 16-- or FITNESS FOR A PARTICULAR PURPOSE. -- 17-- -- 18-- As a special exception under Section 7 of GPL version 3, you are granted -- 19-- additional permissions described in the GCC Runtime Library Exception, -- 20-- version 3.1, as published by the Free Software Foundation. -- 21-- -- 22-- You should have received a copy of the GNU General Public License and -- 23-- a copy of the GCC Runtime Library Exception along with this program; -- 24-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- 25-- <http://www.gnu.org/licenses/>. -- 26-- -- 27-- GNAT was originally developed by the GNAT team at New York University. -- 28-- Extensive contributions were provided by Ada Core Technologies Inc. -- 29-- -- 30------------------------------------------------------------------------------ 31 32with Snames; use Snames; 33with Types; use Types; 34with Uintp; use Uintp; 35with Urealp; use Urealp; 36 37package Einfo is 38 39-- This package defines the annotations to the abstract syntax tree that 40-- are needed to support semantic processing of an Ada compilation. 41 42-- Note that after editing this spec and the corresponding body it is 43-- required to run ceinfo to check the consistentcy of spec and body. 44-- See ceinfo.adb for more information about the checks made. 45 46-- These annotations are for the most part attributes of declared entities, 47-- and they correspond to conventional symbol table information. Other 48-- attributes include sets of meanings for overloaded names, possible 49-- types for overloaded expressions, flags to indicate deferred constants, 50-- incomplete types, etc. These attributes are stored in available fields 51-- in tree nodes (i.e. fields not used by the parser, as defined by the 52-- Sinfo package specification), and accessed by means of a set of 53-- subprograms which define an abstract interface. 54 55-- There are two kinds of semantic information 56 57-- First, the tree nodes with the following Nkind values: 58 59-- N_Defining_Identifier 60-- N_Defining_Character_Literal 61-- N_Defining_Operator_Symbol 62 63-- are called Entities, and constitute the information that would often 64-- be stored separately in a symbol table. These nodes are all extended 65-- to provide extra space, and contain fields which depend on the entity 66-- kind, as defined by the contents of the Ekind field. The use of the 67-- Ekind field, and the associated fields in the entity, are defined 68-- in this package, as are the access functions to these fields. 69 70-- Second, in some cases semantic information is stored directly in other 71-- kinds of nodes, e.g. the Etype field, used to indicate the type of an 72-- expression. The access functions to these fields are defined in the 73-- Sinfo package, but their full documentation is to be found in 74-- the Einfo package specification. 75 76-- Declaration processing places information in the nodes of their defining 77-- identifiers. Name resolution places in all other occurrences of an 78-- identifier a pointer to the corresponding defining occurrence. 79 80-------------------------------- 81-- The XEINFO Utility Program -- 82-------------------------------- 83 84-- XEINFO is a utility program which automatically produces a C header file, 85-- einfo.h from the spec and body of package Einfo. It reads the input 86-- files einfo.ads and einfo.adb and produces the output file einfo.h. 87-- XEINFO is run automatically by the build scripts when you do a full 88-- bootstrap. 89 90-- In order for this utility program to operate correctly, the form of the 91-- einfo.ads and einfo.adb files must meet certain requirements and be laid 92-- out in a specific manner. 93 94-- The general form of einfo.ads is as follows: 95 96-- type declaration for type Entity_Kind 97-- subtype declarations declaring subranges of Entity_Kind 98-- subtype declarations declaring synonyms for some standard types 99-- function specs for attributes 100-- procedure specs 101-- pragma Inline declarations 102 103-- This order must be observed. There are no restrictions on the procedures, 104-- since the C header file only includes functions (Gigi is not allowed to 105-- modify the generated tree). However, functions are required to have headers 106-- that fit on a single line. 107 108-- XEINFO reads and processes the function specs and the pragma Inlines. For 109-- functions that are declared as inlined, XEINFO reads the corresponding body 110-- from einfo.adb, and processes it into C code. This results in some strict 111-- restrictions on which functions can be inlined: 112 113-- The function spec must be on a single line 114 115-- There can only be a single statement, contained on a single line, 116-- not counting any pragma Assert statements. 117 118-- This single statement must either be a function call with simple, 119-- single token arguments, or it must be a membership test of the form 120-- a in b, where a and b are single tokens. 121 122-- For functions that are not inlined, there is no restriction on the body, 123-- and XEINFO generates a direct reference in the C header file which allows 124-- the C code in Gigi to directly call the corresponding Ada body. 125 126---------------------------------- 127-- Handling of Type'Size Values -- 128---------------------------------- 129 130-- The Ada 95 RM contains some rather peculiar (to us!) rules on the value 131-- of type'Size (see RM 13.3(55)). We have found that attempting to use 132-- these RM Size values generally, and in particular for determining the 133-- default size of objects, creates chaos, and major incompatibilities in 134-- existing code. 135 136-- We proceed as follows, for discrete and fixed-point subtypes, we have 137-- two separate sizes for each subtype: 138 139-- The Object_Size, which is used for determining the default size of 140-- objects and components. This size value can be referred to using the 141-- Object_Size attribute. The phrase "is used" here means that it is 142-- the basis of the determination of the size. The backend is free to 143-- pad this up if necessary for efficiency, e.g. an 8-bit stand-alone 144-- character might be stored in 32 bits on a machine with no efficient 145-- byte access instructions such as the Alpha. 146 147-- The default rules for the value of Object_Size for fixed-point and 148-- discrete types are as follows: 149 150-- The Object_Size for base subtypes reflect the natural hardware 151-- size in bits (see Ttypes and Cstand for integer types). For 152-- enumeration and fixed-point base subtypes have 8. 16. 32 or 64 153-- bits for this size, depending on the range of values to be stored. 154 155-- The Object_Size of a subtype is the same as the Object_Size of 156-- the subtype from which it is obtained. 157 158-- The Object_Size of a derived base type is copied from the parent 159-- base type, and the Object_Size of a derived first subtype is copied 160-- from the parent first subtype. 161 162-- The Value_Size which is the number of bits required to store a value 163-- of the type. This size can be referred to using the Value_Size 164-- attribute. This value is used to determine how tightly to pack 165-- records or arrays with components of this type, and also affects 166-- the semantics of unchecked conversion (unchecked conversions where 167-- the Value_Size values differ generate a warning, and are potentially 168-- target dependent). 169 170-- The default rule for the value of Value_Size are as follows: 171 172-- The Value_Size for a base subtype is the minimum number of bits 173-- required to store all values of the type (including the sign bit 174-- only if negative values are possible). 175 176-- If a subtype statically matches the first subtype, then it has 177-- by default the same Value_Size as the first subtype. This is a 178-- consequence of RM 13.1(14) ("if two subtypes statically match, 179-- then their subtype-specific aspects are the same".) 180 181-- All other subtypes have a Value_Size corresponding to the minimum 182-- number of bits required to store all values of the subtype. For 183-- dynamic bounds, it is assumed that the value can range down or up 184-- to the corresponding bound of the ancestor 185 186-- The RM defined attribute Size corresponds to the Value_Size attribute 187 188-- The Size attribute may be defined for a first-named subtype. This sets 189-- the Value_Size of the first-named subtype to the given value, and the 190-- Object_Size of this first-named subtype to the given value padded up 191-- to an appropriate boundary. It is a consequence of the default rules 192-- above that this Object_Size will apply to all further subtypes. On the 193-- other hand, Value_Size is affected only for the first subtype, any 194-- dynamic subtypes obtained from it directly, and any statically matching 195-- subtypes. The Value_Size of any other static subtypes is not affected. 196 197-- Value_Size and Object_Size may be explicitly set for any subtype using 198-- an attribute definition clause. Note that the use of these attributes 199-- can cause the RM 13.1(14) rule to be violated. If two access types 200-- reference aliased objects whose subtypes have differing Object_Size 201-- values as a result of explicit attribute definition clauses, then it 202-- is erroneous to convert from one access subtype to the other. 203 204-- At the implementation level, Esize stores the Object_Size and the 205-- RM_Size field stores the Value_Size (and hence the value of the 206-- Size attribute, which, as noted above, is equivalent to Value_Size). 207 208-- To get a feel for the difference, consider the following examples (note 209-- that in each case the base is short_short_integer with a size of 8): 210 211-- Object_Size Value_Size 212 213-- type x1 is range 0..5; 8 3 214 215-- type x2 is range 0..5; 216-- for x2'size use 12; 16 12 217 218-- subtype x3 is x2 range 0 .. 3; 16 2 219 220-- subtype x4 is x2'base range 0 .. 10; 8 4 221 222-- subtype x5 is x2 range 0 .. dynamic; 16 (7) 223 224-- subtype x6 is x2'base range 0 .. dynamic; 8 (7) 225 226-- Note: the entries marked (7) are not actually specified by the Ada 95 RM, 227-- but it seems in the spirit of the RM rules to allocate the minimum number 228-- of bits known to be large enough to hold the given range of values. 229 230-- So far, so good, but GNAT has to obey the RM rules, so the question is 231-- under what conditions must the RM Size be used. The following is a list 232-- of the occasions on which the RM Size must be used: 233 234-- Component size for packed arrays or records 235-- Value of the attribute Size for a type 236-- Warning about sizes not matching for unchecked conversion 237 238-- The RM_Size field keeps track of the RM Size as needed in these 239-- three situations. 240 241-- For elementary types other than discrete and fixed-point types, the 242-- Object_Size and Value_Size are the same (and equivalent to the RM 243-- attribute Size). Only Size may be specified for such types. 244 245-- For composite types, Object_Size and Value_Size are computed from their 246-- respective value for the type of each element as well as the layout. 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-- Delayed Freezing and Elaboration -- 254-------------------------------------- 255 256-- The flag Has_Delayed_Freeze indicates that an entity carries an explicit 257-- freeze node, which appears later in the expanded tree. 258 259-- a) The flag is used by the front-end to trigger expansion actions which 260-- include the generation of that freeze node. Typically this happens at the 261-- end of the current compilation unit, or before the first subprogram body is 262-- encountered in the current unit. See files freeze and exp_ch13 for details 263-- on the actions triggered by a freeze node, which include the construction 264-- of initialization procedures and dispatch tables. 265 266-- b) The presence of a freeze node on an entity is used by the backend to 267-- defer elaboration of the entity until its freeze node is seen. In the 268-- absence of an explicit freeze node, an entity is frozen (and elaborated) 269-- at the point of declaration. 270 271-- For object declarations, the flag is set when an address clause for the 272-- object is encountered. Legality checks on the address expression only take 273-- place at the freeze point of the object. 274 275-- Most types have an explicit freeze node, because they cannot be elaborated 276-- until all representation and operational items that apply to them have been 277-- analyzed. Private types and incomplete types have the flag set as well, as 278-- do task and protected types. 279 280-- Implicit base types created for type derivations, as well as classwide 281-- types created for all tagged types, have the flag set. 282 283-- If a subprogram has an access parameter whose designated type is incomplete 284-- the subprogram has the flag set. 285 286----------------------- 287-- Entity Attributes -- 288----------------------- 289 290-- This section contains a complete list of the attributes that are defined 291-- on entities. Some attributes apply to all entities, others only to certain 292-- kinds of entities. In the latter case the attribute should only be set or 293-- accessed if the Ekind field indicates an appropriate entity. 294 295-- There are two kinds of attributes that apply to entities, stored and 296-- synthesized. Stored attributes correspond to a field or flag in the entity 297-- itself. Such attributes are identified in the table below by giving the 298-- field or flag in the attribute that is used to hold the attribute value. 299-- Synthesized attributes are not stored directly, but are rather computed as 300-- needed from other attributes, or from information in the tree. These are 301-- marked "synthesized" in the table below. The stored attributes have both 302-- access functions and set procedures to set the corresponding values, while 303-- synthesized attributes have only access functions. 304 305-- Note: in the case of Node, Uint, or Elist fields, there are cases where 306-- the same physical field is used for different purposes in different 307-- entities, so these access functions should only be referenced for the 308-- class of entities in which they are defined as being present. Flags are 309-- not overlapped in this way, but nevertheless as a matter of style and 310-- abstraction (which may or may not be checked by assertions in the body), 311-- this restriction should be observed for flag fields as well. 312 313-- Note: certain of the attributes on types apply only to base types, and 314-- are so noted by the notation [base type only]. These are cases where the 315-- attribute of any subtype is the same as the attribute of the base type. 316-- The attribute can be referenced on a subtype (and automatically retrieves 317-- the value from the base type). However, it is an error to try to set the 318-- attribute on other than the base type, and if assertions are enabled, 319-- an attempt to set the attribute on a subtype will raise an assert error. 320 321-- Other attributes are noted as applying to the [implementation base type 322-- only]. These are representation attributes which must always apply to a 323-- full non-private type, and where the attributes are always on the full 324-- type. The attribute can be referenced on a subtype (and automatically 325-- retries the value from the implementation base type). However, it is an 326-- error to try to set the attribute on other than the implementation base 327-- type, and if assertions are enabled, an attempt to set the attribute on a 328-- subtype will raise an assert error. 329 330-- Abstract_States (Elist25) 331-- Defined for E_Package entities. Contains a list of all the abstract 332-- states declared by the related package. 333 334-- Accept_Address (Elist21) 335-- Defined in entries. If an accept has a statement sequence, then an 336-- address variable is created, which is used to hold the address of the 337-- parameters, as passed by the runtime. Accept_Address holds an element 338-- list which represents a stack of entities for these address variables. 339-- The current entry is the top of the stack, which is the last element 340-- on the list. A stack is required to handle the case of nested select 341-- statements referencing the same entry. 342 343-- Access_Disp_Table (Elist16) [implementation base type only] 344-- Defined in E_Record_Type and E_Record_Subtype entities. Set in tagged 345-- types to point to their dispatch tables. The first two entities are 346-- associated with the primary dispatch table: 1) primary dispatch table 347-- with user-defined primitives 2) primary dispatch table with predefined 348-- primitives. For each interface type covered by the tagged type we also 349-- have: 3) secondary dispatch table with thunks of primitives covering 350-- user-defined interface primitives, 4) secondary dispatch table with 351-- thunks of predefined primitives, 5) secondary dispatch table with user 352-- defined primitives, and 6) secondary dispatch table with predefined 353-- primitives. The last entity of this list is an access type declaration 354-- used to expand dispatching calls through the primary dispatch table. 355-- For a non-tagged record, contains No_Elist. 356 357-- Actual_Subtype (Node17) 358-- Defined in variables, constants, and formal parameters. This is the 359-- subtype imposed by the value of the object, as opposed to its nominal 360-- subtype, which is imposed by the declaration. The actual subtype 361-- differs from the nominal one when the latter is indefinite (as in the 362-- case of an unconstrained formal parameter, or a variable declared 363-- with an unconstrained type and an initial value). The nominal subtype 364-- is the Etype entry for the entity. The Actual_Subtype field is set 365-- only if the actual subtype differs from the nominal subtype. If the 366-- actual and nominal subtypes are the same, then the Actual_Subtype 367-- field is Empty, and Etype indicates both types. 368-- 369-- For objects, the Actual_Subtype is set only if this is a discriminated 370-- type. For arrays, the bounds of the expression are obtained and the 371-- Etype of the object is directly the constrained subtype. This is 372-- rather irregular, and the semantic checks that depend on the nominal 373-- subtype being unconstrained use flag Is_Constr_Subt_For_U_Nominal(qv). 374 375-- Address_Clause (synthesized) 376-- Applies to entries, objects and subprograms. Set if an address clause 377-- is present which references the object or subprogram and points to 378-- the N_Attribute_Definition_Clause node. Empty if no Address clause. 379-- The expression in the address clause is always a constant that is 380-- defined before the entity to which the address clause applies. 381-- Note: Gigi references this field in E_Task_Type entities??? 382 383-- Address_Taken (Flag104) 384-- Defined in all entities. Set if the Address or Unrestricted_Access 385-- attribute is applied directly to the entity, i.e. the entity is the 386-- entity of the prefix of the attribute reference. Also set if the 387-- entity is the second argument of an Asm_Input or Asm_Output attribute, 388-- as the construct may entail taking its address. Used by Gigi to make 389-- sure that the address can be meaningfully taken, and also in the case 390-- of subprograms to control output of certain warnings. 391 392-- Aft_Value (synthesized) 393-- Applies to fixed and decimal types. Computes a universal integer 394-- that holds value of the Aft attribute for the type. 395 396-- Alias (Node18) 397-- Defined in overloadable entities (literals, subprograms, entries) and 398-- subprograms that cover a primitive operation of an abstract interface 399-- (that is, subprograms with the Interface_Alias attribute). In case of 400-- overloaded entities it points to the parent subprogram of a derived 401-- subprogram. In case of abstract interface subprograms it points to the 402-- subprogram that covers the abstract interface primitive. Also used for 403-- a subprogram renaming, where it points to the renamed subprogram. For 404-- an inherited operation (of a type extension) that is overridden in a 405-- private part, the Alias is the overriding operation. In this fashion a 406-- call from outside the package ends up executing the new body even if 407-- non-dispatching, and a call from inside calls the overriding operation 408-- because it hides the implicit one. Alias is always empty for entries. 409 410-- Alignment (Uint14) 411-- Defined in entities for types and also in constants, variables 412-- (including exceptions where it refers to the static data allocated for 413-- an exception), loop parameters, and formal parameters. This indicates 414-- the desired alignment for a type, or the actual alignment for an 415-- object. A value of zero (Uint_0) indicates that the alignment has not 416-- been set yet. The alignment can be set by an explicit alignment 417-- clause, or set by the front-end in package Layout, or set by the 418-- back-end as part of the back end back-annotation process. The 419-- alignment field is also defined in E_Exception entities, but there it 420-- is used only by the back-end for back annotation. 421 422-- Alignment_Clause (synthesized) 423-- Applies to all entities for types and objects. If an alignment 424-- attribute definition clause is present for the entity, then this 425-- function returns the N_Attribute_Definition clause that specifies the 426-- alignment. If no alignment clause applies to the type, then the call 427-- to this function returns Empty. Note that the call can return a 428-- non-Empty value even if Has_Alignment_Clause is not set (happens with 429-- subtype and derived type declarations). Note also that a record 430-- definition clause with an (obsolescent) mod clause is converted 431-- into an attribute definition clause for this purpose. 432 433-- Associated_Formal_Package (Node12) 434-- Defined in packages that are the actuals of formal_packages. Points 435-- to the entity in the declaration for the formal package. 436 437-- Associated_Node_For_Itype (Node8) 438-- Defined in all type and subtype entities. Set non-Empty only for 439-- Itypes. Set to point to the associated node for the Itype, i.e. 440-- the node whose elaboration generated the Itype. This is used for 441-- copying trees, to determine whether or not to copy an Itype, and 442-- also for accessibility checks on anonymous access types. This 443-- node is typically an object declaration, component declaration, 444-- type or subtype declaration. For an access discriminant in a type 445-- declaration, the associated_node_for_itype is the discriminant 446-- specification. For an access parameter it is the enclosing subprogram 447-- declaration. 448-- 449-- Itypes have no explicit declaration, and therefore are not attached to 450-- the tree: their Parent field is always empty. The Associated_Node_For_ 451-- Itype is the only way to determine the construct that leads to the 452-- creation of a given itype entity. 453 454-- Associated_Storage_Pool (Node22) [root type only] 455-- Defined in simple and general access type entities. References the 456-- storage pool to be used for the corresponding collection. A value of 457-- Empty means that the default pool is to be used. This is defined 458-- only in the root type, since derived types must have the same pool 459-- as the parent type. 460 461-- Barrier_Function (Node12) 462-- Defined in protected entries and entry families. This is the 463-- subprogram declaration for the body of the function that returns 464-- the value of the entry barrier. 465 466-- Base_Type (synthesized) 467-- Applies to all type and subtype entities. Returns the base type of a 468-- type or subtype. The base type of a type is the type itself. The base 469-- type of a subtype is the type that it constrains (which is always 470-- a type entity, not some other subtype). Note that in the case of a 471-- subtype of a private type, it is possible for the base type attribute 472-- to return a private type, even if the subtype to which it applies is 473-- non-private. See also Implementation_Base_Type. Note: it is allowed to 474-- apply Base_Type to other than a type, in which case it simply returns 475-- the entity unchanged. 476 477-- Block_Node (Node11) 478-- Defined in block entities. Points to the identifier in the 479-- Block_Statement itself. Used when retrieving the block construct 480-- for finalization purposes, The block entity has an implicit label 481-- declaration in the enclosing declarative part, and has otherwise 482-- no direct connection in the tree with the block statement. The 483-- link is to the identifier (which is an occurrence of the entity) 484-- and not to the block_statement itself, because the statement may 485-- be rewritten, e.g. in the process of removing dead code. 486 487-- Body_Entity (Node19) 488-- Defined in package and generic package entities, points to the 489-- corresponding package body entity if one is present. 490 491-- Body_Needed_For_SAL (Flag40) 492-- Defined in package and subprogram entities that are compilation 493-- units. Indicates that the source for the body must be included 494-- when the unit is part of a standalone library. 495 496-- C_Pass_By_Copy (Flag125) [implementation base type only] 497-- Defined in record types. Set if a pragma Convention for the record 498-- type specifies convention C_Pass_By_Copy. This convention name is 499-- treated as identical in all respects to convention C, except that 500-- if it is specified for a record type, then the C_Pass_By_Copy flag 501-- is set, and if a foreign convention subprogram has a formal of the 502-- corresponding type, then the parameter passing mechanism will be 503-- set to By_Copy (unless specifically overridden by an Import or 504-- Export pragma). 505 506-- Can_Never_Be_Null (Flag38) 507-- This flag is defined in all entities, but can only be set in an object 508-- which can never have a null value. This is set True for constant 509-- access values initialized to a non-null value. This is also True for 510-- all access parameters in Ada 83 and Ada 95 modes, and for access 511-- parameters that explicitly exclude null in Ada 2005. 512-- 513-- This is used to avoid unnecessary resetting of the Is_Known_Non_Null 514-- flag for such entities. In Ada 2005 mode, this is also used when 515-- determining subtype conformance of subprogram profiles to ensure 516-- that two formals have the same null-exclusion status. 517-- 518-- ??? This is also set on some access types, eg the Etype of the 519-- anonymous access type of a controlling formal. 520 521-- Can_Use_Internal_Rep (Flag229) [base type only] 522-- Defined in Access_Subprogram_Kind nodes. This flag is set by the 523-- front end and used by the back end. False means that the back end 524-- must represent the type in the same way as Convention-C types (and 525-- other foreign-convention types). On many targets, this means that 526-- the back end will use dynamically generated trampolines for nested 527-- subprograms. True means that the back end can represent the type in 528-- some internal way. On the aforementioned targets, this means that the 529-- back end will not use dynamically generated trampolines. This flag 530-- must be False if Has_Foreign_Convention is True; otherwise, the front 531-- end is free to set the policy. 532-- 533-- Setting this False in all cases corresponds to the traditional back 534-- end strategy, where all access-to-subprogram types are represented the 535-- same way, independent of the Convention. For further details, see also 536-- Always_Compatible_Rep in Targparm. 537-- 538-- Efficiency note: On targets that use dynamically generated 539-- trampolines, False generally favors efficiency of top-level 540-- subprograms, whereas True generally favors efficiency of nested 541-- ones. On other targets, this flag has little or no effect on 542-- efficiency. The front end should take this into account. In 543-- particular, pragma Favor_Top_Level gives a hint that the flag 544-- should be False. 545-- 546-- Note: We considered using Convention-C for this purpose, but we need 547-- this separate flag, because Convention-C implies that in the case of 548-- P'[Unrestricted_]Access, P also have convention C. Sometimes we want 549-- to have Can_Use_Internal_Rep False for an access type, but allow P to 550-- have convention Ada. 551 552-- Chars (Name1) 553-- Defined in all entities. This field contains an entry into the names 554-- table that has the character string of the identifier, character 555-- literal or operator symbol. See Namet for further details. Note that 556-- throughout the processing of the front end, this name is the simple 557-- unqualified name. However, just before gigi is called, a call is made 558-- to Qualify_All_Entity_Names. This causes entity names to be qualified 559-- using the encoding described in exp_dbug.ads, and from that point on 560-- (including post gigi steps such as cross-reference generation), the 561-- entities will contain the encoded qualified names. 562 563-- Checks_May_Be_Suppressed (Flag31) 564-- Defined in all entities. Set if a pragma Suppress or Unsuppress 565-- mentions the entity specifically in the second argument. If this 566-- flag is set the Global_Entity_Suppress and Local_Entity_Suppress 567-- tables must be consulted to determine if there actually is an active 568-- Suppress or Unsuppress pragma that applies to the entity. 569 570-- Class_Wide_Type (Node9) 571-- Defined in all type entities. For a tagged type or subtype, returns 572-- the corresponding implicitly declared class-wide type. For a 573-- class-wide type, returns itself. Set to Empty for non-tagged types. 574 575-- Cloned_Subtype (Node16) 576-- Defined in E_Record_Subtype and E_Class_Wide_Subtype entities. 577-- Each such entity can either have a Discriminant_Constraint, in 578-- which case it represents a distinct type from the base type (and 579-- will have a list of components and discrimants in the list headed by 580-- First_Entity) or else no such constraint, in which case it will be a 581-- copy of the base type. 582-- 583-- o Each element of the list in First_Entity is copied from the base 584-- type; in that case, this field is Empty. 585-- 586-- o The list in First_Entity is shared with the base type; in that 587-- case, this field points to that entity. 588-- 589-- A record or classwide subtype may also be a copy of some other 590-- subtype and share the entities in the First_Entity with that subtype. 591-- In that case, this field points to that subtype. 592-- 593-- For E_Class_Wide_Subtype, the presence of Equivalent_Type overrides 594-- this field. Note that this field ONLY appears in subtype entries, not 595-- in type entries, it is not defined, and it is an error to reference 596-- Cloned_Subtype in an E_Record_Type or E_Class_Wide_Type entity. 597 598-- Comes_From_Source 599-- This flag appears on all nodes, including entities, and indicates 600-- that the node was created by the scanner or parser from the original 601-- source. Thus for entities, it indicates that the entity is defined 602-- in the original source program. 603 604-- Component_Alignment (special field) [base type only] 605-- Defined in array and record entities. Contains a value of type 606-- Component_Alignment_Kind indicating the alignment of components. 607-- Set to Calign_Default normally, but can be overridden by use of 608-- the Component_Alignment pragma. Note: this field is currently 609-- stored in a non-standard way, see body for details. 610 611-- Component_Bit_Offset (Uint11) 612-- Defined in record components (E_Component, E_Discriminant) if a 613-- component clause applies to the component. First bit position of 614-- given component, computed from the first bit and position values 615-- given in the component clause. A value of No_Uint means that the 616-- value is not yet known. The value can be set by the appearance of 617-- an explicit component clause in a record representation clause, 618-- or it can be set by the front-end in package Layout, or it can be 619-- set by the backend. By the time backend processing is completed, 620-- this field is always set. A negative value is used to represent 621-- a value which is not known at compile time, and must be computed 622-- at run-time (this happens if fields of a record have variable 623-- lengths). See package Layout for details of these values. 624-- 625-- Note: Component_Bit_Offset is redundant with respect to the fields 626-- Normalized_First_Bit and Normalized_Position, and could in principle 627-- be eliminated, but it is convenient in several situations, including 628-- use in Gigi, to have this redundant field. 629 630-- Component_Clause (Node13) 631-- Defined in record components and discriminants. If a record 632-- representation clause is present for the corresponding record type a 633-- that specifies a position for the component, then the Component_Clause 634-- field of the E_Component entity points to the N_Component_Clause node. 635-- Set to Empty if no record representation clause was present, or if 636-- there was no specification for this component. 637 638-- Component_Size (Uint22) [implementation base type only] 639-- Defined in array types. It contains the component size value for 640-- the array. A value of No_Uint means that the value is not yet set. 641-- The value can be set by the use of a component size clause, or 642-- by the front end in package Layout, or by the backend. A negative 643-- value is used to represent a value which is not known at compile 644-- time, and must be computed at run-time (this happens if the type 645-- of the component has a variable length size). See package Layout 646-- for details of these values. 647 648-- Component_Type (Node20) [implementation base type only] 649-- Defined in array types and string types. References component type. 650 651-- Corresponding_Concurrent_Type (Node18) 652-- Defined in record types that are constructed by the expander to 653-- represent task and protected types (Is_Concurrent_Record_Type flag 654-- set True). Points to the entity for the corresponding task type or 655-- protected type. 656 657-- Corresponding_Discriminant (Node19) 658-- Defined in discriminants of a derived type, when the discriminant is 659-- used to constrain a discriminant of the parent type. Points to the 660-- corresponding discriminant in the parent type. Otherwise it is Empty. 661 662-- Corresponding_Equality (Node30) 663-- Defined in function entities for implicit inequality operators. 664-- Denotes the explicit or derived equality operation that creates 665-- the implicit inequality. Note that this field is not present in 666-- other function entities, only in implicit inequality routines, 667-- where Comes_From_Source is always False. 668 669-- Corresponding_Protected_Entry (Node18) 670-- Defined in subprogram bodies. Set for subprogram bodies that implement 671-- a protected type entry to point to the entity for the entry. 672 673-- Corresponding_Record_Type (Node18) 674-- Defined in protected and task types and subtypes. References the 675-- entity for the corresponding record type constructed by the expander 676-- (see Exp_Ch9). This type is used to represent values of the task type. 677 678-- Corresponding_Remote_Type (Node22) 679-- Defined in record types that describe the fat pointer structure for 680-- Remote_Access_To_Subprogram types. References the original access 681-- type. 682 683-- CR_Discriminant (Node23) 684-- Defined in discriminants of concurrent types. Denotes the homologous 685-- discriminant of the corresponding record type. The CR_Discriminant is 686-- created at the same time as the discriminal, and used to replace 687-- occurrences of the discriminant within the type declaration. 688 689-- Current_Use_Clause (Node27) 690-- Defined in packages and in types. For packages, denotes the use 691-- package clause currently in scope that makes the package use_visible. 692-- For types, it denotes the use_type clause that makes the operators of 693-- the type visible. Used for more precise warning messages on redundant 694-- use clauses. 695 696-- Current_Value (Node9) 697-- Defined in all object entities. Set in E_Variable, E_Constant, formal 698-- parameters and E_Loop_Parameter entities if we have trackable current 699-- values. Set non-Empty if the (constant) current value of the variable 700-- is known, This value is valid only for references from the same 701-- sequential scope as the entity. The sequential scope of an entity 702-- includes the immediate scope and any contained scopes that are package 703-- specs, package bodies, blocks (at any nesting level) or statement 704-- sequences in IF or loop statements. 705-- 706-- Another related use of this field is to record information about the 707-- value obtained from an IF or WHILE statement condition. If the IF or 708-- ELSIF or WHILE condition has the form "NOT {,NOT] OBJ RELOP VAL ", 709-- or OBJ [AND [THEN]] expr, where OBJ refers to an entity with a 710-- Current_Value field, RELOP is one of the six relational operators, and 711-- VAL is a compile-time known value then the Current_Value field of OBJ 712-- points to the N_If_Statement, N_Elsif_Part, or N_Iteration_Scheme node 713-- of the relevant construct, and the Condition field of this can be 714-- consulted to give information about the value of OBJ. For more details 715-- on this usage, see the procedure Exp_Util.Get_Current_Value_Condition. 716 717-- Debug_Info_Off (Flag166) 718-- Defined in all entities. Set if a pragma Suppress_Debug_Info applies 719-- to the entity, or if internal processing in the compiler determines 720-- that suppression of debug information is desirable. Note that this 721-- flag is only for use by the front end as part of the processing for 722-- determining if Needs_Debug_Info should be set. The back end should 723-- always test Needs_Debug_Info, it should never test Debug_Info_Off. 724 725-- Debug_Renaming_Link (Node25) 726-- Used to link the variable associated with a debug renaming declaration 727-- to the renamed entity. See Exp_Dbug.Debug_Renaming_Declaration for 728-- details of the use of this field. 729 730-- Declaration_Node (synthesized) 731-- Applies to all entities. Returns the tree node for the construct that 732-- declared the entity. Normally this is just the Parent of the entity. 733-- One exception arises with child units, where the parent of the entity 734-- is a selected component/defining program unit name. Another exception 735-- is that if the entity is an incomplete type that has been completed or 736-- a private type, then we obtain the declaration node denoted by the 737-- full type, i.e. the full type declaration node. Also note that for 738-- subprograms, this returns the {function,procedure}_specification, not 739-- the subprogram_declaration. 740 741-- Default_Aspect_Component_Value (Node19) 742-- Defined in array types. Holds the static value specified in a 743-- default_component_value aspect specification for the array type. 744 745-- Default_Aspect_Value (Node19) 746-- Defined in scalar types. Holds the static value specified in a 747-- default_value aspect specification for the type. 748 749-- Default_Expr_Function (Node21) 750-- Defined in parameters. It holds the entity of the parameterless 751-- function that is built to evaluate the default expression if it is 752-- more complex than a simple identifier or literal. For the latter 753-- simple cases or if there is no default value, this field is Empty. 754 755-- Default_Expressions_Processed (Flag108) 756-- A flag in subprograms (functions, operators, procedures) and in 757-- entries and entry families used to indicate that default expressions 758-- have been processed and to avoid multiple calls to process the 759-- default expressions (see Freeze.Process_Default_Expressions), which 760-- would not only waste time, but also generate false error messages. 761 762-- Default_Value (Node20) 763-- Defined in formal parameters. Points to the node representing the 764-- expression for the default value for the parameter. Empty if the 765-- parameter has no default value (which is always the case for OUT 766-- and IN OUT parameters in the absence of errors). 767 768-- Delay_Cleanups (Flag114) 769-- Defined in entities that have finalization lists (subprograms 770-- blocks, and tasks). Set if there are pending generic body 771-- instantiations for the corresponding entity. If this flag is 772-- set, then generation of cleanup actions for the corresponding 773-- entity must be delayed, since the insertion of the generic body 774-- may affect cleanup generation (see Inline for further details). 775 776-- Delay_Subprogram_Descriptors (Flag50) 777-- Defined in entities for which exception subprogram descriptors 778-- are generated (subprograms, package declarations and package 779-- bodies). Defined if there are pending generic body instantiations 780-- for the corresponding entity. If this flag is set, then generation 781-- of the subprogram descriptor for the corresponding enities must 782-- be delayed, since the insertion of the generic body may add entries 783-- to the list of handlers. 784-- 785-- Note: for subprograms, Delay_Subprogram_Descriptors is set if and 786-- only if Delay_Cleanups is set. But Delay_Cleanups can be set for a 787-- a block (in which case Delay_Subprogram_Descriptors is set for the 788-- containing subprogram). In addition Delay_Subprogram_Descriptors is 789-- set for a library level package declaration or body which contains 790-- delayed instantiations (in this case the descriptor refers to the 791-- enclosing elaboration procedure). 792 793-- Delta_Value (Ureal18) 794-- Defined in fixed and decimal types. Points to a universal real 795-- that holds value of delta for the type, as given in the declaration 796-- or as inherited by a subtype or derived type. 797 798-- Dependent_Instances (Elist8) 799-- Defined in packages that are instances. Holds list of instances 800-- of inner generics. Used to place freeze nodes for those instances 801-- after that of the current one, i.e. after the corresponding generic 802-- bodies. 803 804-- Depends_On_Private (Flag14) 805-- Defined in all type entities. Set if the type is private or if it 806-- depends on a private type. 807 808-- Designated_Type (synthesized) 809-- Applies to access types. Returns the designated type. Differs 810-- from Directly_Designated_Type in that if the access type refers 811-- to an incomplete type, and the full type is available, then this 812-- full type is returned instead of the incomplete type. 813 814-- Digits_Value (Uint17) 815-- Defined in floating point types and subtypes and decimal types and 816-- subtypes. Contains the Digits value specified in the declaration. 817 818-- Direct_Primitive_Operations (Elist10) 819-- Defined in tagged types and subtypes (including synchronized types), 820-- in tagged private types and in tagged incomplete types. Element list 821-- of entities for primitive operations of the tagged type. Not defined 822-- in untagged types. In order to follow the C++ ABI, entities of 823-- primitives that come from source must be stored in this list in the 824-- order of their occurrence in the sources. For incomplete types the 825-- list is always empty. 826 827-- Directly_Designated_Type (Node20) 828-- Defined in access types. This field points to the type that is 829-- directly designated by the access type. In the case of an access 830-- type to an incomplete type, this field references the incomplete 831-- type. Directly_Designated_Type is typically used in implementing the 832-- static semantics of the language; in implementing dynamic semantics, 833-- we typically want the full view of the designated type. The function 834-- Designated_Type obtains this full type in the case of access to an 835-- incomplete type. 836 837-- Discard_Names (Flag88) 838-- Defined in types and exception entities. Set if pragma Discard_Names 839-- applies to the entity. It is also set for declarative regions and 840-- package specs for which a Discard_Names pragma with zero arguments 841-- has been encountered. The purpose of setting this flag is to be able 842-- to set the Discard_Names attribute on enumeration types declared 843-- after the pragma within the same declarative region. This flag is 844-- set to False if a Keep_Names pragma appears for an enumeration type. 845 846-- Discriminal (Node17) 847-- Defined in discriminants (Discriminant formal: GNAT's first 848-- coinage). The entity used as a formal parameter that corresponds 849-- to a discriminant. See section "Handling of Discriminants" for 850-- full details of the use of discriminals. 851 852-- Discriminal_Link (Node10) 853-- Defined in E_In_Parameter or E_Constant entities. For discriminals, 854-- points back to corresponding discriminant. For other entities, must 855-- remain Empty. 856 857-- Discriminant_Checking_Func (Node20) 858-- Defined in components. Points to the defining identifier of the 859-- function built by the expander returns a Boolean indicating whether 860-- the given record component exists for the current discriminant 861-- values. 862 863-- Discriminant_Constraint (Elist21) 864-- Defined in entities whose Has_Discriminants flag is set (concurrent 865-- types, subtypes, record types and subtypes, private types and 866-- subtypes, limited private types and subtypes and incomplete types). 867-- It is an error to reference the Discriminant_Constraint field if 868-- Has_Discriminants is False. 869-- 870-- If the Is_Constrained flag is set, Discriminant_Constraint points 871-- to an element list containing the discriminant constraints in the 872-- same order in which the discriminants are declared. 873-- 874-- If the Is_Constrained flag is not set but the discriminants of the 875-- unconstrained type have default initial values then this field 876-- points to an element list giving these default initial values in 877-- the same order in which the discriminants are declared. Note that 878-- in this case the entity cannot be a tagged record type, because 879-- discriminants in this case cannot have defaults. 880-- 881-- If the entity is a tagged record implicit type, then this field is 882-- inherited from the first subtype (so that the itype is subtype 883-- conformant with its first subtype, which is needed when the first 884-- subtype overrides primitive operations inherited by the implicit 885-- base type). 886-- 887-- In all other cases Discriminant_Constraint contains the empty 888-- Elist (ie it is initialized with a call to New_Elmt_List). 889 890-- Discriminant_Default_Value (Node20) 891-- Defined in discriminants. Points to the node representing the 892-- expression for the default value of the discriminant. Set to 893-- Empty if the discriminant has no default value. 894 895-- Discriminant_Number (Uint15) 896-- Defined in discriminants. Gives the ranking of a discriminant in 897-- the list of discriminants of the type, i.e. a sequential integer 898-- index starting at 1 and ranging up to number of discriminants. 899 900-- Dispatch_Table_Wrappers (Elist26) [implementation base type only] 901-- Defined in E_Record_Type and E_Record_Subtype entities. Set in library 902-- level tagged type entities if we are generating statically allocated 903-- dispatch tables. Points to the list of dispatch table wrappers 904-- associated with the tagged type. For a non-tagged record, contains 905-- No_Elist. 906 907-- DTC_Entity (Node16) 908-- Defined in function and procedure entities. Set to Empty unless 909-- the subprogram is dispatching in which case it references the 910-- Dispatch Table pointer Component. For regular Ada tagged this, this 911-- is the _Tag component. For CPP_Class types and their descendants, 912-- this points to the component entity in the record that holds the 913-- Vtable pointer for the Vtable containing the entry referencing the 914-- subprogram. 915 916-- DT_Entry_Count (Uint15) 917-- Defined in E_Component entities. Only used for component marked 918-- Is_Tag. Store the number of entries in the Vtable (or Dispatch Table) 919 920-- DT_Offset_To_Top_Func (Node25) 921-- Defined in E_Component entities. Only used for component marked 922-- Is_Tag. If present it stores the Offset_To_Top function used to 923-- provide this value in tagged types whose ancestor has discriminants. 924 925-- DT_Position (Uint15) 926-- Defined in function and procedure entities which are dispatching 927-- (should not be referenced without first checking that flag 928-- Is_Dispatching_Operation is True). Contains the offset into 929-- the Vtable for the entry that references the subprogram. 930 931-- Ekind (Ekind) 932-- Defined in all entities. Contains a value of the enumeration type 933-- Entity_Kind declared in a subsequent section in this spec. 934 935-- Elaborate_Body_Desirable (Flag210) 936-- Defined in package entities. Set if the elaboration circuitry detects 937-- a case where there is a package body that modifies one or more visible 938-- entities in the package spec and there is no explicit Elaborate_Body 939-- pragma for the package. This information is passed on to the binder, 940-- which attempts, but does not promise, to elaborate the body as close 941-- to the spec as possible. 942 943-- Elaboration_Entity (Node13) 944-- Defined in generic and non-generic package and subprogram entities. 945-- This is a counter associated with the unit that is initially set to 946-- zero, is incremented when an elaboration request for the unit is 947-- made, and is decremented when a finalization request for the unit 948-- is made. This is used for three purposes. First, it is used to 949-- implement access before elaboration checks (the counter must be 950-- non-zero to call a subprogram at elaboration time). Second, it is 951-- used to guard against repeated execution of the elaboration code. 952-- Third, it is used to ensure that the finalization code is executed 953-- only after all clients have requested it. 954-- 955-- Note that we always allocate this counter, and set this field, but 956-- we do not always actually use it. It is only used if it is needed 957-- for access before elaboration use (see Elaboration_Entity_Required 958-- flag) or if either the spec or the body has elaboration code. If 959-- neither of these two conditions holds, then the entity is still 960-- allocated (since we don't know early enough whether or not there 961-- is elaboration code), but is simply not used for any purpose. 962 963-- Elaboration_Entity_Required (Flag174) 964-- Defined in generic and non-generic package and subprogram entities. 965-- Set only if Elaboration_Entity is non-Empty to indicate that the 966-- counter is required to be non-zero even if there is no other 967-- elaboration code. This occurs when the Elaboration_Entity counter 968-- is used for access before elaboration checks. If the counter is 969-- only used to prevent multiple execution of the elaboration code, 970-- then if there is no other elaboration code, obviously there is no 971-- need to set the flag. 972 973-- Enclosing_Scope (Node18) 974-- Defined in labels. Denotes the innermost enclosing construct that 975-- contains the label. Identical to the scope of the label, except for 976-- labels declared in the body of an accept statement, in which case the 977-- entry_name is the Enclosing_Scope. Used to validate goto's within 978-- accept statements. 979 980-- Entry_Accepted (Flag152) 981-- Defined in E_Entry and E_Entry_Family entities. Set if there is 982-- at least one accept for this entry in the task body. Used to 983-- generate warnings for missing accepts. 984 985-- Entry_Bodies_Array (Node15) 986-- Defined in protected types for which Has_Entries is true. 987-- This is the defining identifier for the array of entry body 988-- action procedures and barrier functions used by the runtime to 989-- execute the user code associated with each entry. 990 991-- Entry_Cancel_Parameter (Node23) 992-- Defined in blocks. This only applies to a block statement for 993-- which the Is_Asynchronous_Call_Block flag is set. It 994-- contains the defining identifier of an object that must be 995-- passed to the Cancel_Task_Entry_Call or Cancel_Protected_Entry_Call 996-- call in the cleanup handler added to the block by 997-- Exp_Ch7.Expand_Cleanup_Actions. This parameter is a Boolean 998-- object for task entry calls and a Communications_Block object 999-- in the case of protected entry calls. In both cases the objects 1000-- are declared in outer scopes to this block. 1001 1002-- Entry_Component (Node11) 1003-- Defined in formal parameters (in, in out and out parameters). Used 1004-- only for formals of entries. References the corresponding component 1005-- of the entry parameter record for the entry. 1006 1007-- Entry_Formal (Node16) 1008-- Defined in components of the record built to correspond to entry 1009-- parameters. This field points from the component to the formal. It 1010-- is the back pointer corresponding to Entry_Component. 1011 1012-- Entry_Index_Constant (Node18) 1013-- Defined in an entry index parameter. This is an identifier that 1014-- eventually becomes the name of a constant representing the index 1015-- of the entry family member whose entry body is being executed. Used 1016-- to expand references to the entry index specification identifier. 1017 1018-- Entry_Index_Type (synthesized) 1019-- Applies to an entry family. Denotes Etype of the subtype indication 1020-- in the entry declaration. Used to resolve the index expression in an 1021-- accept statement for a member of the family, and in the prefix of 1022-- 'COUNT when it applies to a family member. 1023 1024-- Contract (Node24) 1025-- Defined in entries, and in subprogram and generic subprogram entities. 1026-- Points to the contract of the entity, holding both pre- and 1027-- postconditions as well as test-cases. 1028 1029-- Entry_Parameters_Type (Node15) 1030-- Defined in entries. Points to the access-to-record type that is 1031-- constructed by the expander to hold a reference to the parameter 1032-- values. This reference is manipulated (as an address) by the 1033-- tasking runtime. The designated record represents a packaging 1034-- up of the entry parameters (see Exp_Ch9.Expand_N_Entry_Declaration 1035-- for further details). Entry_Parameters_Type is Empty if the entry 1036-- has no parameters. 1037 1038-- Enumeration_Pos (Uint11) 1039-- Defined in enumeration literals. Contains the position number 1040-- corresponding to the value of the enumeration literal. 1041 1042-- Enumeration_Rep (Uint12) 1043-- Defined in enumeration literals. Contains the representation that 1044-- corresponds to the value of the enumeration literal. Note that 1045-- this is normally the same as Enumeration_Pos except in the presence 1046-- of representation clauses, where Pos will still represent the 1047-- position of the literal within the type and Rep will have be the 1048-- value given in the representation clause. 1049 1050-- Enumeration_Rep_Expr (Node22) 1051-- Defined in enumeration literals. Points to the expression in an 1052-- associated enumeration rep clause that provides the representation 1053-- value for this literal. Empty if no enumeration rep clause for this 1054-- literal (or if rep clause does not have an entry for this literal, 1055-- an error situation). This is also used to catch duplicate entries 1056-- for the same literal. 1057 1058-- Enum_Pos_To_Rep (Node23) 1059-- Defined in enumeration types (but not enumeration subtypes). Set to 1060-- Empty unless the enumeration type has a non-standard representation 1061-- (i.e. at least one literal has a representation value different from 1062-- its pos value). In this case, Enum_Pos_To_Rep is the entity for an 1063-- array constructed when the type is frozen that maps Pos values to 1064-- corresponding Rep values. The index type of this array is Natural, 1065-- and the component type is a suitable integer type that holds the 1066-- full range of representation values. 1067 1068-- Equivalent_Type (Node18) 1069-- Defined in class wide types and subtypes, access to protected 1070-- subprogram types, and in exception types. For a classwide type, it 1071-- is always Empty. For a class wide subtype, it points to an entity 1072-- created by the expander which gives Gigi an easily understandable 1073-- equivalent of the class subtype with a known size (given by an 1074-- initial value). See Exp_Util.Expand_Class_Wide_Subtype for further 1075-- details. For E_Exception_Type, this points to the record containing 1076-- the data necessary to represent exceptions (for further details, see 1077-- System.Standard_Library. For access_to_protected subprograms, it 1078-- denotes a record that holds pointers to the operation and to the 1079-- protected object. For remote Access_To_Subprogram types, it denotes 1080-- the record that is the fat pointer representation of an RAST. 1081 1082-- Esize (Uint12) 1083-- Defined in all types and subtypes, and also for components, constants, 1084-- and variables, including exceptions where it refers to the static data 1085-- allocated for an exception. Contains the Object_Size of the type or of 1086-- the object. A value of zero indicates that the value is not yet known. 1087-- 1088-- For the case of components where a component clause is present, the 1089-- value is the value from the component clause, which must be non- 1090-- negative (but may be zero, which is acceptable for the case of 1091-- a type with only one possible value). It is also possible for Esize 1092-- of a component to be set without a component clause defined, which 1093-- means that the component size is specified, but not the position. 1094-- See also RM_Size and the section on "Handling of Type'Size Values". 1095-- During gigi processing, the value is back annotated for all zero 1096-- values, so that after the call to gigi, the value is properly set. 1097 1098-- Etype (Node5) 1099-- Defined in all entities. Represents the type of the entity, which 1100-- is itself another entity. For a type entity, points to the parent 1101-- type for a derived type, or if the type is not derived, points to 1102-- itself. For a subtype entity, Etype points to the base type. For 1103-- a class wide type, points to the corresponding specific type. For a 1104-- subprogram or subprogram type, Etype has the return type of a function 1105-- or is set to Standard_Void_Type to represent a procedure. 1106-- 1107-- Note one obscure case: for pragma Default_Storage_Pool (null), the 1108-- Etype of the N_Null node is Empty. 1109 1110-- Exception_Code (Uint22) 1111-- Defined in exception entities. Set to zero unless either an 1112-- Import_Exception or Export_Exception pragma applies to the 1113-- pragma and specifies a Code value. See description of these 1114-- pragmas for details. Note that this field is relevant only if 1115-- Is_VMS_Exception is set. 1116 1117-- Extra_Formal (Node15) 1118-- Defined in formal parameters in the non-generic case. Certain 1119-- parameters require extra implicit information to be passed (e.g. the 1120-- flag indicating if an unconstrained variant record argument is 1121-- constrained, and the accessibility level for access parameters. See 1122-- description of Extra_Constrained, Extra_Accessibility fields for 1123-- further details. Extra formal parameters are constructed to represent 1124-- these values, and chained to the end of the list of formals using the 1125-- Extra_Formal field (i.e. the Extra_Formal field of the last "real" 1126-- formal points to the first extra formal, and the Extra_Formal field of 1127-- each extra formal points to the next one, with Empty indicating the 1128-- end of the list of extra formals. 1129 1130-- Extra_Formals (Node28) 1131-- Applies to subprograms and subprogram types, and also in entries 1132-- and entry families. Returns first extra formal of the subprogram 1133-- or entry. Returns Empty if there are no extra formals. 1134 1135-- Extra_Accessibility (Node13) 1136-- Defined in formal parameters in the non-generic case. Normally Empty, 1137-- but if expansion is active, and a parameter is one for which a 1138-- dynamic accessibility check is required, then an extra formal of type 1139-- Natural is created (see description of field Extra_Formal), and the 1140-- Extra_Accessibility field of the formal parameter points to the entity 1141-- for this extra formal. Also defined in variables when compiling 1142-- receiving stubs. In this case, a non Empty value means that this 1143-- variable's accessibility depth has been transmitted by the caller and 1144-- must be retrieved through the entity designed by this field instead of 1145-- being computed. 1146 1147-- Extra_Accessibility_Of_Result (Node19) 1148-- Defined in (non-generic) Function, Operator, and Subprogram_Type 1149-- entities. Normally Empty, but if expansion is active, and a function 1150-- is one for which "the accessibility level of the result ... determined 1151-- by the point of call" (AI05-0234) is needed, then an extra formal of 1152-- subtype Natural is created (see description of field Extra_Formal), 1153-- and the Extra_Accessibility_Of_Result field of the function points to 1154-- the entity for this extra formal. 1155 1156-- Extra_Constrained (Node23) 1157-- Defined in formal parameters in the non-generic case. Normally Empty, 1158-- but if expansion is active and a parameter is one for which a dynamic 1159-- indication of its constrained status is required, then an extra formal 1160-- of type Boolean is created (see description of field Extra_Formal), 1161-- and the Extra_Constrained field of the formal parameter points to the 1162-- entity for this extra formal. Also defined in variables when compiling 1163-- receiving stubs. In this case, a non empty value means that this 1164-- variable's constrained status has been transmitted by the caller and 1165-- must be retrieved through the entity designed by this field instead of 1166-- being computed. 1167 1168-- Finalization_Master (Node23) [root type only] 1169-- Defined in access-to-controlled or access-to-class-wide types. The 1170-- field contains the entity of the finalization master which handles 1171-- dynamically allocated controlled objects referenced by the access 1172-- type. Empty for access-to-subprogram types. Empty for access types 1173-- whose designated type does not need finalization actions. 1174 1175-- Finalize_Storage_Only (Flag158) [base type only] 1176-- Defined in all types. Set on direct controlled types to which a 1177-- valid Finalize_Storage_Only pragma applies. This flag is also set on 1178-- composite types when they have at least one controlled component and 1179-- all their controlled components are Finalize_Storage_Only. It is also 1180-- inherited by type derivation except for direct controlled types where 1181-- the Finalize_Storage_Only pragma is required at each level of 1182-- derivation. 1183 1184-- Finalizer (Node24) 1185-- Applies to package declarations and bodies. Contains the entity of the 1186-- library-level program which finalizes all package-level controlled 1187-- objects. 1188 1189-- First_Component (synthesized) 1190-- Applies to record types. Returns the first component by following the 1191-- chain of declared entities for the record until a component is found 1192-- (one with an Ekind of E_Component). The discriminants are skipped. If 1193-- the record is null, then Empty is returned. 1194 1195-- First_Component_Or_Discriminant (synthesized) 1196-- Similar to First_Component, but discriminants are not skipped, so will 1197-- find the first discriminant if discriminants are present. 1198 1199-- First_Entity (Node17) 1200-- Defined in all entities which act as scopes to which a list of 1201-- associated entities is attached (blocks, class subtypes and types, 1202-- entries, functions, loops, packages, procedures, protected objects, 1203-- record types and subtypes, private types, task types and subtypes). 1204-- Points to a list of associated entities using the Next_Entity field 1205-- as a chain pointer with Empty marking the end of the list. 1206 1207-- First_Exit_Statement (Node8) 1208-- Defined in E_Loop entity. The exit statements for a loop are chained 1209-- (in reverse order of appearance) using this field to point to the 1210-- first entry in the chain (last exit statement in the loop). The 1211-- entries are chained through the Next_Exit_Statement field of the 1212-- N_Exit_Statement node with Empty marking the end of the list. 1213 1214-- First_Formal (synthesized) 1215-- Applies to subprograms and subprogram types, and also in entries 1216-- and entry families. Returns first formal of the subprogram or entry. 1217-- The formals are the first entities declared in a subprogram or in 1218-- a subprogram type (the designated type of an Access_To_Subprogram 1219-- definition) or in an entry. 1220 1221-- First_Formal_With_Extras (synthesized) 1222-- Applies to subprograms and subprogram types, and also in entries 1223-- and entry families. Returns first formal of the subprogram or entry. 1224-- Returns Empty if there are no formals. The list returned includes 1225-- all the extra formals (see description of Extra_Formals field). 1226 1227-- First_Index (Node17) 1228-- Defined in array types and subtypes and in string types and subtypes. 1229-- By introducing implicit subtypes for the index constraints, we have 1230-- the same structure for constrained and unconstrained arrays, subtype 1231-- marks and discrete ranges are both represented by a subtype. This 1232-- function returns the tree node corresponding to an occurrence of the 1233-- first index (NOT the entity for the type). Subsequent indexes are 1234-- obtained using Next_Index. Note that this field is defined for the 1235-- case of string literal subtypes, but is always Empty. 1236 1237-- First_Literal (Node17) 1238-- Defined in all enumeration types, including character and boolean 1239-- types. This field points to the first enumeration literal entity 1240-- for the type (i.e. it is set to First (Literals (N)) where N is 1241-- the enumeration type definition node. A special case occurs with 1242-- standard character and wide character types, where this field is 1243-- Empty, since there are no enumeration literal lists in these cases. 1244-- Note that this field is set in enumeration subtypes, but it still 1245-- points to the first literal of the base type in this case. 1246 1247-- First_Optional_Parameter (Node14) 1248-- Defined in (non-generic) function and procedure entities. Set to a 1249-- non-null value only if a pragma Import_Function, Import_Procedure 1250-- or Import_Valued_Procedure specifies a First_Optional_Parameter 1251-- argument, in which case this field points to the parameter entity 1252-- corresponding to the specified parameter. 1253 1254-- First_Private_Entity (Node16) 1255-- Defined in all entities containing private parts (packages, protected 1256-- types and subtypes, task types and subtypes). The entities on the 1257-- entity chain are in order of declaration, so the entries for private 1258-- entities are at the end of the chain. This field points to the first 1259-- entity for the private part. It is Empty if there are no entities 1260-- declared in the private part or if there is no private part. 1261 1262-- First_Rep_Item (Node6) 1263-- Defined in all entities. If non-empty, points to a linked list of 1264-- representation pragmas nodes and representation clause nodes that 1265-- apply to the entity, linked using Next_Rep_Item, with Empty marking 1266-- the end of the list. In the case of derived types and subtypes, the 1267-- new entity inherits the chain at the point of declaration. This means 1268-- that it is possible to have multiple instances of the same kind of rep 1269-- item on the chain, in which case it is the first one that applies to 1270-- the entity. 1271-- 1272-- Note: pragmas that can apply to more than one overloadable entity, 1273-- (Convention, Interface, Inline, Inline_Always, Import, Export, 1274-- External) are never present on this chain when they apply to 1275-- overloadable entities, since it is impossible for a given pragma 1276-- to be on more than one chain at a time. 1277-- 1278-- For most representation items, the representation information is 1279-- reflected in other fields and flags in the entity. For example if a 1280-- record representation clause is present, the component entities 1281-- reflect the specified information. However, there are some items that 1282-- are only reflected in the chain. These include: 1283-- 1284-- Machine_Attribute pragma 1285-- Link_Alias pragma 1286-- Linker_Section pragma 1287-- Linker_Constructor pragma 1288-- Linker_Destructor pragma 1289-- Weak_External pragma 1290-- Thread_Local_Storage pragma 1291-- 1292-- If any of these items are present, then the flag Has_Gigi_Rep_Item is 1293-- set, indicating that Gigi should search the chain. 1294-- 1295-- Other representation items are included in the chain so that error 1296-- messages can easily locate the relevant nodes for posting errors. 1297-- Note in particular that size clauses are defined only for this 1298-- purpose, and should only be accessed if Has_Size_Clause is set. 1299 1300-- Float_Rep (Uint10) 1301-- Defined in floating-point entities. Contains a value of type 1302-- Float_Rep_Kind. Together with the Digits_Value uniquely defines 1303-- the floating-point representation to be used. 1304 1305-- Freeze_Node (Node7) 1306-- Defined in all entities. If there is an associated freeze node for the 1307-- entity, this field references this freeze node. If no freeze node is 1308-- associated with the entity, then this field is Empty. See package 1309-- Freeze for further details. 1310 1311-- From_With_Type (Flag159) 1312-- Defined in package and type entities. Indicates that the entity 1313-- appears in a With_Type clause in the context of some other unit, 1314-- either as the prefix (which must be a package), or as a type name. 1315-- The package can only be used to retrieve such a type, and the type 1316-- can be used only in component declarations and access definitions. 1317-- The With_Type clause is used to construct mutually recursive 1318-- types, i.e. record types (Java classes) that hold pointers to each 1319-- other. If such a type is an access type, it has no explicit freeze 1320-- node, so that the back-end does not attempt to elaborate it. 1321-- Currently this flag is also used to implement Ada 2005 (AI-50217). 1322-- It will be renamed to From_Limited_With after removal of the current 1323-- GNAT with_type clause??? 1324 1325-- Full_View (Node11) 1326-- Defined in all type and subtype entities and in deferred constants. 1327-- References the entity for the corresponding full type declaration. 1328-- For all types other than private and incomplete types, this field 1329-- always contains Empty. If an incomplete type E1 is completed by a 1330-- private type E2 whose full type declaration entity is E3 then the 1331-- full view of E1 is E2, and the full view of E2 is E3. See also 1332-- Underlying_Type. 1333 1334-- Generic_Homonym (Node11) 1335-- Defined in generic packages. The generic homonym is the entity of 1336-- a renaming declaration inserted in every generic unit. It is used 1337-- to resolve the name of a local entity that is given by a qualified 1338-- name, when the generic entity itself is hidden by a local name. 1339 1340-- Generic_Renamings (Elist23) 1341-- Defined in package and subprogram instances. Holds mapping that 1342-- associates generic parameters with the corresponding instances, in 1343-- those cases where the instance is an entity. 1344 1345-- Handler_Records (List10) 1346-- Defined in subprogram and package entities. Points to a list of 1347-- identifiers referencing the handler record entities for the 1348-- corresponding unit. 1349 1350-- Has_Aliased_Components (Flag135) [implementation base type only] 1351-- Defined in array type entities. Indicates that the component type 1352-- of the array is aliased. 1353 1354-- Has_Alignment_Clause (Flag46) 1355-- Defined in all type entities and objects. Indicates if an alignment 1356-- clause has been given for the entity. If set, then Alignment_Clause 1357-- returns the N_Attribute_Definition node for the alignment attribute 1358-- definition clause. Note that it is possible for this flag to be False 1359-- even when Alignment_Clause returns non_Empty (this happens in the case 1360-- of derived type declarations). 1361 1362-- Has_All_Calls_Remote (Flag79) 1363-- Defined in all library unit entities. Set true if the library unit 1364-- has an All_Calls_Remote pragma. Note that such entities must also 1365-- be RCI entities, so the flag Is_Remote_Call_Interface will always 1366-- be set if this flag is set. 1367 1368-- Has_Anonymous_Master (Flag253) 1369-- Defined in units (top-level functions and procedures, library-level 1370-- packages). Set to True if the associated unit contains a heterogeneous 1371-- finalization master. The master's name is of the form <unit>AM and it 1372-- services anonymous access-to-controlled types with an undetermined 1373-- lifetime. 1374 1375-- Has_Atomic_Components (Flag86) [implementation base type only] 1376-- Defined in all types and objects. Set only for an array type or 1377-- an array object if a valid pragma Atomic_Components applies to the 1378-- type or object. Note that in the case of an object, this flag is 1379-- only set on the object if there was an explicit pragma for the 1380-- object. In other words, the proper test for whether an object has 1381-- atomic components is to see if either the object or its base type 1382-- has this flag set. Note that in the case of a type, the pragma will 1383-- be chained to the rep item chain of the first subtype in the usual 1384-- manner. 1385 1386-- Has_Attach_Handler (synthesized) 1387-- Applies to record types that are constructed by the expander to 1388-- represent protected types. Returns True if there is at least one 1389-- Attach_Handler pragma in the corresponding specification. 1390 1391-- Has_Biased_Representation (Flag139) 1392-- Defined in discrete types (where it applies to the type'size value), 1393-- and to objects (both stand-alone and components), where it applies to 1394-- the size of the object from a size or record component clause. In 1395-- all cases it indicates that the size in question is smaller than 1396-- would normally be required, but that the size requirement can be 1397-- satisfied by using a biased representation, in which stored values 1398-- have the low bound (Expr_Value (Type_Low_Bound (T)) subtracted to 1399-- reduce the required size. For example, a type with a range of 1..2 1400-- takes one bit, using 0 to represent 1 and 1 to represent 2. 1401-- 1402-- Note that in the object and component cases, the flag is only set if 1403-- the type is unbiased, but the object specifies a smaller size than the 1404-- size of the type, forcing biased representation for the object, but 1405-- the subtype is still an unbiased type. 1406 1407-- Has_Completion (Flag26) 1408-- Defined in all entities that require a completion (functions, 1409-- procedures, private types, limited private types, incomplete types, 1410-- constants and packages that require a body). The flag is set if the 1411-- completion has been encountered and analyzed. 1412 1413-- Has_Completion_In_Body (Flag71) 1414-- Defined in all entities for types and subtypes. Set only in "Taft 1415-- amendment types" (incomplete types whose full declaration appears in 1416-- the package body). 1417 1418-- Has_Complex_Representation (Flag140) [implementation base type only] 1419-- Defined in all type entities. Set only for a record base type to 1420-- which a valid pragma Complex_Representation applies. 1421 1422-- Has_Component_Size_Clause (Flag68) [implementation base type only] 1423-- Defined in all type entities. Set if a component size clause is 1424-- Defined for the given type. Note that this flag can be False even 1425-- if Component_Size is non-zero (happens in the case of derived types). 1426 1427-- Has_Constrained_Partial_View (Flag187) 1428-- Defined in private type and their completions, when the private 1429-- type has no discriminants and the full view has discriminants with 1430-- defaults. In Ada 2005 heap-allocated objects of such types are not 1431-- constrained, and can change their discriminants with full assignment. 1432-- Sem_Aux.Effectively_Has_Constrained_Partial_View should be always 1433-- used by callers, rather than reading this attribute directly because, 1434-- according to RM 3.10.2 (27/2), untagged generic formal private types 1435-- and subtypes are also considered to have a constrained partial view 1436-- [when in a generic body]. 1437 1438-- Has_Contiguous_Rep (Flag181) 1439-- Defined in enumeration types. True if the type as a representation 1440-- clause whose entries are successive integers. 1441 1442-- Has_Controlling_Result (Flag98) 1443-- Defined in E_Function entities. True if the function is a primitive 1444-- function of a tagged type which can dispatch on result. 1445 1446-- Has_Controlled_Component (Flag43) [base type only] 1447-- Defined in all type and subtype entities. Set only for composite type 1448-- entities which contain a component that either is a controlled type, 1449-- or itself contains controlled component (i.e. either Is_Controlled or 1450-- Has_Controlled_Component is set for at least one component). 1451 1452-- Has_Convention_Pragma (Flag119) 1453-- Defined in all entities. Set true for an entity for which a valid 1454-- Convention, Import, or Export pragma has been given. Used to prevent 1455-- more than one such pragma appearing for a given entity (RM B.1(45)). 1456 1457-- Has_Delayed_Aspects (Flag200) 1458-- Defined in all entities. Set true if the Rep_Item chain for the entity 1459-- has one or more N_Aspect_Definition nodes chained which are not to be 1460-- evaluated till the freeze point. The aspect definition expression 1461-- clause has been preanalyzed to get visibility at the point of use, 1462-- but no other action has been taken. 1463 1464-- Has_Delayed_Freeze (Flag18) 1465-- Defined in all entities. Set to indicate that an explicit freeze 1466-- node must be generated for the entity at its freezing point. See 1467-- separate section ("Delayed Freezing and Elaboration") for details. 1468 1469-- Has_Default_Aspect (Flag39) [base type only] 1470-- Defined in entities for types and subtypes, set for scalar types with 1471-- a Default_Value aspect and array types with a Default_Component_Value 1472-- apsect. If this flag is set, then a corresponding aspect specification 1473-- node will be present on the rep item chain for the entity. 1474 1475-- Has_Discriminants (Flag5) 1476-- Defined in all types and subtypes. For types that are allowed to have 1477-- discriminants (record types and subtypes, task types and subtypes, 1478-- protected types and subtypes, private types, limited private types, 1479-- and incomplete types), indicates if the corresponding type or subtype 1480-- has a known discriminant part. Always false for all other types. 1481 1482-- Has_Dispatch_Table (Flag220) 1483-- Defined in E_Record_Types that are tagged. Set to indicate that the 1484-- corresponding dispatch table is already built. This flag is used to 1485-- avoid duplicate construction of library level dispatch tables (because 1486-- the declaration of library level objects cause premature construction 1487-- of the table); otherwise the code that builds the table is added at 1488-- the end of the list of declarations of the package. 1489 1490-- Has_Entries (synthesized) 1491-- Applies to concurrent types. True if any entries are declared 1492-- within the task or protected definition for the type. 1493 1494-- Has_Enumeration_Rep_Clause (Flag66) 1495-- Defined in enumeration types. Set if an enumeration representation 1496-- clause has been given for this enumeration type. Used to prevent more 1497-- than one enumeration representation clause for a given type. Note 1498-- that this does not imply a representation with holes, since the rep 1499-- clause may merely confirm the default 0..N representation. 1500 1501-- Has_External_Tag_Rep_Clause (Flag110) 1502-- Defined in tagged types. Set if an external_tag rep. clause has been 1503-- given for this type. Use to avoid the generation of the default 1504-- external_tag. 1505 1506-- Has_Exit (Flag47) 1507-- Defined in loop entities. Set if the loop contains an exit statement. 1508 1509-- Has_Foreign_Convention (synthesized) 1510-- Applies to all entities. Determines if the Convention for the 1511-- entity is a foreign convention (i.e. is other than Convention_Ada, 1512-- Convention_Intrinsic, Convention_Entry or Convention_Protected). 1513 1514-- Has_Forward_Instantiation (Flag175) 1515-- Defined in package entities. Set true for packages that contain 1516-- instantiations of local generic entities, before the corresponding 1517-- generic body has been seen. If a package has a forward instantiation, 1518-- we cannot inline subprograms appearing in the same package because 1519-- the placement requirements of the instance will conflict with the 1520-- linear elaboration of front-end inlining. 1521 1522-- Has_Fully_Qualified_Name (Flag173) 1523-- Defined in all entities. Set True if the name in the Chars field has 1524-- been replaced by the fully qualified name, as used for debug output. 1525-- See Exp_Dbug for a full description of the use of this flag and also 1526-- the related flag Has_Qualified_Name. 1527 1528-- Has_Gigi_Rep_Item (Flag82) 1529-- Defined in all entities. Set if the rep item chain (referenced by 1530-- First_Rep_Item and linked through the Next_Rep_Item chain) contains a 1531-- representation item that needs to be specially processed by Gigi, i.e. 1532-- one of the following items: 1533-- 1534-- Machine_Attribute pragma 1535-- Linker_Alias pragma 1536-- Linker_Section pragma 1537-- Linker_Constructor pragma 1538-- Linker_Destructor pragma 1539-- Weak_External pragma 1540-- Thread_Local_Storage pragma 1541-- 1542-- If this flag is set, then Gigi should scan the rep item chain to 1543-- process any of these items that appear. At least one such item will 1544-- be present. 1545 1546-- Has_Homonym (Flag56) 1547-- Defined in all entities. Set if an entity has a homonym in the same 1548-- scope. Used by Gigi to generate unique names for such entities. 1549 1550-- Has_Implicit_Dereference (Flag251) 1551-- Defined in types and discriminants. Set if the type has an aspect 1552-- Implicit_Dereference. Set also on the discriminant named in the aspect 1553-- clause, to simplify type resolution. 1554 1555-- Has_Independent_Components (Flag34) 1556-- Defined in objects and types. Set if the aspect Independent_Components 1557-- applies (as set by coresponding pragma or aspect specification). 1558 1559-- Has_Inheritable_Invariants (Flag248) 1560-- Defined in all type entities. Set True in private types from which one 1561-- or more Invariant'Class aspects will be inherited if a another type is 1562-- derived from the type (i.e. those types which have an Invariant'Class 1563-- aspect, or which inherit one or more Invariant'Class aspects). Also 1564-- set in the corresponding full types. Note that it might be the full 1565-- type which has inheritable invariants, and in this case the flag will 1566-- also be set in the private type. 1567 1568-- Has_Initial_Value (Flag219) 1569-- Defined in entities for variables and out parameters. Set if there 1570-- is an explicit initial value expression in the declaration of the 1571-- variable. Note that this is set only if this initial value is 1572-- explicit, it is not set for the case of implicit initialization 1573-- of access types or controlled types. Always set to False for out 1574-- parameters. Also defined in entities for in and in-out parameters, 1575-- but always false in these cases. 1576 1577-- Has_Interrupt_Handler (synthesized) 1578-- Applies to all protected type entities. Set if the protected type 1579-- definition contains at least one procedure to which a pragma 1580-- Interrupt_Handler applies. 1581 1582-- Has_Invariants (Flag232) 1583-- Defined in all type entities and in subprogram entities. Set True in 1584-- private types if an Invariant or Invariant'Class aspect applies to the 1585-- type, or if the type inherits one or more Invariant'Class aspects. 1586-- Also set in the corresponding full type. Note: if this flag is set 1587-- True, then usually the Invariant_Procedure attribute is set once the 1588-- type is frozen, however this may not be true in some error situations. 1589-- Note that it might be the full type which has inheritable invariants, 1590-- and then the flag will also be set in the private type. Also set in 1591-- the invariant procedure entity, to distinguish it among entries in the 1592-- Subprograms_For_Type. 1593 1594-- Has_Machine_Radix_Clause (Flag83) 1595-- Defined in decimal types and subtypes, set if a Machine_Radix 1596-- representation clause is present. This flag is used to detect 1597-- the error of multiple machine radix clauses for a single type. 1598 1599-- Has_Master_Entity (Flag21) 1600-- Defined in entities that can appear in the scope stack (see spec 1601-- of Sem). It is set if a task master entity (_master) has been 1602-- declared and initialized in the corresponding scope. 1603 1604-- Has_Missing_Return (Flag142) 1605-- Defined in functions and generic functions. Set if there is one or 1606-- more missing return statements in the function. This is used to 1607-- control wrapping of the body in Exp_Ch6 to ensure that the program 1608-- error exception is correctly raised in this case at runtime. 1609 1610-- Has_Nested_Block_With_Handler (Flag101) 1611-- Defined in scope entities. Set if there is a nested block within the 1612-- scope that has an exception handler and the two scopes are in the 1613-- same procedure. This is used by the backend for controlling certain 1614-- optimizations to ensure that they are consistent with exceptions. 1615-- See documentation in Gigi for further details. 1616 1617-- Has_Non_Standard_Rep (Flag75) [implementation base type only] 1618-- Defined in all type entities. Set when some representation clause 1619-- or pragma causes the representation of the item to be significantly 1620-- modified. In this category are changes of small or radix for a 1621-- fixed-point type, change of component size for an array, and record 1622-- or enumeration representation clauses, as well as packed pragmas. 1623-- All other representation clauses (e.g. Size and Alignment clauses) 1624-- are not considered to be significant since they do not affect 1625-- stored bit patterns. 1626 1627-- Has_Object_Size_Clause (Flag172) 1628-- Defined in entities for types and subtypes. Set if an Object_Size 1629-- clause has been processed for the type Used to prevent multiple 1630-- Object_Size clauses for a given entity. 1631 1632-- Has_Per_Object_Constraint (Flag154) 1633-- Defined in E_Component entities, true if the subtype of the 1634-- component has a per object constraint. Per object constraints result 1635-- from the following situations: 1636-- 1637-- 1. N_Attribute_Reference - when the prefix is the enclosing type and 1638-- the attribute is Access. 1639-- 2. N_Discriminant_Association - when the expression uses the 1640-- discriminant of the enclosing type. 1641-- 3. N_Index_Or_Discriminant_Constraint - when at least one of the 1642-- individual constraints is a per object constraint. 1643-- 4. N_Range - when the lower or upper bound uses the discriminant of 1644-- the enclosing type. 1645-- 5. N_Range_Constraint - when the range expression uses the 1646-- discriminant of the enclosing type. 1647 1648-- Has_Postconditions (Flag240) 1649-- Defined in subprogram entities. Set if postconditions are active for 1650-- the procedure, and a _postconditions procedure has been generated. 1651 1652-- Has_Pragma_Controlled (Flag27) [implementation base type only] 1653-- Defined in access type entities. It is set if a pragma Controlled 1654-- applies to the access type. 1655 1656-- Has_Pragma_Elaborate_Body (Flag150) 1657-- Defined in all entities. Set in compilation unit entities if a 1658-- pragma Elaborate_Body applies to the compilation unit. 1659 1660-- Has_Pragma_Inline (Flag157) 1661-- Defined in all entities. Set for functions and procedures for which a 1662-- pragma Inline or Inline_Always applies to the subprogram. Note that 1663-- this flag can be set even if Is_Inlined is not set. This happens for 1664-- pragma Inline (if Inline_Active is False). In other words, the flag 1665-- Has_Pragma_Inline represents the formal semantic status, and is used 1666-- for checking semantic correctness. The flag Is_Inlined indicates 1667-- whether inlining is actually active for the entity. 1668 1669-- Has_Pragma_Inline_Always (Flag230) 1670-- Defined in all entities. Set for functions and procedures for which a 1671-- pragma Inline_Always applies. Note that if this flag is set, the flag 1672-- Has_Pragma_Inline is also set. 1673 1674-- Has_Pragma_No_Inline (Flag201) 1675-- Defined in all entities. Set for functions and procedures for which a 1676-- pragma No_Inline applies. Note that if this flag is set, the flag 1677-- Has_Pragma_Inline_Always cannot be set. 1678 1679-- Has_Pragma_Ordered (Flag198) [implementation base type only] 1680-- Defined in entities for enumeration types. If set indicates that a 1681-- valid pragma Ordered was given for the type. This flag is inherited 1682-- by derived enumeration types. We don't need to distinguish the derived 1683-- case since we allow multiple occurrences of this pragma anyway. 1684 1685-- Has_Pragma_Pack (Flag121) [implementation base type only] 1686-- Defined in array and record type entities. If set, indicates that a 1687-- valid pragma Pack was given for the type. Note that this flag is not 1688-- inherited by derived type. See also the Is_Packed flag. 1689 1690-- Has_Pragma_Pure (Flag203) 1691-- Defined in all entities. If set, indicates that a valid pragma Pure 1692-- was given for the entity. In some cases, we need to test whether 1693-- Is_Pure was explicitly set using this pragma. 1694 1695-- Has_Pragma_Preelab_Init (Flag221) 1696-- Defined in type and subtype entities. If set indicates that a valid 1697-- pragma Preelaborable_Initialization applies to the type. 1698 1699-- Has_Pragma_Pure_Function (Flag179) 1700-- Defined in all entities. If set, indicates that a valid pragma 1701-- Pure_Function was given for the entity. In some cases, we need to 1702-- know that Is_Pure was explicitly set using this pragma. We also set 1703-- this flag for some internal entities that we know should be treated 1704-- as pure for optimization purposes. 1705 1706-- Has_Pragma_Thread_Local_Storage (Flag169) 1707-- Defined in all entities. If set, indicates that a valid pragma 1708-- Thread_Local_Storage was given for the entity. 1709 1710-- Has_Pragma_Unmodified (Flag233) 1711-- Defined in all entities. Can only be set for variables (E_Variable, 1712-- E_Out_Parameter, E_In_Out_Parameter). Set if a valid pragma Unmodified 1713-- applies to the variable, indicating that no warning should be given 1714-- if the entity is never modified. Note that clients should generally 1715-- not test this flag directly, but instead use function Has_Unmodified. 1716 1717-- Has_Pragma_Unreferenced (Flag180) 1718-- Defined in all entities. Set if a valid pragma Unreferenced applies 1719-- to the entity, indicating that no warning should be given if the 1720-- entity has no references, but a warning should be given if it is 1721-- in fact referenced. For private types, this flag is set in both the 1722-- private entity and full entity if the pragma applies to either. Note 1723-- that clients should generally not test this flag directly, but instead 1724-- use function Has_Unreferenced. 1725 1726-- Has_Pragma_Unreferenced_Objects (Flag212) 1727-- Defined in type and subtype entities. Set if a valid pragma 1728-- Unreferenced_Objects applies to the type, indicating that no warning 1729-- should be given for objects of such a type for being unreferenced 1730-- (but unlike the case with pragma Unreferenced, it is ok to reference 1731-- such an object and no warning is generated. 1732 1733-- Has_Predicates (Flag250) 1734-- Defined in all entities. Set in type and subtype entities if a pragma 1735-- Predicate or Predicate aspect applies to the type, or if it inherits a 1736-- Predicate aspect from its parent or progenitor types. Also set in the 1737-- predicate function entity, to distinguish it among entries in the 1738-- Subprograms_For_Type. 1739 1740-- Has_Primitive_Operations (Flag120) [base type only] 1741-- Defined in all type entities. Set if at least one primitive operation 1742-- is defined for the type. 1743 1744-- Has_Private_Ancestor (Flag151) 1745-- Applies to type extensions. True if some ancestor is derived from a 1746-- private type, making some components invisible and aggregates illegal. 1747-- This flag is set at the point of derivation. The legality of the 1748-- aggregate must be rechecked because it also depends on the visibility 1749-- at the point the aggregate is resolved. See sem_aggr.adb. 1750-- This is part of AI05-0115. 1751 1752-- Has_Private_Declaration (Flag155) 1753-- Defined in all entities. Returns True if it is the defining entity 1754-- of a private type declaration or its corresponding full declaration. 1755-- This flag is thus preserved when the full and the partial views are 1756-- exchanged, to indicate if a full type declaration is a completion. 1757-- Used for semantic checks in E.4(18) and elsewhere. 1758 1759-- Has_Qualified_Name (Flag161) 1760-- Defined in all entities. Set True if the name in the Chars field 1761-- has been replaced by its qualified name, as used for debug output. 1762-- See Exp_Dbug for a full description of qualification requirements. 1763-- For some entities, the name is the fully qualified name, but there 1764-- are exceptions. In particular, for local variables in procedures, 1765-- we do not include the procedure itself or higher scopes. See also 1766-- the flag Has_Fully_Qualified_Name, which is set if the name does 1767-- indeed include the fully qualified name. 1768 1769-- Has_RACW (Flag214) 1770-- Defined in package spec entities. Set if the spec contains the 1771-- declaration of a remote access-to-classwide type. 1772 1773-- Has_Record_Rep_Clause (Flag65) [implementation base type only] 1774-- Defined in record types. Set if a record representation clause has 1775-- been given for this record type. Used to prevent more than one such 1776-- clause for a given record type. Note that this is initially cleared 1777-- for a derived type, even though the representation is inherited. See 1778-- also the flag Has_Specified_Layout. 1779 1780-- Has_Recursive_Call (Flag143) 1781-- Defined in procedures. Set if a direct parameterless recursive call 1782-- is detected while analyzing the body. Used to activate some error 1783-- checks for infinite recursion. 1784 1785-- Has_Size_Clause (Flag29) 1786-- Defined in entities for types and objects. Set if a size clause is 1787-- Defined for the entity. Used to prevent multiple Size clauses for a 1788-- given entity. Note that it is always initially cleared for a derived 1789-- type, even though the Size for such a type is inherited from a Size 1790-- clause given for the parent type. 1791 1792-- Has_Small_Clause (Flag67) 1793-- Defined in ordinary fixed point types (but not subtypes). Indicates 1794-- that a small clause has been given for the entity. Used to prevent 1795-- multiple Small clauses for a given entity. Note that it is always 1796-- initially cleared for a derived type, even though the Small for such 1797-- a type is inherited from a Small clause given for the parent type. 1798 1799-- Has_Specified_Layout (Flag100) [implementation base type only] 1800-- Defined in all type entities. Set for a record type or subtype if 1801-- the record layout has been specified by a record representation 1802-- clause. Note that this differs from the flag Has_Record_Rep_Clause 1803-- in that it is inherited by a derived type. Has_Record_Rep_Clause is 1804-- used to indicate that the type is mentioned explicitly in a record 1805-- representation clause, and thus is not inherited by a derived type. 1806-- This flag is always False for non-record types. 1807 1808-- Has_Specified_Stream_Input (Flag190) 1809-- Has_Specified_Stream_Output (Flag191) 1810-- Has_Specified_Stream_Read (Flag192) 1811-- Has_Specified_Stream_Write (Flag193) 1812-- Defined in all type and subtype entities. Set for a given view if the 1813-- corresponding stream-oriented attribute has been defined by an 1814-- attribute definition clause. When such a clause occurs, a TSS is set 1815-- on the underlying full view; the flags are used to track visibility of 1816-- the attribute definition clause for partial or incomplete views. 1817 1818-- Has_Static_Discriminants (Flag211) 1819-- Defined in record subtypes constrained by discriminant values. Set if 1820-- all the discriminant values have static values, meaning that in the 1821-- case of a variant record, the component list can be trimmed down to 1822-- include only the components corresponding to these discriminants. 1823 1824-- Has_Storage_Size_Clause (Flag23) [implementation base type only] 1825-- Defined in task types and access types. It is set if a Storage_Size 1826-- clause is present for the type. Used to prevent multiple clauses for 1827-- one type. Note that this flag is initially cleared for a derived type 1828-- even though the Storage_Size for such a type is inherited from a 1829-- Storage_Size clause given for the parent type. Note that in the case 1830-- of access types, this flag is defined only in the root type, since a 1831-- storage size clause cannot be given to a derived type. 1832 1833-- Has_Stream_Size_Clause (Flag184) 1834-- Defined in all entities. It is set for types which have a Stream_Size 1835-- clause attribute. Used to prevent multiple Stream_Size clauses for a 1836-- given entity, and also whether it is necessary to check for a stream 1837-- size clause. 1838 1839-- Has_Task (Flag30) [base type only] 1840-- Defined in all type entities. Set on task types themselves, and also 1841-- (recursively) on any composite type which has a component for which 1842-- Has_Task is set. The meaning is that an allocator or declaration of 1843-- such an object must create the required tasks. Note: the flag is not 1844-- set on access types, even if they designate an object that Has_Task. 1845 1846-- Has_Thunks (Flag228) 1847-- Applies to E_Constant entities marked Is_Tag. True for secondary tag 1848-- referencing a dispatch table whose contents are pointers to thunks. 1849 1850-- Has_Unchecked_Union (Flag123) [base type only] 1851-- Defined in all type entities. Set on unchecked unions themselves 1852-- and (recursively) on any composite type which has a component for 1853-- which Has_Unchecked_Union is set. The meaning is that a comparison 1854-- operation for the type is not permitted. Note that the flag is not 1855-- set on access types, even if they designate an object that has 1856-- the flag Has_Unchecked_Union set. 1857 1858-- Has_Unknown_Discriminants (Flag72) 1859-- Defined in all entities. Set for types with unknown discriminants. 1860-- Types can have unknown discriminants either from their declaration or 1861-- through type derivation. The use of this flag exactly meets the spec 1862-- in RM 3.7(26). Note that all class-wide types are considered to have 1863-- unknown discriminants. Note that both Has_Discriminants and 1864-- Has_Unknown_Discriminants may be true for a type. Class-wide types and 1865-- their subtypes have unknown discriminants and can have declared ones 1866-- as well. Private types declared with unknown discriminants may have a 1867-- full view that has explicit discriminants, and both flag will be set 1868-- on the partial view, to insure that discriminants are properly 1869-- inherited in certain contexts. 1870 1871-- Has_Up_Level_Access (Flag215) 1872-- Defined in E_Variable and E_Constant entities. Set if the entity 1873-- is a local variable declared in a subprogram p and is accessed in 1874-- a subprogram nested inside p. Currently this flag is only set when 1875-- VM_Target /= No_VM, for efficiency, since only the .NET back-end 1876-- makes use of it to generate proper code for up-level references. 1877 1878-- Has_Volatile_Components (Flag87) [implementation base type only] 1879-- Defined in all types and objects. Set only for an array type or array 1880-- object if a valid pragma Volatile_Components or a valid pragma 1881-- Atomic_Components applies to the type or object. Note that in the case 1882-- of an object, this flag is only set on the object if there was an 1883-- explicit pragma for the object. In other words, the proper test for 1884-- whether an object has volatile components is to see if either the 1885-- object or its base type has this flag set. Note that in the case of a 1886-- type the pragma will be chained to the rep item chain of the first 1887-- subtype in the usual manner. 1888 1889-- Has_Xref_Entry (Flag182) 1890-- Defined in all entities. Set if an entity has an entry in the Xref 1891-- information generated in ali files. This is true for all source 1892-- entities in the extended main source file. It is also true of entities 1893-- in other packages that are referenced directly or indirectly from the 1894-- main source file (indirect reference occurs when the main source file 1895-- references an entity with a type reference. See package Lib.Xref for 1896-- further details). 1897 1898-- Hiding_Loop_Variable (Node8) 1899-- Defined in variables. Set only if a variable of a discrete type is 1900-- hidden by a loop variable in the same local scope, in which case 1901-- the Hiding_Loop_Variable field of the hidden variable points to 1902-- the E_Loop_Parameter entity doing the hiding. Used in processing 1903-- warning messages if the hidden variable turns out to be unused 1904-- or is referenced without being set. 1905 1906-- Homonym (Node4) 1907-- Defined in all entities. Link for list of entities that have the 1908-- same source name and that are declared in the same or enclosing 1909-- scopes. Homonyms in the same scope are overloaded. Used for name 1910-- resolution and for the generation of debugging information. 1911 1912-- Implementation_Base_Type (synthesized) 1913-- Applies to all entities. For types, similar to Base_Type, but never 1914-- returns a private type when applied to a non-private type. Instead in 1915-- this case, it always returns the Underlying_Type of the base type, so 1916-- that we still have a concrete type. For entities other than types, 1917-- returns the entity unchanged. 1918 1919-- In_Package_Body (Flag48) 1920-- Defined in package entities. Set on the entity that denotes the 1921-- package (the defining occurrence of the package declaration) while 1922-- analyzing and expanding the package body. Reset on completion of 1923-- analysis/expansion. 1924 1925-- In_Private_Part (Flag45) 1926-- Defined in all entities. Can be set only in package entities and 1927-- objects. For package entities, this flag is set to indicate that the 1928-- private part of the package is being analyzed. The flag is reset at 1929-- the end of the package declaration. For objects it indicates that the 1930-- declaration of the object occurs in the private part of a package. 1931 1932-- Initialization_Statements (Node28) 1933-- Defined in constants and variables. For a composite object initialized 1934-- initialized with an aggregate that has been converted to a sequence 1935-- of assignments, points to a block statement containing the 1936-- assignments. 1937 1938-- Inner_Instances (Elist23) 1939-- Defined in generic units. Contains element list of units that are 1940-- instantiated within the given generic. Used to diagnose circular 1941-- instantiations. 1942 1943-- Integrity_Level (Uint8) 1944-- Defined for E_Abstract_State entities. Contains the numerical value of 1945-- the integrity level state property. A value of Uint_0 designates a non 1946-- existent integrity. 1947 1948-- Interface_Alias (Node25) 1949-- Defined in subprograms that cover a primitive operation of an abstract 1950-- interface type. Can be set only if the Is_Hidden flag is also set, 1951-- since such entities are always hidden. Points to its associated 1952-- interface subprogram. It is used to register the subprogram in 1953-- secondary dispatch table of the interface (Ada 2005: AI-251). 1954 1955-- Interface_Name (Node21) 1956-- Defined in constants, variables, exceptions, functions, procedures, 1957-- packages, components (JGNAT only), discriminants (JGNAT only), and 1958-- access to subprograms (JGNAT only). Set to Empty unless an export, 1959-- import, or interface name pragma has explicitly specified an external 1960-- name, in which case it references an N_String_Literal node for the 1961-- specified external name. In the case of exceptions, the field is set 1962-- by Import_Exception/Export_Exception (which can be used in OpenVMS 1963-- versions only). Note that if this field is Empty, and Is_Imported 1964-- or Is_Exported is set, then the default interface name is the name 1965-- of the entity, cased in a manner that is appropriate to the system 1966-- in use. Note that Interface_Name is ignored if an address clause 1967-- is present (since it is meaningless in this case). 1968-- 1969-- An additional special case usage of this field is in JGNAT for 1970-- E_Component and E_Discriminant. JGNAT allows these entities to be 1971-- imported by specifying pragma Import within a component's containing 1972-- record definition. This supports interfacing to object fields defined 1973-- within Java classes, and such pragmas are generated by the jvm2ada 1974-- binding generator tool whenever it processes classes with public 1975-- object fields. A pragma Import for a component can define the 1976-- External_Name of the imported Java field (which is generally needed, 1977-- because Java names are case sensitive). 1978 1979-- Interfaces (Elist25) 1980-- Defined in record types and subtypes. List of abstract interfaces 1981-- implemented by a tagged type that are not already implemented by the 1982-- ancestors (Ada 2005: AI-251). 1983 1984-- Invariant_Procedure (synthesized) 1985-- Defined in types and subtypes. Set for private types if one or more 1986-- Invariant, or Invariant'Class, or inherited Invariant'Class aspects 1987-- apply to the type. Points to the entity for a procedure which checks 1988-- the invariant. This invariant procedure takes a single argument of the 1989-- given type, and returns if the invariant holds, or raises exception 1990-- Assertion_Error with an appropriate message if it does not hold. This 1991-- attribute is defined but always empty for private subtypes. This 1992-- attribute is also set for the corresponding full type. 1993-- 1994-- Note: the reason this is marked as a synthesized attribute is that the 1995-- way this is stored is as an element of the Subprograms_For_Type field. 1996 1997-- In_Use (Flag8) 1998-- Defined in packages and types. Set when analyzing a use clause for 1999-- the corresponding entity. Reset at end of corresponding declarative 2000-- part. The flag on a type is also used to determine the visibility of 2001-- the primitive operators of the type. 2002 2003-- Is_Abstract_Subprogram (Flag19) 2004-- Defined in all subprograms and entries. Set for abstract subprograms. 2005-- Always False for enumeration literals and entries. See also 2006-- Requires_Overriding. 2007 2008-- Is_Abstract_Type (Flag146) 2009-- Defined in all types. Set for abstract types. 2010 2011-- Is_Access_Constant (Flag69) 2012-- Defined in access types and subtypes. Indicates that the keyword 2013-- constant was present in the access type definition. 2014 2015-- Is_Access_Protected_Subprogram_Type (synthesized) 2016-- Applies to all types, true for named and anonymous access to 2017-- protected subprograms. 2018 2019-- Is_Access_Type (synthesized) 2020-- Applies to all entities, true for access types and subtypes 2021 2022-- Is_Ada_2005_Only (Flag185) 2023-- Defined in all entities, true if a valid pragma Ada_05 or Ada_2005 2024-- applies to the entity which specifically names the entity, indicating 2025-- that the entity is Ada 2005 only. Note that this flag is not set if 2026-- the entity is part of a unit compiled with the normal no-argument form 2027-- of pragma Ada_05 or Ada_2005. 2028 2029-- Is_Ada_2012_Only (Flag199) 2030-- Defined in all entities, true if a valid pragma Ada_12 or Ada_2012 2031-- applies to the entity which specifically names the entity, indicating 2032-- that the entity is Ada 2012 only. Note that this flag is not set if 2033-- the entity is part of a unit compiled with the normal no-argument form 2034-- of pragma Ada_12 or Ada_2012. 2035 2036-- Is_Aliased (Flag15) 2037-- Defined in all entities. Set for objects and types whose declarations 2038-- carry the keyword aliased, and on record components that have the 2039-- keyword. For Ada 2012, also applies to formal parameters. 2040 2041-- Is_AST_Entry (Flag132) 2042-- Defined in entry entities. Set if a valid pragma AST_Entry applies 2043-- to the entry. This flag can only be set in OpenVMS versions of GNAT. 2044-- Note: we also allow the flag to appear in entry families, but given 2045-- the current implementation of the pragma AST_Entry, this flag will 2046-- always be False in entry families. 2047 2048-- Is_Atomic (Flag85) 2049-- Defined in all type entities, and also in constants, components and 2050-- variables. Set if a pragma Atomic or Shared applies to the entity. 2051-- In the case of private and incomplete types, this flag is set in 2052-- both the partial view and the full view. 2053 2054-- Is_Array_Type (synthesized) 2055-- Applies to all entities, true for array types and subtypes 2056 2057-- Is_Asynchronous (Flag81) 2058-- Defined in all type entities and in procedure entities. Set 2059-- if a pragma Asynchronous applies to the entity. 2060 2061-- Is_Base_Type (synthesized) 2062-- Applies to type and subtype entities. True if entity is a base type 2063 2064-- Is_Bit_Packed_Array (Flag122) [implementation base type only] 2065-- Defined in all entities. This flag is set for a packed array type that 2066-- is bit packed (i.e. the component size is known by the front end and 2067-- is in the range 1-7, 9-15, 17-31, or 33-63). Is_Packed is always set 2068-- if Is_Bit_Packed_Array is set, but it is possible for Is_Packed to be 2069-- set without Is_Bit_Packed_Array for the case of an array having one or 2070-- more index types that are enumeration types with non-standard 2071-- enumeration representations. 2072 2073-- Is_Boolean_Type (synthesized) 2074-- Applies to all entities, true for boolean types and subtypes, 2075-- i.e. Standard.Boolean and all types ultimately derived from it. 2076 2077-- Is_Called (Flag102) 2078-- Defined in subprograms. Returns true if the subprogram is called 2079-- in the unit being compiled or in a unit in the context. Used for 2080-- inlining. 2081 2082-- Is_Character_Type (Flag63) 2083-- Defined in all entities. Set for character types and subtypes, 2084-- i.e. enumeration types that have at least one character literal. 2085 2086-- Is_Child_Unit (Flag73) 2087-- Defined in all entities. Set only for defining entities of program 2088-- units that are child units (but False for subunits). 2089 2090-- Is_Class_Wide_Type (synthesized) 2091-- Applies to all entities, true for class wide types and subtypes 2092 2093-- Is_Class_Wide_Equivalent_Type (Flag35) 2094-- Defined in record types and subtypes. Set to True, if the type acts 2095-- as a class-wide equivalent type, i.e. the Equivalent_Type field of 2096-- some class-wide subtype entity references this record type. 2097 2098-- Is_Compilation_Unit (Flag149) 2099-- Defined in all entities. Set if the entity is a package or subprogram 2100-- entity for a compilation unit other than a subunit (since we treat 2101-- subunits as part of the same compilation operation as the ultimate 2102-- parent, we do not consider them to be separate units for this flag). 2103 2104-- Is_Completely_Hidden (Flag103) 2105-- Defined in all entities. This flag can be set only for E_Discriminant 2106-- entities. This flag can be set only for girder discriminants of 2107-- untagged types. When set, the entity is a girder discriminant of a 2108-- derived untagged type which is not directly visible in the derived 2109-- type because the derived type or one of its ancestors have renamed the 2110-- discriminants in the root type. Note: there are girder discriminants 2111-- which are not Completely_Hidden (e.g. discriminants of a root type). 2112 2113-- Is_Composite_Type (synthesized) 2114-- Applies to all entities, true for all composite types and 2115-- subtypes. Either Is_Composite_Type or Is_Elementary_Type (but 2116-- not both) is true of any type. 2117 2118-- Is_Concurrent_Record_Type (Flag20) 2119-- Defined in record types and subtypes. Set if the type was created 2120-- by the expander to represent a task or protected type. For every 2121-- concurrent type, such as record type is constructed, and task and 2122-- protected objects are instances of this record type at runtime 2123-- (Gigi will replace declarations of the concurrent type using the 2124-- declarations of the corresponding record type). See package Exp_Ch9 2125-- for further details. 2126 2127-- Is_Concurrent_Type (synthesized) 2128-- Applies to all entities, true for task types and subtypes and for 2129-- protected types and subtypes. 2130 2131-- Is_Constant_Object (synthesized) 2132-- Applies to all entities, true for E_Constant, E_Loop_Parameter, and 2133-- E_In_Parameter entities. 2134 2135-- Is_Constrained (Flag12) 2136-- Defined in types or subtypes which may have index, discriminant 2137-- or range constraint (i.e. array types and subtypes, record types 2138-- and subtypes, string types and subtypes, and all numeric types). 2139-- Set if the type or subtype is constrained. 2140 2141-- Is_Constr_Subt_For_U_Nominal (Flag80) 2142-- Defined in all types and subtypes. Set true only for the constructed 2143-- subtype of an object whose nominal subtype is unconstrained. Note 2144-- that the constructed subtype itself will be constrained. 2145 2146-- Is_Constr_Subt_For_UN_Aliased (Flag141) 2147-- Defined in all types and subtypes. This flag can be set only if 2148-- Is_Constr_Subt_For_U_Nominal is also set. It indicates that in 2149-- addition the object concerned is aliased. This flag is used by 2150-- Gigi to determine whether a template must be constructed. 2151 2152-- Is_Constructor (Flag76) 2153-- Defined in function and procedure entities. Set if a pragma 2154-- CPP_Constructor applies to the subprogram. 2155 2156-- Is_Controlled (Flag42) [base type only] 2157-- Defined in all type entities. Indicates that the type is controlled, 2158-- i.e. is either a descendant of Ada.Finalization.Controlled or of 2159-- Ada.Finalization.Limited_Controlled. 2160 2161-- Is_Controlling_Formal (Flag97) 2162-- Defined in all Formal_Kind entities. Marks the controlling parameters 2163-- of dispatching operations. 2164 2165-- Is_CPP_Class (Flag74) 2166-- Defined in all type entities, set only for tagged types to which a 2167-- valid pragma Import (CPP, ...) or pragma CPP_Class has been applied. 2168 2169-- Is_Decimal_Fixed_Point_Type (synthesized) 2170-- Applies to all type entities, true for decimal fixed point 2171-- types and subtypes. 2172 2173-- Is_Descendent_Of_Address (Flag223) 2174-- Defined in all type and subtype entities. Indicates that a type is an 2175-- address type that is visibly a numeric type. Used for semantic checks 2176-- on VMS to remove ambiguities in universal integer expressions that may 2177-- have an address interpretation 2178 2179-- Is_Discrete_Type (synthesized) 2180-- Applies to all entities, true for all discrete types and subtypes 2181 2182-- Is_Discrete_Or_Fixed_Point_Type (synthesized) 2183-- Applies to all entities, true for all discrete types and subtypes 2184-- and all fixed-point types and subtypes. 2185 2186-- Is_Discrim_SO_Function (Flag176) 2187-- Defined in all entities. Set only in E_Function entities that Layout 2188-- creates to compute discriminant-dependent dynamic size/offset values. 2189 2190-- Is_Discriminal (synthesized) 2191-- Applies to all entities, true for renamings of discriminants. Such 2192-- entities appear as constants or IN parameters. 2193 2194-- Is_Dispatch_Table_Entity (Flag234) 2195-- Applies to all entities. Set to indicate to the backend that this 2196-- entity is associated with a dispatch table. 2197 2198-- Is_Dispatching_Operation (Flag6) 2199-- Defined in all entities. Set true for procedures, functions, 2200-- generic procedures and generic functions if the corresponding 2201-- operation is dispatching. 2202 2203-- Is_Dynamic_Scope (synthesized) 2204-- Applies to all Entities. Returns True if the entity is a dynamic 2205-- scope (i.e. a block, subprogram, task_type, entry 2206-- or extended return statement). 2207 2208-- Is_Elementary_Type (synthesized) 2209-- Applies to all entities, true for all elementary types and 2210-- subtypes. Either Is_Composite_Type or Is_Elementary_Type (but 2211-- not both) is true of any type. 2212 2213-- Is_Eliminated (Flag124) 2214-- Defined in type entities, subprogram entities, and object entities. 2215-- Indicates that the corresponding entity has been eliminated by use 2216-- of pragma Eliminate. Also used to mark subprogram entities whose 2217-- declaration and body are within unreachable code that is removed. 2218 2219-- Is_Enumeration_Type (synthesized) 2220-- Defined in all entities, true for enumeration types and subtypes 2221 2222-- Is_Entry (synthesized) 2223-- Applies to all entities, True only for entry and entry family 2224-- entities and False for all other entity kinds. 2225 2226-- Is_Entry_Formal (Flag52) 2227-- Defined in all entities. Set only for entry formals (which can 2228-- only be in, in-out or out parameters). This flag is used to speed 2229-- up the test for the need to replace references in Exp_Ch2. 2230 2231-- Is_Exported (Flag99) 2232-- Defined in all entities. Set if the entity is exported. For now we 2233-- only allow the export of constants, exceptions, functions, procedures 2234-- and variables, but that may well change later on. Exceptions can only 2235-- be exported in the OpenVMS and Java VM implementations of GNAT. 2236 2237-- Is_Finalizer (synthesized) 2238-- Applies to all entities, true for procedures containing finalization 2239-- code to process local or library level objects. 2240 2241-- Is_First_Subtype (Flag70) 2242-- Defined in all entities. True for first subtypes (RM 3.2.1(6)), 2243-- i.e. the entity in the type declaration that introduced the type. 2244-- This may be the base type itself (e.g. for record declarations and 2245-- enumeration type declarations), or it may be the first subtype of 2246-- an anonymous base type (e.g. for integer type declarations or 2247-- constrained array declarations). 2248 2249-- Is_Fixed_Point_Type (synthesized) 2250-- Applies to all entities, true for decimal and ordinary fixed 2251-- point types and subtypes 2252 2253-- Is_Floating_Point_Type (synthesized) 2254-- Applies to all entities, true for float types and subtypes 2255 2256-- Is_Formal (synthesized) 2257-- Applies to all entities, true for IN, IN OUT and OUT parameters 2258 2259-- Is_Formal_Object (synthesized) 2260-- Applies to all entities, true for generic IN and IN OUT parameters 2261 2262-- Is_Formal_Subprogram (Flag111) 2263-- Defined in all entities. Set for generic formal subprograms. 2264 2265-- Is_For_Access_Subtype (Flag118) 2266-- Defined in E_Private_Subtype and E_Record_Subtype entities. Means the 2267-- sole purpose of the type is to be designated by an Access_Subtype and 2268-- hence should not be expanded into components because the type may not 2269-- have been found or frozen yet. 2270 2271-- Is_Frozen (Flag4) 2272-- Defined in all type and subtype entities. Set if type or subtype has 2273-- been frozen. 2274 2275-- Is_Generic_Actual_Type (Flag94) 2276-- Defined in all type and subtype entities. Set in the subtype 2277-- declaration that renames the generic formal as a subtype of the 2278-- actual. Guarantees that the subtype is not static within the instance. 2279 2280-- Is_Generic_Instance (Flag130) 2281-- Defined in all entities. Set to indicate that the entity is an 2282-- instance of a generic unit, or a formal package (which is an instance 2283-- of the template). 2284 2285-- Is_Generic_Subprogram (synthesized) 2286-- Applies to all entities. Yields True for a generic subprogram 2287-- (generic function, generic subprogram), False for all other entities. 2288 2289-- Is_Generic_Type (Flag13) 2290-- Defined in all entities. Set for types which are generic formal types. 2291-- Such types have an Ekind that corresponds to their classification, so 2292-- the Ekind cannot be used to identify generic formal types. 2293 2294-- Is_Generic_Unit (synthesized) 2295-- Applies to all entities. Yields True for a generic unit (generic 2296-- package, generic function, generic procedure), and False for all 2297-- other entities. 2298 2299-- Is_Hidden (Flag57) 2300-- Defined in all entities. Set true for all entities declared in the 2301-- private part or body of a package. Also marks generic formals of a 2302-- formal package declared without a box. For library level entities, 2303-- this flag is set if the entity is not publicly visible. This flag 2304-- is reset when compiling the body of the package where the entity 2305-- is declared, when compiling the private part or body of a public 2306-- child unit, and when compiling a private child unit (see Install_ 2307-- Private_Declaration in sem_ch7). 2308 2309-- Is_Hidden_Open_Scope (Flag171) 2310-- Defined in all entities. Set true for a scope that contains the 2311-- instantiation of a child unit, and whose entities are not visible 2312-- during analysis of the instance. 2313 2314-- Is_Immediately_Visible (Flag7) 2315-- Defined in all entities. Set if entity is immediately visible, i.e. 2316-- is defined in some currently open scope (RM 8.3(4)). 2317 2318-- Is_Implementation_Defined (Flag254) 2319-- Defined in all entities. Set if a pragma Implementation_Defined is 2320-- applied to the pragma. Used to mark all implementation defined 2321-- identifiers in standard library packages, and to implement the 2322-- restriction No_Implementation_Identifiers. 2323 2324-- Is_Imported (Flag24) 2325-- Defined in all entities. Set if the entity is imported. For now we 2326-- only allow the import of exceptions, functions, procedures, packages. 2327-- and variables. Exceptions can only be imported in the OpenVMS and 2328-- Java VM implementations of GNAT. Packages and types can only be 2329-- imported in the Java VM implementation. 2330 2331-- Is_Incomplete_Or_Private_Type (synthesized) 2332-- Applies to all entities, true for private and incomplete types 2333 2334-- Is_Incomplete_Type (synthesized) 2335-- Applies to all entities, true for incomplete types and subtypes 2336 2337-- Is_Inlined (Flag11) 2338-- Defined in all entities. Set for functions and procedures which are 2339-- to be inlined. For subprograms created during expansion, this flag 2340-- may be set directly by the expander to request inlining. Also set 2341-- for packages that contain inlined subprograms, whose bodies must be 2342-- be compiled. Is_Inlined is also set on generic subprograms and is 2343-- inherited by their instances. It is also set on the body entities 2344-- of inlined subprograms. See also Has_Pragma_Inline. 2345 2346-- Is_Input_State (synthesized) 2347-- Applies to all entities, true for abstract states that are subject to 2348-- property Input. 2349 2350-- Is_Instantiated (Flag126) 2351-- Defined in generic packages and generic subprograms. Set if the unit 2352-- is instantiated from somewhere in the extended main source unit. This 2353-- flag is used to control warnings about the unit being uninstantiated. 2354-- Also set in a package that is used as an actual for a generic package 2355-- formal in an instantiation. Also set on a parent instance, in the 2356-- instantiation of a child, which is implicitly declared in the parent. 2357 2358-- Is_Integer_Type (synthesized) 2359-- Applies to all entities, true for integer types and subtypes 2360 2361-- Is_Interface (Flag186) 2362-- Defined in record types and subtypes. Set to indicate that the current 2363-- entity corresponds with an abstract interface. Because abstract 2364-- interfaces are conceptually a special kind of abstract tagged types 2365-- we represent them by means of tagged record types and subtypes 2366-- marked with this attribute. This allows us to reuse most of the 2367-- compiler support for abstract tagged types to implement interfaces 2368-- (Ada 2005: AI-251). 2369 2370-- Is_Internal (Flag17) 2371-- Defined in all entities. Set to indicate an entity created during 2372-- semantic processing (e.g. an implicit type, or a temporary). The 2373-- current uses of this flag are: 2374-- 2375-- 1) Internal entities (such as temporaries generated for the result 2376-- of an inlined function call or dummy variables generated for the 2377-- debugger). Set to indicate that they need not be initialized, even 2378-- when scalars are initialized or normalized; 2379-- 2380-- 2) Predefined primitives of tagged types. Set to mark that they 2381-- have specific properties: first they are primitives even if they 2382-- are not defined in the type scope (the freezing point is not 2383-- necessarily in the same scope), and second the predefined equality 2384-- can be overridden by a user-defined equality, no body will be 2385-- generated in this case. 2386-- 2387-- 3) Object declarations generated by the expander that are implicitly 2388-- imported or exported so that they can be marked in Sprint output. 2389-- 2390-- 4) Internal entities in the list of primitives of tagged types that 2391-- are used to handle secondary dispatch tables. These entities have 2392-- also the attribute Interface_Alias. 2393 2394-- Is_Interrupt_Handler (Flag89) 2395-- Defined in procedures. Set if a pragma Interrupt_Handler applies 2396-- to the procedure. The procedure must be parameterless, and on all 2397-- targets except AAMP it must be a protected procedure. 2398 2399-- Is_Intrinsic_Subprogram (Flag64) 2400-- Defined in functions and procedures. It is set if a valid pragma 2401-- Interface or Import is present for this subprogram specifying pragma 2402-- Intrinsic. Valid means that the name and profile of the subprogram 2403-- match the requirements of one of the recognized intrinsic subprograms 2404-- (see package Sem_Intr for details). Note: the value of Convention for 2405-- such an entity will be set to Convention_Intrinsic, but it is the 2406-- setting of Is_Intrinsic_Subprogram, NOT simply having convention set 2407-- to intrinsic, which causes intrinsic code to be generated. 2408 2409-- Is_Itype (Flag91) 2410-- Defined in all entities. Set to indicate that a type is an Itype, 2411-- which means that the declaration for the type does not appear 2412-- explicitly in the tree. Instead gigi will elaborate the type when it 2413-- is first used. Has_Delayed_Freeze can be set for Itypes, and the 2414-- meaning is that the first use (the one which causes the type to be 2415-- defined) will be the freeze node. Note that an important restriction 2416-- on Itypes is that the first use of such a type (the one that causes it 2417-- to be defined) must be in the same scope as the type. 2418 2419-- Is_Known_Non_Null (Flag37) 2420-- Defined in all entities. Relevant (and can be set True) only for 2421-- objects of an access type. It is set if the object is currently 2422-- known to have a non-null value (meaning that no access checks 2423-- are needed). The indication can for example come from assignment 2424-- of an access parameter or an allocator whose value is known non-null. 2425-- 2426-- Note: this flag is set according to the sequential flow of the 2427-- program, watching the current value of the variable. However, 2428-- this processing can miss cases of changing the value of an aliased 2429-- or constant object, so even if this flag is set, it should not 2430-- be believed if the variable is aliased or volatile. It would 2431-- be a little neater to avoid the flag being set in the first 2432-- place in such cases, but that's trickier, and there is only 2433-- one place that tests the value anyway. 2434-- 2435-- The flag is dynamically set and reset as semantic analysis and 2436-- expansion proceeds. Its value is meaningless once the tree is 2437-- fully constructed, since it simply indicates the last state. 2438-- Thus this flag has no meaning to the back end. 2439 2440-- Is_Known_Null (Flag204) 2441-- Defined in all entities. Relevant (and can be set True) only for 2442-- objects of an access type. It is set if the object is currently known 2443-- to have a null value (meaning that a dereference will surely raise 2444-- constraint error exception). The indication can come from an 2445-- assignment or object declaration. 2446-- 2447-- The comments above about sequential flow and aliased and volatile for 2448-- the Is_Known_Non_Null flag apply equally to the Is_Known_Null flag. 2449 2450-- Is_Known_Valid (Flag170) 2451-- Defined in all entities. Relevant for types (and subtype) and 2452-- for objects (and enumeration literals) of a discrete type. 2453-- 2454-- The purpose of this flag is to implement the requirement stated 2455-- in (RM 13.9.1(9-11)) which require that the use of possibly invalid 2456-- values may not cause programs to become erroneous. See the function 2457-- Checks.Expr_Known_Valid for further details. Note that the setting 2458-- is conservative, in the sense that if the flag is set, it must be 2459-- right. If the flag is not set, nothing is known about the validity. 2460-- 2461-- For enumeration literals, the flag is always set, since clearly 2462-- an enumeration literal represents a valid value. Range checks 2463-- where necessary will ensure that this valid value is appropriate. 2464-- 2465-- For objects, the flag indicates the state of knowledge about the 2466-- current value of the object. This may be modified during expansion, 2467-- and thus the final value is not relevant to gigi. 2468-- 2469-- For types and subtypes, the flag is set if all possible bit patterns 2470-- of length Object_Size (i.e. Esize of the type) represent valid values 2471-- of the type. In general for such tytpes, all values are valid, the 2472-- only exception being the case where an object of the type has an 2473-- explicit size that is greater than Object_Size. 2474-- 2475-- For non-discrete objects, the setting of the Is_Known_Valid flag is 2476-- not defined, and is not relevant, since the considerations of the 2477-- requirement in (RM 13.9.1(9-11)) do not apply. 2478-- 2479-- The flag is dynamically set and reset as semantic analysis and 2480-- expansion proceeds. Its value is meaningless once the tree is 2481-- fully constructed, since it simply indicates the last state. 2482-- Thus this flag has no meaning to the back end. 2483 2484-- Is_Limited_Composite (Flag106) 2485-- Defined in all entities. Set for composite types that have a limited 2486-- component. Used to enforce the rule that operations on the composite 2487-- type that depend on the full view of the component do not become 2488-- visible until the immediate scope of the composite type itself 2489-- (RM 7.3.1 (5)). 2490 2491-- Is_Limited_Interface (Flag197) 2492-- Defined in record types and subtypes. True for interface types, if 2493-- interface is declared limited, task, protected, or synchronized, or 2494-- is derived from a limited interface. 2495 2496-- Is_Limited_Record (Flag25) 2497-- Defined in all entities. Set to true for record (sub)types if the 2498-- record is declared to be limited. Note that this flag is not set 2499-- simply because some components of the record are limited. 2500 2501-- Is_Local_Anonymous_Access (Flag194) 2502-- Defined in access types. Set for an anonymous access type to indicate 2503-- that the type is created for a record component with an access 2504-- definition, an array component, or (pre-Ada 2012) a standalone object. 2505-- Such anonymous types have an accessibility level equal to that of the 2506-- declaration in which they appear, unlike the anonymous access types 2507-- that are created for access parameters, access discriminants, and 2508-- (as of Ada 2012) stand-alone objects. 2509 2510-- Is_Machine_Code_Subprogram (Flag137) 2511-- Defined in subprogram entities. Set to indicate that the subprogram 2512-- is a machine code subprogram (i.e. its body includes at least one 2513-- code statement). Also indicates that all necessary semantic checks 2514-- as required by RM 13.8(3) have been performed. 2515 2516-- Is_Modular_Integer_Type (synthesized) 2517-- Applies to all entities. True if entity is a modular integer type 2518 2519-- Is_Non_Static_Subtype (Flag109) 2520-- Defined in all type and subtype entities. It is set in some (but not 2521-- all) cases in which a subtype is known to be non-static. Before this 2522-- flag was added, the computation of whether a subtype was static was 2523-- entirely synthesized, by looking at the bounds, and the immediate 2524-- subtype parent. However, this method does not work for some Itypes 2525-- that have no parent set (and the only way to find the immediate 2526-- subtype parent is to go through the tree). For now, this flay is set 2527-- conservatively, i.e. if it is set then for sure the subtype is non- 2528-- static, but if it is not set, then the type may or may not be static. 2529-- Thus the test for a static subtype is that this flag is clear AND that 2530-- the bounds are static AND that the parent subtype (if available to be 2531-- tested) is static. Eventually we should make sure this flag is always 2532-- set right, at which point, these comments can be removed, and the 2533-- tests for static subtypes greatly simplified. 2534 2535-- Is_Null_Init_Proc (Flag178) 2536-- Defined in procedure entities. Set for generated init proc procedures 2537-- (used to initialize composite types), if the code for the procedure 2538-- is null (i.e. is a return and nothing else). Such null initialization 2539-- procedures are generated in case some client is compiled using the 2540-- Initialize_Scalars pragma, generating a call to this null procedure, 2541-- but there is no need to call such procedures within a compilation 2542-- unit, and this flag is used to suppress such calls. 2543 2544-- Is_Null_State (synthesized) 2545-- Applies to all entities, true for an abstract state declared with 2546-- keyword null. 2547 2548-- Is_Numeric_Type (synthesized) 2549-- Applies to all entities, true for all numeric types and subtypes 2550-- (integer, fixed, float). 2551 2552-- Is_Object (synthesized) 2553-- Applies to all entities, true for entities representing objects, 2554-- including generic formal parameters. 2555 2556-- Is_Obsolescent (Flag153) 2557-- Defined in all entities. Set for any entity for which a valid pragma 2558-- Obsolescent applies. 2559 2560-- Is_Only_Out_Parameter (Flag226) 2561-- Defined in formal parameter entities. Set if this parameter is the 2562-- only OUT parameter for this formal part. If there is more than one 2563-- out parameter, or if there is some other IN OUT parameter then this 2564-- flag is not set in any of them. Used in generation of warnings. 2565 2566-- Is_Optional_Parameter (Flag134) 2567-- Defined in parameter entities. Set if the parameter is specified as 2568-- optional by use of a First_Optional_Parameter argument to one of the 2569-- extended Import pragmas. Can only be set for OpenVMS versions of GNAT. 2570 2571-- Is_Ordinary_Fixed_Point_Type (synthesized) 2572-- Applies to all entities, true for ordinary fixed point types and 2573-- subtypes. 2574 2575-- Is_Output_State (synthesized) 2576-- Applies to all entities, true for abstract states that are subject to 2577-- property Output. 2578 2579-- Is_Package_Or_Generic_Package (synthesized) 2580-- Applies to all entities. True for packages and generic packages. 2581-- False for all other entities. 2582 2583-- Is_Package_Body_Entity (Flag160) 2584-- Defined in all entities. Set for entities defined at the top level 2585-- of a package body. Used to control externally generated names. 2586 2587-- Is_Packed (Flag51) [implementation base type only] 2588-- Defined in all type entities. This flag is set only for record and 2589-- array types which have a packed representation. There are three 2590-- cases which cause packing: 2591-- 2592-- 1. Explicit use of pragma Pack for an array of package components 2593-- 2. Explicit use of pragma Pack to pack a record 2594-- 4. Setting Component_Size of an array to a bit-packable value 2595-- 3. Indexing an array with a non-standard enumeration type. 2596-- 2597-- For records, Is_Packed is always set if Has_Pragma_Pack is set, 2598-- and can also be set on its own in a derived type which inherited 2599-- its packed status. 2600-- 2601-- For arrays, Is_Packed is set if an array is bit packed (i.e. the 2602-- component size is known at compile time and is 1-7, 9-15 or 17-31), 2603-- or if the array has one or more index types that are enumeration 2604-- types with non-standard representations (in GNAT, we store such 2605-- arrays compactly, using the Pos of the enumeration type value). 2606-- 2607-- As for the case of records, Is_Packed can be set on its own for a 2608-- derived type, with the same dual before/after freeze meaning. 2609-- Is_Packed can also be set as the result of an explicit component 2610-- size clause that specifies an appropriate component size. 2611-- 2612-- In the bit packed array case, Is_Bit_Packed_Array will be set in 2613-- the bit packed case once the array type is frozen. 2614-- 2615-- Before an array type is frozen, Is_Packed will always be set if 2616-- Has_Pragma_Pack is set. Before the freeze point, it is not possible 2617-- to know the component size, since the component type is not frozen 2618-- until the array type is frozen. Thus Is_Packed for an array type 2619-- before it is frozen means that packed is required. Then if it turns 2620-- out that the component size is not suitable for bit packing, the 2621-- Is_Packed flag gets turned off. 2622 2623-- Is_Packed_Array_Type (Flag138) 2624-- Defined in all entities. This flag is set on the entity for the type 2625-- used to implement a packed array (either a modular type, or a subtype 2626-- of Packed_Bytes{1,2,4} as appropriate). The flag is set if and only 2627-- if the type appears in the Packed_Array_Type field of some other type 2628-- entity. It is used by Gigi to activate the special processing for such 2629-- types (unchecked conversions that would not otherwise be allowed are 2630-- allowed for such types). If the Is_Packed_Array_Type flag is set in 2631-- an entity, then the Original_Array_Type field of this entity points 2632-- to the original array type for which this is the packed array type. 2633 2634-- Is_Potentially_Use_Visible (Flag9) 2635-- Defined in all entities. Set if entity is potentially use visible, 2636-- i.e. it is defined in a package that appears in a currently active 2637-- use clause (RM 8.4(8)). Note that potentially use visible entities 2638-- are not necessarily use visible (RM 8.4(9-11)). 2639 2640-- Is_Preelaborated (Flag59) 2641-- Defined in all entities, set in E_Package and E_Generic_Package 2642-- entities to which a pragma Preelaborate is applied, and also in 2643-- all entities within such packages. Note that the fact that this 2644-- flag is set does not necesarily mean that no elaboration code is 2645-- generated for the package. 2646 2647-- Is_Primitive (Flag218) 2648-- Defined in overloadable entities and in generic subprograms. Set to 2649-- indicate that this is a primitive operation of some type, which may 2650-- be a tagged type or a non-tagged type. Used to verify overriding 2651-- indicators in bodies. 2652 2653-- Is_Primitive_Wrapper (Flag195) 2654-- Defined in functions and procedures created by the expander to serve 2655-- as an indirection mechanism to overriding primitives of concurrent 2656-- types, entries and protected procedures. 2657 2658-- Is_Prival (synthesized) 2659-- Applies to all entities, true for renamings of private protected 2660-- components. Such entities appear as constants or variables. 2661 2662-- Is_Private_Composite (Flag107) 2663-- Defined in composite types that have a private component. Used to 2664-- enforce the rule that operations on the composite type that depend 2665-- on the full view of the component, do not become visible until the 2666-- immediate scope of the composite type itself (7.3.1 (5)). Both this 2667-- flag and Is_Limited_Composite are needed. 2668 2669-- Is_Private_Descendant (Flag53) 2670-- Defined in entities that can represent library units (packages, 2671-- functions, procedures). Set if the library unit is itself a private 2672-- child unit, or if it is the descendent of a private child unit. 2673 2674-- Is_Private_Primitive (Flag245) 2675-- Defined in subprograms. Set if the operation is a primitive of a 2676-- tagged type (procedure or function dispatching on result) whose 2677-- full view has not been seen. Used in particular for primitive 2678-- subprograms of a synchronized type declared between the two views 2679-- of the type, so that the wrapper built for such a subprogram can 2680-- be given the proper signature. 2681 2682-- Is_Private_Type (synthesized) 2683-- Applies to all entities, true for private types and subtypes, 2684-- as well as for record with private types as subtypes 2685 2686-- Is_Processed_Transient (Flag252) 2687-- Defined in entities of variables and constants. Set when a transient 2688-- object needs to be finalized and it has already been processed by the 2689-- transient scope machinery. This flag signals the general finalization 2690-- mechanism to ignore the transient object. 2691 2692-- Is_Protected_Component (synthesized) 2693-- Applicable to all entities, true if the entity denotes a private 2694-- component of a protected type. 2695 2696-- Is_Protected_Interface (synthesized) 2697-- Defined in types that are interfaces. True if interface is declared 2698-- protected, or is derived from protected interfaces. 2699 2700-- Is_Protected_Type (synthesized) 2701-- Applies to all entities, true for protected types and subtypes 2702 2703-- Is_Public (Flag10) 2704-- Defined in all entities. Set to indicate that an entity defined in 2705-- one compilation unit can be referenced from other compilation units. 2706-- If this reference causes a reference in the generated variable, for 2707-- example in the case of a variable name, then Gigi will generate an 2708-- appropriate external name for use by the linker. 2709 2710-- Is_Protected_Record_Type (synthesized) 2711-- Applies to all entities, true if Is_Concurrent_Record_Type is true and 2712-- Corresponding_Concurrent_Type is a protected type. 2713 2714-- Is_Pure (Flag44) 2715-- Defined in all entities. Set in all entities of a unit to which a 2716-- pragma Pure is applied, and also set for the entity of the unit 2717-- itself. In addition, this flag may be set for any other functions 2718-- or procedures that are known to be side effect free, so in the case 2719-- of subprograms, the Is_Pure flag may be used by the optimizer to 2720-- imply that it can assume freedom from side effects (other than those 2721-- resulting from assignment to out parameters, or to objects designated 2722-- by access parameters). 2723 2724-- Is_Pure_Unit_Access_Type (Flag189) 2725-- Defined in access type and subtype entities. Set if the type or 2726-- subtype appears in a pure unit. Used to give an error message at 2727-- freeze time if the access type has a storage pool. 2728 2729-- Is_RACW_Stub_Type (Flag244) 2730-- Defined in all types, true for the stub types generated for remote 2731-- access-to-class-wide types. 2732 2733-- Is_Raised (Flag224) 2734-- Defined in exception entities. Set if the entity is referenced by a 2735-- a raise statement. 2736 2737-- Is_Real_Type (synthesized) 2738-- Applies to all entities, true for real types and subtypes 2739 2740-- Is_Record_Type (synthesized) 2741-- Applies to all entities, true for record types and subtypes, 2742-- includes class-wide types and subtypes (which are also records) 2743 2744-- Is_Remote_Call_Interface (Flag62) 2745-- Defined in all entities. Set in E_Package and E_Generic_Package 2746-- entities to which a pragma Remote_Call_Interface is applied, and 2747-- also on entities declared in the visible part of such a package. 2748 2749-- Is_Remote_Types (Flag61) 2750-- Defined in all entities. Set in E_Package and E_Generic_Package 2751-- entities to which a pragma Remote_Types is applied, and also on 2752-- entities declared in the visible part of the spec of such a package. 2753-- Also set for types which are generic formal types to which the 2754-- pragma Remote_Access_Type applies. 2755 2756-- Is_Renaming_Of_Object (Flag112) 2757-- Defined in all entities, set only for a variable or constant for 2758-- which the Renamed_Object field is non-empty and for which the 2759-- renaming is handled by the front end, by macro substitution of 2760-- a copy of the (evaluated) name tree whereever the variable is used. 2761 2762-- Is_Return_Object (Flag209) 2763-- Defined in all object entities. True if the object is the return 2764-- object of an extended_return_statement; False otherwise. 2765 2766-- Is_Safe_To_Reevaluate (Flag249) 2767-- Defined in all entities. Set in variables that are initialized by 2768-- means of an assignment statement. When initialized their contents 2769-- never change and hence they can be seen by the backend as constants. 2770-- See also Is_True_Constant. 2771 2772-- Is_Scalar_Type (synthesized) 2773-- Applies to all entities, true for scalar types and subtypes 2774 2775-- Is_Shared_Passive (Flag60) 2776-- Defined in all entities. Set in E_Package and E_Generic_Package 2777-- entities to which a pragma Shared_Passive is applied, and also in 2778-- all entities within such packages. 2779 2780-- Is_Standard_Character_Type (synthesized) 2781-- Applies to all entities, true for types and subtypes whose root type 2782-- is one of the standard character types (Character, Wide_Character, 2783-- Wide_Wide_Character). 2784 2785-- Is_Statically_Allocated (Flag28) 2786-- Defined in all entities. This can only be set True for exception, 2787-- variable, constant, and type/subtype entities. If the flag is set, 2788-- then the variable or constant must be allocated statically rather 2789-- than on the local stack frame. For exceptions, the meaning is that 2790-- the exception data should be allocated statically (and indeed this 2791-- flag is always set for exceptions, since exceptions do not have 2792-- local scope). For a type, the meaning is that the type must be 2793-- elaborated at the global level rather than locally. No type marked 2794-- with this flag may depend on a local variable, or on any other type 2795-- which does not also have this flag set to True. For a variable or 2796-- or constant, if the flag is set, then the type of the object must 2797-- either be declared at the library level, or it must also have the 2798-- flag set (since to allocate the object statically, its type must 2799-- also be elaborated globally). 2800 2801-- Is_String_Type (synthesized) 2802-- Applies to all type entities. Determines if the given type is a 2803-- string type, i.e. it is directly a string type or string subtype, 2804-- or a string slice type, or an array type with one dimension and a 2805-- component type that is a character type. 2806 2807-- Is_Subprogram (synthesized) 2808-- Applies to all entities, true for function, procedure and operator 2809-- entities. 2810 2811-- Is_Synchronized_Interface (synthesized) 2812-- Defined in types that are interfaces. True if interface is declared 2813-- synchronized, task, or protected, or is derived from a synchronized 2814-- interface. 2815 2816-- Is_Tag (Flag78) 2817-- Defined in E_Component and E_Constant entities. For regular tagged 2818-- type this flag is set on the tag component (whose name is Name_uTag). 2819-- For CPP_Class tagged types, this flag marks the pointer to the main 2820-- vtable (i.e. the one to be extended by derivation). 2821 2822-- Is_Tagged_Type (Flag55) 2823-- Defined in all entities. Set for an entity for a tagged type. 2824 2825-- Is_Task_Interface (synthesized) 2826-- Defined in types that are interfaces. True if interface is declared as 2827-- a task interface, or if it is derived from task interfaces. 2828 2829-- Is_Task_Record_Type (synthesized) 2830-- Applies to all entities. True if Is_Concurrent_Record_Type 2831-- Corresponding_Concurrent_Type is a task type. 2832 2833-- Is_Task_Type (synthesized) 2834-- Applies to all entities. True for task types and subtypes 2835 2836-- Is_Thunk (Flag225) 2837-- Defined in all entities for subprograms (functions, procedures, and 2838-- operators). True for subprograms that are thunks, that is small 2839-- subprograms built by the expander for tagged types that cover 2840-- interface types. At run-time thunks displace the pointer to the object 2841-- (pointer named "this" in the C++ terminology) from a secondary 2842-- dispatch table to the primary dispatch table associated with a given 2843-- tagged type. Set by Expand_Interface_Thunk and used by Expand_Call to 2844-- handle extra actuals associated with accessibility level. 2845 2846-- Is_Trivial_Subprogram (Flag235) 2847-- Defined in all entities. Set in subprograms where either the body 2848-- consists of a single null statement, or the first or only statement 2849-- of the body raises an exception. This is used for suppressing certain 2850-- warnings, see Sem_Ch6.Analyze_Subprogram_Body discussion for details. 2851 2852-- Is_True_Constant (Flag163) 2853-- Defined in all entities for constants and variables. Set in constants 2854-- and variables which have an initial value specified but which are 2855-- never assigned, partially or in the whole. For variables, it means 2856-- that the variable was initialized but never modified, and hence can be 2857-- treated as a constant by the code generator. For a constant, it means 2858-- that the constant was not modified by generated code (e.g. to set a 2859-- discriminant in an init proc). Assignments by user or generated code 2860-- will reset this flag. See also Is_Safe_To_Reevaluate. 2861 2862-- Is_Type (synthesized) 2863-- Applies to all entities, true for a type entity 2864 2865-- Is_Unchecked_Union (Flag117) [implementation base type only] 2866-- Defined in all entities. Set only in record types to which the 2867-- pragma Unchecked_Union has been validly applied. 2868 2869-- Is_Underlying_Record_View (Flag246) [base type only] 2870-- Defined in all entities. Set only in record types that represent the 2871-- underlying record view. This view is built for derivations of types 2872-- with unknown discriminants; it is a record with the same structure 2873-- as its corresponding record type, but whose parent is the full view 2874-- of the parent in the original type extension. 2875 2876-- Is_Unsigned_Type (Flag144) 2877-- Defined in all types, but can be set only for discrete and fixed-point 2878-- type and subtype entities. This flag is only valid if the entity is 2879-- frozen. If set it indicates that the representation is known to be 2880-- unsigned (i.e. that no negative values appear in the range). This is 2881-- normally just a reflection of the lower bound of the subtype or base 2882-- type, but there is one case in which the setting is non-obvious, 2883-- namely the case of an unsigned subtype of a signed type from which 2884-- a further subtype is obtained using variable bounds. This further 2885-- subtype is still unsigned, but this cannot be determined by looking 2886-- at its bounds or the bounds of the corresponding base type. 2887 2888-- Is_Valued_Procedure (Flag127) 2889-- Defined in procedure entities. Set if an Import_Valued_Procedure 2890-- or Export_Valued_Procedure pragma applies to the procedure entity. 2891 2892-- Is_Visible_Formal (Flag206) 2893-- Defined in all entities. Set True for instances of the formals of a 2894-- formal package. Indicates that the entity must be made visible in the 2895-- body of the instance, to reproduce the visibility of the generic. 2896-- This simplifies visibility settings in instance bodies. 2897 2898-- Is_Visible_Lib_Unit (Flag116) 2899-- Defined in all (root or child) library unit entities. Once compiled, 2900-- library units remain chained to the entities in the parent scope, and 2901-- a separate flag must be used to indicate whether the names are visible 2902-- by selected notation, or not. 2903 2904-- Is_VMS_Exception (Flag133) 2905-- Defined in all entities. Set only for exception entities where the 2906-- exception was specified in an Import_Exception or Export_Exception 2907-- pragma with the VMS option for Form. See description of these pragmas 2908-- for details. This flag can only be set in OpenVMS versions of GNAT. 2909 2910-- Is_Volatile (Flag16) 2911-- Defined in all type entities, and also in constants, components and 2912-- variables. Set if a pragma Volatile applies to the entity. Also set 2913-- if pragma Shared or pragma Atomic applies to entity. In the case of 2914-- private or incomplete types, this flag is set in both the private 2915-- and full view. The flag is not set reliably on private subtypes, 2916-- and is always retrieved from the base type (but this is not a base- 2917-- type-only attribute because it applies to other entities). Note that 2918-- the back end should use Treat_As_Volatile, rather than Is_Volatile 2919-- to indicate code generation requirements for volatile variables. 2920-- Similarly, any front end test which is concerned with suppressing 2921-- optimizations on volatile objects should test Treat_As_Volatile 2922-- rather than testing this flag. 2923 2924-- Is_Volatile_State (synthesized) 2925-- Applies to all entities, true for abstract states that are subject to 2926-- property Volatile. 2927 2928-- Is_Wrapper_Package (synthesized) 2929-- Defined in package entities. Indicates that the package has been 2930-- created as a wrapper for a subprogram instantiation. 2931 2932-- Itype_Printed (Flag202) 2933-- Defined in all type and subtype entities. Set in Itypes if the Itype 2934-- has been printed by Sprint. This is used to avoid printing an Itype 2935-- more than once. 2936 2937-- Kill_Elaboration_Checks (Flag32) 2938-- Defined in all entities. Set by the expander to kill elaboration 2939-- checks which are known not to be needed. Equivalent in effect to 2940-- the use of pragma Suppress (Elaboration_Checks) for that entity 2941-- except that the effect is permanent and cannot be undone by a 2942-- subsequent pragma Unsuppress. 2943 2944-- Kill_Range_Checks (Flag33) 2945-- Defined in all entities. Equivalent in effect to the use of pragma 2946-- Suppress (Range_Checks) for that entity except that the result is 2947-- permanent and cannot be undone by a subsequent pragma Unsuppress. 2948-- This is currently only used in one odd situation in Sem_Ch3 for 2949-- record types, and it would be good to get rid of it??? 2950 2951-- Known_To_Have_Preelab_Init (Flag207) 2952-- Defined in all type and subtype entities. If set, then the type is 2953-- known to have preelaborable initialization. In the case of a partial 2954-- view of a private type, it is only possible for this to be set if a 2955-- pragma Preelaborable_Initialization is given for the type. For other 2956-- types, it is never set if the type does not have preelaborable 2957-- initialization, it may or may not be set if the type does have 2958-- preelaborable initialization. 2959 2960-- Last_Assignment (Node26) 2961-- Defined in entities for variables, and OUT or IN OUT formals. Set for 2962-- a local variable or formal to point to the left side of an assignment 2963-- statement assigning a value to the variable. Cleared if the value of 2964-- the entity is referenced. Used to warn about dubious assignment 2965-- statements whose value is not used. 2966 2967-- Last_Entity (Node20) 2968-- Defined in all entities which act as scopes to which a list of 2969-- associated entities is attached (blocks, class subtypes and types, 2970-- entries, functions, loops, packages, procedures, protected objects, 2971-- record types and subtypes, private types, task types and subtypes). 2972-- Points to the last entry in the list of associated entities chained 2973-- through the Next_Entity field. Empty if no entities are chained. 2974 2975-- Last_Formal (synthesized) 2976-- Applies to subprograms and subprogram types, and also in entries 2977-- and entry families. Returns last formal of the subprogram or entry. 2978-- The formals are the first entities declared in a subprogram or in 2979-- a subprogram type (the designated type of an Access_To_Subprogram 2980-- definition) or in an entry. 2981 2982-- Limited_View (Node23) 2983-- Defined in non-generic package entities that are not instances. Bona 2984-- fide package with the limited-view list through the first_entity and 2985-- first_private attributes. The elements of this list are the shadow 2986-- entities created for the types and local packages that are declared 2987-- in a package appearing in a limited_with clause (Ada 2005: AI-50217) 2988 2989-- Lit_Indexes (Node15) 2990-- Defined in enumeration types and subtypes. Non-empty only for the 2991-- case of an enumeration root type, where it contains the entity for 2992-- the generated indexes entity. See unit Exp_Imgv for full details of 2993-- the nature and use of this entity for implementing the Image and 2994-- Value attributes for the enumeration type in question. 2995 2996-- Lit_Strings (Node16) 2997-- Defined in enumeration types and subtypes. Non-empty only for the 2998-- case of an enumeration root type, where it contains the entity for 2999-- the literals string entity. See unit Exp_Imgv for full details of 3000-- the nature and use of this entity for implementing the Image and 3001-- Value attributes for the enumeration type in question. 3002 3003-- Loop_Entry_Attributes (Elist10) 3004-- Defined for loop statement scopes. The list contains all Loop_Entry 3005-- attribute references related to the target loop. 3006 3007-- Low_Bound_Tested (Flag205) 3008-- Defined in all entities. Currently this can only be set True for 3009-- formal parameter entries of a standard unconstrained one-dimensional 3010-- array or string type. Indicates that an explicit test of the low bound 3011-- of the formal appeared in the code, e.g. in a pragma Assert. If this 3012-- flag is set, warnings about assuming the index low bound to be one 3013-- are suppressed. 3014 3015-- Machine_Radix_10 (Flag84) 3016-- Defined in decimal types and subtypes, set if the Machine_Radix is 10, 3017-- as the result of the specification of a machine radix representation 3018-- clause. Note that it is possible for this flag to be set without 3019-- having Has_Machine_Radix_Clause True. This happens when a type is 3020-- derived from a type with a clause present. 3021 3022-- Master_Id (Node17) 3023-- Defined in access types and subtypes. Empty unless Has_Task is 3024-- set for the designated type, in which case it points to the entity 3025-- for the Master_Id for the access type master. Also set for access-to- 3026-- limited-class-wide types whose root may be extended with task 3027-- components, and for access-to-limited-interfaces because they can be 3028-- used to reference tasks implementing such interface. 3029 3030-- Materialize_Entity (Flag168) 3031-- Defined in all entities. Set only for renamed obects which should be 3032-- materialized for debugging purposes. This means that a memory location 3033-- containing the renamed address should be allocated. This is needed so 3034-- that the debugger can find the entity. 3035 3036-- Mechanism (Uint8) (returned as Mechanism_Type) 3037-- Defined in functions and non-generic formal parameters. Indicates 3038-- the mechanism to be used for the function return or for the formal 3039-- parameter. See separate section on passing mechanisms. This field 3040-- is also set (to the default value of zero) in a subprogram body 3041-- entity but not used in this context. 3042 3043-- Modulus (Uint17) [base type only] 3044-- Defined in modular types. Contains the modulus. For the binary case, 3045-- this will be a power of 2, but if Non_Binary_Modulus is set, then it 3046-- will not be a power of 2. 3047 3048-- Must_Be_On_Byte_Boundary (Flag183) 3049-- Defined in entities for types and subtypes. Set if objects of the type 3050-- must always be allocated on a byte boundary (more accurately a storage 3051-- unit boundary). The front end checks that component clauses respect 3052-- this rule, and the back end ensures that record packing does not 3053-- violate this rule. Currently the flag is set only for packed arrays 3054-- longer than 64 bits where the component size is not a power of 2. 3055 3056-- Must_Have_Preelab_Init (Flag208) 3057-- Defined in entities for types and subtypes. Set in the full type of a 3058-- private type or subtype if a pragma Has_Preelaborable_Initialization 3059-- is present for the private type. Used to check that the full type has 3060-- preelaborable initialization at freeze time (this has to be deferred 3061-- to the freeze point because of the rule about overriding Initialize). 3062 3063-- Needs_Debug_Info (Flag147) 3064-- Defined in all entities. Set if the entity requires normal debugging 3065-- information to be generated. This is true of all entities that have 3066-- Comes_From_Source set, and also transitively for entities associated 3067-- with such components (e.g. their types). It is true for all entities 3068-- in Debug_Generated_Code mode (-gnatD switch). This is the flag that 3069-- the back end should check to determine whether or not to generate 3070-- debugging information for an entity. Note that callers should always 3071-- use Sem_Util.Set_Debug_Info_Needed, rather than Set_Needs_Debug_Info, 3072-- so that the flag is set properly on subsidiary entities. 3073 3074-- Needs_No_Actuals (Flag22) 3075-- Defined in callable entities (subprograms, entries, access to 3076-- subprograms) which can be called without actuals because all of 3077-- their formals (if any) have default values. This flag simplifies the 3078-- resolution of the syntactic ambiguity involving a call to these 3079-- entities when the return type is an array type, and a call can be 3080-- interpreted as an indexing of the result of the call. It is also 3081-- used to resolve various cases of entry calls. 3082 3083-- Never_Set_In_Source (Flag115) 3084-- Defined in all entities, but can be set only for variables and 3085-- parameters. This flag is set if the object is never assigned a value 3086-- in user source code, either by assignment or by being used as an out 3087-- or in out parameter. Note that this flag is not reset from using an 3088-- initial value, so if you want to test for this case as well, test the 3089-- Has_Initial_Value flag also. 3090-- 3091-- This flag is only for the purposes of issuing warnings, it must not 3092-- be used by the code generator to indicate that the variable is in 3093-- fact a constant, since some assignments in generated code do not 3094-- count (for example, the call to an init proc to assign some but 3095-- not all of the fields in a partially initialized record). The code 3096-- generator should instead use the flag Is_True_Constant. 3097-- 3098-- For the purposes of this warning, the default assignment of 3099-- access variables to null is not considered the assignment of 3100-- of a value (so the warning can be given for code that relies 3101-- on this initial null value, when no other value is ever set). 3102-- 3103-- In variables and out parameters, if this flag is set after full 3104-- processing of the corresponding declarative unit, it indicates that 3105-- the variable or parameter was never set, and a warning message can 3106-- be issued. 3107-- 3108-- Note: this flag is initially set, and then cleared on encountering 3109-- any construct that might conceivably legitimately set the value. 3110-- Thus during the analysis of a declarative region and its associated 3111-- statement sequence, the meaning of the flag is "not set yet", and 3112-- once this analysis is complete the flag means "never assigned". 3113 3114-- Note: for variables appearing in package declarations, this flag 3115-- is never set. That is because there is no way to tell if some 3116-- client modifies the variable (or in the case of variables in the 3117-- private part, if some child unit modifies the variables). 3118 3119-- Note: in the case of renamed objects, the flag must be set in the 3120-- ultimate renamed object. Clients noting a possible modification 3121-- should use the Note_Possible_Modification procedure in Sem_Util 3122-- rather than Set_Never_Set_In_Source precisely to deal properly with 3123-- the renaming possibility. 3124 3125-- Next_Component (synthesized) 3126-- Applies to record components. Returns the next component by following 3127-- the chain of declared entities until one is found which corresponds to 3128-- a component (Ekind is E_Component). Any internal types generated from 3129-- the subtype indications of the record components are skipped. Returns 3130-- Empty if no more components. 3131 3132-- Next_Component_Or_Discriminant (synthesized) 3133-- Similar to Next_Component, but includes components and discriminants 3134-- so the input can have either E_Component or E_Discriminant, and the 3135-- same is true for the result. Returns Empty if no more components or 3136-- discriminants in the record. 3137 3138-- Next_Discriminant (synthesized) 3139-- Applies to discriminants returned by First/Next_Discriminant. 3140-- Returns the next language-defined (ie: perhaps non-girder) 3141-- discriminant by following the chain of declared entities as long as 3142-- the kind of the entity corresponds to a discriminant. Note that the 3143-- discriminants might be the only components of the record. 3144-- Returns Empty if there are no more. 3145 3146-- Next_Entity (Node2) 3147-- Defined in all entities. The entities of a scope are chained, with 3148-- the head of the list being in the First_Entity field of the scope 3149-- entity. All entities use the Next_Entity field as a forward pointer 3150-- for this list, with Empty indicating the end of the list. Since this 3151-- field is in the base part of the entity, the access routines for this 3152-- field are in Sinfo. 3153 3154-- Next_Formal (synthesized) 3155-- Applies to the entity for a formal parameter. Returns the next 3156-- formal parameter of the subprogram or subprogram type. Returns 3157-- Empty if there are no more formals. 3158 3159-- Next_Formal_With_Extras (synthesized) 3160-- Applies to the entity for a formal parameter. Returns the next 3161-- formal parameter of the subprogram or subprogram type. Returns 3162-- Empty if there are no more formals. The list returned includes 3163-- all the extra formals (see description of Extra_Formal field) 3164 3165-- Next_Index (synthesized) 3166-- Applies to array types and subtypes and to string types and 3167-- subtypes. Yields the next index. The first index is obtained by 3168-- using the First_Index attribute, and then subsequent indexes are 3169-- obtained by applying Next_Index to the previous index. Empty is 3170-- returned to indicate that there are no more indexes. Note that 3171-- unlike most attributes in this package, Next_Index applies to 3172-- nodes for the indexes, not to entities. 3173 3174-- Next_Inlined_Subprogram (Node12) 3175-- Defined in subprograms. Used to chain inlined subprograms used in 3176-- the current compilation, in the order in which they must be compiled 3177-- by Gigi to insure that all inlinings are performed. 3178 3179-- Next_Literal (synthesized) 3180-- Applies to enumeration literals, returns the next literal, or 3181-- Empty if applied to the last literal. This is actually a synonym 3182-- for Next, but its use is preferred in this context. 3183 3184-- Non_Binary_Modulus (Flag58) [base type only] 3185-- Defined in all subtype and type entities. Set for modular integer 3186-- types if the modulus value is other than a power of 2. 3187 3188-- Non_Limited_View (Node17) 3189-- Defined in incomplete types that are the shadow entities created 3190-- when analyzing a limited_with_clause (Ada 2005: AI-50217). Points to 3191-- the defining entity in the original declaration. 3192 3193-- Nonzero_Is_True (Flag162) [base type only] 3194-- Defined in enumeration types. True if any non-zero value is to be 3195-- interpreted as true. Currently this is set true for derived Boolean 3196-- types which have a convention of C, C++ or Fortran. 3197 3198-- No_Pool_Assigned (Flag131) [root type only] 3199-- Defined in access types. Set if a storage size clause applies to the 3200-- variable with a static expression value of zero. This flag is used to 3201-- generate errors if any attempt is made to allocate or free an instance 3202-- of such an access type. This is set only in the root type, since 3203-- derived types must have the same pool. 3204 3205-- No_Return (Flag113) 3206-- Defined in all entities. Always false except in the case of procedures 3207-- and generic procedures for which a pragma No_Return is given. 3208 3209-- Normalized_First_Bit (Uint8) 3210-- Defined in components and discriminants. Indicates the normalized 3211-- value of First_Bit for the component, i.e. the offset within the 3212-- lowest addressed storage unit containing part or all of the field. 3213-- Set to No_Uint if no first bit position is assigned yet. 3214 3215-- Normalized_Position (Uint14) 3216-- Defined in components and discriminants. Indicates the normalized 3217-- value of Position for the component, i.e. the offset in storage 3218-- units from the start of the record to the lowest addressed storage 3219-- unit containing part or all of the field. 3220 3221-- Normalized_Position_Max (Uint10) 3222-- Defined in components and discriminants. For almost all cases, this 3223-- is the same as Normalized_Position. The one exception is for the case 3224-- of a discriminated record containing one or more arrays whose length 3225-- depends on discriminants. In this case, the Normalized_Position_Max 3226-- field represents the maximum possible value of Normalized_Position 3227-- assuming min/max values for discriminant subscripts in all fields. 3228-- This is used by Layout in front end layout mode to properly computed 3229-- the maximum size such records (needed for allocation purposes when 3230-- there are default discriminants, and also for the 'Size value). 3231 3232-- No_Strict_Aliasing (Flag136) [base type only] 3233-- Defined in access types. Set to direct the back end to avoid any 3234-- optimizations based on an assumption about the aliasing status of 3235-- objects designated by the access type. For the case of the gcc 3236-- back end, the effect is as though all references to objects of 3237-- the type were compiled with -fno-strict-aliasing. This flag is 3238-- set if an unchecked conversion with the access type as a target 3239-- type occurs in the same source unit as the declaration of the 3240-- access type, or if an explicit pragma No_Strict_Aliasing applies. 3241 3242-- Number_Dimensions (synthesized) 3243-- Applies to array types and subtypes. Returns the number of dimensions 3244-- of the array type or subtype as a value of type Pos. 3245 3246-- Number_Entries (synthesized) 3247-- Applies to concurrent types. Returns the number of entries that are 3248-- declared within the task or protected definition for the type. 3249 3250-- Number_Formals (synthesized) 3251-- Applies to subprograms and subprogram types. Yields the number of 3252-- formals as a value of type Pos. 3253 3254-- OK_To_Rename (Flag247) 3255-- Defined only in entities for variables. If this flag is set, it 3256-- means that if the entity is used as the initial value of an object 3257-- declaration, the object declaration can be safely converted into a 3258-- renaming to avoid an extra copy. This is set for variables which are 3259-- generated by the expander to hold the result of evaluating some 3260-- expression. Most notably, the local variables used to store the result 3261-- of concatenations are so marked (see Exp_Ch4.Expand_Concatenate). It 3262-- is only worth setting this flag for composites, since for primitive 3263-- types, it is cheaper to do the copy. 3264 3265-- OK_To_Reorder_Components (Flag239) [base type only] 3266-- Defined in record types. Set if the back end is permitted to reorder 3267-- the components. If not set, the record must be layed out in the order 3268-- in which the components are declared textually. Currently this flag 3269-- can only be set by debug switches. 3270 3271-- Optimize_Alignment_Space (Flag241) 3272-- Defined in type, subtype, variable, and constant entities. This 3273-- flag records that the type or object is to be layed out in a manner 3274-- consistent with Optimize_Alignment (Space) mode. The compiler and 3275-- binder ensure a consistent view of any given type or object. If pragma 3276-- Optimize_Alignment (Off) mode applies to the type/object, then neither 3277-- of the flags Optimize_Alignment_Space/Optimize_Alignment_Time is set. 3278 3279-- Optimize_Alignment_Time (Flag242) 3280-- Defined in type, subtype, variable, and constant entities. This 3281-- flag records that the type or object is to be layed out in a manner 3282-- consistent with Optimize_Alignment (Time) mode. The compiler and 3283-- binder ensure a consistent view of any given type or object. If pragma 3284-- Optimize_Alignment (Off) mode applies to the type/object, then neither 3285-- of the flags Optimize_Alignment_Space/Optimize_Alignment_Time is set. 3286 3287-- Original_Access_Type (Node26) 3288-- Defined in E_Access_Subprogram_Type entities. Set only if the access 3289-- type was generated by the expander as part of processing an access 3290-- to protected subprogram type. Points to the access to protected 3291-- subprogram type. 3292 3293-- Original_Array_Type (Node21) 3294-- Defined in modular types and array types and subtypes. Set only 3295-- if the Is_Packed_Array_Type flag is set, indicating that the type 3296-- is the implementation type for a packed array, and in this case it 3297-- points to the original array type for which this is the packed 3298-- array implementation type. 3299 3300-- Original_Record_Component (Node22) 3301-- Defined in components, including discriminants. The usage depends 3302-- on whether the record is a base type and whether it is tagged. 3303-- 3304-- In base tagged types: 3305-- When the component is inherited in a record extension, it points 3306-- to the original component (the entity of the ancestor component 3307-- which is not itself inherited) otherwise it points to itself. 3308-- Gigi uses this attribute to implement the automatic dereference in 3309-- the extension and to apply the transformation: 3310-- 3311-- Rec_Ext.Comp -> Rec_Ext.Parent. ... .Parent.Comp 3312-- 3313-- In base non-tagged types: 3314-- Always points to itself except for non-girder discriminants, where 3315-- it points to the girder discriminant it renames. 3316-- 3317-- In subtypes (tagged and untagged): 3318-- Points to the component in the base type. 3319 3320-- Overlays_Constant (Flag243) 3321-- Defined in all entities. Set only for a variable for which there is 3322-- an address clause which causes the variable to overlay a constant. 3323 3324-- Overridden_Operation (Node26) 3325-- Defined in subprograms. For overriding operations, points to the 3326-- user-defined parent subprogram that is being overridden. Note: this 3327-- attribute uses the same field as Static_Initialization. The latter 3328-- is only defined for internal initialization procedures, for which 3329-- Overridden_Operation is irrelevant. Thus this attribute must not be 3330-- set for init_procs. 3331 3332-- Package_Instantiation (Node26) 3333-- Defined in packages and generic packages. When defined, this field 3334-- references an N_Generic_Instantiation node associated with an 3335-- instantiated package. In the case where the referenced node has 3336-- been rewritten to an N_Package_Specification, the instantiation 3337-- node is available from the Original_Node field of the package spec 3338-- node. This is currently not guaranteed to be set in all cases, but 3339-- when set, the field is used in Get_Package_Instantiation_Node as 3340-- one of the means of obtaining the instantiation node. Eventually 3341-- it should be set in all cases, including package entities associated 3342-- with formal packages. ??? 3343 3344-- Packed_Array_Type (Node23) 3345-- Defined in array types and subtypes, including the string literal 3346-- subtype case, if the corresponding type is packed (either bit packed 3347-- or packed to eliminate holes in non-contiguous enumeration type index 3348-- types). References the type used to represent the packed array, which 3349-- is either a modular type for short static arrays, or an array of 3350-- System.Unsigned. Note that in some situations (internal types, and 3351-- references to fields of variant records), it is not always possible 3352-- to construct this type in advance of its use. If Packed_Array_Type 3353-- is empty, then the necessary type is declared on the fly for each 3354-- reference to the array. 3355 3356-- Parameter_Mode (synthesized) 3357-- Applies to formal parameter entities. This is a synonym for Ekind, 3358-- used when obtaining the formal kind of a formal parameter (the result 3359-- is one of E_[In/Out/In_Out]_Parameter) 3360 3361-- Parent_Subtype (Node19) [base type only] 3362-- Defined in E_Record_Type. Set only for derived tagged types, in which 3363-- case it points to the subtype of the parent type. This is the type 3364-- that is used as the Etype of the _parent field. 3365 3366-- Postcondition_Proc (Node8) 3367-- Defined only in procedure entities, saves the entity of the generated 3368-- postcondition proc if one is present, otherwise is set to Empty. Used 3369-- to generate the call to this procedure in case the expander inserts 3370-- implicit return statements. 3371 3372-- PPC_Wrapper (Node25) 3373-- Defined in entries and entry families. Set only if pre- or post- 3374-- conditions are present. The precondition_wrapper body is the original 3375-- entry call, decorated with the given precondition for the entry. 3376 3377-- Predicate_Function (synthesized) 3378-- Defined in all types. Set for types for which (Has_Predicates is True) 3379-- and for which a predicate procedure has been built that tests that the 3380-- specified predicates are True. Contains the entity for the function 3381-- which takes a single argument of the given type, and returns True if 3382-- the predicate holds and False if it does not. 3383-- 3384-- Note: the reason this is marked as a synthesized attribute is that the 3385-- way this is stored is as an element of the Subprograms_For_Type field. 3386 3387-- Primitive_Operations (synthesized) 3388-- Defined in concurrent types, tagged record types and subtypes, tagged 3389-- private types and tagged incomplete types. For concurrent types whose 3390-- Corresponding_Record_Type (CRT) is available, returns the list of 3391-- Direct_Primitive_Operations of its CRT; otherwise returns No_Elist. 3392-- For all the other types returns the Direct_Primitive_Operations. 3393 3394-- Prival (Node17) 3395-- Defined in private components of protected types. Refers to the entity 3396-- of the component renaming declaration generated inside protected 3397-- subprograms, entries or barrier functions. 3398 3399-- Prival_Link (Node20) 3400-- Defined in constants and variables which rename private components of 3401-- protected types. Set to the original private component. 3402 3403-- Private_Dependents (Elist18) 3404-- Defined in private (sub)types. Records the subtypes of the private 3405-- type, derivations from it, and records and arrays with components 3406-- dependent on the type. 3407-- 3408-- The subtypes are traversed when installing and deinstalling (the full 3409-- view of) a private type in order to ensure correct view of the 3410-- subtypes. 3411-- 3412-- Used in similar fashion for incomplete types: holds list of subtypes 3413-- of these incomplete types that have discriminant constraints. The 3414-- full views of these subtypes are constructed when the full view of 3415-- the incomplete type is processed. 3416 3417-- In addition, if the incomplete type is the designated type in an 3418-- access definition for an access parameter, the operation may be 3419-- a dispatching primitive operation, which is only known when the full 3420-- declaration of the type is seen. Subprograms that have such an 3421-- access parameter are also placed in the list of private_dependents. 3422 3423-- Private_View (Node22) 3424-- For each private type, three entities are allocated, the private view, 3425-- the full view, and the shadow entity. The shadow entity contains a 3426-- copy of the private view and is used for restoring the proper private 3427-- view after a region in which the full view is visible (and is copied 3428-- into the entity normally used for the private view during this period 3429-- of visibility). The Private_View field is self-referential when the 3430-- private view lives in its normal entity, but in the copy that is made 3431-- in the shadow entity, it points to the proper location in which to 3432-- restore the private view saved in the shadow. 3433 3434-- Protected_Formal (Node22) 3435-- Defined in formal parameters (in, in out and out parameters). Used 3436-- only for formals of protected operations. References corresponding 3437-- formal parameter in the unprotected version of the operation that 3438-- is created during expansion. 3439 3440-- Protected_Body_Subprogram (Node11) 3441-- Defined in protected operations. References the entity for the 3442-- subprogram which implements the body of the operation. 3443 3444-- Protection_Object (Node23) 3445-- Applies to protected entries, entry families and subprograms. Denotes 3446-- the entity which is used to rename the _object component of protected 3447-- types. 3448 3449-- Reachable (Flag49) 3450-- Defined in labels. The flag is set over the range of statements in 3451-- which a goto to that label is legal. 3452 3453-- Referenced (Flag156) 3454-- Defined in all entities. Set if the entity is referenced, except for 3455-- the case of an appearance of a simple variable that is not a renaming 3456-- as the left side of an assignment in which case Referenced_As_LHS is 3457-- set instead, or a similar appearance as an out parameter actual, in 3458-- which case Referenced_As_Out_Parameter is set. 3459 3460-- Referenced_As_LHS (Flag36): 3461-- Defined in all entities. This flag is set instead of Referenced if a 3462-- simple variable that is not a renaming appears as the left side of an 3463-- assignment. The reason we distinguish this kind of reference is that 3464-- we have a separate warning for variables that are only assigned and 3465-- never read. 3466 3467-- Referenced_As_Out_Parameter (Flag227): 3468-- Defined in all entities. This flag is set instead of Referenced if a 3469-- simple variable that is not a renaming appears as an actual for an out 3470-- formal. The reason we distinguish this kind of reference is that 3471-- we have a separate warning for variables that are only assigned and 3472-- never read, and out parameters are a special case. 3473 3474-- Refined_State (Node9) 3475-- Defined in E_Abstract_State entities. Contains the entity of the 3476-- abstract state completion which is usually foung in package bodies. 3477 3478-- Register_Exception_Call (Node20) 3479-- Defined in exception entities. When an exception is declared, 3480-- a call is expanded to Register_Exception. This field points to 3481-- the expanded N_Procedure_Call_Statement node for this call. It 3482-- is used for Import/Export_Exception processing to modify the 3483-- register call to make appropriate entries in the special tables 3484-- used for handling these pragmas at runtime. 3485 3486-- Related_Array_Object (Node25) 3487-- Defined in array types and subtypes. Used only for the base type 3488-- and subtype created for an anonymous array object. Set to point 3489-- to the entity of the corresponding array object. Currently used 3490-- only for type-related error messages. 3491 3492-- Related_Expression (Node24) 3493-- Defined in variables and types. Set only for internally generated 3494-- entities, where it may be used to denote the source expression whose 3495-- elaboration created the variable declaration. If set, it is used 3496-- for generating clearer messages from CodePeer. 3497-- 3498-- Shouldn't it also be used for the same purpose in errout? It seems 3499-- odd to have two mechanisms here??? 3500 3501-- Related_Instance (Node15) 3502-- Defined in the wrapper packages created for subprogram instances. 3503-- The internal subprogram that implements the instance is inside the 3504-- wrapper package, but for debugging purposes its external symbol 3505-- must correspond to the name and scope of the related instance. 3506 3507-- Related_Type (Node27) 3508-- Defined in components, constants and variables. Set when there is an 3509-- associated dispatch table to point to entities containing primary or 3510-- secondary tags. Not set in the _tag component of record types. 3511 3512-- Relative_Deadline_Variable (Node26) [implementation base type only] 3513-- Defined in task type entities. This flag is set if a valid and 3514-- effective pragma Relative_Deadline applies to the base type. Points 3515-- to the entity for a variable that is created to hold the value given 3516-- in a Relative_Deadline pragma for a task type. 3517 3518-- Renamed_Entity (Node18) 3519-- Defined in exceptions, packages, subprograms and generic units. Set 3520-- for entities that are defined by a renaming declaration. Denotes the 3521-- renamed entity, or transitively the ultimate renamed entity if 3522-- there is a chain of renaming declarations. Empty if no renaming. 3523 3524-- Renamed_In_Spec (Flag231) 3525 3526-- Defined in package entities. If a package renaming occurs within 3527-- a package spec, then this flag is set on the renamed package. The 3528-- purpose is to prevent a warning about unused entities in the renamed 3529-- package. Such a warning would be inappropriate since clients of the 3530-- package can see the entities in the package via the renaming. 3531 3532-- Renamed_Object (Node18) 3533-- Defined in all objects (constants, variables, components, formal 3534-- parameters, generic formal parameters, and loop parameters). 3535-- ??? Defined in discriminants? 3536-- Set non-Empty if the object was declared by a renaming declaration, 3537-- in which case it references the tree node for the name of the renamed 3538-- object. This is only possible for the variable and constant cases. 3539-- For formal parameters, this field is used in the course of inline 3540-- expansion, to map the formals of a subprogram into the corresponding 3541-- actuals. For formals of a task entry, it denotes the local renaming 3542-- that replaces the actual within the accept statement. The field is 3543-- Empty otherwise (it is always empty for loop parameters). 3544 3545-- Renaming_Map (Uint9) 3546-- Defined in generic subprograms, generic packages, and their 3547-- instances. Also defined in the instances of the corresponding 3548-- bodies. Denotes the renaming map (generic entities => instance 3549-- entities) used to construct the instance by givin an index into 3550-- the tables used to represent these maps. See Sem_Ch12 for further 3551-- details. The maps for package instances are also used when the 3552-- instance is the actual corresponding to a formal package. 3553 3554-- Requires_Overriding (Flag213) 3555-- Defined in all subprograms and entries. Set for subprograms that 3556-- require overriding as defined by RM-2005-3.9.3(6/2). Note that this 3557-- is True only for implicitly declare subprograms; it is not set on the 3558-- parent type's subprogram. See also Is_Abstract_Subprogram. 3559 3560-- Return_Present (Flag54) 3561-- Defined in function and generic function entities. Set if the 3562-- function contains a return statement (used for error checking). 3563-- This flag can also be set in procedure and generic procedure 3564-- entities (for convenience in setting it), but is only tested 3565-- for the function case. 3566 3567-- Return_Applies_To (Node8) 3568-- Defined in E_Return_Statement. Points to the entity representing 3569-- the construct to which the return statement applies, as defined in 3570-- RM-6.5(4/2). Note that a (simple) return statement within an 3571-- extended_return_statement applies to the extended_return_statement, 3572-- even though it causes the whole function to return. 3573 3574-- Returns_By_Ref (Flag90) 3575-- Defined in function entities, to indicate that the function 3576-- returns the result by reference, either because its return type is a 3577-- by-reference-type or because it uses explicitly the secondary stack. 3578 3579-- Reverse_Bit_Order (Flag164) [base type only] 3580-- Defined in all record type entities. Set if entity has a Bit_Order 3581-- aspect (set by an aspect clause or attribute definition clause) that 3582-- has reversed the order of bits from the default value. When this flag 3583-- is set, a component clause must specify a set of bits entirely within 3584-- a single storage unit (Ada 95) or within a single machine scalar (see 3585-- Ada 2005 AI-133), or must occupy an integral number of storage units. 3586 3587-- Reverse_Storage_Order (Flag93) [base type only] 3588-- Defined in all record and array type entities. Set if entity has a 3589-- Scalar_Storage_Order aspect (set by an aspect clause or attribute 3590-- definition clause) that has reversed the order of storage elements 3591-- from the default value. When this flag is set for a record type, 3592-- the Bit_Order aspect must be set to the same value (either explicitly 3593-- or as the target default value). 3594 3595-- RM_Size (Uint13) 3596-- Defined in all type and subtype entities. Contains the value of 3597-- type'Size as defined in the RM. See also the Esize field and 3598-- and the description on "Handling of Type'Size Values". A value 3599-- of zero in this field for a non-discrete type means that 3600-- the front end has not yet determined the size value. For the 3601-- case of a discrete type, this field is always set by the front 3602-- end and zero is a legitimate value for a type with one value. 3603 3604-- Root_Type (synthesized) 3605-- Applies to all type entities. For class-wide types, return the root 3606-- type of the class covered by the CW type, otherwise returns the 3607-- ultimate derivation ancestor of the given type. This function 3608-- preserves the view, i.e. the Root_Type of a partial view is the 3609-- partial view of the ultimate ancestor, the Root_Type of a full view 3610-- is the full view of the ultimate ancestor. Note that this function 3611-- does not correspond exactly to the use of root type in the RM, since 3612-- in the RM root type applies to a class of types, not to a type. 3613 3614-- Scalar_Range (Node20) 3615-- Defined in all scalar types (including modular types, where the 3616-- bounds are 0 .. modulus - 1). References a node in the tree that 3617-- contains the bounds for the range. Note that this information 3618-- could be obtained by rummaging around the tree, but it is more 3619-- convenient to have it immediately at hand in the entity. The 3620-- contents of Scalar_Range can either be an N_Subtype_Indication 3621-- node (with a constraint), or a Range node, but not a simple 3622-- subtype reference (a subtype is converted into a range). 3623 3624-- Scale_Value (Uint15) 3625-- Defined in decimal fixed-point types and subtypes. Contains the scale 3626-- for the type (i.e. the value of type'Scale = the number of decimal 3627-- digits after the decimal point). 3628 3629-- Scope (Node3) 3630-- Defined in all entities. Points to the entity for the scope (block, 3631-- loop, subprogram, package etc.) in which the entity is declared. 3632-- Since this field is in the base part of the entity node, the access 3633-- routines for this field are in Sinfo. Note that for a child package, 3634-- the Scope will be the parent package, and for a non-child package, 3635-- the Scope will be Standard. 3636 3637-- Scope_Depth (synthesized) 3638-- Applies to program units, blocks, concurrent types and entries, and 3639-- also to record types, i.e. to any entity that can appear on the scope 3640-- stack. Yields the scope depth value, which for those entities other 3641-- than records is simply the scope depth value, for record entities, it 3642-- is the Scope_Depth of the record scope. 3643 3644-- Scope_Depth_Value (Uint22) 3645-- Defined in program units, blocks, concurrent types, and entries. 3646-- Indicates the number of scopes that statically enclose the declaration 3647-- of the unit or type. Library units have a depth of zero. Note that 3648-- record types can act as scopes but do NOT have this field set (see 3649-- Scope_Depth above) 3650 3651-- Scope_Depth_Set (synthesized) 3652-- Applies to a special predicate function that returns a Boolean value 3653-- indicating whether or not the Scope_Depth field has been set. It is 3654-- needed, since returns an invalid value in this case! 3655 3656-- Sec_Stack_Needed_For_Return (Flag167) 3657-- Defined in scope entities (blocks, functions, procedures, tasks, 3658-- entries). Set to True when secondary stack is used to hold the 3659-- returned value of a function and thus should not be released on 3660-- scope exit. 3661 3662-- Shadow_Entities (List14) 3663-- Defined in package and generic package entities. Points to a list 3664-- of entities that correspond to private types. For each private type 3665-- a shadow entity is created that holds a copy of the private view. 3666-- In regions of the program where the full views of these private 3667-- entities are visible, the full view is copied into the entity that 3668-- is normally used to hold the private view, but the shadow entity 3669-- copy is unchanged. The shadow entities are then used to restore the 3670-- original private views at the end of the region. This list is a 3671-- standard format list (i.e. First (Shadow_Entities) is the first 3672-- entry and subsequent entries are obtained using Next. 3673 3674-- Shared_Var_Procs_Instance (Node22) 3675-- Defined in variables. Set non-Empty only if Is_Shared_Passive is 3676-- set, in which case this is the entity for the associated instance of 3677-- System.Shared_Storage.Shared_Var_Procs. See Exp_Smem for full details. 3678 3679-- Size_Check_Code (Node19) 3680-- Defined in constants and variables. Normally Empty. Set if code is 3681-- generated to check the size of the object. This field is used to 3682-- suppress this code if a subsequent address clause is encountered. 3683 3684-- Size_Clause (synthesized) 3685-- Applies to all entities. If a size clause is present in the rep 3686-- item chain for an entity then the attribute definition clause node 3687-- for the size clause is returned. Otherwise Size_Clause returns Empty 3688-- if no item is present. Usually this is only meaningful if the flag 3689-- Has_Size_Clause is set. This is because when the representation item 3690-- chain is copied for a derived type, it can inherit a size clause that 3691-- is not applicable to the entity. 3692 3693-- Size_Depends_On_Discriminant (Flag177) 3694-- Defined in all entities for types and subtypes. Indicates that the 3695-- size of the type depends on the value of one or more discriminants. 3696-- Currently, this flag is only set for arrays which have one or more 3697-- bounds depending on a discriminant value. 3698 3699-- Size_Known_At_Compile_Time (Flag92) 3700-- Defined in all entities for types and subtypes. Indicates that the 3701-- size of objects of the type is known at compile time. This flag is 3702-- used to optimize some generated code sequences, and also to enable 3703-- some error checks (e.g. disallowing component clauses on variable 3704-- length objects). It is set conservatively (i.e. if it is True, the 3705-- size is certainly known at compile time, if it is False, then the 3706-- size may or may not be known at compile time, but the code will 3707-- assume that it is not known). 3708 3709-- Small_Value (Ureal21) 3710-- Defined in fixed point types. Points to the universal real for the 3711-- Small of the type, either as given in a representation clause, or 3712-- as computed (as a power of two) by the compiler. 3713 3714-- Spec_Entity (Node19) 3715-- Defined in package body entities. Points to corresponding package 3716-- spec entity. Also defined in subprogram body parameters in the 3717-- case where there is a separate spec, where this field references 3718-- the corresponding parameter entities in the spec. 3719 3720-- Static_Predicate (List25) 3721-- Defined in discrete types/subtypes with predicates (Has_Predicates 3722-- set True). Set if the type/subtype has a static predicate. Points to 3723-- a list of expression and N_Range nodes that represent the predicate 3724-- in canonical form. The canonical form has entries sorted in ascending 3725-- order, with duplicates eliminated, and adjacent ranges coalesced, so 3726-- that there is always a gap in the values between successive entries. 3727-- The entries in this list are fully analyzed and typed with the base 3728-- type of the subtype. Note that all entries are static and have values 3729-- within the subtype range. 3730 3731-- Status_Flag_Or_Transient_Decl (Node15) 3732-- Defined in variables and constants. Applies to objects that require 3733-- special treatment by the finalization machinery, such as extended 3734-- return results, IF and CASE expression results, and objects inside 3735-- N_Expression_With_Actions nodes. The attribute contains the entity 3736-- of a flag which specifies particular behavior over a region of code 3737-- or the declaration of a "hook" object. 3738-- In which case is it a flag, or a hook object??? 3739 3740-- Storage_Size_Variable (Node15) [implementation base type only] 3741-- Defined in access types and task type entities. This flag is set 3742-- if a valid and effective pragma Storage_Size applies to the base 3743-- type. Points to the entity for a variable that is created to 3744-- hold the value given in a Storage_Size pragma for an access 3745-- collection or a task type. Note that in the access type case, 3746-- this field is defined only in the root type (since derived types 3747-- share the same storage pool). 3748 3749-- Static_Elaboration_Desired (Flag77) 3750-- Defined in library-level packages. Set by the pragma of the same 3751-- name, to indicate that static initialization must be attempted for 3752-- all types declared in the package, and that a warning must be emitted 3753-- for those types to which static initialization is not available. 3754 3755-- Static_Initialization (Node30) 3756-- Defined in initialization procedures for types whose objects can be 3757-- initialized statically. The value of this attribute is a positional 3758-- aggregate whose components are compile-time static values. Used 3759-- when available in object declarations to eliminate the call to the 3760-- initialization procedure, and to minimize elaboration code. Note: 3761-- This attribute uses the same field as Overridden_Operation, which is 3762-- irrelevant in init_procs. 3763 3764-- Stored_Constraint (Elist23) 3765-- Defined in entities that can have discriminants (concurrent types 3766-- subtypes, record types and subtypes, private types and subtypes, 3767-- limited private types and subtypes and incomplete types). Points 3768-- to an element list containing the expressions for each of the 3769-- stored discriminants for the record (sub)type. 3770 3771-- Strict_Alignment (Flag145) [implementation base type only] 3772-- Defined in all type entities. Indicates that some containing part 3773-- is either aliased or tagged. This prohibits packing the object 3774-- tighter than its natural size and alignment. 3775 3776-- String_Literal_Length (Uint16) 3777-- Defined in string literal subtypes (which are created to correspond 3778-- to string literals in the program). Contains the length of the string 3779-- literal. 3780 3781-- String_Literal_Low_Bound (Node15) 3782-- Defined in string literal subtypes (which are created to correspond 3783-- to string literals in the program). Contains an expression whose 3784-- value represents the low bound of the literal. This is a copy of 3785-- the low bound of the applicable index constraint if there is one, 3786-- or a copy of the low bound of the index base type if not. 3787 3788-- Subprograms_For_Type (Node29) 3789-- Defined in all type entities, and in subprogram entities. This is used 3790-- to hold a list of subprogram entities for subprograms associated with 3791-- the type, linked through the Subprogram_List field of the subprogram 3792-- entity. Basically this is a way of multiplexing the single field to 3793-- hold more than one entity (since we ran out of space in some type 3794-- entities). This is currently used for Invariant_Procedure and also 3795-- for Predicate_Function, and clients will always use the latter two 3796-- names to access entries in this list. 3797 3798-- Suppress_Elaboration_Warnings (Flag148) 3799-- Defined in all entities, can be set only for subprogram entities and 3800-- for variables. If this flag is set then Sem_Elab will not generate 3801-- elaboration warnings for the subprogram or variable. Suppression of 3802-- such warnings is automatic for subprograms for which elaboration 3803-- checks are suppressed (without the need to set this flag), but the 3804-- flag is also set for various internal entities (such as init procs) 3805-- which are known not to generate any possible access before 3806-- elaboration, and it is set on variables when a warning is given to 3807-- avoid multiple elaboration warnings for the same variable. 3808 3809-- Suppress_Initialization (Flag105) 3810-- Defined in all type and subtype entities. If set for the base type, 3811-- then the generation of initialization procedures is suppressed for the 3812-- type. Any other implicit initialiation (e.g. from the use of pragma 3813-- Initialize_Scalars) is also suppressed if this flag is set either for 3814-- the subtype in question, or for the base type. Set by use of pragma 3815-- Suppress_Initialization and also for internal entities where we know 3816-- that no initialization is required. For example, enumeration image 3817-- table entities set it. 3818 3819-- Suppress_Style_Checks (Flag165) 3820-- Defined in all entities. Suppresses any style checks specifically 3821-- associated with the given entity if set. 3822 3823-- Suppress_Value_Tracking_On_Call (Flag217) 3824-- Defined in all entities. Set in a scope entity if value tracking is to 3825-- be suppressed on any call within the scope. Used when an access to a 3826-- local subprogram is computed, to deal with the possibility that this 3827-- value may be passed around, and if used, may clobber a local variable. 3828 3829-- Task_Body_Procedure (Node25) 3830-- Defined in task types and subtypes. Points to the entity for the task 3831-- task body procedure (as further described in Exp_Ch9, task bodies are 3832-- expanded into procedures). A convenient function to retrieve this 3833-- field is Sem_Util.Get_Task_Body_Procedure. 3834-- 3835-- The last sentence is odd??? Why not have Task_Body_Procedure go to the 3836-- Underlying_Type of the Root_Type??? 3837 3838-- Treat_As_Volatile (Flag41) 3839-- Defined in all type entities, and also in constants, components and 3840-- variables. Set if this entity is to be treated as volatile for code 3841-- generation purposes. Always set if Is_Volatile is set, but can also 3842-- be set as a result of situations (such as address overlays) where 3843-- the front end wishes to force volatile handling to inhibit aliasing 3844-- optimization which might be legally ok, but is undesirable. Note 3845-- that the back end always tests this flag rather than Is_Volatile. 3846-- The front end tests Is_Volatile if it is concerned with legality 3847-- checks associated with declared volatile variables, but if the test 3848-- is for the purposes of suppressing optimizations, then the front 3849-- end should test Treat_As_Volatile rather than Is_Volatile. 3850-- 3851-- Note: before testing Treat_As_Volatile, consider whether it would 3852-- be more appropriate to use Exp_Util.Is_Volatile_Reference instead, 3853-- which catches more cases of volatile references. 3854 3855-- Type_High_Bound (synthesized) 3856-- Applies to scalar types. Returns the tree node (Node_Id) that contains 3857-- the high bound of a scalar type. The returned value is literal for a 3858-- base type, but may be an expression in the case of scalar type with 3859-- dynamic bounds. Note that in the case of a fixed point type, the high 3860-- bound is in units of small, and is an integer. 3861 3862-- Type_Low_Bound (synthesized) 3863-- Applies to scalar types. Returns the tree node (Node_Id) that contains 3864-- the low bound of a scalar type. The returned value is literal for a 3865-- base type, but may be an expression in the case of scalar type with 3866-- dynamic bounds. Note that in the case of a fixed point type, the low 3867-- bound is in units of small, and is an integer. 3868 3869-- Underlying_Full_View (Node19) 3870-- Defined in private subtypes that are the completion of other private 3871-- types, or in private types that are derived from private subtypes. If 3872-- the full view of a private type T is derived from another private type 3873-- with discriminants Td, the full view of T is also private, and there 3874-- is no way to attach to it a further full view that would convey the 3875-- structure of T to the back end. The Underlying_Full_ View is an 3876-- attribute of the full view that is a subtype of Td with the same 3877-- constraint as the declaration for T. The declaration for this subtype 3878-- is built at the point of the declaration of T, either as completion, 3879-- or as a subtype declaration where the base type is private and has a 3880-- private completion. If Td is already constrained, then its full view 3881-- can serve directly as the full view of T. 3882 3883-- Underlying_Record_View (Node28) 3884-- Defined in record types. Set for record types that are extensions of 3885-- types with unknown discriminants, and also set for internally built 3886-- underlying record views to reference its original record type. Record 3887-- types that are extensions of types with unknown discriminants do not 3888-- have a completion, but they cannot be used without having some 3889-- discriminated view at hand. This view is a record type with the same 3890-- structure, whose parent type is the full view of the parent in the 3891-- original type extension. 3892 3893-- Underlying_Type (synthesized) 3894-- Applies to all entities. This is the identity function except in the 3895-- case where it is applied to an incomplete or private type, in which 3896-- case it is the underlying type of the type declared by the completion, 3897-- or Empty if the completion has not yet been encountered and analyzed. 3898-- 3899-- Note: the reason this attribute applies to all entities, and not just 3900-- types, is to legitimize code where Underlying_Type is applied to an 3901-- entity which may or may not be a type, with the intent that if it is a 3902-- type, its underlying type is taken. 3903 3904-- Universal_Aliasing (Flag216) [implementation base type only] 3905-- Defined in all type entities. Set to direct the back-end to avoid 3906-- any optimizations based on type-based alias analysis for this type. 3907-- Indicates that objects of this type can alias objects of any other 3908-- types, which guarantees that any objects can be referenced through 3909-- access types designating this type safely, whatever the actual type 3910-- of these objects. In other words, the effect is as though access 3911-- types designating this type were subject to No_Strict_Aliasing. 3912 3913-- Unset_Reference (Node16) 3914-- Defined in variables and out parameters. This is normally Empty. It 3915-- is set to point to an identifier that represents a reference to the 3916-- entity before any value has been set. Only the first such reference 3917-- is identified. This field is used to generate a warning message if 3918-- necessary (see Sem_Warn.Check_Unset_Reference). 3919 3920-- Used_As_Generic_Actual (Flag222) 3921-- Defined in all entities, set if the entity is used as an argument to 3922-- a generic instantiation. Used to tune certain warning messages. 3923 3924-- Uses_Lock_Free (Flag188) 3925-- Defined in protected type entities. Set to True when the Lock Free 3926-- implementation is used for the protected type. This implemenatation is 3927-- based on atomic transactions and doesn't require anymore the use of 3928-- Protection object (see System.Tasking.Protected_Objects). 3929 3930-- Uses_Sec_Stack (Flag95) 3931-- Defined in scope entities (blocks,functions, procedures, tasks, 3932-- entries). Set to True when secondary stack is used in this scope and 3933-- must be released on exit unless Sec_Stack_Needed_For_Return is set. 3934 3935-- Warnings_Off (Flag96) 3936-- Defined in all entities. Set if a pragma Warnings (Off, entity-name) 3937-- is used to suppress warnings for a given entity. It is also used by 3938-- the compiler in some situations to kill spurious warnings. Note that 3939-- clients should generally not test this flag directly, but instead 3940-- use function Has_Warnings_Off. 3941 3942-- Warnings_Off_Used (Flag236) 3943-- Defined in all entities. Can only be set if Warnings_Off is set. If 3944-- set indicates that a warning was suppressed by the Warnings_Off flag, 3945-- and Unmodified/Unreferenced would not have suppressed the warning. 3946 3947-- Warnings_Off_Used_Unmodified (Flag237) 3948-- Defined in all entities. Can only be set if Warnings_Off is set and 3949-- Has_Pragma_Unmodified is not set. If set indicates that a warning was 3950-- suppressed by the Warnings_Off status but that pragma Unmodified 3951-- would also have suppressed the warning. 3952 3953-- Warnings_Off_Used_Unreferenced (Flag238) 3954-- Defined in all entities. Can only be set if Warnings_Off is set and 3955-- Has_Pragma_Unreferenced is not set. If set indicates that a warning 3956-- was suppressed by the Warnings_Off status but that pragma Unreferenced 3957-- would also have suppressed the warning. 3958 3959-- Was_Hidden (Flag196) 3960-- Defined in all entities. Used to save the value of the Is_Hidden 3961-- attribute when the limited-view is installed (Ada 2005: AI-217). 3962 3963-- Wrapped_Entity (Node27) 3964-- Defined in functions and procedures which have been classified as 3965-- Is_Primitive_Wrapper. Set to the entity being wrapper. 3966 3967-------------------------------------- 3968-- Delayed Freezing and Elaboration -- 3969-------------------------------------- 3970 3971-- The flag Has_Delayed_Freeze indicates that an entity carries an explicit 3972-- freeze node, which appears later in the expanded tree. 3973 3974-- a) The flag is used by the front-end to trigger expansion actions 3975-- which include the generation of that freeze node. Typically this happens at 3976-- the end of the current compilation unit, or before the first subprogram 3977-- body is encountered in the current unit. See files freeze and exp_ch13 for 3978-- details on the actions triggered by a freeze node, which include the 3979-- construction of initialization procedures and dispatch tables. 3980 3981-- b) The flag is used by the backend to defer elaboration of the entity until 3982-- its freeze node is seen. In the absence of an explicit freeze node, an 3983-- entity is frozen (and elaborated) at the point of declaration. 3984 3985-- For object declarations, the flag is set when an address clause for the 3986-- object is encountered. Legality checks on the address expression only 3987-- take place at the freeze point of the object. 3988 3989-- Most types have an explicit freeze node, because they cannot be elaborated 3990-- until all representation and operational items that apply to them have been 3991-- analyzed. Private types and incomplete types have the flag set as well, as 3992-- do task and protected types. 3993 3994-- Implicit base types created for type derivations, as well as classwide 3995-- types created for all tagged types, have the flag set. 3996 3997-- If a subprogram has an access parameter whose designated type is incomplete 3998-- the subprogram has the flag set. 3999 4000 ------------------ 4001 -- Access Kinds -- 4002 ------------------ 4003 4004 -- The following entity kinds are introduced by the corresponding type 4005 -- definitions: 4006 4007 -- E_Access_Type, 4008 -- E_General_Access_Type, 4009 -- E_Access_Subprogram_Type, 4010 -- E_Anonymous_Access_Subprogram_Type, 4011 -- E_Access_Protected_Subprogram_Type, 4012 -- E_Anonymous_Access_Protected_Subprogram_Type 4013 -- E_Anonymous_Access_Type. 4014 4015 -- E_Access_Subtype is for an access subtype created by a subtype 4016 -- declaration. 4017 4018 -- In addition, we define the kind E_Allocator_Type to label allocators. 4019 -- This is because special resolution rules apply to this construct. 4020 -- Eventually the constructs are labeled with the access type imposed by 4021 -- the context. Gigi should never see the type E_Allocator. 4022 4023 -- Similarly, the type E_Access_Attribute_Type is used as the initial kind 4024 -- associated with an access attribute. After resolution a specific access 4025 -- type will be established as determined by the context. 4026 4027 -- Finally, the type Any_Access is used to label -null- during type 4028 -- resolution. Any_Access is also replaced by the context type after 4029 -- resolution. 4030 4031 -------------------------------- 4032 -- Classification of Entities -- 4033 -------------------------------- 4034 4035 -- The classification of program entities which follows is a refinement of 4036 -- the list given in RM 3.1(1). E.g., separate entities denote subtypes of 4037 -- different type classes. Ada 95 entities include class wide types, 4038 -- protected types, subprogram types, generalized access types, generic 4039 -- formal derived types and generic formal packages. 4040 4041 -- The order chosen for these kinds allows us to classify related entities 4042 -- so that they are contiguous. As a result, they do not appear in the 4043 -- exact same order as their order of first appearance in the LRM (For 4044 -- example, private types are listed before packages). The contiguity 4045 -- allows us to define useful subtypes (see below) such as type entities, 4046 -- overloaded entities, etc. 4047 4048 -- Each entity (explicitly or implicitly declared) has a kind, which is 4049 -- a value of the following type: 4050 4051 type Entity_Kind is ( 4052 4053 E_Void, 4054 -- The initial Ekind value for a newly created entity. Also used as the 4055 -- Ekind for Standard_Void_Type, a type entity in Standard used as a 4056 -- dummy type for the return type of a procedure (the reason we create 4057 -- this type is to share the circuits for performing overload resolution 4058 -- on calls). 4059 4060 ------------- 4061 -- Objects -- 4062 ------------- 4063 4064 E_Component, 4065 -- Components of a record declaration, private declarations of 4066 -- protected objects. 4067 4068 E_Constant, 4069 -- Constants created by an object declaration with a constant keyword 4070 4071 E_Discriminant, 4072 -- A discriminant, created by the use of a discriminant in a type 4073 -- declaration. 4074 4075 E_Loop_Parameter, 4076 -- A loop parameter created by a for loop 4077 4078 E_Variable, 4079 -- Variables created by an object declaration with no constant keyword 4080 4081 ------------------------ 4082 -- Parameter Entities -- 4083 ------------------------ 4084 4085 -- Parameters are also objects 4086 4087 E_Out_Parameter, 4088 -- An out parameter of a subprogram or entry 4089 4090 E_In_Out_Parameter, 4091 -- An in-out parameter of a subprogram or entry 4092 4093 E_In_Parameter, 4094 -- An in parameter of a subprogram or entry 4095 4096 -------------------------------- 4097 -- Generic Parameter Entities -- 4098 -------------------------------- 4099 4100 -- Generic parameters are also objects 4101 4102 E_Generic_In_Out_Parameter, 4103 -- A generic in out parameter, created by the use of a generic in out 4104 -- parameter in a generic declaration. 4105 4106 E_Generic_In_Parameter, 4107 -- A generic in parameter, created by the use of a generic in 4108 -- parameter in a generic declaration. 4109 4110 ------------------- 4111 -- Named Numbers -- 4112 ------------------- 4113 4114 E_Named_Integer, 4115 -- Named numbers created by a number declaration with an integer value 4116 4117 E_Named_Real, 4118 -- Named numbers created by a number declaration with a real value 4119 4120 ----------------------- 4121 -- Enumeration Types -- 4122 ----------------------- 4123 4124 E_Enumeration_Type, 4125 -- Enumeration types, created by an enumeration type declaration 4126 4127 E_Enumeration_Subtype, 4128 -- Enumeration subtypes, created by an explicit or implicit subtype 4129 -- declaration applied to an enumeration type or subtype. 4130 4131 ------------------- 4132 -- Numeric Types -- 4133 ------------------- 4134 4135 E_Signed_Integer_Type, 4136 -- Signed integer type, used for the anonymous base type of the 4137 -- integer subtype created by an integer type declaration. 4138 4139 E_Signed_Integer_Subtype, 4140 -- Signed integer subtype, created by either an integer subtype or 4141 -- integer type declaration (in the latter case an integer type is 4142 -- created for the base type, and this is the first named subtype). 4143 4144 E_Modular_Integer_Type, 4145 -- Modular integer type, used for the anonymous base type of the 4146 -- integer subtype created by a modular integer type declaration. 4147 4148 E_Modular_Integer_Subtype, 4149 -- Modular integer subtype, created by either an modular subtype 4150 -- or modular type declaration (in the latter case a modular type 4151 -- is created for the base type, and this is the first named subtype). 4152 4153 E_Ordinary_Fixed_Point_Type, 4154 -- Ordinary fixed type, used for the anonymous base type of the 4155 -- fixed subtype created by an ordinary fixed point type declaration. 4156 4157 E_Ordinary_Fixed_Point_Subtype, 4158 -- Ordinary fixed point subtype, created by either an ordinary fixed 4159 -- point subtype or ordinary fixed point type declaration (in the 4160 -- latter case a fixed point type is created for the base type, and 4161 -- this is the first named subtype). 4162 4163 E_Decimal_Fixed_Point_Type, 4164 -- Decimal fixed type, used for the anonymous base type of the decimal 4165 -- fixed subtype created by an ordinary fixed point type declaration. 4166 4167 E_Decimal_Fixed_Point_Subtype, 4168 -- Decimal fixed point subtype, created by either a decimal fixed point 4169 -- subtype or decimal fixed point type declaration (in the latter case 4170 -- a fixed point type is created for the base type, and this is the 4171 -- first named subtype). 4172 4173 E_Floating_Point_Type, 4174 -- Floating point type, used for the anonymous base type of the 4175 -- floating point subtype created by a floating point type declaration. 4176 4177 E_Floating_Point_Subtype, 4178 -- Floating point subtype, created by either a floating point subtype 4179 -- or floating point type declaration (in the latter case a floating 4180 -- point type is created for the base type, and this is the first 4181 -- named subtype). 4182 4183 ------------------ 4184 -- Access Types -- 4185 ------------------ 4186 4187 E_Access_Type, 4188 -- An access type created by an access type declaration with no all 4189 -- keyword present. Note that the predefined type Any_Access, which 4190 -- has E_Access_Type Ekind, is used to label NULL in the upwards pass 4191 -- of type analysis, to be replaced by the true access type in the 4192 -- downwards resolution pass. 4193 4194 E_Access_Subtype, 4195 -- An access subtype created by a subtype declaration for any access 4196 -- type (whether or not it is a general access type). 4197 4198 E_Access_Attribute_Type, 4199 -- An access type created for an access attribute (such as 'Access, 4200 -- 'Unrestricted_Access and Unchecked_Access) 4201 4202 E_Allocator_Type, 4203 -- A special internal type used to label allocators and attribute 4204 -- references using 'Access. This is needed because special resolution 4205 -- rules apply to these constructs. On the resolution pass, this type 4206 -- is always replaced by the actual access type, so Gigi should never 4207 -- see types with this Ekind. 4208 4209 E_General_Access_Type, 4210 -- An access type created by an access type declaration with the all 4211 -- keyword present. 4212 4213 E_Access_Subprogram_Type, 4214 -- An access to subprogram type, created by an access to subprogram 4215 -- declaration. 4216 4217 E_Anonymous_Access_Subprogram_Type, 4218 -- An anonymous access to subprogram type, created by an access to 4219 -- subprogram declaration, or generated for a current instance of 4220 -- a type name appearing within a component definition that has an 4221 -- anonymous access to subprogram type. 4222 4223 E_Access_Protected_Subprogram_Type, 4224 -- An access to a protected subprogram, created by the corresponding 4225 -- declaration. Values of such a type denote both a protected object 4226 -- and a protected operation within, and have different compile-time 4227 -- and run-time properties than other access to subprograms. 4228 4229 E_Anonymous_Access_Protected_Subprogram_Type, 4230 -- An anonymous access to protected subprogram type, created by an 4231 -- access to subprogram declaration. 4232 4233 E_Anonymous_Access_Type, 4234 -- An anonymous access type created by an access parameter or access 4235 -- discriminant. 4236 4237 --------------------- 4238 -- Composite Types -- 4239 --------------------- 4240 4241 E_Array_Type, 4242 -- An array type created by an array type declaration. Includes all 4243 -- cases of arrays, except for string types. 4244 4245 E_Array_Subtype, 4246 -- An array subtype, created by an explicit array subtype declaration, 4247 -- or the use of an anonymous array subtype. 4248 4249 E_String_Type, 4250 -- A string type, i.e. an array type whose component type is a character 4251 -- type, and for which string literals can thus be written. 4252 4253 E_String_Subtype, 4254 -- A string subtype, created by an explicit subtype declaration for a 4255 -- string type, or the use of an anonymous subtype of a string type, 4256 4257 E_String_Literal_Subtype, 4258 -- A special string subtype, used only to describe the type of a string 4259 -- literal (will always be one dimensional, with literal bounds). 4260 4261 E_Class_Wide_Type, 4262 -- A class wide type, created by any tagged type declaration (i.e. if 4263 -- a tagged type is declared, the corresponding class type is always 4264 -- created, using this Ekind value). 4265 4266 E_Class_Wide_Subtype, 4267 -- A subtype of a class wide type, created by a subtype declaration 4268 -- used to declare a subtype of a class type. 4269 4270 E_Record_Type, 4271 -- A record type, created by a record type declaration 4272 4273 E_Record_Subtype, 4274 -- A record subtype, created by a record subtype declaration 4275 4276 E_Record_Type_With_Private, 4277 -- Used for types defined by a private extension declaration, and 4278 -- for tagged private types. Includes the fields for both private 4279 -- types and for record types (with the sole exception of 4280 -- Corresponding_Concurrent_Type which is obviously not needed). 4281 -- This entity is considered to be both a record type and 4282 -- a private type. 4283 4284 E_Record_Subtype_With_Private, 4285 -- A subtype of a type defined by a private extension declaration 4286 4287 E_Private_Type, 4288 -- A private type, created by a private type declaration 4289 -- that has neither the keyword limited nor the keyword tagged. 4290 4291 E_Private_Subtype, 4292 -- A subtype of a private type, created by a subtype declaration used 4293 -- to declare a subtype of a private type. 4294 4295 E_Limited_Private_Type, 4296 -- A limited private type, created by a private type declaration that 4297 -- has the keyword limited, but not the keyword tagged. 4298 4299 E_Limited_Private_Subtype, 4300 -- A subtype of a limited private type, created by a subtype declaration 4301 -- used to declare a subtype of a limited private type. 4302 4303 E_Incomplete_Type, 4304 -- An incomplete type, created by an incomplete type declaration 4305 4306 E_Incomplete_Subtype, 4307 -- An incomplete subtype, created by a subtype declaration where the 4308 -- subtype mark denotes an incomplete type. 4309 4310 E_Task_Type, 4311 -- A task type, created by a task type declaration. An entity with this 4312 -- Ekind is also created to describe the anonymous type of a task that 4313 -- is created by a single task declaration. 4314 4315 E_Task_Subtype, 4316 -- A subtype of a task type, created by a subtype declaration used to 4317 -- declare a subtype of a task type. 4318 4319 E_Protected_Type, 4320 -- A protected type, created by a protected type declaration. An entity 4321 -- with this Ekind is also created to describe the anonymous type of 4322 -- a protected object created by a single protected declaration. 4323 4324 E_Protected_Subtype, 4325 -- A subtype of a protected type, created by a subtype declaration used 4326 -- to declare a subtype of a protected type. 4327 4328 ----------------- 4329 -- Other Types -- 4330 ----------------- 4331 4332 E_Exception_Type, 4333 -- The type of an exception created by an exception declaration 4334 4335 E_Subprogram_Type, 4336 -- This is the designated type of an Access_To_Subprogram. Has type 4337 -- and signature like a subprogram entity, so can appear in calls, 4338 -- which are resolved like regular calls, except that such an entity 4339 -- is not overloadable. 4340 4341 --------------------------- 4342 -- Overloadable Entities -- 4343 --------------------------- 4344 4345 E_Enumeration_Literal, 4346 -- An enumeration literal, created by the use of the literal in an 4347 -- enumeration type definition. 4348 4349 E_Function, 4350 -- A function, created by a function declaration or a function body 4351 -- that acts as its own declaration. 4352 4353 E_Operator, 4354 -- A predefined operator, appearing in Standard, or an implicitly 4355 -- defined concatenation operator created whenever an array is 4356 -- declared. We do not make normal derived operators explicit in 4357 -- the tree, but the concatenation operators are made explicit. 4358 4359 E_Procedure, 4360 -- A procedure, created by a procedure declaration or a procedure 4361 -- body that acts as its own declaration. 4362 4363 E_Entry, 4364 -- An entry, created by an entry declaration in a task or protected 4365 -- object. 4366 4367 -------------------- 4368 -- Other Entities -- 4369 -------------------- 4370 4371 E_Entry_Family, 4372 -- An entry family, created by an entry family declaration in a 4373 -- task or protected type definition. 4374 4375 E_Block, 4376 -- A block identifier, created by an explicit or implicit label on 4377 -- a block or declare statement. 4378 4379 E_Entry_Index_Parameter, 4380 -- An entry index parameter created by an entry index specification 4381 -- for the body of a protected entry family. 4382 4383 E_Exception, 4384 -- An exception created by an exception declaration. The exception 4385 -- itself uses E_Exception for the Ekind, the implicit type that is 4386 -- created to represent its type uses the Ekind E_Exception_Type. 4387 4388 E_Generic_Function, 4389 -- A generic function. This is the entity for a generic function 4390 -- created by a generic subprogram declaration. 4391 4392 E_Generic_Procedure, 4393 -- A generic function. This is the entity for a generic procedure 4394 -- created by a generic subprogram declaration. 4395 4396 E_Generic_Package, 4397 -- A generic package, this is the entity for a generic package created 4398 -- by a generic package declaration. 4399 4400 E_Label, 4401 -- The defining entity for a label. Note that this is created by the 4402 -- implicit label declaration, not the occurrence of the label itself, 4403 -- which is simply a direct name referring to the label. 4404 4405 E_Loop, 4406 -- A loop identifier, created by an explicit or implicit label on a 4407 -- loop statement. 4408 4409 E_Return_Statement, 4410 -- A dummy entity created for each return statement. Used to hold 4411 -- information about the return statement (what it applies to) and in 4412 -- rules checking. For example, a simple_return_statement that applies 4413 -- to an extended_return_statement cannot have an expression; this 4414 -- requires putting the E_Return_Statement entity for the 4415 -- extended_return_statement on the scope stack. 4416 4417 E_Package, 4418 -- A package, created by a package declaration 4419 4420 E_Package_Body, 4421 -- A package body. This entity serves only limited functions, since 4422 -- most semantic analysis uses the package entity (E_Package). However 4423 -- there are some attributes that are significant for the body entity. 4424 -- For example, collection of exception handlers. 4425 4426 E_Protected_Object, 4427 -- A protected object, created by an object declaration that declares 4428 -- an object of a protected type. 4429 4430 E_Protected_Body, 4431 -- A protected body. This entity serves almost no function, since all 4432 -- semantic analysis uses the protected entity (E_Protected_Type) 4433 4434 E_Task_Body, 4435 -- A task body. This entity serves almost no function, since all 4436 -- semantic analysis uses the protected entity (E_Task_Type). 4437 4438 E_Subprogram_Body, 4439 -- A subprogram body. Used when a subprogram has a separate declaration 4440 -- to represent the entity for the body. This entity serves almost no 4441 -- function, since all semantic analysis uses the subprogram entity 4442 -- for the declaration (E_Function or E_Procedure). 4443 4444 E_Abstract_State 4445 -- A state abstraction. Used to designate entities introduced by aspect 4446 -- or pragma Abstract_State. The entity carries the various properties 4447 -- of the state. 4448 ); 4449 4450 for Entity_Kind'Size use 8; 4451 -- The data structures in Atree assume this! 4452 4453 -------------------------- 4454 -- Subtype Declarations -- 4455 -------------------------- 4456 4457 -- The above entities are arranged so that they can be conveniently grouped 4458 -- into subtype ranges. Note that for each of the xxx_Kind ranges defined 4459 -- below, there is a corresponding Is_xxx (or for types, Is_xxx_Type) 4460 -- predicate which is to be used in preference to direct range tests using 4461 -- the subtype name. However, the subtype names are available for direct 4462 -- use, e.g. as choices in case statements. 4463 4464 subtype Access_Kind is Entity_Kind range 4465 E_Access_Type .. 4466 -- E_Access_Subtype 4467 -- E_Access_Attribute_Type 4468 -- E_Allocator_Type 4469 -- E_General_Access_Type 4470 -- E_Access_Subprogram_Type 4471 -- E_Anonymous_Access_Subprogram_Type 4472 -- E_Access_Protected_Subprogram_Type 4473 -- E_Anonymous_Access_Protected_Subprogram_Type 4474 E_Anonymous_Access_Type; 4475 4476 subtype Access_Subprogram_Kind is Entity_Kind range 4477 E_Access_Subprogram_Type .. 4478 -- E_Anonymous_Access_Subprogram_Type 4479 -- E_Access_Protected_Subprogram_Type 4480 E_Anonymous_Access_Protected_Subprogram_Type; 4481 4482 subtype Access_Protected_Kind is Entity_Kind range 4483 E_Access_Protected_Subprogram_Type .. 4484 E_Anonymous_Access_Protected_Subprogram_Type; 4485 4486 subtype Aggregate_Kind is Entity_Kind range 4487 E_Array_Type .. 4488 -- E_Array_Subtype 4489 -- E_String_Type 4490 -- E_String_Subtype 4491 -- E_String_Literal_Subtype 4492 -- E_Class_Wide_Type 4493 -- E_Class_Wide_Subtype 4494 -- E_Record_Type 4495 E_Record_Subtype; 4496 4497 subtype Array_Kind is Entity_Kind range 4498 E_Array_Type .. 4499 -- E_Array_Subtype 4500 -- E_String_Type 4501 -- E_String_Subtype 4502 E_String_Literal_Subtype; 4503 4504 subtype Assignable_Kind is Entity_Kind range 4505 E_Variable .. 4506 -- E_Out_Parameter 4507 E_In_Out_Parameter; 4508 4509 subtype Class_Wide_Kind is Entity_Kind range 4510 E_Class_Wide_Type .. 4511 E_Class_Wide_Subtype; 4512 4513 subtype Composite_Kind is Entity_Kind range 4514 E_Array_Type .. 4515 -- E_Array_Subtype 4516 -- E_String_Type 4517 -- E_String_Subtype 4518 -- E_String_Literal_Subtype 4519 -- E_Class_Wide_Type 4520 -- E_Class_Wide_Subtype 4521 -- E_Record_Type 4522 -- E_Record_Subtype 4523 -- E_Record_Type_With_Private 4524 -- E_Record_Subtype_With_Private 4525 -- E_Private_Type 4526 -- E_Private_Subtype 4527 -- E_Limited_Private_Type 4528 -- E_Limited_Private_Subtype 4529 -- E_Incomplete_Type 4530 -- E_Incomplete_Subtype 4531 -- E_Task_Type 4532 -- E_Task_Subtype, 4533 -- E_Protected_Type, 4534 E_Protected_Subtype; 4535 4536 subtype Concurrent_Kind is Entity_Kind range 4537 E_Task_Type .. 4538 -- E_Task_Subtype, 4539 -- E_Protected_Type, 4540 E_Protected_Subtype; 4541 4542 subtype Concurrent_Body_Kind is Entity_Kind range 4543 E_Protected_Body .. 4544 E_Task_Body; 4545 4546 subtype Decimal_Fixed_Point_Kind is Entity_Kind range 4547 E_Decimal_Fixed_Point_Type .. 4548 E_Decimal_Fixed_Point_Subtype; 4549 4550 subtype Digits_Kind is Entity_Kind range 4551 E_Decimal_Fixed_Point_Type .. 4552 -- E_Decimal_Fixed_Point_Subtype 4553 -- E_Floating_Point_Type 4554 E_Floating_Point_Subtype; 4555 4556 subtype Discrete_Kind is Entity_Kind range 4557 E_Enumeration_Type .. 4558 -- E_Enumeration_Subtype 4559 -- E_Signed_Integer_Type 4560 -- E_Signed_Integer_Subtype 4561 -- E_Modular_Integer_Type 4562 E_Modular_Integer_Subtype; 4563 4564 subtype Discrete_Or_Fixed_Point_Kind is Entity_Kind range 4565 E_Enumeration_Type .. 4566 -- E_Enumeration_Subtype 4567 -- E_Signed_Integer_Type 4568 -- E_Signed_Integer_Subtype 4569 -- E_Modular_Integer_Type 4570 -- E_Modular_Integer_Subtype 4571 -- E_Ordinary_Fixed_Point_Type 4572 -- E_Ordinary_Fixed_Point_Subtype 4573 -- E_Decimal_Fixed_Point_Type 4574 E_Decimal_Fixed_Point_Subtype; 4575 4576 subtype Elementary_Kind is Entity_Kind range 4577 E_Enumeration_Type .. 4578 -- E_Enumeration_Subtype 4579 -- E_Signed_Integer_Type 4580 -- E_Signed_Integer_Subtype 4581 -- E_Modular_Integer_Type 4582 -- E_Modular_Integer_Subtype 4583 -- E_Ordinary_Fixed_Point_Type 4584 -- E_Ordinary_Fixed_Point_Subtype 4585 -- E_Decimal_Fixed_Point_Type 4586 -- E_Decimal_Fixed_Point_Subtype 4587 -- E_Floating_Point_Type 4588 -- E_Floating_Point_Subtype 4589 -- E_Access_Type 4590 -- E_Access_Subtype 4591 -- E_Access_Attribute_Type 4592 -- E_Allocator_Type 4593 -- E_General_Access_Type 4594 -- E_Access_Subprogram_Type 4595 -- E_Access_Protected_Subprogram_Type 4596 -- E_Anonymous_Access_Subprogram_Type 4597 -- E_Anonymous_Access_Protected_Subprogram_Type 4598 E_Anonymous_Access_Type; 4599 4600 subtype Enumeration_Kind is Entity_Kind range 4601 E_Enumeration_Type .. 4602 E_Enumeration_Subtype; 4603 4604 subtype Entry_Kind is Entity_Kind range 4605 E_Entry .. 4606 E_Entry_Family; 4607 4608 subtype Fixed_Point_Kind is Entity_Kind range 4609 E_Ordinary_Fixed_Point_Type .. 4610 -- E_Ordinary_Fixed_Point_Subtype 4611 -- E_Decimal_Fixed_Point_Type 4612 E_Decimal_Fixed_Point_Subtype; 4613 4614 subtype Float_Kind is Entity_Kind range 4615 E_Floating_Point_Type .. 4616 E_Floating_Point_Subtype; 4617 4618 subtype Formal_Kind is Entity_Kind range 4619 E_Out_Parameter .. 4620 -- E_In_Out_Parameter 4621 E_In_Parameter; 4622 4623 subtype Formal_Object_Kind is Entity_Kind range 4624 E_Generic_In_Out_Parameter .. 4625 E_Generic_In_Parameter; 4626 4627 subtype Generic_Subprogram_Kind is Entity_Kind range 4628 E_Generic_Function .. 4629 E_Generic_Procedure; 4630 4631 subtype Generic_Unit_Kind is Entity_Kind range 4632 E_Generic_Function .. 4633 -- E_Generic_Procedure 4634 E_Generic_Package; 4635 4636 subtype Incomplete_Kind is Entity_Kind range 4637 E_Incomplete_Type .. 4638 E_Incomplete_Subtype; 4639 4640 subtype Incomplete_Or_Private_Kind is Entity_Kind range 4641 E_Record_Type_With_Private .. 4642 -- E_Record_Subtype_With_Private 4643 -- E_Private_Type 4644 -- E_Private_Subtype 4645 -- E_Limited_Private_Type 4646 -- E_Limited_Private_Subtype 4647 -- E_Incomplete_Type 4648 E_Incomplete_Subtype; 4649 4650 subtype Integer_Kind is Entity_Kind range 4651 E_Signed_Integer_Type .. 4652 -- E_Signed_Integer_Subtype 4653 -- E_Modular_Integer_Type 4654 E_Modular_Integer_Subtype; 4655 4656 subtype Modular_Integer_Kind is Entity_Kind range 4657 E_Modular_Integer_Type .. 4658 E_Modular_Integer_Subtype; 4659 4660 subtype Named_Kind is Entity_Kind range 4661 E_Named_Integer .. 4662 E_Named_Real; 4663 4664 subtype Numeric_Kind is Entity_Kind range 4665 E_Signed_Integer_Type .. 4666 -- E_Signed_Integer_Subtype 4667 -- E_Modular_Integer_Type 4668 -- E_Modular_Integer_Subtype 4669 -- E_Ordinary_Fixed_Point_Type 4670 -- E_Ordinary_Fixed_Point_Subtype 4671 -- E_Decimal_Fixed_Point_Type 4672 -- E_Decimal_Fixed_Point_Subtype 4673 -- E_Floating_Point_Type 4674 E_Floating_Point_Subtype; 4675 4676 subtype Object_Kind is Entity_Kind range 4677 E_Component .. 4678 -- E_Constant 4679 -- E_Discriminant 4680 -- E_Loop_Parameter 4681 -- E_Variable 4682 -- E_Out_Parameter 4683 -- E_In_Out_Parameter 4684 -- E_In_Parameter 4685 -- E_Generic_In_Out_Parameter 4686 E_Generic_In_Parameter; 4687 4688 subtype Ordinary_Fixed_Point_Kind is Entity_Kind range 4689 E_Ordinary_Fixed_Point_Type .. 4690 E_Ordinary_Fixed_Point_Subtype; 4691 4692 subtype Overloadable_Kind is Entity_Kind range 4693 E_Enumeration_Literal .. 4694 -- E_Function 4695 -- E_Operator 4696 -- E_Procedure 4697 E_Entry; 4698 4699 subtype Private_Kind is Entity_Kind range 4700 E_Record_Type_With_Private .. 4701 -- E_Record_Subtype_With_Private 4702 -- E_Private_Type 4703 -- E_Private_Subtype 4704 -- E_Limited_Private_Type 4705 E_Limited_Private_Subtype; 4706 4707 subtype Protected_Kind is Entity_Kind range 4708 E_Protected_Type .. 4709 E_Protected_Subtype; 4710 4711 subtype Real_Kind is Entity_Kind range 4712 E_Ordinary_Fixed_Point_Type .. 4713 -- E_Ordinary_Fixed_Point_Subtype 4714 -- E_Decimal_Fixed_Point_Type 4715 -- E_Decimal_Fixed_Point_Subtype 4716 -- E_Floating_Point_Type 4717 E_Floating_Point_Subtype; 4718 4719 subtype Record_Kind is Entity_Kind range 4720 E_Class_Wide_Type .. 4721 -- E_Class_Wide_Subtype 4722 -- E_Record_Type 4723 -- E_Record_Subtype 4724 -- E_Record_Type_With_Private 4725 E_Record_Subtype_With_Private; 4726 4727 subtype Scalar_Kind is Entity_Kind range 4728 E_Enumeration_Type .. 4729 -- E_Enumeration_Subtype 4730 -- E_Signed_Integer_Type 4731 -- E_Signed_Integer_Subtype 4732 -- E_Modular_Integer_Type 4733 -- E_Modular_Integer_Subtype 4734 -- E_Ordinary_Fixed_Point_Type 4735 -- E_Ordinary_Fixed_Point_Subtype 4736 -- E_Decimal_Fixed_Point_Type 4737 -- E_Decimal_Fixed_Point_Subtype 4738 -- E_Floating_Point_Type 4739 E_Floating_Point_Subtype; 4740 4741 subtype String_Kind is Entity_Kind range 4742 E_String_Type .. 4743 -- E_String_Subtype 4744 E_String_Literal_Subtype; 4745 4746 subtype Subprogram_Kind is Entity_Kind range 4747 E_Function .. 4748 -- E_Operator 4749 E_Procedure; 4750 4751 subtype Signed_Integer_Kind is Entity_Kind range 4752 E_Signed_Integer_Type .. 4753 E_Signed_Integer_Subtype; 4754 4755 subtype Task_Kind is Entity_Kind range 4756 E_Task_Type .. 4757 E_Task_Subtype; 4758 4759 subtype Type_Kind is Entity_Kind range 4760 E_Enumeration_Type .. 4761 -- E_Enumeration_Subtype 4762 -- E_Signed_Integer_Type 4763 -- E_Signed_Integer_Subtype 4764 -- E_Modular_Integer_Type 4765 -- E_Modular_Integer_Subtype 4766 -- E_Ordinary_Fixed_Point_Type 4767 -- E_Ordinary_Fixed_Point_Subtype 4768 -- E_Decimal_Fixed_Point_Type 4769 -- E_Decimal_Fixed_Point_Subtype 4770 -- E_Floating_Point_Type 4771 -- E_Floating_Point_Subtype 4772 -- E_Access_Type 4773 -- E_Access_Subtype 4774 -- E_Access_Attribute_Type 4775 -- E_Allocator_Type, 4776 -- E_General_Access_Type 4777 -- E_Access_Subprogram_Type, 4778 -- E_Access_Protected_Subprogram_Type 4779 -- E_Anonymous_Access_Subprogram_Type 4780 -- E_Anonymous_Access_Protected_Subprogram_Type 4781 -- E_Anonymous_Access_Type 4782 -- E_Array_Type 4783 -- E_Array_Subtype 4784 -- E_String_Type 4785 -- E_String_Subtype 4786 -- E_String_Literal_Subtype 4787 -- E_Class_Wide_Subtype 4788 -- E_Class_Wide_Type 4789 -- E_Record_Type 4790 -- E_Record_Subtype 4791 -- E_Record_Type_With_Private 4792 -- E_Record_Subtype_With_Private 4793 -- E_Private_Type 4794 -- E_Private_Subtype 4795 -- E_Limited_Private_Type 4796 -- E_Limited_Private_Subtype 4797 -- E_Incomplete_Type 4798 -- E_Incomplete_Subtype 4799 -- E_Task_Type 4800 -- E_Task_Subtype 4801 -- E_Protected_Type 4802 -- E_Protected_Subtype 4803 -- E_Exception_Type 4804 E_Subprogram_Type; 4805 4806 -------------------------------------------------------- 4807 -- Description of Defined Attributes for Entity_Kinds -- 4808 -------------------------------------------------------- 4809 4810 -- For each enumeration value defined in Entity_Kind we list all the 4811 -- attributes defined in Einfo which can legally be applied to an entity 4812 -- of that kind. The implementation of the attribute functions (and for 4813 -- non-synthesized attributes, of the corresponding set procedures) are 4814 -- in the Einfo body. 4815 4816 -- The following attributes apply to all entities 4817 4818 -- Ekind (Ekind) 4819 4820 -- Chars (Name1) 4821 -- Next_Entity (Node2) 4822 -- Scope (Node3) 4823 -- Homonym (Node4) 4824 -- Etype (Node5) 4825 -- First_Rep_Item (Node6) 4826 -- Freeze_Node (Node7) 4827 4828 -- Address_Taken (Flag104) 4829 -- Can_Never_Be_Null (Flag38) 4830 -- Checks_May_Be_Suppressed (Flag31) 4831 -- Debug_Info_Off (Flag166) 4832 -- Has_Convention_Pragma (Flag119) 4833 -- Has_Delayed_Aspects (Flag200) 4834 -- Has_Delayed_Freeze (Flag18) 4835 -- Has_Fully_Qualified_Name (Flag173) 4836 -- Has_Gigi_Rep_Item (Flag82) 4837 -- Has_Homonym (Flag56) 4838 -- Has_Pragma_Elaborate_Body (Flag150) 4839 -- Has_Pragma_Inline (Flag157) 4840 -- Has_Pragma_Inline_Always (Flag230) 4841 -- Has_Pragma_No_Inline (Flag201) 4842 -- Has_Pragma_Pure (Flag203) 4843 -- Has_Pragma_Pure_Function (Flag179) 4844 -- Has_Pragma_Thread_Local_Storage (Flag169) 4845 -- Has_Pragma_Unmodified (Flag233) 4846 -- Has_Pragma_Unreferenced (Flag180) 4847 -- Has_Predicates (Flag250) 4848 -- Has_Private_Declaration (Flag155) 4849 -- Has_Qualified_Name (Flag161) 4850 -- Has_Stream_Size_Clause (Flag184) 4851 -- Has_Unknown_Discriminants (Flag72) 4852 -- Has_Xref_Entry (Flag182) 4853 -- In_Private_Part (Flag45) 4854 -- Is_Ada_2005_Only (Flag185) 4855 -- Is_Ada_2012_Only (Flag199) 4856 -- Is_Bit_Packed_Array (Flag122) (base type only) 4857 -- Is_Aliased (Flag15) 4858 -- Is_Character_Type (Flag63) 4859 -- Is_Child_Unit (Flag73) 4860 -- Is_Compilation_Unit (Flag149) 4861 -- Is_Completely_Hidden (Flag103) 4862 -- Is_Discrim_SO_Function (Flag176) 4863 -- Is_Dispatch_Table_Entity (Flag234) 4864 -- Is_Dispatching_Operation (Flag6) 4865 -- Is_Entry_Formal (Flag52) 4866 -- Is_Exported (Flag99) 4867 -- Is_First_Subtype (Flag70) 4868 -- Is_Formal_Subprogram (Flag111) 4869 -- Is_Generic_Instance (Flag130) 4870 -- Is_Generic_Type (Flag13) 4871 -- Is_Hidden (Flag57) 4872 -- Is_Hidden_Open_Scope (Flag171) 4873 -- Is_Immediately_Visible (Flag7) 4874 -- Is_Implementation_Defined (Flag254) 4875 -- Is_Imported (Flag24) 4876 -- Is_Inlined (Flag11) 4877 -- Is_Internal (Flag17) 4878 -- Is_Itype (Flag91) 4879 -- Is_Known_Non_Null (Flag37) 4880 -- Is_Known_Null (Flag204) 4881 -- Is_Known_Valid (Flag170) 4882 -- Is_Limited_Composite (Flag106) 4883 -- Is_Limited_Record (Flag25) 4884 -- Is_Obsolescent (Flag153) 4885 -- Is_Package_Body_Entity (Flag160) 4886 -- Is_Packed_Array_Type (Flag138) 4887 -- Is_Potentially_Use_Visible (Flag9) 4888 -- Is_Preelaborated (Flag59) 4889 -- Is_Primitive_Wrapper (Flag195) 4890 -- Is_Public (Flag10) 4891 -- Is_Pure (Flag44) 4892 -- Is_Remote_Call_Interface (Flag62) 4893 -- Is_Remote_Types (Flag61) 4894 -- Is_Renaming_Of_Object (Flag112) 4895 -- Is_Shared_Passive (Flag60) 4896 -- Is_Statically_Allocated (Flag28) 4897 -- Is_Tagged_Type (Flag55) 4898 -- Is_Trivial_Subprogram (Flag235) 4899 -- Is_Unchecked_Union (Flag117) 4900 -- Is_Visible_Formal (Flag206) 4901 -- Is_VMS_Exception (Flag133) 4902 -- Kill_Elaboration_Checks (Flag32) 4903 -- Kill_Range_Checks (Flag33) 4904 -- Low_Bound_Tested (Flag205) 4905 -- Materialize_Entity (Flag168) 4906 -- Needs_Debug_Info (Flag147) 4907 -- Never_Set_In_Source (Flag115) 4908 -- No_Return (Flag113) 4909 -- Overlays_Constant (Flag243) 4910 -- Referenced (Flag156) 4911 -- Referenced_As_LHS (Flag36) 4912 -- Referenced_As_Out_Parameter (Flag227) 4913 -- Suppress_Elaboration_Warnings (Flag148) 4914 -- Suppress_Style_Checks (Flag165) 4915 -- Suppress_Value_Tracking_On_Call (Flag217) 4916 -- Used_As_Generic_Actual (Flag222) 4917 -- Warnings_Off (Flag96) 4918 -- Warnings_Off_Used (Flag236) 4919 -- Warnings_Off_Used_Unmodified (Flag237) 4920 -- Warnings_Off_Used_Unreferenced (Flag238) 4921 -- Was_Hidden (Flag196) 4922 4923 -- Declaration_Node (synth) 4924 -- Has_Foreign_Convention (synth) 4925 -- Is_Dynamic_Scope (synth) 4926 -- Is_Standard_Character_Type (synth) 4927 -- Underlying_Type (synth) 4928 -- all classification attributes (synth) 4929 4930 -- The following list of access functions applies to all entities for 4931 -- types and subtypes. References to this list appear subsequently as 4932 -- as "(plus type attributes)" for each appropriate Entity_Kind. 4933 4934 -- Associated_Node_For_Itype (Node8) 4935 -- Class_Wide_Type (Node9) 4936 -- Full_View (Node11) 4937 -- Esize (Uint12) 4938 -- RM_Size (Uint13) 4939 -- Alignment (Uint14) 4940 -- Related_Expression (Node24) 4941 -- Current_Use_Clause (Node27) 4942 -- Subprograms_For_Type (Node29) 4943 4944 -- Depends_On_Private (Flag14) 4945 -- Discard_Names (Flag88) 4946 -- Finalize_Storage_Only (Flag158) (base type only) 4947 -- From_With_Type (Flag159) 4948 -- Has_Aliased_Components (Flag135) (base type only) 4949 -- Has_Alignment_Clause (Flag46) 4950 -- Has_Atomic_Components (Flag86) (base type only) 4951 -- Has_Completion_In_Body (Flag71) 4952 -- Has_Complex_Representation (Flag140) (base type only) 4953 -- Has_Constrained_Partial_View (Flag187) 4954 -- Has_Controlled_Component (Flag43) (base type only) 4955 -- Has_Default_Aspect (Flag39) (base type only) 4956 -- Has_Discriminants (Flag5) 4957 -- Has_Independent_Components (Flag34) (base type only) 4958 -- Has_Inheritable_Invariants (Flag248) 4959 -- Has_Invariants (Flag232) 4960 -- Has_Non_Standard_Rep (Flag75) (base type only) 4961 -- Has_Object_Size_Clause (Flag172) 4962 -- Has_Pragma_Preelab_Init (Flag221) 4963 -- Has_Pragma_Unreferenced_Objects (Flag212) 4964 -- Has_Primitive_Operations (Flag120) (base type only) 4965 -- Has_Size_Clause (Flag29) 4966 -- Has_Specified_Layout (Flag100) (base type only) 4967 -- Has_Specified_Stream_Input (Flag190) 4968 -- Has_Specified_Stream_Output (Flag191) 4969 -- Has_Specified_Stream_Read (Flag192) 4970 -- Has_Specified_Stream_Write (Flag193) 4971 -- Has_Task (Flag30) (base type only) 4972 -- Has_Unchecked_Union (Flag123) (base type only) 4973 -- Has_Volatile_Components (Flag87) (base type only) 4974 -- In_Use (Flag8) 4975 -- Is_Abstract_Type (Flag146) 4976 -- Is_Asynchronous (Flag81) 4977 -- Is_Atomic (Flag85) 4978 -- Is_Constr_Subt_For_U_Nominal (Flag80) 4979 -- Is_Constr_Subt_For_UN_Aliased (Flag141) 4980 -- Is_Controlled (Flag42) (base type only) 4981 -- Is_Eliminated (Flag124) 4982 -- Is_Frozen (Flag4) 4983 -- Is_Generic_Actual_Type (Flag94) 4984 -- Is_RACW_Stub_Type (Flag244) 4985 -- Is_Non_Static_Subtype (Flag109) 4986 -- Is_Packed (Flag51) (base type only) 4987 -- Is_Private_Composite (Flag107) 4988 -- Is_Unsigned_Type (Flag144) 4989 -- Is_Volatile (Flag16) 4990 -- Itype_Printed (Flag202) (itypes only) 4991 -- Known_To_Have_Preelab_Init (Flag207) 4992 -- Must_Be_On_Byte_Boundary (Flag183) 4993 -- Must_Have_Preelab_Init (Flag208) 4994 -- Optimize_Alignment_Space (Flag241) 4995 -- Optimize_Alignment_Time (Flag242) 4996 -- Size_Depends_On_Discriminant (Flag177) 4997 -- Size_Known_At_Compile_Time (Flag92) 4998 -- Strict_Alignment (Flag145) (base type only) 4999 -- Suppress_Initialization (Flag105) 5000 -- Treat_As_Volatile (Flag41) 5001 -- Universal_Aliasing (Flag216) (impl base type only) 5002 5003 -- Alignment_Clause (synth) 5004 -- Base_Type (synth) 5005 -- Implementation_Base_Type (synth) 5006 -- Invariant_Procedure (synth) 5007 -- Is_Access_Protected_Subprogram_Type (synth) 5008 -- Predicate_Function (synth) 5009 -- Root_Type (synth) 5010 -- Size_Clause (synth) 5011 5012 ------------------------------------------ 5013 -- Applicable attributes by entity kind -- 5014 ------------------------------------------ 5015 5016 -- E_Abstract_State 5017 -- Integrity_Level (Uint8) 5018 -- Refined_State (Node9) 5019 -- Is_Input_State (synth) 5020 -- Is_Null_State (synth) 5021 -- Is_Output_State (synth) 5022 -- Is_Volatile_State (synth) 5023 5024 -- E_Access_Protected_Subprogram_Type 5025 -- Equivalent_Type (Node18) 5026 -- Directly_Designated_Type (Node20) 5027 -- Needs_No_Actuals (Flag22) 5028 -- Can_Use_Internal_Rep (Flag229) 5029 -- (plus type attributes) 5030 5031 -- E_Access_Subprogram_Type 5032 -- Equivalent_Type (Node18) (remote types only) 5033 -- Directly_Designated_Type (Node20) 5034 -- Interface_Name (Node21) (JGNAT usage only) 5035 -- Needs_No_Actuals (Flag22) 5036 -- Original_Access_Type (Node26) 5037 -- Can_Use_Internal_Rep (Flag229) 5038 -- (plus type attributes) 5039 5040 -- E_Access_Type 5041 -- E_Access_Subtype 5042 -- Storage_Size_Variable (Node15) (base type only) 5043 -- Master_Id (Node17) 5044 -- Directly_Designated_Type (Node20) 5045 -- Associated_Storage_Pool (Node22) (base type only) 5046 -- Finalization_Master (Node23) (base type only) 5047 -- Has_Pragma_Controlled (Flag27) (base type only) 5048 -- Has_Storage_Size_Clause (Flag23) (base type only) 5049 -- Is_Access_Constant (Flag69) 5050 -- Is_Local_Anonymous_Access (Flag194) 5051 -- Is_Pure_Unit_Access_Type (Flag189) 5052 -- No_Pool_Assigned (Flag131) (base type only) 5053 -- No_Strict_Aliasing (Flag136) (base type only) 5054 -- (plus type attributes) 5055 5056 -- E_Access_Attribute_Type 5057 -- Directly_Designated_Type (Node20) 5058 -- (plus type attributes) 5059 5060 -- E_Allocator_Type 5061 -- Directly_Designated_Type (Node20) 5062 -- (plus type attributes) 5063 5064 -- E_Anonymous_Access_Subprogram_Type 5065 -- E_Anonymous_Access_Protected_Subprogram_Type 5066 -- Storage_Size_Variable (Node15) ??? is this needed ??? 5067 -- Directly_Designated_Type (Node20) 5068 -- Can_Use_Internal_Rep (Flag229) 5069 -- (plus type attributes) 5070 5071 -- E_Anonymous_Access_Type 5072 -- Storage_Size_Variable (Node15) ??? is this needed ??? 5073 -- Directly_Designated_Type (Node20) 5074 -- Finalization_Master (Node23) 5075 -- (plus type attributes) 5076 5077 -- E_Array_Type 5078 -- E_Array_Subtype 5079 -- First_Index (Node17) 5080 -- Default_Aspect_Component_Value (Node19) 5081 -- Component_Type (Node20) (base type only) 5082 -- Original_Array_Type (Node21) 5083 -- Component_Size (Uint22) (base type only) 5084 -- Packed_Array_Type (Node23) 5085 -- Related_Array_Object (Node25) 5086 -- Component_Alignment (special) (base type only) 5087 -- Has_Component_Size_Clause (Flag68) (base type only) 5088 -- Has_Pragma_Pack (Flag121) (impl base type only) 5089 -- Is_Constrained (Flag12) 5090 -- Reverse_Storage_Order (Flag93) (base type only) 5091 -- Next_Index (synth) 5092 -- Number_Dimensions (synth) 5093 -- (plus type attributes) 5094 5095 -- E_Block 5096 -- Block_Node (Node11) 5097 -- First_Entity (Node17) 5098 -- Last_Entity (Node20) 5099 -- Scope_Depth_Value (Uint22) 5100 -- Entry_Cancel_Parameter (Node23) 5101 -- Delay_Cleanups (Flag114) 5102 -- Discard_Names (Flag88) 5103 -- Has_Master_Entity (Flag21) 5104 -- Has_Nested_Block_With_Handler (Flag101) 5105 -- Sec_Stack_Needed_For_Return (Flag167) 5106 -- Uses_Sec_Stack (Flag95) 5107 -- Scope_Depth (synth) 5108 5109 -- E_Class_Wide_Type 5110 -- E_Class_Wide_Subtype 5111 -- Direct_Primitive_Operations (Elist10) 5112 -- Cloned_Subtype (Node16) (subtype case only) 5113 -- First_Entity (Node17) 5114 -- Equivalent_Type (Node18) (always Empty for type) 5115 -- Last_Entity (Node20) 5116 -- First_Component (synth) 5117 -- First_Component_Or_Discriminant (synth) 5118 -- (plus type attributes) 5119 5120 -- E_Component 5121 -- Normalized_First_Bit (Uint8) 5122 -- Current_Value (Node9) (always Empty) 5123 -- Normalized_Position_Max (Uint10) 5124 -- Component_Bit_Offset (Uint11) 5125 -- Esize (Uint12) 5126 -- Component_Clause (Node13) 5127 -- Normalized_Position (Uint14) 5128 -- DT_Entry_Count (Uint15) 5129 -- Entry_Formal (Node16) 5130 -- Prival (Node17) 5131 -- Renamed_Object (Node18) (always Empty) 5132 -- Discriminant_Checking_Func (Node20) 5133 -- Interface_Name (Node21) (JGNAT usage only) 5134 -- Original_Record_Component (Node22) 5135 -- DT_Offset_To_Top_Func (Node25) 5136 -- Related_Type (Node27) 5137 -- Has_Biased_Representation (Flag139) 5138 -- Has_Per_Object_Constraint (Flag154) 5139 -- Is_Atomic (Flag85) 5140 -- Is_Tag (Flag78) 5141 -- Is_Volatile (Flag16) 5142 -- Treat_As_Volatile (Flag41) 5143 -- Is_Return_Object (Flag209) 5144 -- Next_Component (synth) 5145 -- Next_Component_Or_Discriminant (synth) 5146 5147 -- E_Constant 5148 -- E_Loop_Parameter 5149 -- Current_Value (Node9) (always Empty) 5150 -- Discriminal_Link (Node10) 5151 -- Full_View (Node11) 5152 -- Esize (Uint12) 5153 -- Extra_Accessibility (Node13) (constants only) 5154 -- Alignment (Uint14) 5155 -- Status_Flag_Or_Transient_Decl (Node15) (constants only) 5156 -- Actual_Subtype (Node17) 5157 -- Renamed_Object (Node18) 5158 -- Size_Check_Code (Node19) (constants only) 5159 -- Prival_Link (Node20) (privals only) 5160 -- Interface_Name (Node21) (constants only) 5161 -- Related_Type (Node27) (constants only) 5162 -- Initialization_Statements (Node28) 5163 -- Has_Alignment_Clause (Flag46) 5164 -- Has_Atomic_Components (Flag86) 5165 -- Has_Biased_Representation (Flag139) 5166 -- Has_Completion (Flag26) (constants only) 5167 -- Has_Independent_Components (Flag34) (base type only) 5168 -- Has_Thunks (Flag228) (constants only) 5169 -- Has_Size_Clause (Flag29) 5170 -- Has_Up_Level_Access (Flag215) 5171 -- Has_Volatile_Components (Flag87) 5172 -- Is_Atomic (Flag85) 5173 -- Is_Eliminated (Flag124) 5174 -- Is_Processed_Transient (Flag252) (constants only) 5175 -- Is_Return_Object (Flag209) 5176 -- Is_True_Constant (Flag163) 5177 -- Is_Volatile (Flag16) 5178 -- Optimize_Alignment_Space (Flag241) (constants only) 5179 -- Optimize_Alignment_Time (Flag242) (constants only) 5180 -- Treat_As_Volatile (Flag41) 5181 -- Address_Clause (synth) 5182 -- Alignment_Clause (synth) 5183 -- Size_Clause (synth) 5184 5185 -- E_Decimal_Fixed_Point_Type 5186 -- E_Decimal_Fixed_Subtype 5187 -- Scale_Value (Uint15) 5188 -- Digits_Value (Uint17) 5189 -- Scalar_Range (Node20) 5190 -- Delta_Value (Ureal18) 5191 -- Small_Value (Ureal21) 5192 -- Has_Machine_Radix_Clause (Flag83) 5193 -- Machine_Radix_10 (Flag84) 5194 -- Aft_Value (synth) 5195 -- Type_Low_Bound (synth) 5196 -- Type_High_Bound (synth) 5197 -- (plus type attributes) 5198 5199 -- E_Discriminant 5200 -- Normalized_First_Bit (Uint8) 5201 -- Current_Value (Node9) (always Empty) 5202 -- Normalized_Position_Max (Uint10) 5203 -- Component_Bit_Offset (Uint11) 5204 -- Esize (Uint12) 5205 -- Component_Clause (Node13) 5206 -- Normalized_Position (Uint14) 5207 -- Discriminant_Number (Uint15) 5208 -- Discriminal (Node17) 5209 -- Renamed_Object (Node18) (always Empty) 5210 -- Corresponding_Discriminant (Node19) 5211 -- Discriminant_Default_Value (Node20) 5212 -- Interface_Name (Node21) (JGNAT usage only) 5213 -- Original_Record_Component (Node22) 5214 -- CR_Discriminant (Node23) 5215 -- Is_Return_Object (Flag209) 5216 -- Next_Component_Or_Discriminant (synth) 5217 -- Next_Discriminant (synth) 5218 -- Next_Stored_Discriminant (synth) 5219 5220 -- E_Entry 5221 -- E_Entry_Family 5222 -- Protected_Body_Subprogram (Node11) 5223 -- Barrier_Function (Node12) 5224 -- Entry_Parameters_Type (Node15) 5225 -- First_Entity (Node17) 5226 -- Alias (Node18) (for entry only. Empty) 5227 -- Last_Entity (Node20) 5228 -- Accept_Address (Elist21) 5229 -- Scope_Depth_Value (Uint22) 5230 -- Protection_Object (Node23) (protected kind) 5231 -- Contract (Node24) (for entry only) 5232 -- PPC_Wrapper (Node25) 5233 -- Extra_Formals (Node28) 5234 -- Default_Expressions_Processed (Flag108) 5235 -- Entry_Accepted (Flag152) 5236 -- Is_AST_Entry (Flag132) (for entry only) 5237 -- Needs_No_Actuals (Flag22) 5238 -- Sec_Stack_Needed_For_Return (Flag167) 5239 -- Uses_Sec_Stack (Flag95) 5240 -- Address_Clause (synth) 5241 -- Entry_Index_Type (synth) 5242 -- First_Formal (synth) 5243 -- First_Formal_With_Extras (synth) 5244 -- Last_Formal (synth) 5245 -- Number_Formals (synth) 5246 -- Scope_Depth (synth) 5247 5248 -- E_Entry_Index_Parameter 5249 -- Entry_Index_Constant (Node18) 5250 5251 -- E_Enumeration_Literal 5252 -- Enumeration_Pos (Uint11) 5253 -- Enumeration_Rep (Uint12) 5254 -- Alias (Node18) 5255 -- Enumeration_Rep_Expr (Node22) 5256 -- Next_Literal (synth) 5257 5258 -- E_Enumeration_Type 5259 -- E_Enumeration_Subtype 5260 -- Lit_Indexes (Node15) (root type only) 5261 -- Lit_Strings (Node16) (root type only) 5262 -- First_Literal (Node17) 5263 -- Default_Aspect_Value (Node19) 5264 -- Scalar_Range (Node20) 5265 -- Enum_Pos_To_Rep (Node23) (type only) 5266 -- Static_Predicate (List25) 5267 -- Has_Biased_Representation (Flag139) 5268 -- Has_Contiguous_Rep (Flag181) 5269 -- Has_Enumeration_Rep_Clause (Flag66) 5270 -- Has_Pragma_Ordered (Flag198) (base type only) 5271 -- Nonzero_Is_True (Flag162) (base type only) 5272 -- Type_Low_Bound (synth) 5273 -- Type_High_Bound (synth) 5274 -- (plus type attributes) 5275 5276 -- E_Exception 5277 -- Esize (Uint12) 5278 -- Alignment (Uint14) 5279 -- Renamed_Entity (Node18) 5280 -- Register_Exception_Call (Node20) 5281 -- Interface_Name (Node21) 5282 -- Exception_Code (Uint22) 5283 -- Discard_Names (Flag88) 5284 -- Is_VMS_Exception (Flag133) 5285 -- Is_Raised (Flag224) 5286 5287 -- E_Exception_Type 5288 -- Equivalent_Type (Node18) 5289 -- (plus type attributes) 5290 5291 -- E_Floating_Point_Type 5292 -- E_Floating_Point_Subtype 5293 -- Digits_Value (Uint17) 5294 -- Float_Rep (Uint10) (Float_Rep_Kind) 5295 -- Default_Aspect_Value (Node19) 5296 -- Scalar_Range (Node20) 5297 -- Machine_Emax_Value (synth) 5298 -- Machine_Emin_Value (synth) 5299 -- Machine_Mantissa_Value (synth) 5300 -- Machine_Radix_Value (synth) 5301 -- Model_Emin_Value (synth) 5302 -- Model_Epsilon_Value (synth) 5303 -- Model_Mantissa_Value (synth) 5304 -- Model_Small_Value (synth) 5305 -- Safe_Emax_Value (synth) 5306 -- Safe_First_Value (synth) 5307 -- Safe_Last_Value (synth) 5308 -- Type_Low_Bound (synth) 5309 -- Type_High_Bound (synth) 5310 -- Vax_Float (synth) 5311 -- (plus type attributes) 5312 5313 -- E_Function 5314 -- E_Generic_Function 5315 -- Mechanism (Uint8) (Mechanism_Type) 5316 -- Renaming_Map (Uint9) 5317 -- Handler_Records (List10) (non-generic case only) 5318 -- Protected_Body_Subprogram (Node11) 5319 -- Next_Inlined_Subprogram (Node12) 5320 -- Elaboration_Entity (Node13) (not implicit /=) 5321 -- First_Optional_Parameter (Node14) (non-generic case only) 5322 -- DT_Position (Uint15) 5323 -- DTC_Entity (Node16) 5324 -- First_Entity (Node17) 5325 -- Alias (Node18) (non-generic case only) 5326 -- Renamed_Entity (Node18) (generic case only) 5327 -- Extra_Accessibility_Of_Result (Node19) (non-generic case only) 5328 -- Last_Entity (Node20) 5329 -- Interface_Name (Node21) 5330 -- Scope_Depth_Value (Uint22) 5331 -- Generic_Renamings (Elist23) (for an instance) 5332 -- Inner_Instances (Elist23) (generic case only) 5333 -- Protection_Object (Node23) (for concurrent kind) 5334 -- Contract (Node24) 5335 -- Interface_Alias (Node25) 5336 -- Overridden_Operation (Node26) 5337 -- Wrapped_Entity (Node27) (non-generic case only) 5338 -- Extra_Formals (Node28) 5339 -- Subprograms_For_Type (Node29) 5340 -- Corresponding_Equality (Node30) (implicit /= only) 5341 -- Body_Needed_For_SAL (Flag40) 5342 -- Elaboration_Entity_Required (Flag174) 5343 -- Default_Expressions_Processed (Flag108) 5344 -- Delay_Cleanups (Flag114) 5345 -- Delay_Subprogram_Descriptors (Flag50) 5346 -- Discard_Names (Flag88) 5347 -- Has_Anonymous_Master (Flag253) 5348 -- Has_Completion (Flag26) 5349 -- Has_Controlling_Result (Flag98) 5350 -- Has_Invariants (Flag232) 5351 -- Has_Master_Entity (Flag21) 5352 -- Has_Missing_Return (Flag142) 5353 -- Has_Nested_Block_With_Handler (Flag101) 5354 -- Has_Postconditions (Flag240) 5355 -- Has_Recursive_Call (Flag143) 5356 -- Is_Abstract_Subprogram (Flag19) (non-generic case only) 5357 -- Is_Called (Flag102) (non-generic case only) 5358 -- Is_Constructor (Flag76) 5359 -- Is_Discrim_SO_Function (Flag176) 5360 -- Is_Eliminated (Flag124) 5361 -- Is_Instantiated (Flag126) (generic case only) 5362 -- Is_Intrinsic_Subprogram (Flag64) 5363 -- Is_Machine_Code_Subprogram (Flag137) (non-generic case only) 5364 -- Is_Primitive (Flag218) 5365 -- Is_Primitive_Wrapper (Flag195) (non-generic case only) 5366 -- Is_Private_Descendant (Flag53) 5367 -- Is_Private_Primitive (Flag245) (non-generic case only) 5368 -- Is_Pure (Flag44) 5369 -- Is_Thunk (Flag225) 5370 -- Is_Visible_Lib_Unit (Flag116) 5371 -- Needs_No_Actuals (Flag22) 5372 -- Requires_Overriding (Flag213) (non-generic case only) 5373 -- Return_Present (Flag54) 5374 -- Returns_By_Ref (Flag90) 5375 -- Sec_Stack_Needed_For_Return (Flag167) 5376 -- Uses_Sec_Stack (Flag95) 5377 -- Address_Clause (synth) 5378 -- First_Formal (synth) 5379 -- First_Formal_With_Extras (synth) 5380 -- Last_Formal (synth) 5381 -- Number_Formals (synth) 5382 -- Scope_Depth (synth) 5383 5384 -- E_General_Access_Type 5385 -- Storage_Size_Variable (Node15) (base type only) 5386 -- Master_Id (Node17) 5387 -- Directly_Designated_Type (Node20) 5388 -- Associated_Storage_Pool (Node22) (root type only) 5389 -- Finalization_Master (Node23) (root type only) 5390 -- (plus type attributes) 5391 5392 -- E_Generic_In_Parameter 5393 -- E_Generic_In_Out_Parameter 5394 -- Current_Value (Node9) (always Empty) 5395 -- Entry_Component (Node11) 5396 -- Actual_Subtype (Node17) 5397 -- Renamed_Object (Node18) (always Empty) 5398 -- Default_Value (Node20) 5399 -- Protected_Formal (Node22) 5400 -- Is_Controlling_Formal (Flag97) 5401 -- Is_Return_Object (Flag209) 5402 -- Parameter_Mode (synth) 5403 5404 -- E_Incomplete_Type 5405 -- E_Incomplete_Subtype 5406 -- Direct_Primitive_Operations (Elist10) 5407 -- Non_Limited_View (Node17) 5408 -- Private_Dependents (Elist18) 5409 -- Discriminant_Constraint (Elist21) 5410 -- Stored_Constraint (Elist23) 5411 -- (plus type attributes) 5412 5413 -- E_In_Parameter 5414 -- E_In_Out_Parameter 5415 -- E_Out_Parameter 5416 -- Mechanism (Uint8) (Mechanism_Type) 5417 -- Current_Value (Node9) 5418 -- Discriminal_Link (Node10) (discriminals only) 5419 -- Entry_Component (Node11) 5420 -- Esize (Uint12) 5421 -- Extra_Accessibility (Node13) 5422 -- Alignment (Uint14) 5423 -- Extra_Formal (Node15) 5424 -- Unset_Reference (Node16) 5425 -- Actual_Subtype (Node17) 5426 -- Renamed_Object (Node18) 5427 -- Spec_Entity (Node19) 5428 -- Default_Value (Node20) 5429 -- Default_Expr_Function (Node21) 5430 -- Protected_Formal (Node22) 5431 -- Extra_Constrained (Node23) 5432 -- Last_Assignment (Node26) (OUT, IN-OUT only) 5433 -- Has_Initial_Value (Flag219) 5434 -- Is_Controlling_Formal (Flag97) 5435 -- Is_Only_Out_Parameter (Flag226) 5436 -- Is_Optional_Parameter (Flag134) 5437 -- Low_Bound_Tested (Flag205) 5438 -- Is_Return_Object (Flag209) 5439 -- Parameter_Mode (synth) 5440 5441 -- E_Label 5442 -- Enclosing_Scope (Node18) 5443 -- Reachable (Flag49) 5444 5445 -- E_Limited_Private_Type 5446 -- E_Limited_Private_Subtype 5447 -- First_Entity (Node17) 5448 -- Private_Dependents (Elist18) 5449 -- Underlying_Full_View (Node19) 5450 -- Last_Entity (Node20) 5451 -- Discriminant_Constraint (Elist21) 5452 -- Private_View (Node22) 5453 -- Stored_Constraint (Elist23) 5454 -- Has_Completion (Flag26) 5455 -- (plus type attributes) 5456 5457 -- E_Loop 5458 -- First_Exit_Statement (Node8) 5459 -- Loop_Entry_Attributes (Elist10) 5460 -- Has_Exit (Flag47) 5461 -- Has_Master_Entity (Flag21) 5462 -- Has_Nested_Block_With_Handler (Flag101) 5463 5464 -- E_Modular_Integer_Type 5465 -- E_Modular_Integer_Subtype 5466 -- Modulus (Uint17) (base type only) 5467 -- Default_Aspect_Value (Node19) 5468 -- Original_Array_Type (Node21) 5469 -- Scalar_Range (Node20) 5470 -- Static_Predicate (List25) 5471 -- Non_Binary_Modulus (Flag58) (base type only) 5472 -- Has_Biased_Representation (Flag139) 5473 -- Type_Low_Bound (synth) 5474 -- Type_High_Bound (synth) 5475 -- (plus type attributes) 5476 5477 -- E_Named_Integer 5478 5479 -- E_Named_Real 5480 5481 -- E_Operator 5482 -- First_Entity (Node17) 5483 -- Alias (Node18) 5484 -- Extra_Accessibility_Of_Result (Node19) 5485 -- Last_Entity (Node20) 5486 -- Overridden_Operation (Node26) 5487 -- Subprograms_For_Type (Node29) 5488 -- Has_Invariants (Flag232) 5489 -- Has_Postconditions (Flag240) 5490 -- Is_Machine_Code_Subprogram (Flag137) 5491 -- Is_Pure (Flag44) 5492 -- Is_Intrinsic_Subprogram (Flag64) 5493 -- Is_Primitive (Flag218) 5494 -- Is_Thunk (Flag225) 5495 -- Default_Expressions_Processed (Flag108) 5496 -- Aren't there more flags and fields? seems like this list should be 5497 -- more similar to the E_Function list, which is much longer ??? 5498 5499 -- E_Ordinary_Fixed_Point_Type 5500 -- E_Ordinary_Fixed_Point_Subtype 5501 -- Delta_Value (Ureal18) 5502 -- Default_Aspect_Value (Node19) 5503 -- Scalar_Range (Node20) 5504 -- Small_Value (Ureal21) 5505 -- Has_Small_Clause (Flag67) 5506 -- Aft_Value (synth) 5507 -- Type_Low_Bound (synth) 5508 -- Type_High_Bound (synth) 5509 -- (plus type attributes) 5510 5511 -- E_Package 5512 -- E_Generic_Package 5513 -- Dependent_Instances (Elist8) (for an instance) 5514 -- Renaming_Map (Uint9) 5515 -- Handler_Records (List10) (non-generic case only) 5516 -- Generic_Homonym (Node11) (generic case only) 5517 -- Associated_Formal_Package (Node12) 5518 -- Elaboration_Entity (Node13) 5519 -- Shadow_Entities (List14) 5520 -- Related_Instance (Node15) (non-generic case only) 5521 -- First_Private_Entity (Node16) 5522 -- First_Entity (Node17) 5523 -- Renamed_Entity (Node18) 5524 -- Body_Entity (Node19) 5525 -- Last_Entity (Node20) 5526 -- Interface_Name (Node21) 5527 -- Scope_Depth_Value (Uint22) 5528 -- Generic_Renamings (Elist23) (for an instance) 5529 -- Inner_Instances (Elist23) (generic case only) 5530 -- Limited_View (Node23) (non-generic/instance) 5531 -- Finalizer (Node24) (non-generic case only) 5532 -- Abstract_States (Elist25) 5533 -- Package_Instantiation (Node26) 5534 -- Current_Use_Clause (Node27) 5535 -- Delay_Subprogram_Descriptors (Flag50) 5536 -- Body_Needed_For_SAL (Flag40) 5537 -- Discard_Names (Flag88) 5538 -- Elaboration_Entity_Required (Flag174) 5539 -- Elaborate_Body_Desirable (Flag210) (non-generic case only) 5540 -- From_With_Type (Flag159) 5541 -- Has_All_Calls_Remote (Flag79) 5542 -- Has_Anonymous_Master (Flag253) 5543 -- Has_Completion (Flag26) 5544 -- Has_Forward_Instantiation (Flag175) 5545 -- Has_Master_Entity (Flag21) 5546 -- Has_RACW (Flag214) (non-generic case only) 5547 -- In_Package_Body (Flag48) 5548 -- In_Use (Flag8) 5549 -- Is_Instantiated (Flag126) 5550 -- Is_Private_Descendant (Flag53) 5551 -- Is_Visible_Lib_Unit (Flag116) 5552 -- Renamed_In_Spec (Flag231) (non-generic case only) 5553 -- Static_Elaboration_Desired (Flag77) (non-generic case only) 5554 -- Is_Wrapper_Package (synth) (non-generic case only) 5555 -- Scope_Depth (synth) 5556 5557 -- E_Package_Body 5558 -- Handler_Records (List10) (non-generic case only) 5559 -- Related_Instance (Node15) (non-generic case only) 5560 -- First_Entity (Node17) 5561 -- Spec_Entity (Node19) 5562 -- Last_Entity (Node20) 5563 -- Scope_Depth_Value (Uint22) 5564 -- Finalizer (Node24) (non-generic case only) 5565 -- Delay_Subprogram_Descriptors (Flag50) 5566 -- Has_Anonymous_Master (Flag253) 5567 -- Scope_Depth (synth) 5568 5569 -- E_Private_Type 5570 -- E_Private_Subtype 5571 -- Direct_Primitive_Operations (Elist10) 5572 -- First_Entity (Node17) 5573 -- Private_Dependents (Elist18) 5574 -- Underlying_Full_View (Node19) 5575 -- Last_Entity (Node20) 5576 -- Discriminant_Constraint (Elist21) 5577 -- Private_View (Node22) 5578 -- Stored_Constraint (Elist23) 5579 -- Has_Completion (Flag26) 5580 -- Is_Controlled (Flag42) (base type only) 5581 -- Is_For_Access_Subtype (Flag118) (subtype only) 5582 -- (plus type attributes) 5583 5584 -- E_Procedure 5585 -- E_Generic_Procedure 5586 -- Postcondition_Proc (Node8) (non-generic case only) 5587 -- Renaming_Map (Uint9) 5588 -- Handler_Records (List10) (non-generic case only) 5589 -- Protected_Body_Subprogram (Node11) 5590 -- Next_Inlined_Subprogram (Node12) 5591 -- Elaboration_Entity (Node13) 5592 -- First_Optional_Parameter (Node14) (non-generic case only) 5593 -- DT_Position (Uint15) 5594 -- DTC_Entity (Node16) 5595 -- First_Entity (Node17) 5596 -- Alias (Node18) (non-generic case only) 5597 -- Renamed_Entity (Node18) (generic case only) 5598 -- Last_Entity (Node20) 5599 -- Interface_Name (Node21) 5600 -- Scope_Depth_Value (Uint22) 5601 -- Generic_Renamings (Elist23) (for an instance) 5602 -- Inner_Instances (Elist23) (generic case only) 5603 -- Protection_Object (Node23) (for concurrent kind) 5604 -- Contract (Node24) 5605 -- Interface_Alias (Node25) 5606 -- Overridden_Operation (Node26) (never for init proc) 5607 -- Wrapped_Entity (Node27) (non-generic case only) 5608 -- Extra_Formals (Node28) 5609 -- Static_Initialization (Node30) (init_proc only) 5610 -- Body_Needed_For_SAL (Flag40) 5611 -- Delay_Cleanups (Flag114) 5612 -- Discard_Names (Flag88) 5613 -- Elaboration_Entity_Required (Flag174) 5614 -- Default_Expressions_Processed (Flag108) 5615 -- Delay_Cleanups (Flag114) 5616 -- Delay_Subprogram_Descriptors (Flag50) 5617 -- Discard_Names (Flag88) 5618 -- Has_Anonymous_Master (Flag253) 5619 -- Has_Completion (Flag26) 5620 -- Has_Invariants (Flag232) 5621 -- Has_Master_Entity (Flag21) 5622 -- Has_Nested_Block_With_Handler (Flag101) 5623 -- Has_Postconditions (Flag240) 5624 -- Is_Abstract_Subprogram (Flag19) (non-generic case only) 5625 -- Is_Asynchronous (Flag81) 5626 -- Is_Called (Flag102) (non-generic case only) 5627 -- Is_Constructor (Flag76) 5628 -- Is_Eliminated (Flag124) 5629 -- Is_Instantiated (Flag126) (generic case only) 5630 -- Is_Interrupt_Handler (Flag89) 5631 -- Is_Intrinsic_Subprogram (Flag64) 5632 -- Is_Machine_Code_Subprogram (Flag137) (non-generic case only) 5633 -- Is_Null_Init_Proc (Flag178) 5634 -- Is_Primitive (Flag218) 5635 -- Is_Primitive_Wrapper (Flag195) (non-generic case only) 5636 -- Is_Private_Descendant (Flag53) 5637 -- Is_Private_Primitive (Flag245) (non-generic case only) 5638 -- Is_Pure (Flag44) 5639 -- Is_Thunk (Flag225) 5640 -- Is_Valued_Procedure (Flag127) 5641 -- Is_Visible_Lib_Unit (Flag116) 5642 -- Needs_No_Actuals (Flag22) 5643 -- No_Return (Flag113) 5644 -- Requires_Overriding (Flag213) (non-generic case only) 5645 -- Sec_Stack_Needed_For_Return (Flag167) 5646 -- Address_Clause (synth) 5647 -- First_Formal (synth) 5648 -- First_Formal_With_Extras (synth) 5649 -- Is_Finalizer (synth) 5650 -- Last_Formal (synth) 5651 -- Number_Formals (synth) 5652 5653 -- E_Protected_Body 5654 -- (any others??? First/Last Entity, Scope_Depth???) 5655 5656 -- E_Protected_Object 5657 5658 -- E_Protected_Type 5659 -- E_Protected_Subtype 5660 -- Direct_Primitive_Operations (Elist10) 5661 -- Entry_Bodies_Array (Node15) 5662 -- First_Private_Entity (Node16) 5663 -- First_Entity (Node17) 5664 -- Corresponding_Record_Type (Node18) 5665 -- Last_Entity (Node20) 5666 -- Discriminant_Constraint (Elist21) 5667 -- Scope_Depth_Value (Uint22) 5668 -- Scope_Depth (synth) 5669 -- Stored_Constraint (Elist23) 5670 -- Has_Interrupt_Handler (synth) 5671 -- Sec_Stack_Needed_For_Return (Flag167) ??? 5672 -- Uses_Lock_Free (Flag188) 5673 -- Uses_Sec_Stack (Flag95) ??? 5674 -- Has_Entries (synth) 5675 -- Number_Entries (synth) 5676 5677 -- E_Record_Type 5678 -- E_Record_Subtype 5679 -- Direct_Primitive_Operations (Elist10) 5680 -- Access_Disp_Table (Elist16) (base type only) 5681 -- Cloned_Subtype (Node16) (subtype case only) 5682 -- First_Entity (Node17) 5683 -- Corresponding_Concurrent_Type (Node18) 5684 -- Parent_Subtype (Node19) (base type only) 5685 -- Last_Entity (Node20) 5686 -- Discriminant_Constraint (Elist21) 5687 -- Corresponding_Remote_Type (Node22) 5688 -- Stored_Constraint (Elist23) 5689 -- Interfaces (Elist25) 5690 -- Dispatch_Table_Wrappers (Elist26) (base type only) 5691 -- Underlying_Record_View (Node28) (base type only) 5692 -- Component_Alignment (special) (base type only) 5693 -- C_Pass_By_Copy (Flag125) (base type only) 5694 -- Has_Dispatch_Table (Flag220) (base tagged type only) 5695 -- Has_External_Tag_Rep_Clause (Flag110) 5696 -- Has_Pragma_Pack (Flag121) (impl base type only) 5697 -- Has_Private_Ancestor (Flag151) 5698 -- Has_Record_Rep_Clause (Flag65) (base type only) 5699 -- Has_Static_Discriminants (Flag211) (subtype only) 5700 -- Is_Class_Wide_Equivalent_Type (Flag35) 5701 -- Is_Concurrent_Record_Type (Flag20) 5702 -- Is_Constrained (Flag12) 5703 -- Is_Controlled (Flag42) (base type only) 5704 -- Is_Interface (Flag186) 5705 -- Is_Limited_Interface (Flag197) 5706 -- OK_To_Reorder_Components (Flag239) (base type only) 5707 -- Reverse_Bit_Order (Flag164) (base type only) 5708 -- Reverse_Storage_Order (Flag93) (base type only) 5709 -- First_Component (synth) 5710 -- First_Component_Or_Discriminant (synth) 5711 -- (plus type attributes) 5712 5713 -- E_Record_Type_With_Private 5714 -- E_Record_Subtype_With_Private 5715 -- Direct_Primitive_Operations (Elist10) 5716 -- First_Entity (Node17) 5717 -- Private_Dependents (Elist18) 5718 -- Underlying_Full_View (Node19) 5719 -- Last_Entity (Node20) 5720 -- Discriminant_Constraint (Elist21) 5721 -- Private_View (Node22) 5722 -- Stored_Constraint (Elist23) 5723 -- Interfaces (Elist25) 5724 -- Has_Completion (Flag26) 5725 -- Has_Private_Ancestor (Flag151) 5726 -- Has_Record_Rep_Clause (Flag65) (base type only) 5727 -- Has_External_Tag_Rep_Clause (Flag110) 5728 -- Is_Concurrent_Record_Type (Flag20) 5729 -- Is_Constrained (Flag12) 5730 -- Is_Controlled (Flag42) (base type only) 5731 -- Is_Interface (Flag186) 5732 -- Is_Limited_Interface (Flag197) 5733 -- OK_To_Reorder_Components (Flag239) (base type only) 5734 -- Reverse_Bit_Order (Flag164) (base type only) 5735 -- Reverse_Storage_Order (Flag93) (base type only) 5736 -- First_Component (synth) 5737 -- First_Component_Or_Discriminant (synth) 5738 -- (plus type attributes) 5739 5740 -- E_Return_Statement 5741 -- Return_Applies_To (Node8) 5742 5743 -- E_Signed_Integer_Type 5744 -- E_Signed_Integer_Subtype 5745 -- Default_Aspect_Value (Node19) 5746 -- Scalar_Range (Node20) 5747 -- Static_Predicate (List25) 5748 -- Has_Biased_Representation (Flag139) 5749 -- Type_Low_Bound (synth) 5750 -- Type_High_Bound (synth) 5751 -- (plus type attributes) 5752 5753 -- E_String_Type 5754 -- E_String_Subtype 5755 -- First_Index (Node17) 5756 -- Component_Type (Node20) (base type only) 5757 -- Is_Constrained (Flag12) 5758 -- Next_Index (synth) 5759 -- Number_Dimensions (synth) 5760 -- (plus type attributes) 5761 5762 -- E_String_Literal_Subtype 5763 -- String_Literal_Low_Bound (Node15) 5764 -- String_Literal_Length (Uint16) 5765 -- First_Index (Node17) (always Empty) 5766 -- Packed_Array_Type (Node23) 5767 -- (plus type attributes) 5768 5769 -- E_Subprogram_Body 5770 -- Mechanism (Uint8) 5771 -- First_Entity (Node17) 5772 -- Corresponding_Protected_Entry (Node18) 5773 -- Last_Entity (Node20) 5774 -- Scope_Depth_Value (Uint22) 5775 -- Extra_Formals (Node28) 5776 -- Scope_Depth (synth) 5777 5778 -- E_Subprogram_Type 5779 -- Extra_Accessibility_Of_Result (Node19) 5780 -- Directly_Designated_Type (Node20) 5781 -- Extra_Formals (Node28) 5782 -- First_Formal (synth) 5783 -- First_Formal_With_Extras (synth) 5784 -- Last_Formal (synth) 5785 -- Number_Formals (synth) 5786 -- (plus type attributes) 5787 5788 -- E_Task_Body 5789 -- (any others??? First/Last Entity, Scope_Depth???) 5790 5791 -- E_Task_Type 5792 -- E_Task_Subtype 5793 -- Direct_Primitive_Operations (Elist10) 5794 -- Storage_Size_Variable (Node15) (base type only) 5795 -- First_Private_Entity (Node16) 5796 -- First_Entity (Node17) 5797 -- Corresponding_Record_Type (Node18) 5798 -- Last_Entity (Node20) 5799 -- Discriminant_Constraint (Elist21) 5800 -- Scope_Depth_Value (Uint22) 5801 -- Scope_Depth (synth) 5802 -- Stored_Constraint (Elist23) 5803 -- Task_Body_Procedure (Node25) 5804 -- Delay_Cleanups (Flag114) 5805 -- Has_Master_Entity (Flag21) 5806 -- Has_Storage_Size_Clause (Flag23) (base type only) 5807 -- Uses_Sec_Stack (Flag95) ??? 5808 -- Sec_Stack_Needed_For_Return (Flag167) ??? 5809 -- Has_Entries (synth) 5810 -- Number_Entries (synth) 5811 -- Relative_Deadline_Variable (Node26) (base type only) 5812 -- (plus type attributes) 5813 5814 -- E_Variable 5815 -- Hiding_Loop_Variable (Node8) 5816 -- Current_Value (Node9) 5817 -- Esize (Uint12) 5818 -- Extra_Accessibility (Node13) 5819 -- Alignment (Uint14) 5820 -- Status_Flag_Or_Transient_Decl (Node15) (transient object only) 5821 -- Unset_Reference (Node16) 5822 -- Actual_Subtype (Node17) 5823 -- Renamed_Object (Node18) 5824 -- Size_Check_Code (Node19) 5825 -- Prival_Link (Node20) 5826 -- Interface_Name (Node21) 5827 -- Shared_Var_Procs_Instance (Node22) 5828 -- Extra_Constrained (Node23) 5829 -- Related_Expression (Node24) 5830 -- Debug_Renaming_Link (Node25) 5831 -- Last_Assignment (Node26) 5832 -- Related_Type (Node27) 5833 -- Initialization_Statements (Node28) 5834 -- Has_Alignment_Clause (Flag46) 5835 -- Has_Atomic_Components (Flag86) 5836 -- Has_Biased_Representation (Flag139) 5837 -- Has_Independent_Components (Flag34) (base type only) 5838 -- Has_Initial_Value (Flag219) 5839 -- Has_Size_Clause (Flag29) 5840 -- Has_Up_Level_Access (Flag215) 5841 -- Has_Volatile_Components (Flag87) 5842 -- Is_Atomic (Flag85) 5843 -- Is_Eliminated (Flag124) 5844 -- Is_Processed_Transient (Flag252) 5845 -- Is_Safe_To_Reevaluate (Flag249) 5846 -- Is_Shared_Passive (Flag60) 5847 -- Is_True_Constant (Flag163) 5848 -- Is_Volatile (Flag16) 5849 -- Is_Return_Object (Flag209) 5850 -- OK_To_Rename (Flag247) 5851 -- Optimize_Alignment_Space (Flag241) 5852 -- Optimize_Alignment_Time (Flag242) 5853 -- Treat_As_Volatile (Flag41) 5854 -- Address_Clause (synth) 5855 -- Alignment_Clause (synth) 5856 -- Size_Clause (synth) 5857 5858 -- E_Void 5859 -- Since E_Void is the initial Ekind value of an entity when it is first 5860 -- created, one might expect that no attributes would be defined on such 5861 -- an entity until its Ekind field is set. However, in practice, there 5862 -- are many instances in which fields of an E_Void entity are set in the 5863 -- code prior to setting the Ekind field. This is not well documented or 5864 -- well controlled, and needs cleaning up later. Meanwhile, the access 5865 -- procedures in the body of Einfo permit many, but not all, attributes 5866 -- to be applied to an E_Void entity, precisely so that this kind of 5867 -- pre-setting of attributes works. This is really a hole in the dynamic 5868 -- type checking, since there is no assurance that the eventual Ekind 5869 -- value will be appropriate for the attributes set, and the consequence 5870 -- is that the dynamic type checking in the Einfo body is unnecessarily 5871 -- weak. To be looked at systematically some time ??? 5872 5873 --------------------------------- 5874 -- Component_Alignment Control -- 5875 --------------------------------- 5876 5877 -- There are four types of alignment possible for array and record 5878 -- types, and a field in the type entities contains a value of the 5879 -- following type indicating which alignment choice applies. For full 5880 -- details of the meaning of these alignment types, see description 5881 -- of the Component_Alignment pragma 5882 5883 type Component_Alignment_Kind is ( 5884 Calign_Default, -- default alignment 5885 Calign_Component_Size, -- natural alignment for component size 5886 Calign_Component_Size_4, -- natural for size <= 4, 4 for size >= 4 5887 Calign_Storage_Unit); -- all components byte aligned 5888 5889 ----------------------------------- 5890 -- Floating Point Representation -- 5891 ----------------------------------- 5892 5893 type Float_Rep_Kind is ( 5894 IEEE_Binary, -- IEEE 754p conform binary format 5895 VAX_Native, -- VAX D, F, G or H format 5896 AAMP); -- AAMP format 5897 5898 --------------- 5899 -- Iterators -- 5900 --------------- 5901 5902 -- In addition to attributes that are stored as plain data, other 5903 -- attributes are procedural, and require some small amount of 5904 -- computation. Of course, from the point of view of a user of this 5905 -- package, the distinction is not visible (even the field information 5906 -- provided below should be disregarded, as it is subject to change 5907 -- without notice!). A number of attributes appear as lists: lists of 5908 -- formals, lists of actuals, of discriminants, etc. For these, pairs 5909 -- of functions are defined, which take the form: 5910 5911 -- function First_Thing (E : Enclosing_Construct) return Thing; 5912 -- function Next_Thing (T : Thing) return Thing; 5913 5914 -- The end of iteration is always signaled by a value of Empty, so that 5915 -- loops over these chains invariably have the form: 5916 5917 -- This : Thing; 5918 -- ... 5919 -- This := First_Thing (E); 5920 5921 -- while Present (This) loop 5922 -- Do_Something_With (This); 5923 -- ... 5924 -- This := Next_Thing (This); 5925 -- end loop; 5926 5927 ----------------------------------- 5928 -- Handling of Check Suppression -- 5929 ----------------------------------- 5930 5931 -- There are three ways that checks can be suppressed: 5932 5933 -- 1. At the command line level 5934 -- 2. At the scope level. 5935 -- 3. At the entity level. 5936 5937 -- See spec of Sem in sem.ads for details of the data structures used 5938 -- to keep track of these various methods for suppressing checks. 5939 5940 ------------------------------- 5941 -- Handling of Discriminants -- 5942 ------------------------------- 5943 5944 -- During semantic processing, discriminants are separate entities which 5945 -- reflect the semantic properties and allowed usage of discriminants in 5946 -- the language. 5947 5948 -- In the case of discriminants used as bounds, the references are handled 5949 -- directly, since special processing is needed in any case. However, there 5950 -- are two circumstances in which discriminants are referenced in a quite 5951 -- general manner, like any other variables: 5952 5953 -- In initialization expressions for records. Note that the expressions 5954 -- used in Priority, Storage_Size, Task_Info and Relative_Deadline 5955 -- pragmas are effectively in this category, since these pragmas are 5956 -- converted to initialized record fields in the Corresponding_Record_ 5957 -- Type. 5958 5959 -- In task and protected bodies, where the discriminant values may be 5960 -- referenced freely within these bodies. Discriminants can also appear 5961 -- in bounds of entry families and in defaults of operations. 5962 5963 -- In both these cases, the discriminants must be treated essentially as 5964 -- objects. The following approach is used to simplify and minimize the 5965 -- special processing that is required. 5966 5967 -- When a record type with discriminants is analyzed, semantic processing 5968 -- creates the entities for the discriminants. It also creates additional 5969 -- sets of entities called discriminals, one for each of the discriminants, 5970 -- and the Discriminal field of the discriminant entity points to this 5971 -- additional entity, which is initially created as an uninitialized 5972 -- (E_Void) entity. 5973 5974 -- During expansion of expressions, any discriminant reference is replaced 5975 -- by a reference to the corresponding discriminal. When the initialization 5976 -- procedure for the record is created (there will always be one, since 5977 -- discriminants are present, see Exp_Ch3 for further details), the 5978 -- discriminals are used as the entities for the formal parameters of 5979 -- this initialization procedure. The references to these discriminants 5980 -- have already been replaced by references to these discriminals, which 5981 -- are now the formal parameters corresponding to the required objects. 5982 5983 -- In the case of a task or protected body, the semantics similarly creates 5984 -- a set of discriminals for the discriminants of the task or protected 5985 -- type. When the procedure is created for the task body, the parameter 5986 -- passed in is a reference to the task value type, which contains the 5987 -- required discriminant values. The expander creates a set of declarations 5988 -- of the form: 5989 5990 -- discr_nameD : constant discr_type renames _task.discr_name; 5991 5992 -- where discr_nameD is the discriminal entity referenced by the task 5993 -- discriminant, and _task is the task value passed in as the parameter. 5994 -- Again, any references to discriminants in the task body have been 5995 -- replaced by the discriminal reference, which is now an object that 5996 -- contains the required value. 5997 5998 -- This approach for tasks means that two sets of discriminals are needed 5999 -- for a task type, one for the initialization procedure, and one for the 6000 -- task body. This works out nicely, since the semantics allocates one set 6001 -- for the task itself, and one set for the corresponding record. 6002 6003 -- The one bit of trickiness arises in making sure that the right set of 6004 -- discriminals is used at the right time. First the task definition is 6005 -- processed. Any references to discriminants here are replaced by the 6006 -- corresponding *task* discriminals (the record type doesn't even exist 6007 -- yet, since it is constructed as part of the expansion of the task 6008 -- declaration, which happens after the semantic processing of the task 6009 -- definition). The discriminants to be used for the corresponding record 6010 -- are created at the same time as the other discriminals, and held in the 6011 -- CR_Discriminant field of the discriminant. A use of the discriminant in 6012 -- a bound for an entry family is replaced with the CR_Discriminant because 6013 -- it controls the bound of the entry queue array which is a component of 6014 -- the corresponding record. 6015 6016 -- Just before the record initialization routine is constructed, the 6017 -- expander exchanges the task and record discriminals. This has two 6018 -- effects. First the generation of the record initialization routine 6019 -- uses the discriminals that are now on the record, which is the set 6020 -- that used to be on the task, which is what we want. 6021 6022 -- Second, a new set of (so far unused) discriminals is now on the task 6023 -- discriminants, and it is this set that will be used for expanding the 6024 -- task body, and also for the discriminal declarations at the start of 6025 -- the task body. 6026 6027 --------------------------------------------------- 6028 -- Handling of private data in protected objects -- 6029 --------------------------------------------------- 6030 6031 -- Private components in protected types pose problems similar to those 6032 -- of discriminants. Private data is visible and can be directly referenced 6033 -- from protected bodies. However, when protected entries and subprograms 6034 -- are expanded into corresponding bodies and barrier functions, private 6035 -- components lose their original context and visibility. 6036 6037 -- To remedy this side effect of expansion, private components are expanded 6038 -- into renamings called "privals", by analogy with "discriminals". 6039 6040 -- private_comp : comp_type renames _object.private_comp; 6041 6042 -- Prival declarations are inserted during the analysis of subprogram and 6043 -- entry bodies to ensure proper visibility for any subsequent expansion. 6044 -- _Object is the formal parameter of the generated corresponding body or 6045 -- a local renaming which denotes the protected object obtained from entry 6046 -- parameter _O. Privals receive minimal decoration upon creation and are 6047 -- categorized as either E_Variable for the general case or E_Constant when 6048 -- they appear in functions. 6049 6050 -- Along with the local declarations, each private component carries a 6051 -- placeholder which references the prival entity in the current body. This 6052 -- form of indirection is used to resolve name clashes of privals and other 6053 -- locally visible entities such as parameters, local objects, entry family 6054 -- indexes or identifiers used in the barrier condition. 6055 6056 -- When analyzing the statements of a protected subprogram or entry, any 6057 -- reference to a private component must resolve to the locally declared 6058 -- prival through normal visibility. In case of name conflicts (the cases 6059 -- above), the prival is marked as hidden and acts as a weakly declared 6060 -- entity. As a result, the reference points to the correct entity. When a 6061 -- private component is denoted by an expanded name (prot_type.comp for 6062 -- example), the expansion mechanism uses the placeholder of the component 6063 -- to correct the Entity and Etype of the reference. 6064 6065 ------------------- 6066 -- Type Synonyms -- 6067 ------------------- 6068 6069 -- The following type synonyms are used to tidy up the function and 6070 -- procedure declarations that follow, and also to make it possible to meet 6071 -- the requirement for the XEINFO utility that all function specs must fit 6072 -- on a single source line. 6073 6074 subtype B is Boolean; 6075 subtype C is Component_Alignment_Kind; 6076 subtype E is Entity_Id; 6077 subtype F is Float_Rep_Kind; 6078 subtype M is Mechanism_Type; 6079 subtype N is Node_Id; 6080 subtype U is Uint; 6081 subtype R is Ureal; 6082 subtype L is Elist_Id; 6083 subtype S is List_Id; 6084 6085 -------------------------------- 6086 -- Attribute Access Functions -- 6087 -------------------------------- 6088 6089 -- All attributes are manipulated through a procedural interface. This 6090 -- section contains the functions used to obtain attribute values which 6091 -- correspond to values in fields or flags in the entity itself. 6092 6093 function Abstract_States (Id : E) return L; 6094 function Accept_Address (Id : E) return L; 6095 function Access_Disp_Table (Id : E) return L; 6096 function Actual_Subtype (Id : E) return E; 6097 function Address_Taken (Id : E) return B; 6098 function Alias (Id : E) return E; 6099 function Alignment (Id : E) return U; 6100 function Associated_Formal_Package (Id : E) return E; 6101 function Associated_Node_For_Itype (Id : E) return N; 6102 function Associated_Storage_Pool (Id : E) return E; 6103 function Barrier_Function (Id : E) return N; 6104 function Block_Node (Id : E) return N; 6105 function Body_Entity (Id : E) return E; 6106 function Body_Needed_For_SAL (Id : E) return B; 6107 function CR_Discriminant (Id : E) return E; 6108 function C_Pass_By_Copy (Id : E) return B; 6109 function Can_Never_Be_Null (Id : E) return B; 6110 function Can_Use_Internal_Rep (Id : E) return B; 6111 function Checks_May_Be_Suppressed (Id : E) return B; 6112 function Class_Wide_Type (Id : E) return E; 6113 function Cloned_Subtype (Id : E) return E; 6114 function Component_Alignment (Id : E) return C; 6115 function Component_Bit_Offset (Id : E) return U; 6116 function Component_Clause (Id : E) return N; 6117 function Component_Size (Id : E) return U; 6118 function Component_Type (Id : E) return E; 6119 function Contract (Id : E) return N; 6120 function Corresponding_Concurrent_Type (Id : E) return E; 6121 function Corresponding_Discriminant (Id : E) return E; 6122 function Corresponding_Equality (Id : E) return E; 6123 function Corresponding_Protected_Entry (Id : E) return E; 6124 function Corresponding_Record_Type (Id : E) return E; 6125 function Corresponding_Remote_Type (Id : E) return E; 6126 function Current_Use_Clause (Id : E) return E; 6127 function Current_Value (Id : E) return N; 6128 function DTC_Entity (Id : E) return E; 6129 function DT_Entry_Count (Id : E) return U; 6130 function DT_Offset_To_Top_Func (Id : E) return E; 6131 function DT_Position (Id : E) return U; 6132 function Debug_Info_Off (Id : E) return B; 6133 function Debug_Renaming_Link (Id : E) return E; 6134 function Default_Aspect_Component_Value (Id : E) return N; 6135 function Default_Aspect_Value (Id : E) return N; 6136 function Default_Expr_Function (Id : E) return E; 6137 function Default_Expressions_Processed (Id : E) return B; 6138 function Default_Value (Id : E) return N; 6139 function Delay_Cleanups (Id : E) return B; 6140 function Delay_Subprogram_Descriptors (Id : E) return B; 6141 function Delta_Value (Id : E) return R; 6142 function Dependent_Instances (Id : E) return L; 6143 function Depends_On_Private (Id : E) return B; 6144 function Digits_Value (Id : E) return U; 6145 function Direct_Primitive_Operations (Id : E) return L; 6146 function Directly_Designated_Type (Id : E) return E; 6147 function Discard_Names (Id : E) return B; 6148 function Discriminal (Id : E) return E; 6149 function Discriminal_Link (Id : E) return E; 6150 function Discriminant_Checking_Func (Id : E) return E; 6151 function Discriminant_Constraint (Id : E) return L; 6152 function Discriminant_Default_Value (Id : E) return N; 6153 function Discriminant_Number (Id : E) return U; 6154 function Dispatch_Table_Wrappers (Id : E) return L; 6155 function Elaborate_Body_Desirable (Id : E) return B; 6156 function Elaboration_Entity (Id : E) return E; 6157 function Elaboration_Entity_Required (Id : E) return B; 6158 function Enclosing_Scope (Id : E) return E; 6159 function Entry_Accepted (Id : E) return B; 6160 function Entry_Bodies_Array (Id : E) return E; 6161 function Entry_Cancel_Parameter (Id : E) return E; 6162 function Entry_Component (Id : E) return E; 6163 function Entry_Formal (Id : E) return E; 6164 function Entry_Index_Constant (Id : E) return E; 6165 function Entry_Index_Type (Id : E) return E; 6166 function Entry_Parameters_Type (Id : E) return E; 6167 function Enum_Pos_To_Rep (Id : E) return E; 6168 function Enumeration_Pos (Id : E) return U; 6169 function Enumeration_Rep (Id : E) return U; 6170 function Enumeration_Rep_Expr (Id : E) return N; 6171 function Equivalent_Type (Id : E) return E; 6172 function Esize (Id : E) return U; 6173 function Exception_Code (Id : E) return U; 6174 function Extra_Accessibility (Id : E) return E; 6175 function Extra_Accessibility_Of_Result (Id : E) return E; 6176 function Extra_Constrained (Id : E) return E; 6177 function Extra_Formal (Id : E) return E; 6178 function Extra_Formals (Id : E) return E; 6179 function Finalization_Master (Id : E) return E; 6180 function Finalize_Storage_Only (Id : E) return B; 6181 function Finalizer (Id : E) return E; 6182 function First_Entity (Id : E) return E; 6183 function First_Exit_Statement (Id : E) return N; 6184 function First_Index (Id : E) return N; 6185 function First_Literal (Id : E) return E; 6186 function First_Optional_Parameter (Id : E) return E; 6187 function First_Private_Entity (Id : E) return E; 6188 function First_Rep_Item (Id : E) return N; 6189 function Float_Rep (Id : E) return F; 6190 function Freeze_Node (Id : E) return N; 6191 function From_With_Type (Id : E) return B; 6192 function Full_View (Id : E) return E; 6193 function Generic_Homonym (Id : E) return E; 6194 function Generic_Renamings (Id : E) return L; 6195 function Handler_Records (Id : E) return S; 6196 function Has_Aliased_Components (Id : E) return B; 6197 function Has_Alignment_Clause (Id : E) return B; 6198 function Has_All_Calls_Remote (Id : E) return B; 6199 function Has_Anonymous_Master (Id : E) return B; 6200 function Has_Atomic_Components (Id : E) return B; 6201 function Has_Biased_Representation (Id : E) return B; 6202 function Has_Completion (Id : E) return B; 6203 function Has_Completion_In_Body (Id : E) return B; 6204 function Has_Complex_Representation (Id : E) return B; 6205 function Has_Component_Size_Clause (Id : E) return B; 6206 function Has_Constrained_Partial_View (Id : E) return B; 6207 function Has_Contiguous_Rep (Id : E) return B; 6208 function Has_Controlled_Component (Id : E) return B; 6209 function Has_Controlling_Result (Id : E) return B; 6210 function Has_Convention_Pragma (Id : E) return B; 6211 function Has_Default_Aspect (Id : E) return B; 6212 function Has_Delayed_Aspects (Id : E) return B; 6213 function Has_Delayed_Freeze (Id : E) return B; 6214 function Has_Discriminants (Id : E) return B; 6215 function Has_Dispatch_Table (Id : E) return B; 6216 function Has_Enumeration_Rep_Clause (Id : E) return B; 6217 function Has_Exit (Id : E) return B; 6218 function Has_External_Tag_Rep_Clause (Id : E) return B; 6219 function Has_Forward_Instantiation (Id : E) return B; 6220 function Has_Fully_Qualified_Name (Id : E) return B; 6221 function Has_Gigi_Rep_Item (Id : E) return B; 6222 function Has_Homonym (Id : E) return B; 6223 function Has_Implicit_Dereference (Id : E) return B; 6224 function Has_Independent_Components (Id : E) return B; 6225 function Has_Inheritable_Invariants (Id : E) return B; 6226 function Has_Initial_Value (Id : E) return B; 6227 function Has_Interrupt_Handler (Id : E) return B; 6228 function Has_Invariants (Id : E) return B; 6229 function Has_Machine_Radix_Clause (Id : E) return B; 6230 function Has_Master_Entity (Id : E) return B; 6231 function Has_Missing_Return (Id : E) return B; 6232 function Has_Nested_Block_With_Handler (Id : E) return B; 6233 function Has_Non_Standard_Rep (Id : E) return B; 6234 function Has_Object_Size_Clause (Id : E) return B; 6235 function Has_Per_Object_Constraint (Id : E) return B; 6236 function Has_Postconditions (Id : E) return B; 6237 function Has_Pragma_Controlled (Id : E) return B; 6238 function Has_Pragma_Elaborate_Body (Id : E) return B; 6239 function Has_Pragma_Inline (Id : E) return B; 6240 function Has_Pragma_Inline_Always (Id : E) return B; 6241 function Has_Pragma_No_Inline (Id : E) return B; 6242 function Has_Pragma_Ordered (Id : E) return B; 6243 function Has_Pragma_Pack (Id : E) return B; 6244 function Has_Pragma_Preelab_Init (Id : E) return B; 6245 function Has_Pragma_Pure (Id : E) return B; 6246 function Has_Pragma_Pure_Function (Id : E) return B; 6247 function Has_Pragma_Thread_Local_Storage (Id : E) return B; 6248 function Has_Pragma_Unmodified (Id : E) return B; 6249 function Has_Pragma_Unreferenced (Id : E) return B; 6250 function Has_Pragma_Unreferenced_Objects (Id : E) return B; 6251 function Has_Predicates (Id : E) return B; 6252 function Has_Primitive_Operations (Id : E) return B; 6253 function Has_Private_Ancestor (Id : E) return B; 6254 function Has_Qualified_Name (Id : E) return B; 6255 function Has_RACW (Id : E) return B; 6256 function Has_Record_Rep_Clause (Id : E) return B; 6257 function Has_Recursive_Call (Id : E) return B; 6258 function Has_Size_Clause (Id : E) return B; 6259 function Has_Small_Clause (Id : E) return B; 6260 function Has_Specified_Layout (Id : E) return B; 6261 function Has_Specified_Stream_Input (Id : E) return B; 6262 function Has_Specified_Stream_Output (Id : E) return B; 6263 function Has_Specified_Stream_Read (Id : E) return B; 6264 function Has_Specified_Stream_Write (Id : E) return B; 6265 function Has_Static_Discriminants (Id : E) return B; 6266 function Has_Storage_Size_Clause (Id : E) return B; 6267 function Has_Stream_Size_Clause (Id : E) return B; 6268 function Has_Task (Id : E) return B; 6269 function Has_Thunks (Id : E) return B; 6270 function Has_Unchecked_Union (Id : E) return B; 6271 function Has_Unknown_Discriminants (Id : E) return B; 6272 function Has_Up_Level_Access (Id : E) return B; 6273 function Has_Volatile_Components (Id : E) return B; 6274 function Has_Xref_Entry (Id : E) return B; 6275 function Hiding_Loop_Variable (Id : E) return E; 6276 function Homonym (Id : E) return E; 6277 function In_Package_Body (Id : E) return B; 6278 function In_Private_Part (Id : E) return B; 6279 function In_Use (Id : E) return B; 6280 function Initialization_Statements (Id : E) return N; 6281 function Integrity_Level (Id : E) return U; 6282 function Inner_Instances (Id : E) return L; 6283 function Interface_Alias (Id : E) return E; 6284 function Interface_Name (Id : E) return N; 6285 function Interfaces (Id : E) return L; 6286 function Is_AST_Entry (Id : E) return B; 6287 function Is_Abstract_Subprogram (Id : E) return B; 6288 function Is_Abstract_Type (Id : E) return B; 6289 function Is_Access_Constant (Id : E) return B; 6290 function Is_Ada_2005_Only (Id : E) return B; 6291 function Is_Ada_2012_Only (Id : E) return B; 6292 function Is_Aliased (Id : E) return B; 6293 function Is_Asynchronous (Id : E) return B; 6294 function Is_Atomic (Id : E) return B; 6295 function Is_Bit_Packed_Array (Id : E) return B; 6296 function Is_CPP_Class (Id : E) return B; 6297 function Is_Called (Id : E) return B; 6298 function Is_Character_Type (Id : E) return B; 6299 function Is_Child_Unit (Id : E) return B; 6300 function Is_Class_Wide_Equivalent_Type (Id : E) return B; 6301 function Is_Compilation_Unit (Id : E) return B; 6302 function Is_Completely_Hidden (Id : E) return B; 6303 function Is_Constr_Subt_For_UN_Aliased (Id : E) return B; 6304 function Is_Constr_Subt_For_U_Nominal (Id : E) return B; 6305 function Is_Constrained (Id : E) return B; 6306 function Is_Constructor (Id : E) return B; 6307 function Is_Controlled (Id : E) return B; 6308 function Is_Controlling_Formal (Id : E) return B; 6309 function Is_Discrim_SO_Function (Id : E) return B; 6310 function Is_Dispatch_Table_Entity (Id : E) return B; 6311 function Is_Dispatching_Operation (Id : E) return B; 6312 function Is_Eliminated (Id : E) return B; 6313 function Is_Entry_Formal (Id : E) return B; 6314 function Is_Exported (Id : E) return B; 6315 function Is_First_Subtype (Id : E) return B; 6316 function Is_For_Access_Subtype (Id : E) return B; 6317 function Is_Frozen (Id : E) return B; 6318 function Is_Generic_Instance (Id : E) return B; 6319 function Is_Hidden (Id : E) return B; 6320 function Is_Hidden_Open_Scope (Id : E) return B; 6321 function Is_Immediately_Visible (Id : E) return B; 6322 function Is_Implementation_Defined (Id : E) return B; 6323 function Is_Imported (Id : E) return B; 6324 function Is_Inlined (Id : E) return B; 6325 function Is_Instantiated (Id : E) return B; 6326 function Is_Interface (Id : E) return B; 6327 function Is_Internal (Id : E) return B; 6328 function Is_Interrupt_Handler (Id : E) return B; 6329 function Is_Intrinsic_Subprogram (Id : E) return B; 6330 function Is_Itype (Id : E) return B; 6331 function Is_Known_Non_Null (Id : E) return B; 6332 function Is_Known_Null (Id : E) return B; 6333 function Is_Known_Valid (Id : E) return B; 6334 function Is_Limited_Composite (Id : E) return B; 6335 function Is_Limited_Interface (Id : E) return B; 6336 function Is_Local_Anonymous_Access (Id : E) return B; 6337 function Is_Machine_Code_Subprogram (Id : E) return B; 6338 function Is_Non_Static_Subtype (Id : E) return B; 6339 function Is_Null_Init_Proc (Id : E) return B; 6340 function Is_Obsolescent (Id : E) return B; 6341 function Is_Only_Out_Parameter (Id : E) return B; 6342 function Is_Optional_Parameter (Id : E) return B; 6343 function Is_Package_Body_Entity (Id : E) return B; 6344 function Is_Packed (Id : E) return B; 6345 function Is_Packed_Array_Type (Id : E) return B; 6346 function Is_Potentially_Use_Visible (Id : E) return B; 6347 function Is_Preelaborated (Id : E) return B; 6348 function Is_Primitive (Id : E) return B; 6349 function Is_Primitive_Wrapper (Id : E) return B; 6350 function Is_Private_Composite (Id : E) return B; 6351 function Is_Private_Descendant (Id : E) return B; 6352 function Is_Private_Primitive (Id : E) return B; 6353 function Is_Processed_Transient (Id : E) return B; 6354 function Is_Public (Id : E) return B; 6355 function Is_Pure (Id : E) return B; 6356 function Is_Pure_Unit_Access_Type (Id : E) return B; 6357 function Is_RACW_Stub_Type (Id : E) return B; 6358 function Is_Raised (Id : E) return B; 6359 function Is_Remote_Call_Interface (Id : E) return B; 6360 function Is_Remote_Types (Id : E) return B; 6361 function Is_Renaming_Of_Object (Id : E) return B; 6362 function Is_Return_Object (Id : E) return B; 6363 function Is_Safe_To_Reevaluate (Id : E) return B; 6364 function Is_Shared_Passive (Id : E) return B; 6365 function Is_Statically_Allocated (Id : E) return B; 6366 function Is_Tag (Id : E) return B; 6367 function Is_Tagged_Type (Id : E) return B; 6368 function Is_Thunk (Id : E) return B; 6369 function Is_Trivial_Subprogram (Id : E) return B; 6370 function Is_True_Constant (Id : E) return B; 6371 function Is_Unchecked_Union (Id : E) return B; 6372 function Is_Underlying_Record_View (Id : E) return B; 6373 function Is_Unsigned_Type (Id : E) return B; 6374 function Is_VMS_Exception (Id : E) return B; 6375 function Is_Valued_Procedure (Id : E) return B; 6376 function Is_Visible_Formal (Id : E) return B; 6377 function Is_Visible_Lib_Unit (Id : E) return B; 6378 function Is_Volatile (Id : E) return B; 6379 function Itype_Printed (Id : E) return B; 6380 function Kill_Elaboration_Checks (Id : E) return B; 6381 function Kill_Range_Checks (Id : E) return B; 6382 function Known_To_Have_Preelab_Init (Id : E) return B; 6383 function Last_Assignment (Id : E) return N; 6384 function Last_Entity (Id : E) return E; 6385 function Limited_View (Id : E) return E; 6386 function Lit_Indexes (Id : E) return E; 6387 function Lit_Strings (Id : E) return E; 6388 function Loop_Entry_Attributes (Id : E) return L; 6389 function Low_Bound_Tested (Id : E) return B; 6390 function Machine_Radix_10 (Id : E) return B; 6391 function Master_Id (Id : E) return E; 6392 function Materialize_Entity (Id : E) return B; 6393 function Mechanism (Id : E) return M; 6394 function Modulus (Id : E) return U; 6395 function Must_Be_On_Byte_Boundary (Id : E) return B; 6396 function Must_Have_Preelab_Init (Id : E) return B; 6397 function Needs_Debug_Info (Id : E) return B; 6398 function Needs_No_Actuals (Id : E) return B; 6399 function Never_Set_In_Source (Id : E) return B; 6400 function Next_Inlined_Subprogram (Id : E) return E; 6401 function No_Pool_Assigned (Id : E) return B; 6402 function No_Return (Id : E) return B; 6403 function No_Strict_Aliasing (Id : E) return B; 6404 function Non_Binary_Modulus (Id : E) return B; 6405 function Non_Limited_View (Id : E) return E; 6406 function Nonzero_Is_True (Id : E) return B; 6407 function Normalized_First_Bit (Id : E) return U; 6408 function Normalized_Position (Id : E) return U; 6409 function Normalized_Position_Max (Id : E) return U; 6410 function OK_To_Rename (Id : E) return B; 6411 function OK_To_Reorder_Components (Id : E) return B; 6412 function Optimize_Alignment_Space (Id : E) return B; 6413 function Optimize_Alignment_Time (Id : E) return B; 6414 function Original_Access_Type (Id : E) return E; 6415 function Original_Array_Type (Id : E) return E; 6416 function Original_Record_Component (Id : E) return E; 6417 function Overlays_Constant (Id : E) return B; 6418 function Overridden_Operation (Id : E) return E; 6419 function PPC_Wrapper (Id : E) return E; 6420 function Package_Instantiation (Id : E) return N; 6421 function Packed_Array_Type (Id : E) return E; 6422 function Parent_Subtype (Id : E) return E; 6423 function Postcondition_Proc (Id : E) return E; 6424 function Prival (Id : E) return E; 6425 function Prival_Link (Id : E) return E; 6426 function Private_Dependents (Id : E) return L; 6427 function Private_View (Id : E) return N; 6428 function Protected_Body_Subprogram (Id : E) return E; 6429 function Protected_Formal (Id : E) return E; 6430 function Protection_Object (Id : E) return E; 6431 function RM_Size (Id : E) return U; 6432 function Reachable (Id : E) return B; 6433 function Referenced (Id : E) return B; 6434 function Referenced_As_LHS (Id : E) return B; 6435 function Referenced_As_Out_Parameter (Id : E) return B; 6436 function Refined_State (Id : E) return E; 6437 function Register_Exception_Call (Id : E) return N; 6438 function Related_Array_Object (Id : E) return E; 6439 function Related_Expression (Id : E) return N; 6440 function Related_Instance (Id : E) return E; 6441 function Related_Type (Id : E) return E; 6442 function Relative_Deadline_Variable (Id : E) return E; 6443 function Renamed_Entity (Id : E) return N; 6444 function Renamed_In_Spec (Id : E) return B; 6445 function Renamed_Object (Id : E) return N; 6446 function Renaming_Map (Id : E) return U; 6447 function Requires_Overriding (Id : E) return B; 6448 function Return_Applies_To (Id : E) return N; 6449 function Return_Present (Id : E) return B; 6450 function Returns_By_Ref (Id : E) return B; 6451 function Reverse_Bit_Order (Id : E) return B; 6452 function Reverse_Storage_Order (Id : E) return B; 6453 function Scalar_Range (Id : E) return N; 6454 function Scale_Value (Id : E) return U; 6455 function Scope_Depth_Value (Id : E) return U; 6456 function Sec_Stack_Needed_For_Return (Id : E) return B; 6457 function Shadow_Entities (Id : E) return S; 6458 function Shared_Var_Procs_Instance (Id : E) return E; 6459 function Size_Check_Code (Id : E) return N; 6460 function Size_Depends_On_Discriminant (Id : E) return B; 6461 function Size_Known_At_Compile_Time (Id : E) return B; 6462 function Small_Value (Id : E) return R; 6463 function Spec_Entity (Id : E) return E; 6464 function Static_Elaboration_Desired (Id : E) return B; 6465 function Static_Initialization (Id : E) return N; 6466 function Static_Predicate (Id : E) return S; 6467 function Status_Flag_Or_Transient_Decl (Id : E) return E; 6468 function Storage_Size_Variable (Id : E) return E; 6469 function Stored_Constraint (Id : E) return L; 6470 function Strict_Alignment (Id : E) return B; 6471 function String_Literal_Length (Id : E) return U; 6472 function String_Literal_Low_Bound (Id : E) return N; 6473 function Subprograms_For_Type (Id : E) return E; 6474 function Suppress_Elaboration_Warnings (Id : E) return B; 6475 function Suppress_Initialization (Id : E) return B; 6476 function Suppress_Style_Checks (Id : E) return B; 6477 function Suppress_Value_Tracking_On_Call (Id : E) return B; 6478 function Task_Body_Procedure (Id : E) return N; 6479 function Treat_As_Volatile (Id : E) return B; 6480 function Underlying_Full_View (Id : E) return E; 6481 function Underlying_Record_View (Id : E) return E; 6482 function Universal_Aliasing (Id : E) return B; 6483 function Unset_Reference (Id : E) return N; 6484 function Used_As_Generic_Actual (Id : E) return B; 6485 function Uses_Lock_Free (Id : E) return B; 6486 function Uses_Sec_Stack (Id : E) return B; 6487 function Vax_Float (Id : E) return B; 6488 function Warnings_Off (Id : E) return B; 6489 function Warnings_Off_Used (Id : E) return B; 6490 function Warnings_Off_Used_Unmodified (Id : E) return B; 6491 function Warnings_Off_Used_Unreferenced (Id : E) return B; 6492 function Was_Hidden (Id : E) return B; 6493 function Wrapped_Entity (Id : E) return E; 6494 6495 ------------------------------- 6496 -- Classification Attributes -- 6497 ------------------------------- 6498 6499 -- These functions provide a convenient functional notation for testing 6500 -- whether an Ekind value belongs to a specified kind, for example the 6501 -- function Is_Elementary_Type tests if its argument is in Elementary_Kind. 6502 -- In some cases, the test is of an entity attribute (e.g. in the case of 6503 -- Is_Generic_Type where the Ekind does not provide the needed information) 6504 6505 function Is_Access_Type (Id : E) return B; 6506 function Is_Access_Protected_Subprogram_Type (Id : E) return B; 6507 function Is_Access_Subprogram_Type (Id : E) return B; 6508 function Is_Aggregate_Type (Id : E) return B; 6509 function Is_Array_Type (Id : E) return B; 6510 function Is_Assignable (Id : E) return B; 6511 function Is_Class_Wide_Type (Id : E) return B; 6512 function Is_Composite_Type (Id : E) return B; 6513 function Is_Concurrent_Body (Id : E) return B; 6514 function Is_Concurrent_Record_Type (Id : E) return B; 6515 function Is_Concurrent_Type (Id : E) return B; 6516 function Is_Decimal_Fixed_Point_Type (Id : E) return B; 6517 function Is_Digits_Type (Id : E) return B; 6518 function Is_Descendent_Of_Address (Id : E) return B; 6519 function Is_Discrete_Or_Fixed_Point_Type (Id : E) return B; 6520 function Is_Discrete_Type (Id : E) return B; 6521 function Is_Elementary_Type (Id : E) return B; 6522 function Is_Entry (Id : E) return B; 6523 function Is_Enumeration_Type (Id : E) return B; 6524 function Is_Fixed_Point_Type (Id : E) return B; 6525 function Is_Floating_Point_Type (Id : E) return B; 6526 function Is_Formal (Id : E) return B; 6527 function Is_Formal_Object (Id : E) return B; 6528 function Is_Formal_Subprogram (Id : E) return B; 6529 function Is_Generic_Actual_Type (Id : E) return B; 6530 function Is_Generic_Unit (Id : E) return B; 6531 function Is_Generic_Type (Id : E) return B; 6532 function Is_Generic_Subprogram (Id : E) return B; 6533 function Is_Incomplete_Or_Private_Type (Id : E) return B; 6534 function Is_Incomplete_Type (Id : E) return B; 6535 function Is_Integer_Type (Id : E) return B; 6536 function Is_Limited_Record (Id : E) return B; 6537 function Is_Modular_Integer_Type (Id : E) return B; 6538 function Is_Named_Number (Id : E) return B; 6539 function Is_Numeric_Type (Id : E) return B; 6540 function Is_Object (Id : E) return B; 6541 function Is_Ordinary_Fixed_Point_Type (Id : E) return B; 6542 function Is_Overloadable (Id : E) return B; 6543 function Is_Private_Type (Id : E) return B; 6544 function Is_Protected_Type (Id : E) return B; 6545 function Is_Real_Type (Id : E) return B; 6546 function Is_Record_Type (Id : E) return B; 6547 function Is_Scalar_Type (Id : E) return B; 6548 function Is_Signed_Integer_Type (Id : E) return B; 6549 function Is_Subprogram (Id : E) return B; 6550 function Is_Task_Type (Id : E) return B; 6551 function Is_Type (Id : E) return B; 6552 6553 ------------------------------------- 6554 -- Synthesized Attribute Functions -- 6555 ------------------------------------- 6556 6557 -- The functions in this section synthesize attributes from the tree, 6558 -- so they do not correspond to defined fields in the entity itself. 6559 6560 function Address_Clause (Id : E) return N; 6561 function Aft_Value (Id : E) return U; 6562 function Alignment_Clause (Id : E) return N; 6563 function Base_Type (Id : E) return E; 6564 function Declaration_Node (Id : E) return N; 6565 function Designated_Type (Id : E) return E; 6566 function First_Component (Id : E) return E; 6567 function First_Component_Or_Discriminant (Id : E) return E; 6568 function First_Formal (Id : E) return E; 6569 function First_Formal_With_Extras (Id : E) return E; 6570 function Has_Attach_Handler (Id : E) return B; 6571 function Has_Entries (Id : E) return B; 6572 function Has_Foreign_Convention (Id : E) return B; 6573 function Has_Private_Declaration (Id : E) return B; 6574 function Implementation_Base_Type (Id : E) return E; 6575 function Is_Base_Type (Id : E) return B; 6576 function Is_Boolean_Type (Id : E) return B; 6577 function Is_Constant_Object (Id : E) return B; 6578 function Is_Discriminal (Id : E) return B; 6579 function Is_Dynamic_Scope (Id : E) return B; 6580 function Is_Finalizer (Id : E) return B; 6581 function Is_Input_State (Id : E) return B; 6582 function Is_Null_State (Id : E) return B; 6583 function Is_Output_State (Id : E) return B; 6584 function Is_Package_Or_Generic_Package (Id : E) return B; 6585 function Is_Prival (Id : E) return B; 6586 function Is_Protected_Component (Id : E) return B; 6587 function Is_Protected_Interface (Id : E) return B; 6588 function Is_Protected_Record_Type (Id : E) return B; 6589 function Is_Standard_Character_Type (Id : E) return B; 6590 function Is_String_Type (Id : E) return B; 6591 function Is_Synchronized_Interface (Id : E) return B; 6592 function Is_Task_Interface (Id : E) return B; 6593 function Is_Task_Record_Type (Id : E) return B; 6594 function Is_Volatile_State (Id : E) return B; 6595 function Is_Wrapper_Package (Id : E) return B; 6596 function Last_Formal (Id : E) return E; 6597 function Machine_Emax_Value (Id : E) return U; 6598 function Machine_Emin_Value (Id : E) return U; 6599 function Machine_Mantissa_Value (Id : E) return U; 6600 function Machine_Radix_Value (Id : E) return U; 6601 function Model_Emin_Value (Id : E) return U; 6602 function Model_Epsilon_Value (Id : E) return R; 6603 function Model_Mantissa_Value (Id : E) return U; 6604 function Model_Small_Value (Id : E) return R; 6605 function Next_Component (Id : E) return E; 6606 function Next_Component_Or_Discriminant (Id : E) return E; 6607 function Next_Discriminant (Id : E) return E; 6608 function Next_Formal (Id : E) return E; 6609 function Next_Formal_With_Extras (Id : E) return E; 6610 function Next_Literal (Id : E) return E; 6611 function Next_Stored_Discriminant (Id : E) return E; 6612 function Number_Dimensions (Id : E) return Pos; 6613 function Number_Entries (Id : E) return Nat; 6614 function Number_Formals (Id : E) return Pos; 6615 function Parameter_Mode (Id : E) return Formal_Kind; 6616 function Primitive_Operations (Id : E) return L; 6617 function Root_Type (Id : E) return E; 6618 function Safe_Emax_Value (Id : E) return U; 6619 function Safe_First_Value (Id : E) return R; 6620 function Safe_Last_Value (Id : E) return R; 6621 function Scope_Depth_Set (Id : E) return B; 6622 function Size_Clause (Id : E) return N; 6623 function Stream_Size_Clause (Id : E) return N; 6624 function Type_High_Bound (Id : E) return N; 6625 function Type_Low_Bound (Id : E) return N; 6626 function Underlying_Type (Id : E) return E; 6627 6628 ---------------------------------------------- 6629 -- Type Representation Attribute Predicates -- 6630 ---------------------------------------------- 6631 6632 -- These predicates test the setting of the indicated attribute. If the 6633 -- value has been set, then Known is True, and Unknown is False. If no 6634 -- value is set, then Known is False and Unknown is True. The Known_Static 6635 -- predicate is true only if the value is set (Known) and is set to a 6636 -- compile time known value. Note that in the case of Alignment and 6637 -- Normalized_First_Bit, dynamic values are not possible, so we do not 6638 -- need a separate Known_Static calls in these cases. The not set (unknown) 6639 -- values are as follows: 6640 6641 -- Alignment Uint_0 or No_Uint 6642 -- Component_Size Uint_0 or No_Uint 6643 -- Component_Bit_Offset No_Uint 6644 -- Digits_Value Uint_0 or No_Uint 6645 -- Esize Uint_0 or No_Uint 6646 -- Normalized_First_Bit No_Uint 6647 -- Normalized_Position No_Uint 6648 -- Normalized_Position_Max No_Uint 6649 -- RM_Size Uint_0 or No_Uint 6650 6651 -- It would be cleaner to use No_Uint in all these cases, but historically 6652 -- we chose to use Uint_0 at first, and the change over will take time ??? 6653 -- This is particularly true for the RM_Size field, where a value of zero 6654 -- is legitimate. We deal with this by a nasty kludge that knows that the 6655 -- value is always known static for discrete types (and no other types can 6656 -- have an RM_Size value of zero). 6657 6658 -- In two cases, Known_Static_Esize and Known_Static_RM_Size, there is one 6659 -- more consideration, which is that we always return False for generic 6660 -- types. Within a template, the size can look known, because of the fake 6661 -- size values we put in template types, but they are not really known and 6662 -- anyone testing if they are known within the template should get False as 6663 -- a result to prevent incorrect assumptions. 6664 6665 function Known_Alignment (E : Entity_Id) return B; 6666 function Known_Component_Bit_Offset (E : Entity_Id) return B; 6667 function Known_Component_Size (E : Entity_Id) return B; 6668 function Known_Esize (E : Entity_Id) return B; 6669 function Known_Normalized_First_Bit (E : Entity_Id) return B; 6670 function Known_Normalized_Position (E : Entity_Id) return B; 6671 function Known_Normalized_Position_Max (E : Entity_Id) return B; 6672 function Known_RM_Size (E : Entity_Id) return B; 6673 6674 function Known_Static_Component_Bit_Offset (E : Entity_Id) return B; 6675 function Known_Static_Component_Size (E : Entity_Id) return B; 6676 function Known_Static_Esize (E : Entity_Id) return B; 6677 function Known_Static_Normalized_First_Bit (E : Entity_Id) return B; 6678 function Known_Static_Normalized_Position (E : Entity_Id) return B; 6679 function Known_Static_Normalized_Position_Max (E : Entity_Id) return B; 6680 function Known_Static_RM_Size (E : Entity_Id) return B; 6681 6682 function Unknown_Alignment (E : Entity_Id) return B; 6683 function Unknown_Component_Bit_Offset (E : Entity_Id) return B; 6684 function Unknown_Component_Size (E : Entity_Id) return B; 6685 function Unknown_Esize (E : Entity_Id) return B; 6686 function Unknown_Normalized_First_Bit (E : Entity_Id) return B; 6687 function Unknown_Normalized_Position (E : Entity_Id) return B; 6688 function Unknown_Normalized_Position_Max (E : Entity_Id) return B; 6689 function Unknown_RM_Size (E : Entity_Id) return B; 6690 6691 ------------------------------ 6692 -- Attribute Set Procedures -- 6693 ------------------------------ 6694 6695 procedure Set_Abstract_States (Id : E; V : L); 6696 procedure Set_Accept_Address (Id : E; V : L); 6697 procedure Set_Access_Disp_Table (Id : E; V : L); 6698 procedure Set_Actual_Subtype (Id : E; V : E); 6699 procedure Set_Address_Taken (Id : E; V : B := True); 6700 procedure Set_Alias (Id : E; V : E); 6701 procedure Set_Alignment (Id : E; V : U); 6702 procedure Set_Associated_Formal_Package (Id : E; V : E); 6703 procedure Set_Associated_Node_For_Itype (Id : E; V : N); 6704 procedure Set_Associated_Storage_Pool (Id : E; V : E); 6705 procedure Set_Barrier_Function (Id : E; V : N); 6706 procedure Set_Block_Node (Id : E; V : N); 6707 procedure Set_Body_Entity (Id : E; V : E); 6708 procedure Set_Body_Needed_For_SAL (Id : E; V : B := True); 6709 procedure Set_CR_Discriminant (Id : E; V : E); 6710 procedure Set_C_Pass_By_Copy (Id : E; V : B := True); 6711 procedure Set_Can_Never_Be_Null (Id : E; V : B := True); 6712 procedure Set_Can_Use_Internal_Rep (Id : E; V : B := True); 6713 procedure Set_Checks_May_Be_Suppressed (Id : E; V : B := True); 6714 procedure Set_Class_Wide_Type (Id : E; V : E); 6715 procedure Set_Cloned_Subtype (Id : E; V : E); 6716 procedure Set_Component_Alignment (Id : E; V : C); 6717 procedure Set_Component_Bit_Offset (Id : E; V : U); 6718 procedure Set_Component_Clause (Id : E; V : N); 6719 procedure Set_Component_Size (Id : E; V : U); 6720 procedure Set_Component_Type (Id : E; V : E); 6721 procedure Set_Contract (Id : E; V : N); 6722 procedure Set_Corresponding_Concurrent_Type (Id : E; V : E); 6723 procedure Set_Corresponding_Discriminant (Id : E; V : E); 6724 procedure Set_Corresponding_Equality (Id : E; V : E); 6725 procedure Set_Corresponding_Protected_Entry (Id : E; V : E); 6726 procedure Set_Corresponding_Record_Type (Id : E; V : E); 6727 procedure Set_Corresponding_Remote_Type (Id : E; V : E); 6728 procedure Set_Current_Use_Clause (Id : E; V : E); 6729 procedure Set_Current_Value (Id : E; V : N); 6730 procedure Set_DTC_Entity (Id : E; V : E); 6731 procedure Set_DT_Entry_Count (Id : E; V : U); 6732 procedure Set_DT_Offset_To_Top_Func (Id : E; V : E); 6733 procedure Set_DT_Position (Id : E; V : U); 6734 procedure Set_Debug_Info_Off (Id : E; V : B := True); 6735 procedure Set_Debug_Renaming_Link (Id : E; V : E); 6736 procedure Set_Default_Aspect_Component_Value (Id : E; V : N); 6737 procedure Set_Default_Aspect_Value (Id : E; V : N); 6738 procedure Set_Default_Expr_Function (Id : E; V : E); 6739 procedure Set_Default_Expressions_Processed (Id : E; V : B := True); 6740 procedure Set_Default_Value (Id : E; V : N); 6741 procedure Set_Delay_Cleanups (Id : E; V : B := True); 6742 procedure Set_Delay_Subprogram_Descriptors (Id : E; V : B := True); 6743 procedure Set_Delta_Value (Id : E; V : R); 6744 procedure Set_Dependent_Instances (Id : E; V : L); 6745 procedure Set_Depends_On_Private (Id : E; V : B := True); 6746 procedure Set_Digits_Value (Id : E; V : U); 6747 procedure Set_Direct_Primitive_Operations (Id : E; V : L); 6748 procedure Set_Directly_Designated_Type (Id : E; V : E); 6749 procedure Set_Discard_Names (Id : E; V : B := True); 6750 procedure Set_Discriminal (Id : E; V : E); 6751 procedure Set_Discriminal_Link (Id : E; V : E); 6752 procedure Set_Discriminant_Checking_Func (Id : E; V : E); 6753 procedure Set_Discriminant_Constraint (Id : E; V : L); 6754 procedure Set_Discriminant_Default_Value (Id : E; V : N); 6755 procedure Set_Discriminant_Number (Id : E; V : U); 6756 procedure Set_Dispatch_Table_Wrappers (Id : E; V : L); 6757 procedure Set_Elaborate_Body_Desirable (Id : E; V : B := True); 6758 procedure Set_Elaboration_Entity (Id : E; V : E); 6759 procedure Set_Elaboration_Entity_Required (Id : E; V : B := True); 6760 procedure Set_Enclosing_Scope (Id : E; V : E); 6761 procedure Set_Entry_Accepted (Id : E; V : B := True); 6762 procedure Set_Entry_Bodies_Array (Id : E; V : E); 6763 procedure Set_Entry_Cancel_Parameter (Id : E; V : E); 6764 procedure Set_Entry_Component (Id : E; V : E); 6765 procedure Set_Entry_Formal (Id : E; V : E); 6766 procedure Set_Entry_Index_Constant (Id : E; V : E); 6767 procedure Set_Entry_Parameters_Type (Id : E; V : E); 6768 procedure Set_Enum_Pos_To_Rep (Id : E; V : E); 6769 procedure Set_Enumeration_Pos (Id : E; V : U); 6770 procedure Set_Enumeration_Rep (Id : E; V : U); 6771 procedure Set_Enumeration_Rep_Expr (Id : E; V : N); 6772 procedure Set_Equivalent_Type (Id : E; V : E); 6773 procedure Set_Esize (Id : E; V : U); 6774 procedure Set_Exception_Code (Id : E; V : U); 6775 procedure Set_Extra_Accessibility (Id : E; V : E); 6776 procedure Set_Extra_Accessibility_Of_Result (Id : E; V : E); 6777 procedure Set_Extra_Constrained (Id : E; V : E); 6778 procedure Set_Extra_Formal (Id : E; V : E); 6779 procedure Set_Extra_Formals (Id : E; V : E); 6780 procedure Set_Finalization_Master (Id : E; V : E); 6781 procedure Set_Finalize_Storage_Only (Id : E; V : B := True); 6782 procedure Set_Finalizer (Id : E; V : E); 6783 procedure Set_First_Entity (Id : E; V : E); 6784 procedure Set_First_Exit_Statement (Id : E; V : N); 6785 procedure Set_First_Index (Id : E; V : N); 6786 procedure Set_First_Literal (Id : E; V : E); 6787 procedure Set_First_Optional_Parameter (Id : E; V : E); 6788 procedure Set_First_Private_Entity (Id : E; V : E); 6789 procedure Set_First_Rep_Item (Id : E; V : N); 6790 procedure Set_Float_Rep (Id : E; V : F); 6791 procedure Set_Freeze_Node (Id : E; V : N); 6792 procedure Set_From_With_Type (Id : E; V : B := True); 6793 procedure Set_Full_View (Id : E; V : E); 6794 procedure Set_Generic_Homonym (Id : E; V : E); 6795 procedure Set_Generic_Renamings (Id : E; V : L); 6796 procedure Set_Handler_Records (Id : E; V : S); 6797 procedure Set_Has_Aliased_Components (Id : E; V : B := True); 6798 procedure Set_Has_Alignment_Clause (Id : E; V : B := True); 6799 procedure Set_Has_All_Calls_Remote (Id : E; V : B := True); 6800 procedure Set_Has_Anonymous_Master (Id : E; V : B := True); 6801 procedure Set_Has_Atomic_Components (Id : E; V : B := True); 6802 procedure Set_Has_Biased_Representation (Id : E; V : B := True); 6803 procedure Set_Has_Completion (Id : E; V : B := True); 6804 procedure Set_Has_Completion_In_Body (Id : E; V : B := True); 6805 procedure Set_Has_Complex_Representation (Id : E; V : B := True); 6806 procedure Set_Has_Component_Size_Clause (Id : E; V : B := True); 6807 procedure Set_Has_Constrained_Partial_View (Id : E; V : B := True); 6808 procedure Set_Has_Contiguous_Rep (Id : E; V : B := True); 6809 procedure Set_Has_Controlled_Component (Id : E; V : B := True); 6810 procedure Set_Has_Controlling_Result (Id : E; V : B := True); 6811 procedure Set_Has_Convention_Pragma (Id : E; V : B := True); 6812 procedure Set_Has_Default_Aspect (Id : E; V : B := True); 6813 procedure Set_Has_Delayed_Aspects (Id : E; V : B := True); 6814 procedure Set_Has_Delayed_Freeze (Id : E; V : B := True); 6815 procedure Set_Has_Discriminants (Id : E; V : B := True); 6816 procedure Set_Has_Dispatch_Table (Id : E; V : B := True); 6817 procedure Set_Has_Enumeration_Rep_Clause (Id : E; V : B := True); 6818 procedure Set_Has_Exit (Id : E; V : B := True); 6819 procedure Set_Has_External_Tag_Rep_Clause (Id : E; V : B := True); 6820 procedure Set_Has_Forward_Instantiation (Id : E; V : B := True); 6821 procedure Set_Has_Fully_Qualified_Name (Id : E; V : B := True); 6822 procedure Set_Has_Gigi_Rep_Item (Id : E; V : B := True); 6823 procedure Set_Has_Homonym (Id : E; V : B := True); 6824 procedure Set_Has_Implicit_Dereference (Id : E; V : B := True); 6825 procedure Set_Has_Independent_Components (Id : E; V : B := True); 6826 procedure Set_Has_Inheritable_Invariants (Id : E; V : B := True); 6827 procedure Set_Has_Initial_Value (Id : E; V : B := True); 6828 procedure Set_Has_Invariants (Id : E; V : B := True); 6829 procedure Set_Has_Machine_Radix_Clause (Id : E; V : B := True); 6830 procedure Set_Has_Master_Entity (Id : E; V : B := True); 6831 procedure Set_Has_Missing_Return (Id : E; V : B := True); 6832 procedure Set_Has_Nested_Block_With_Handler (Id : E; V : B := True); 6833 procedure Set_Has_Non_Standard_Rep (Id : E; V : B := True); 6834 procedure Set_Has_Object_Size_Clause (Id : E; V : B := True); 6835 procedure Set_Has_Per_Object_Constraint (Id : E; V : B := True); 6836 procedure Set_Has_Postconditions (Id : E; V : B := True); 6837 procedure Set_Has_Pragma_Controlled (Id : E; V : B := True); 6838 procedure Set_Has_Pragma_Elaborate_Body (Id : E; V : B := True); 6839 procedure Set_Has_Pragma_Inline (Id : E; V : B := True); 6840 procedure Set_Has_Pragma_Inline_Always (Id : E; V : B := True); 6841 procedure Set_Has_Pragma_No_Inline (Id : E; V : B := True); 6842 procedure Set_Has_Pragma_Ordered (Id : E; V : B := True); 6843 procedure Set_Has_Pragma_Pack (Id : E; V : B := True); 6844 procedure Set_Has_Pragma_Preelab_Init (Id : E; V : B := True); 6845 procedure Set_Has_Pragma_Pure (Id : E; V : B := True); 6846 procedure Set_Has_Pragma_Pure_Function (Id : E; V : B := True); 6847 procedure Set_Has_Pragma_Thread_Local_Storage (Id : E; V : B := True); 6848 procedure Set_Has_Pragma_Unmodified (Id : E; V : B := True); 6849 procedure Set_Has_Pragma_Unreferenced (Id : E; V : B := True); 6850 procedure Set_Has_Pragma_Unreferenced_Objects (Id : E; V : B := True); 6851 procedure Set_Has_Predicates (Id : E; V : B := True); 6852 procedure Set_Has_Primitive_Operations (Id : E; V : B := True); 6853 procedure Set_Has_Private_Ancestor (Id : E; V : B := True); 6854 procedure Set_Has_Private_Declaration (Id : E; V : B := True); 6855 procedure Set_Has_Qualified_Name (Id : E; V : B := True); 6856 procedure Set_Has_RACW (Id : E; V : B := True); 6857 procedure Set_Has_Record_Rep_Clause (Id : E; V : B := True); 6858 procedure Set_Has_Recursive_Call (Id : E; V : B := True); 6859 procedure Set_Has_Size_Clause (Id : E; V : B := True); 6860 procedure Set_Has_Small_Clause (Id : E; V : B := True); 6861 procedure Set_Has_Specified_Layout (Id : E; V : B := True); 6862 procedure Set_Has_Specified_Stream_Input (Id : E; V : B := True); 6863 procedure Set_Has_Specified_Stream_Output (Id : E; V : B := True); 6864 procedure Set_Has_Specified_Stream_Read (Id : E; V : B := True); 6865 procedure Set_Has_Specified_Stream_Write (Id : E; V : B := True); 6866 procedure Set_Has_Static_Discriminants (Id : E; V : B := True); 6867 procedure Set_Has_Storage_Size_Clause (Id : E; V : B := True); 6868 procedure Set_Has_Stream_Size_Clause (Id : E; V : B := True); 6869 procedure Set_Has_Task (Id : E; V : B := True); 6870 procedure Set_Has_Thunks (Id : E; V : B := True); 6871 procedure Set_Has_Unchecked_Union (Id : E; V : B := True); 6872 procedure Set_Has_Unknown_Discriminants (Id : E; V : B := True); 6873 procedure Set_Has_Up_Level_Access (Id : E; V : B := True); 6874 procedure Set_Has_Volatile_Components (Id : E; V : B := True); 6875 procedure Set_Has_Xref_Entry (Id : E; V : B := True); 6876 procedure Set_Hiding_Loop_Variable (Id : E; V : E); 6877 procedure Set_Homonym (Id : E; V : E); 6878 procedure Set_In_Package_Body (Id : E; V : B := True); 6879 procedure Set_In_Private_Part (Id : E; V : B := True); 6880 procedure Set_In_Use (Id : E; V : B := True); 6881 procedure Set_Initialization_Statements (Id : E; V : N); 6882 procedure Set_Integrity_Level (Id : E; V : U); 6883 procedure Set_Inner_Instances (Id : E; V : L); 6884 procedure Set_Interface_Alias (Id : E; V : E); 6885 procedure Set_Interface_Name (Id : E; V : N); 6886 procedure Set_Interfaces (Id : E; V : L); 6887 procedure Set_Is_AST_Entry (Id : E; V : B := True); 6888 procedure Set_Is_Abstract_Subprogram (Id : E; V : B := True); 6889 procedure Set_Is_Abstract_Type (Id : E; V : B := True); 6890 procedure Set_Is_Access_Constant (Id : E; V : B := True); 6891 procedure Set_Is_Ada_2005_Only (Id : E; V : B := True); 6892 procedure Set_Is_Ada_2012_Only (Id : E; V : B := True); 6893 procedure Set_Is_Aliased (Id : E; V : B := True); 6894 procedure Set_Is_Asynchronous (Id : E; V : B := True); 6895 procedure Set_Is_Atomic (Id : E; V : B := True); 6896 procedure Set_Is_Bit_Packed_Array (Id : E; V : B := True); 6897 procedure Set_Is_CPP_Class (Id : E; V : B := True); 6898 procedure Set_Is_Called (Id : E; V : B := True); 6899 procedure Set_Is_Character_Type (Id : E; V : B := True); 6900 procedure Set_Is_Child_Unit (Id : E; V : B := True); 6901 procedure Set_Is_Class_Wide_Equivalent_Type (Id : E; V : B := True); 6902 procedure Set_Is_Compilation_Unit (Id : E; V : B := True); 6903 procedure Set_Is_Completely_Hidden (Id : E; V : B := True); 6904 procedure Set_Is_Concurrent_Record_Type (Id : E; V : B := True); 6905 procedure Set_Is_Constr_Subt_For_UN_Aliased (Id : E; V : B := True); 6906 procedure Set_Is_Constr_Subt_For_U_Nominal (Id : E; V : B := True); 6907 procedure Set_Is_Constrained (Id : E; V : B := True); 6908 procedure Set_Is_Constructor (Id : E; V : B := True); 6909 procedure Set_Is_Controlled (Id : E; V : B := True); 6910 procedure Set_Is_Controlling_Formal (Id : E; V : B := True); 6911 procedure Set_Is_Descendent_Of_Address (Id : E; V : B := True); 6912 procedure Set_Is_Discrim_SO_Function (Id : E; V : B := True); 6913 procedure Set_Is_Dispatch_Table_Entity (Id : E; V : B := True); 6914 procedure Set_Is_Dispatching_Operation (Id : E; V : B := True); 6915 procedure Set_Is_Eliminated (Id : E; V : B := True); 6916 procedure Set_Is_Entry_Formal (Id : E; V : B := True); 6917 procedure Set_Is_Exported (Id : E; V : B := True); 6918 procedure Set_Is_First_Subtype (Id : E; V : B := True); 6919 procedure Set_Is_For_Access_Subtype (Id : E; V : B := True); 6920 procedure Set_Is_Formal_Subprogram (Id : E; V : B := True); 6921 procedure Set_Is_Frozen (Id : E; V : B := True); 6922 procedure Set_Is_Generic_Actual_Type (Id : E; V : B := True); 6923 procedure Set_Is_Generic_Instance (Id : E; V : B := True); 6924 procedure Set_Is_Generic_Type (Id : E; V : B := True); 6925 procedure Set_Is_Hidden (Id : E; V : B := True); 6926 procedure Set_Is_Hidden_Open_Scope (Id : E; V : B := True); 6927 procedure Set_Is_Immediately_Visible (Id : E; V : B := True); 6928 procedure Set_Is_Implementation_Defined (Id : E; V : B := True); 6929 procedure Set_Is_Imported (Id : E; V : B := True); 6930 procedure Set_Is_Inlined (Id : E; V : B := True); 6931 procedure Set_Is_Instantiated (Id : E; V : B := True); 6932 procedure Set_Is_Interface (Id : E; V : B := True); 6933 procedure Set_Is_Internal (Id : E; V : B := True); 6934 procedure Set_Is_Interrupt_Handler (Id : E; V : B := True); 6935 procedure Set_Is_Intrinsic_Subprogram (Id : E; V : B := True); 6936 procedure Set_Is_Itype (Id : E; V : B := True); 6937 procedure Set_Is_Known_Non_Null (Id : E; V : B := True); 6938 procedure Set_Is_Known_Null (Id : E; V : B := True); 6939 procedure Set_Is_Known_Valid (Id : E; V : B := True); 6940 procedure Set_Is_Limited_Composite (Id : E; V : B := True); 6941 procedure Set_Is_Limited_Interface (Id : E; V : B := True); 6942 procedure Set_Is_Limited_Record (Id : E; V : B := True); 6943 procedure Set_Is_Local_Anonymous_Access (Id : E; V : B := True); 6944 procedure Set_Is_Machine_Code_Subprogram (Id : E; V : B := True); 6945 procedure Set_Is_Non_Static_Subtype (Id : E; V : B := True); 6946 procedure Set_Is_Null_Init_Proc (Id : E; V : B := True); 6947 procedure Set_Is_Obsolescent (Id : E; V : B := True); 6948 procedure Set_Is_Only_Out_Parameter (Id : E; V : B := True); 6949 procedure Set_Is_Optional_Parameter (Id : E; V : B := True); 6950 procedure Set_Is_Package_Body_Entity (Id : E; V : B := True); 6951 procedure Set_Is_Packed (Id : E; V : B := True); 6952 procedure Set_Is_Packed_Array_Type (Id : E; V : B := True); 6953 procedure Set_Is_Potentially_Use_Visible (Id : E; V : B := True); 6954 procedure Set_Is_Preelaborated (Id : E; V : B := True); 6955 procedure Set_Is_Primitive (Id : E; V : B := True); 6956 procedure Set_Is_Primitive_Wrapper (Id : E; V : B := True); 6957 procedure Set_Is_Private_Composite (Id : E; V : B := True); 6958 procedure Set_Is_Private_Descendant (Id : E; V : B := True); 6959 procedure Set_Is_Private_Primitive (Id : E; V : B := True); 6960 procedure Set_Is_Processed_Transient (Id : E; V : B := True); 6961 procedure Set_Is_Public (Id : E; V : B := True); 6962 procedure Set_Is_Pure (Id : E; V : B := True); 6963 procedure Set_Is_Pure_Unit_Access_Type (Id : E; V : B := True); 6964 procedure Set_Is_RACW_Stub_Type (Id : E; V : B := True); 6965 procedure Set_Is_Raised (Id : E; V : B := True); 6966 procedure Set_Is_Remote_Call_Interface (Id : E; V : B := True); 6967 procedure Set_Is_Remote_Types (Id : E; V : B := True); 6968 procedure Set_Is_Renaming_Of_Object (Id : E; V : B := True); 6969 procedure Set_Is_Return_Object (Id : E; V : B := True); 6970 procedure Set_Is_Safe_To_Reevaluate (Id : E; V : B := True); 6971 procedure Set_Is_Shared_Passive (Id : E; V : B := True); 6972 procedure Set_Is_Statically_Allocated (Id : E; V : B := True); 6973 procedure Set_Is_Tag (Id : E; V : B := True); 6974 procedure Set_Is_Tagged_Type (Id : E; V : B := True); 6975 procedure Set_Is_Thunk (Id : E; V : B := True); 6976 procedure Set_Is_Trivial_Subprogram (Id : E; V : B := True); 6977 procedure Set_Is_True_Constant (Id : E; V : B := True); 6978 procedure Set_Is_Unchecked_Union (Id : E; V : B := True); 6979 procedure Set_Is_Underlying_Record_View (Id : E; V : B := True); 6980 procedure Set_Is_Unsigned_Type (Id : E; V : B := True); 6981 procedure Set_Is_VMS_Exception (Id : E; V : B := True); 6982 procedure Set_Is_Valued_Procedure (Id : E; V : B := True); 6983 procedure Set_Is_Visible_Formal (Id : E; V : B := True); 6984 procedure Set_Is_Visible_Lib_Unit (Id : E; V : B := True); 6985 procedure Set_Is_Volatile (Id : E; V : B := True); 6986 procedure Set_Itype_Printed (Id : E; V : B := True); 6987 procedure Set_Kill_Elaboration_Checks (Id : E; V : B := True); 6988 procedure Set_Kill_Range_Checks (Id : E; V : B := True); 6989 procedure Set_Known_To_Have_Preelab_Init (Id : E; V : B := True); 6990 procedure Set_Last_Assignment (Id : E; V : N); 6991 procedure Set_Last_Entity (Id : E; V : E); 6992 procedure Set_Limited_View (Id : E; V : E); 6993 procedure Set_Lit_Indexes (Id : E; V : E); 6994 procedure Set_Lit_Strings (Id : E; V : E); 6995 procedure Set_Loop_Entry_Attributes (Id : E; V : L); 6996 procedure Set_Low_Bound_Tested (Id : E; V : B := True); 6997 procedure Set_Machine_Radix_10 (Id : E; V : B := True); 6998 procedure Set_Master_Id (Id : E; V : E); 6999 procedure Set_Materialize_Entity (Id : E; V : B := True); 7000 procedure Set_Mechanism (Id : E; V : M); 7001 procedure Set_Modulus (Id : E; V : U); 7002 procedure Set_Must_Be_On_Byte_Boundary (Id : E; V : B := True); 7003 procedure Set_Must_Have_Preelab_Init (Id : E; V : B := True); 7004 procedure Set_Needs_Debug_Info (Id : E; V : B := True); 7005 procedure Set_Needs_No_Actuals (Id : E; V : B := True); 7006 procedure Set_Never_Set_In_Source (Id : E; V : B := True); 7007 procedure Set_Next_Inlined_Subprogram (Id : E; V : E); 7008 procedure Set_No_Pool_Assigned (Id : E; V : B := True); 7009 procedure Set_No_Return (Id : E; V : B := True); 7010 procedure Set_No_Strict_Aliasing (Id : E; V : B := True); 7011 procedure Set_Non_Binary_Modulus (Id : E; V : B := True); 7012 procedure Set_Non_Limited_View (Id : E; V : E); 7013 procedure Set_Nonzero_Is_True (Id : E; V : B := True); 7014 procedure Set_Normalized_First_Bit (Id : E; V : U); 7015 procedure Set_Normalized_Position (Id : E; V : U); 7016 procedure Set_Normalized_Position_Max (Id : E; V : U); 7017 procedure Set_OK_To_Rename (Id : E; V : B := True); 7018 procedure Set_OK_To_Reorder_Components (Id : E; V : B := True); 7019 procedure Set_Optimize_Alignment_Space (Id : E; V : B := True); 7020 procedure Set_Optimize_Alignment_Time (Id : E; V : B := True); 7021 procedure Set_Original_Access_Type (Id : E; V : E); 7022 procedure Set_Original_Array_Type (Id : E; V : E); 7023 procedure Set_Original_Record_Component (Id : E; V : E); 7024 procedure Set_Overlays_Constant (Id : E; V : B := True); 7025 procedure Set_Overridden_Operation (Id : E; V : E); 7026 procedure Set_PPC_Wrapper (Id : E; V : E); 7027 procedure Set_Package_Instantiation (Id : E; V : N); 7028 procedure Set_Packed_Array_Type (Id : E; V : E); 7029 procedure Set_Parent_Subtype (Id : E; V : E); 7030 procedure Set_Postcondition_Proc (Id : E; V : E); 7031 procedure Set_Prival (Id : E; V : E); 7032 procedure Set_Prival_Link (Id : E; V : E); 7033 procedure Set_Private_Dependents (Id : E; V : L); 7034 procedure Set_Private_View (Id : E; V : N); 7035 procedure Set_Protected_Body_Subprogram (Id : E; V : E); 7036 procedure Set_Protected_Formal (Id : E; V : E); 7037 procedure Set_Protection_Object (Id : E; V : E); 7038 procedure Set_RM_Size (Id : E; V : U); 7039 procedure Set_Reachable (Id : E; V : B := True); 7040 procedure Set_Referenced (Id : E; V : B := True); 7041 procedure Set_Referenced_As_LHS (Id : E; V : B := True); 7042 procedure Set_Referenced_As_Out_Parameter (Id : E; V : B := True); 7043 procedure Set_Refined_State (Id : E; V : E); 7044 procedure Set_Register_Exception_Call (Id : E; V : N); 7045 procedure Set_Related_Array_Object (Id : E; V : E); 7046 procedure Set_Related_Expression (Id : E; V : N); 7047 procedure Set_Related_Instance (Id : E; V : E); 7048 procedure Set_Related_Type (Id : E; V : E); 7049 procedure Set_Relative_Deadline_Variable (Id : E; V : E); 7050 procedure Set_Renamed_Entity (Id : E; V : N); 7051 procedure Set_Renamed_In_Spec (Id : E; V : B := True); 7052 procedure Set_Renamed_Object (Id : E; V : N); 7053 procedure Set_Renaming_Map (Id : E; V : U); 7054 procedure Set_Requires_Overriding (Id : E; V : B := True); 7055 procedure Set_Return_Applies_To (Id : E; V : N); 7056 procedure Set_Return_Present (Id : E; V : B := True); 7057 procedure Set_Returns_By_Ref (Id : E; V : B := True); 7058 procedure Set_Reverse_Bit_Order (Id : E; V : B := True); 7059 procedure Set_Reverse_Storage_Order (Id : E; V : B := True); 7060 procedure Set_Scalar_Range (Id : E; V : N); 7061 procedure Set_Scale_Value (Id : E; V : U); 7062 procedure Set_Scope_Depth_Value (Id : E; V : U); 7063 procedure Set_Sec_Stack_Needed_For_Return (Id : E; V : B := True); 7064 procedure Set_Shadow_Entities (Id : E; V : S); 7065 procedure Set_Shared_Var_Procs_Instance (Id : E; V : E); 7066 procedure Set_Size_Check_Code (Id : E; V : N); 7067 procedure Set_Size_Depends_On_Discriminant (Id : E; V : B := True); 7068 procedure Set_Size_Known_At_Compile_Time (Id : E; V : B := True); 7069 procedure Set_Small_Value (Id : E; V : R); 7070 procedure Set_Spec_Entity (Id : E; V : E); 7071 procedure Set_Static_Elaboration_Desired (Id : E; V : B); 7072 procedure Set_Static_Initialization (Id : E; V : N); 7073 procedure Set_Static_Predicate (Id : E; V : S); 7074 procedure Set_Status_Flag_Or_Transient_Decl (Id : E; V : E); 7075 procedure Set_Storage_Size_Variable (Id : E; V : E); 7076 procedure Set_Stored_Constraint (Id : E; V : L); 7077 procedure Set_Strict_Alignment (Id : E; V : B := True); 7078 procedure Set_String_Literal_Length (Id : E; V : U); 7079 procedure Set_String_Literal_Low_Bound (Id : E; V : N); 7080 procedure Set_Subprograms_For_Type (Id : E; V : E); 7081 procedure Set_Suppress_Elaboration_Warnings (Id : E; V : B := True); 7082 procedure Set_Suppress_Initialization (Id : E; V : B := True); 7083 procedure Set_Suppress_Style_Checks (Id : E; V : B := True); 7084 procedure Set_Suppress_Value_Tracking_On_Call (Id : E; V : B := True); 7085 procedure Set_Task_Body_Procedure (Id : E; V : N); 7086 procedure Set_Treat_As_Volatile (Id : E; V : B := True); 7087 procedure Set_Underlying_Full_View (Id : E; V : E); 7088 procedure Set_Underlying_Record_View (Id : E; V : E); 7089 procedure Set_Universal_Aliasing (Id : E; V : B := True); 7090 procedure Set_Unset_Reference (Id : E; V : N); 7091 procedure Set_Used_As_Generic_Actual (Id : E; V : B := True); 7092 procedure Set_Uses_Lock_Free (Id : E; V : B := True); 7093 procedure Set_Uses_Sec_Stack (Id : E; V : B := True); 7094 procedure Set_Warnings_Off (Id : E; V : B := True); 7095 procedure Set_Warnings_Off_Used (Id : E; V : B := True); 7096 procedure Set_Warnings_Off_Used_Unmodified (Id : E; V : B := True); 7097 procedure Set_Warnings_Off_Used_Unreferenced (Id : E; V : B := True); 7098 procedure Set_Was_Hidden (Id : E; V : B := True); 7099 procedure Set_Wrapped_Entity (Id : E; V : E); 7100 7101 --------------------------------------------------- 7102 -- Access to Subprograms in Subprograms_For_Type -- 7103 --------------------------------------------------- 7104 7105 function Invariant_Procedure (Id : E) return N; 7106 function Predicate_Function (Id : E) return N; 7107 7108 procedure Set_Invariant_Procedure (Id : E; V : E); 7109 procedure Set_Predicate_Function (Id : E; V : E); 7110 7111 ----------------------------------- 7112 -- Field Initialization Routines -- 7113 ----------------------------------- 7114 7115 -- These routines are overloadings of some of the above Set procedures 7116 -- where the argument is normally a Uint. The overloadings take an Int 7117 -- parameter instead, and appropriately convert it. There are also 7118 -- versions that implicitly initialize to the appropriate "not set" 7119 -- value. The not set (unknown) values are as follows: 7120 7121 -- Alignment Uint_0 7122 -- Component_Size Uint_0 7123 -- Component_Bit_Offset No_Uint 7124 -- Digits_Value Uint_0 7125 -- Esize Uint_0 7126 -- Normalized_First_Bit No_Uint 7127 -- Normalized_Position No_Uint 7128 -- Normalized_Position_Max No_Uint 7129 -- RM_Size Uint_0 7130 7131 -- It would be cleaner to use No_Uint in all these cases, but historically 7132 -- we chose to use Uint_0 at first, and the change over will take time ??? 7133 -- This is particularly true for the RM_Size field, where a value of zero 7134 -- is legitimate and causes some kludges around the code. 7135 7136 -- Contrary to the corresponding Set procedures above, these routines 7137 -- do NOT check the entity kind of their argument, instead they set the 7138 -- underlying Uint fields directly (this allows them to be used for 7139 -- entities whose Ekind has not been set yet). 7140 7141 procedure Init_Alignment (Id : E; V : Int); 7142 procedure Init_Component_Size (Id : E; V : Int); 7143 procedure Init_Component_Bit_Offset (Id : E; V : Int); 7144 procedure Init_Digits_Value (Id : E; V : Int); 7145 procedure Init_Esize (Id : E; V : Int); 7146 procedure Init_Normalized_First_Bit (Id : E; V : Int); 7147 procedure Init_Normalized_Position (Id : E; V : Int); 7148 procedure Init_Normalized_Position_Max (Id : E; V : Int); 7149 procedure Init_RM_Size (Id : E; V : Int); 7150 7151 procedure Init_Alignment (Id : E); 7152 procedure Init_Component_Size (Id : E); 7153 procedure Init_Component_Bit_Offset (Id : E); 7154 procedure Init_Digits_Value (Id : E); 7155 procedure Init_Esize (Id : E); 7156 procedure Init_Normalized_First_Bit (Id : E); 7157 procedure Init_Normalized_Position (Id : E); 7158 procedure Init_Normalized_Position_Max (Id : E); 7159 procedure Init_RM_Size (Id : E); 7160 7161 procedure Init_Size_Align (Id : E); 7162 -- This procedure initializes both size fields and the alignment 7163 -- field to all be Unknown. 7164 7165 procedure Init_Object_Size_Align (Id : E); 7166 -- Same as Init_Size_Align except RM_Size field (which is only for types) 7167 -- is unaffected. 7168 7169 procedure Init_Size (Id : E; V : Int); 7170 -- Initialize both the Esize and RM_Size fields of E to V 7171 7172 procedure Init_Component_Location (Id : E); 7173 -- Initializes all fields describing the location of a component 7174 -- (Normalized_Position, Component_Bit_Offset, Normalized_First_Bit, 7175 -- Normalized_Position_Max, Esize) to all be Unknown. 7176 7177 --------------- 7178 -- Iterators -- 7179 --------------- 7180 7181 -- The call to Next_xxx (obj) is equivalent to obj := Next_xxx (obj) 7182 -- We define the set of Proc_Next_xxx routines simply for the purposes 7183 -- of inlining them without necessarily inlining the function. 7184 7185 procedure Proc_Next_Component (N : in out Node_Id); 7186 procedure Proc_Next_Component_Or_Discriminant (N : in out Node_Id); 7187 procedure Proc_Next_Discriminant (N : in out Node_Id); 7188 procedure Proc_Next_Formal (N : in out Node_Id); 7189 procedure Proc_Next_Formal_With_Extras (N : in out Node_Id); 7190 procedure Proc_Next_Index (N : in out Node_Id); 7191 procedure Proc_Next_Inlined_Subprogram (N : in out Node_Id); 7192 procedure Proc_Next_Literal (N : in out Node_Id); 7193 procedure Proc_Next_Stored_Discriminant (N : in out Node_Id); 7194 7195 pragma Inline (Proc_Next_Component); 7196 pragma Inline (Proc_Next_Component_Or_Discriminant); 7197 pragma Inline (Proc_Next_Discriminant); 7198 pragma Inline (Proc_Next_Formal); 7199 pragma Inline (Proc_Next_Formal_With_Extras); 7200 pragma Inline (Proc_Next_Index); 7201 pragma Inline (Proc_Next_Inlined_Subprogram); 7202 pragma Inline (Proc_Next_Literal); 7203 pragma Inline (Proc_Next_Stored_Discriminant); 7204 7205 procedure Next_Component (N : in out Node_Id) 7206 renames Proc_Next_Component; 7207 7208 procedure Next_Component_Or_Discriminant (N : in out Node_Id) 7209 renames Proc_Next_Component_Or_Discriminant; 7210 7211 procedure Next_Discriminant (N : in out Node_Id) 7212 renames Proc_Next_Discriminant; 7213 7214 procedure Next_Formal (N : in out Node_Id) 7215 renames Proc_Next_Formal; 7216 7217 procedure Next_Formal_With_Extras (N : in out Node_Id) 7218 renames Proc_Next_Formal_With_Extras; 7219 7220 procedure Next_Index (N : in out Node_Id) 7221 renames Proc_Next_Index; 7222 7223 procedure Next_Inlined_Subprogram (N : in out Node_Id) 7224 renames Proc_Next_Inlined_Subprogram; 7225 7226 procedure Next_Literal (N : in out Node_Id) 7227 renames Proc_Next_Literal; 7228 7229 procedure Next_Stored_Discriminant (N : in out Node_Id) 7230 renames Proc_Next_Stored_Discriminant; 7231 7232 --------------------------- 7233 -- Testing Warning Flags -- 7234 --------------------------- 7235 7236 -- These routines are to be used rather than testing flags Warnings_Off, 7237 -- Has_Pragma_Unmodified, Has_Pragma_Unreferenced. They deal with setting 7238 -- the flags Warnings_Off_Used[_Unmodified|Unreferenced] for later access. 7239 7240 function Has_Warnings_Off (E : Entity_Id) return Boolean; 7241 -- If Warnings_Off is set on E, then returns True and also sets the flag 7242 -- Warnings_Off_Used on E. If Warnings_Off is not set on E, returns False 7243 -- and has no side effect. 7244 7245 function Has_Unmodified (E : Entity_Id) return Boolean; 7246 -- If flag Has_Pragma_Unmodified is set on E, returns True with no side 7247 -- effects. Otherwise if Warnings_Off is set on E, returns True and also 7248 -- sets the flag Warnings_Off_Used_Unmodified on E. If neither of the flags 7249 -- Warnings_Off nor Has_Pragma_Unmodified is set, returns False with no 7250 -- side effects. 7251 7252 function Has_Unreferenced (E : Entity_Id) return Boolean; 7253 -- If flag Has_Pragma_Unreferenced is set on E, returns True with no side 7254 -- effects. Otherwise if Warnings_Off is set on E, returns True and also 7255 -- sets the flag Warnings_Off_Used_Unreferenced on E. If neither of the 7256 -- flags Warnings_Off nor Has_Pragma_Unreferenced is set, returns False 7257 -- with no side effects. 7258 7259 ---------------------------------------------- 7260 -- Subprograms for Accessing Rep Item Chain -- 7261 ---------------------------------------------- 7262 7263 -- The First_Rep_Item field of every entity points to a linked list (linked 7264 -- through Next_Rep_Item) of representation pragmas, attribute definition 7265 -- clauses, representation clauses, and aspect specifications that apply to 7266 -- the item. Note that in the case of types, it is assumed that any such 7267 -- rep items for a base type also apply to all subtypes. This is achieved 7268 -- by having the chain for subtypes link onto the chain for the base type, 7269 -- so that new entries for the subtype are added at the start of the chain. 7270 -- 7271 -- Note: aspect specification nodes are linked only when evaluation of the 7272 -- expression is deferred to the freeze point. For further details see 7273 -- Sem_Ch13.Analyze_Aspect_Specifications. 7274 7275 function Get_Attribute_Definition_Clause 7276 (E : Entity_Id; 7277 Id : Attribute_Id) return Node_Id; 7278 -- Searches the Rep_Item chain for a given entity E, for an instance of an 7279 -- attribute definition clause with the given attribute Id. If found, the 7280 -- value returned is the N_Attribute_Definition_Clause node, otherwise 7281 -- Empty is returned. 7282 7283 function Get_Record_Representation_Clause (E : Entity_Id) return Node_Id; 7284 -- Searches the Rep_Item chain for a given entity E, for a record 7285 -- representation clause, and if found, returns it. Returns Empty 7286 -- if no such clause is found. 7287 7288 function Present_In_Rep_Item (E : Entity_Id; N : Node_Id) return Boolean; 7289 -- Return True if N is present in the Rep_Item chain for a given entity E 7290 7291 procedure Record_Rep_Item (E : Entity_Id; N : Node_Id); 7292 -- N is the node for a representation pragma, representation clause, an 7293 -- attribute definition clause, or an aspect specification that applies to 7294 -- entity E. This procedure links the node N onto the Rep_Item chain for 7295 -- entity E. Note that it is an error to call this procedure with E being 7296 -- overloadable, and N being a pragma that applies to multiple overloadable 7297 -- entities (Convention, Interface, Inline, Inline_Always, Import, Export, 7298 -- External). This is not allowed even in the case where the entity is not 7299 -- overloaded, since we can't rely on it being present in the overloaded 7300 -- case, it is not useful to have it present in the non-overloaded case. 7301 7302 ------------------------------- 7303 -- Miscellaneous Subprograms -- 7304 ------------------------------- 7305 7306 procedure Append_Entity (Id : Entity_Id; V : Entity_Id); 7307 -- Add an entity to the list of entities declared in the scope V 7308 7309 function Get_Full_View (T : Entity_Id) return Entity_Id; 7310 -- If T is an incomplete type and the full declaration has been seen, or 7311 -- is the name of a class_wide type whose root is incomplete, return the 7312 -- corresponding full declaration, else return T itself. 7313 7314 function Is_Entity_Name (N : Node_Id) return Boolean; 7315 -- Test if the node N is the name of an entity (i.e. is an identifier, 7316 -- expanded name, or an attribute reference that returns an entity). 7317 7318 function Next_Index (Id : Node_Id) return Node_Id; 7319 -- Given an index from a previous call to First_Index or Next_Index, 7320 -- returns a node representing the occurrence of the next index subtype, 7321 -- or Empty if there are no more index subtypes. 7322 7323 function Scope_Depth (Id : Entity_Id) return Uint; 7324 -- Returns the scope depth value of the Id, unless the Id is a record 7325 -- type, in which case it returns the scope depth of the record scope. 7326 7327 function Subtype_Kind (K : Entity_Kind) return Entity_Kind; 7328 -- Given an entity_kind K this function returns the entity_kind 7329 -- corresponding to subtype kind of the type represented by K. For 7330 -- example if K is E_Signed_Integer_Type then E_Signed_Integer_Subtype 7331 -- is returned. If K is already a subtype kind it itself is returned. An 7332 -- internal error is generated if no such correspondence exists for K. 7333 7334 ---------------------------------- 7335 -- Debugging Output Subprograms -- 7336 ---------------------------------- 7337 7338 procedure Write_Entity_Flags (Id : Entity_Id; Prefix : String); 7339 -- Writes a series of entries giving a line for each flag that is 7340 -- set to True. Each line is prefixed by the given string 7341 7342 procedure Write_Entity_Info (Id : Entity_Id; Prefix : String); 7343 -- A debugging procedure to write out information about an entity 7344 7345 procedure Write_Field6_Name (Id : Entity_Id); 7346 procedure Write_Field7_Name (Id : Entity_Id); 7347 procedure Write_Field8_Name (Id : Entity_Id); 7348 procedure Write_Field9_Name (Id : Entity_Id); 7349 procedure Write_Field10_Name (Id : Entity_Id); 7350 procedure Write_Field11_Name (Id : Entity_Id); 7351 procedure Write_Field12_Name (Id : Entity_Id); 7352 procedure Write_Field13_Name (Id : Entity_Id); 7353 procedure Write_Field14_Name (Id : Entity_Id); 7354 procedure Write_Field15_Name (Id : Entity_Id); 7355 procedure Write_Field16_Name (Id : Entity_Id); 7356 procedure Write_Field17_Name (Id : Entity_Id); 7357 procedure Write_Field18_Name (Id : Entity_Id); 7358 procedure Write_Field19_Name (Id : Entity_Id); 7359 procedure Write_Field20_Name (Id : Entity_Id); 7360 procedure Write_Field21_Name (Id : Entity_Id); 7361 procedure Write_Field22_Name (Id : Entity_Id); 7362 procedure Write_Field23_Name (Id : Entity_Id); 7363 procedure Write_Field24_Name (Id : Entity_Id); 7364 procedure Write_Field25_Name (Id : Entity_Id); 7365 procedure Write_Field26_Name (Id : Entity_Id); 7366 procedure Write_Field27_Name (Id : Entity_Id); 7367 procedure Write_Field28_Name (Id : Entity_Id); 7368 procedure Write_Field29_Name (Id : Entity_Id); 7369 procedure Write_Field30_Name (Id : Entity_Id); 7370 procedure Write_Field31_Name (Id : Entity_Id); 7371 procedure Write_Field32_Name (Id : Entity_Id); 7372 procedure Write_Field33_Name (Id : Entity_Id); 7373 procedure Write_Field34_Name (Id : Entity_Id); 7374 procedure Write_Field35_Name (Id : Entity_Id); 7375 -- These routines are used in Treepr to output a nice symbolic name for 7376 -- the given field, depending on the Ekind. No blanks or end of lines are 7377 -- output, just the characters of the field name. 7378 7379 -------------------- 7380 -- Inline Pragmas -- 7381 -------------------- 7382 7383 -- Note that these inline pragmas are referenced by the XEINFO utility 7384 -- program in preparing the corresponding C header, and only those 7385 -- subprograms meeting the requirements documented in the section on 7386 -- XEINFO may be referenced in this section. 7387 7388 pragma Inline (Abstract_States); 7389 pragma Inline (Accept_Address); 7390 pragma Inline (Access_Disp_Table); 7391 pragma Inline (Actual_Subtype); 7392 pragma Inline (Address_Taken); 7393 pragma Inline (Alias); 7394 pragma Inline (Alignment); 7395 pragma Inline (Associated_Formal_Package); 7396 pragma Inline (Associated_Node_For_Itype); 7397 pragma Inline (Associated_Storage_Pool); 7398 pragma Inline (Barrier_Function); 7399 pragma Inline (Block_Node); 7400 pragma Inline (Body_Entity); 7401 pragma Inline (Body_Needed_For_SAL); 7402 pragma Inline (CR_Discriminant); 7403 pragma Inline (C_Pass_By_Copy); 7404 pragma Inline (Can_Never_Be_Null); 7405 pragma Inline (Can_Use_Internal_Rep); 7406 pragma Inline (Checks_May_Be_Suppressed); 7407 pragma Inline (Class_Wide_Type); 7408 pragma Inline (Cloned_Subtype); 7409 pragma Inline (Component_Bit_Offset); 7410 pragma Inline (Component_Clause); 7411 pragma Inline (Component_Size); 7412 pragma Inline (Component_Type); 7413 pragma Inline (Contract); 7414 pragma Inline (Corresponding_Concurrent_Type); 7415 pragma Inline (Corresponding_Discriminant); 7416 pragma Inline (Corresponding_Equality); 7417 pragma Inline (Corresponding_Protected_Entry); 7418 pragma Inline (Corresponding_Record_Type); 7419 pragma Inline (Corresponding_Remote_Type); 7420 pragma Inline (Current_Use_Clause); 7421 pragma Inline (Current_Value); 7422 pragma Inline (DTC_Entity); 7423 pragma Inline (DT_Entry_Count); 7424 pragma Inline (DT_Offset_To_Top_Func); 7425 pragma Inline (DT_Position); 7426 pragma Inline (Debug_Info_Off); 7427 pragma Inline (Debug_Renaming_Link); 7428 pragma Inline (Default_Aspect_Component_Value); 7429 pragma Inline (Default_Aspect_Value); 7430 pragma Inline (Default_Expr_Function); 7431 pragma Inline (Default_Expressions_Processed); 7432 pragma Inline (Default_Value); 7433 pragma Inline (Delay_Cleanups); 7434 pragma Inline (Delay_Subprogram_Descriptors); 7435 pragma Inline (Delta_Value); 7436 pragma Inline (Dependent_Instances); 7437 pragma Inline (Depends_On_Private); 7438 pragma Inline (Digits_Value); 7439 pragma Inline (Direct_Primitive_Operations); 7440 pragma Inline (Directly_Designated_Type); 7441 pragma Inline (Discard_Names); 7442 pragma Inline (Discriminal); 7443 pragma Inline (Discriminal_Link); 7444 pragma Inline (Discriminant_Checking_Func); 7445 pragma Inline (Discriminant_Constraint); 7446 pragma Inline (Discriminant_Default_Value); 7447 pragma Inline (Discriminant_Number); 7448 pragma Inline (Dispatch_Table_Wrappers); 7449 pragma Inline (Elaborate_Body_Desirable); 7450 pragma Inline (Elaboration_Entity); 7451 pragma Inline (Elaboration_Entity_Required); 7452 pragma Inline (Enclosing_Scope); 7453 pragma Inline (Entry_Accepted); 7454 pragma Inline (Entry_Bodies_Array); 7455 pragma Inline (Entry_Cancel_Parameter); 7456 pragma Inline (Entry_Component); 7457 pragma Inline (Entry_Formal); 7458 pragma Inline (Entry_Index_Constant); 7459 pragma Inline (Entry_Index_Type); 7460 pragma Inline (Entry_Parameters_Type); 7461 pragma Inline (Enum_Pos_To_Rep); 7462 pragma Inline (Enumeration_Pos); 7463 pragma Inline (Enumeration_Rep); 7464 pragma Inline (Enumeration_Rep_Expr); 7465 pragma Inline (Equivalent_Type); 7466 pragma Inline (Esize); 7467 pragma Inline (Exception_Code); 7468 pragma Inline (Extra_Accessibility); 7469 pragma Inline (Extra_Accessibility_Of_Result); 7470 pragma Inline (Extra_Constrained); 7471 pragma Inline (Extra_Formal); 7472 pragma Inline (Extra_Formals); 7473 pragma Inline (Finalization_Master); 7474 pragma Inline (Finalizer); 7475 pragma Inline (First_Entity); 7476 pragma Inline (First_Exit_Statement); 7477 pragma Inline (First_Index); 7478 pragma Inline (First_Literal); 7479 pragma Inline (First_Optional_Parameter); 7480 pragma Inline (First_Private_Entity); 7481 pragma Inline (First_Rep_Item); 7482 pragma Inline (Freeze_Node); 7483 pragma Inline (From_With_Type); 7484 pragma Inline (Full_View); 7485 pragma Inline (Generic_Homonym); 7486 pragma Inline (Generic_Renamings); 7487 pragma Inline (Handler_Records); 7488 pragma Inline (Has_Aliased_Components); 7489 pragma Inline (Has_Alignment_Clause); 7490 pragma Inline (Has_All_Calls_Remote); 7491 pragma Inline (Has_Anonymous_Master); 7492 pragma Inline (Has_Atomic_Components); 7493 pragma Inline (Has_Biased_Representation); 7494 pragma Inline (Has_Completion); 7495 pragma Inline (Has_Completion_In_Body); 7496 pragma Inline (Has_Complex_Representation); 7497 pragma Inline (Has_Component_Size_Clause); 7498 pragma Inline (Has_Constrained_Partial_View); 7499 pragma Inline (Has_Contiguous_Rep); 7500 pragma Inline (Has_Controlled_Component); 7501 pragma Inline (Has_Controlling_Result); 7502 pragma Inline (Has_Convention_Pragma); 7503 pragma Inline (Has_Default_Aspect); 7504 pragma Inline (Has_Delayed_Aspects); 7505 pragma Inline (Has_Delayed_Freeze); 7506 pragma Inline (Has_Discriminants); 7507 pragma Inline (Has_Dispatch_Table); 7508 pragma Inline (Has_Enumeration_Rep_Clause); 7509 pragma Inline (Has_Exit); 7510 pragma Inline (Has_External_Tag_Rep_Clause); 7511 pragma Inline (Has_Forward_Instantiation); 7512 pragma Inline (Has_Fully_Qualified_Name); 7513 pragma Inline (Has_Gigi_Rep_Item); 7514 pragma Inline (Has_Homonym); 7515 pragma Inline (Has_Implicit_Dereference); 7516 pragma Inline (Has_Independent_Components); 7517 pragma Inline (Has_Inheritable_Invariants); 7518 pragma Inline (Has_Initial_Value); 7519 pragma Inline (Has_Invariants); 7520 pragma Inline (Has_Machine_Radix_Clause); 7521 pragma Inline (Has_Master_Entity); 7522 pragma Inline (Has_Missing_Return); 7523 pragma Inline (Has_Nested_Block_With_Handler); 7524 pragma Inline (Has_Non_Standard_Rep); 7525 pragma Inline (Has_Object_Size_Clause); 7526 pragma Inline (Has_Per_Object_Constraint); 7527 pragma Inline (Has_Postconditions); 7528 pragma Inline (Has_Pragma_Controlled); 7529 pragma Inline (Has_Pragma_Elaborate_Body); 7530 pragma Inline (Has_Pragma_Inline); 7531 pragma Inline (Has_Pragma_Inline_Always); 7532 pragma Inline (Has_Pragma_No_Inline); 7533 pragma Inline (Has_Pragma_Ordered); 7534 pragma Inline (Has_Pragma_Pack); 7535 pragma Inline (Has_Pragma_Preelab_Init); 7536 pragma Inline (Has_Pragma_Pure); 7537 pragma Inline (Has_Pragma_Pure_Function); 7538 pragma Inline (Has_Pragma_Thread_Local_Storage); 7539 pragma Inline (Has_Pragma_Unmodified); 7540 pragma Inline (Has_Pragma_Unreferenced); 7541 pragma Inline (Has_Pragma_Unreferenced_Objects); 7542 pragma Inline (Has_Predicates); 7543 pragma Inline (Has_Primitive_Operations); 7544 pragma Inline (Has_Private_Ancestor); 7545 pragma Inline (Has_Private_Declaration); 7546 pragma Inline (Has_Qualified_Name); 7547 pragma Inline (Has_RACW); 7548 pragma Inline (Has_Record_Rep_Clause); 7549 pragma Inline (Has_Recursive_Call); 7550 pragma Inline (Has_Size_Clause); 7551 pragma Inline (Has_Small_Clause); 7552 pragma Inline (Has_Specified_Layout); 7553 pragma Inline (Has_Specified_Stream_Input); 7554 pragma Inline (Has_Specified_Stream_Output); 7555 pragma Inline (Has_Specified_Stream_Read); 7556 pragma Inline (Has_Specified_Stream_Write); 7557 pragma Inline (Has_Static_Discriminants); 7558 pragma Inline (Has_Storage_Size_Clause); 7559 pragma Inline (Has_Stream_Size_Clause); 7560 pragma Inline (Has_Task); 7561 pragma Inline (Has_Thunks); 7562 pragma Inline (Has_Unchecked_Union); 7563 pragma Inline (Has_Unknown_Discriminants); 7564 pragma Inline (Has_Up_Level_Access); 7565 pragma Inline (Has_Volatile_Components); 7566 pragma Inline (Has_Xref_Entry); 7567 pragma Inline (Hiding_Loop_Variable); 7568 pragma Inline (Homonym); 7569 pragma Inline (In_Package_Body); 7570 pragma Inline (In_Private_Part); 7571 pragma Inline (In_Use); 7572 pragma Inline (Integrity_Level); 7573 pragma Inline (Inner_Instances); 7574 pragma Inline (Interface_Alias); 7575 pragma Inline (Interface_Name); 7576 pragma Inline (Interfaces); 7577 pragma Inline (Is_AST_Entry); 7578 pragma Inline (Is_Abstract_Subprogram); 7579 pragma Inline (Is_Abstract_Type); 7580 pragma Inline (Is_Access_Constant); 7581 pragma Inline (Is_Access_Protected_Subprogram_Type); 7582 pragma Inline (Is_Access_Subprogram_Type); 7583 pragma Inline (Is_Access_Type); 7584 pragma Inline (Is_Ada_2005_Only); 7585 pragma Inline (Is_Ada_2012_Only); 7586 pragma Inline (Is_Aggregate_Type); 7587 pragma Inline (Is_Aliased); 7588 pragma Inline (Is_Array_Type); 7589 pragma Inline (Is_Assignable); 7590 pragma Inline (Is_Asynchronous); 7591 pragma Inline (Is_Atomic); 7592 pragma Inline (Is_Bit_Packed_Array); 7593 pragma Inline (Is_CPP_Class); 7594 pragma Inline (Is_Called); 7595 pragma Inline (Is_Character_Type); 7596 pragma Inline (Is_Child_Unit); 7597 pragma Inline (Is_Class_Wide_Equivalent_Type); 7598 pragma Inline (Is_Class_Wide_Type); 7599 pragma Inline (Is_Compilation_Unit); 7600 pragma Inline (Is_Completely_Hidden); 7601 pragma Inline (Is_Composite_Type); 7602 pragma Inline (Is_Concurrent_Body); 7603 pragma Inline (Is_Concurrent_Record_Type); 7604 pragma Inline (Is_Concurrent_Type); 7605 pragma Inline (Is_Constr_Subt_For_UN_Aliased); 7606 pragma Inline (Is_Constr_Subt_For_U_Nominal); 7607 pragma Inline (Is_Constrained); 7608 pragma Inline (Is_Constructor); 7609 pragma Inline (Is_Controlled); 7610 pragma Inline (Is_Controlling_Formal); 7611 pragma Inline (Is_Decimal_Fixed_Point_Type); 7612 pragma Inline (Is_Descendent_Of_Address); 7613 pragma Inline (Is_Digits_Type); 7614 pragma Inline (Is_Discrete_Or_Fixed_Point_Type); 7615 pragma Inline (Is_Discrete_Type); 7616 pragma Inline (Is_Discrim_SO_Function); 7617 pragma Inline (Is_Dispatch_Table_Entity); 7618 pragma Inline (Is_Dispatching_Operation); 7619 pragma Inline (Is_Elementary_Type); 7620 pragma Inline (Is_Eliminated); 7621 pragma Inline (Is_Entry); 7622 pragma Inline (Is_Entry_Formal); 7623 pragma Inline (Is_Enumeration_Type); 7624 pragma Inline (Is_Exported); 7625 pragma Inline (Is_First_Subtype); 7626 pragma Inline (Is_Fixed_Point_Type); 7627 pragma Inline (Is_Floating_Point_Type); 7628 pragma Inline (Is_For_Access_Subtype); 7629 pragma Inline (Is_Formal); 7630 pragma Inline (Is_Formal_Object); 7631 pragma Inline (Is_Formal_Subprogram); 7632 pragma Inline (Is_Frozen); 7633 pragma Inline (Is_Generic_Actual_Type); 7634 pragma Inline (Is_Generic_Instance); 7635 pragma Inline (Is_Generic_Subprogram); 7636 pragma Inline (Is_Generic_Type); 7637 pragma Inline (Is_Generic_Unit); 7638 pragma Inline (Is_Hidden); 7639 pragma Inline (Is_Hidden_Open_Scope); 7640 pragma Inline (Is_Immediately_Visible); 7641 pragma Inline (Is_Implementation_Defined); 7642 pragma Inline (Is_Imported); 7643 pragma Inline (Is_Incomplete_Or_Private_Type); 7644 pragma Inline (Is_Incomplete_Type); 7645 pragma Inline (Is_Inlined); 7646 pragma Inline (Is_Instantiated); 7647 pragma Inline (Is_Integer_Type); 7648 pragma Inline (Is_Interface); 7649 pragma Inline (Is_Internal); 7650 pragma Inline (Is_Interrupt_Handler); 7651 pragma Inline (Is_Intrinsic_Subprogram); 7652 pragma Inline (Is_Itype); 7653 pragma Inline (Is_Known_Non_Null); 7654 pragma Inline (Is_Known_Null); 7655 pragma Inline (Is_Known_Valid); 7656 pragma Inline (Is_Limited_Composite); 7657 pragma Inline (Is_Limited_Interface); 7658 pragma Inline (Is_Limited_Record); 7659 pragma Inline (Is_Local_Anonymous_Access); 7660 pragma Inline (Is_Machine_Code_Subprogram); 7661 pragma Inline (Is_Modular_Integer_Type); 7662 pragma Inline (Is_Named_Number); 7663 pragma Inline (Is_Non_Static_Subtype); 7664 pragma Inline (Is_Null_Init_Proc); 7665 pragma Inline (Is_Numeric_Type); 7666 pragma Inline (Is_Object); 7667 pragma Inline (Is_Obsolescent); 7668 pragma Inline (Is_Only_Out_Parameter); 7669 pragma Inline (Is_Optional_Parameter); 7670 pragma Inline (Is_Ordinary_Fixed_Point_Type); 7671 pragma Inline (Is_Overloadable); 7672 pragma Inline (Is_Package_Body_Entity); 7673 pragma Inline (Is_Packed); 7674 pragma Inline (Is_Packed_Array_Type); 7675 pragma Inline (Is_Potentially_Use_Visible); 7676 pragma Inline (Is_Preelaborated); 7677 pragma Inline (Is_Primitive); 7678 pragma Inline (Is_Primitive_Wrapper); 7679 pragma Inline (Is_Private_Composite); 7680 pragma Inline (Is_Private_Descendant); 7681 pragma Inline (Is_Private_Primitive); 7682 pragma Inline (Is_Private_Type); 7683 pragma Inline (Is_Processed_Transient); 7684 pragma Inline (Is_Protected_Type); 7685 pragma Inline (Is_Public); 7686 pragma Inline (Is_Pure); 7687 pragma Inline (Is_Pure_Unit_Access_Type); 7688 pragma Inline (Is_RACW_Stub_Type); 7689 pragma Inline (Is_Raised); 7690 pragma Inline (Is_Real_Type); 7691 pragma Inline (Is_Record_Type); 7692 pragma Inline (Is_Remote_Call_Interface); 7693 pragma Inline (Is_Remote_Types); 7694 pragma Inline (Is_Renaming_Of_Object); 7695 pragma Inline (Is_Return_Object); 7696 pragma Inline (Is_Safe_To_Reevaluate); 7697 pragma Inline (Is_Scalar_Type); 7698 pragma Inline (Is_Shared_Passive); 7699 pragma Inline (Is_Signed_Integer_Type); 7700 pragma Inline (Is_Statically_Allocated); 7701 pragma Inline (Is_Subprogram); 7702 pragma Inline (Is_Tag); 7703 pragma Inline (Is_Tagged_Type); 7704 pragma Inline (Is_Task_Type); 7705 pragma Inline (Is_Thunk); 7706 pragma Inline (Is_Trivial_Subprogram); 7707 pragma Inline (Is_True_Constant); 7708 pragma Inline (Is_Type); 7709 pragma Inline (Is_Unchecked_Union); 7710 pragma Inline (Is_Underlying_Record_View); 7711 pragma Inline (Is_Unsigned_Type); 7712 pragma Inline (Is_VMS_Exception); 7713 pragma Inline (Is_Valued_Procedure); 7714 pragma Inline (Is_Visible_Formal); 7715 pragma Inline (Is_Visible_Lib_Unit); 7716 pragma Inline (Itype_Printed); 7717 pragma Inline (Kill_Elaboration_Checks); 7718 pragma Inline (Kill_Range_Checks); 7719 pragma Inline (Known_To_Have_Preelab_Init); 7720 pragma Inline (Last_Assignment); 7721 pragma Inline (Last_Entity); 7722 pragma Inline (Limited_View); 7723 pragma Inline (Lit_Indexes); 7724 pragma Inline (Lit_Strings); 7725 pragma Inline (Loop_Entry_Attributes); 7726 pragma Inline (Low_Bound_Tested); 7727 pragma Inline (Machine_Radix_10); 7728 pragma Inline (Master_Id); 7729 pragma Inline (Materialize_Entity); 7730 pragma Inline (Mechanism); 7731 pragma Inline (Modulus); 7732 pragma Inline (Must_Be_On_Byte_Boundary); 7733 pragma Inline (Must_Have_Preelab_Init); 7734 pragma Inline (Needs_Debug_Info); 7735 pragma Inline (Needs_No_Actuals); 7736 pragma Inline (Never_Set_In_Source); 7737 pragma Inline (Next_Index); 7738 pragma Inline (Next_Inlined_Subprogram); 7739 pragma Inline (Next_Literal); 7740 pragma Inline (No_Pool_Assigned); 7741 pragma Inline (No_Return); 7742 pragma Inline (No_Strict_Aliasing); 7743 pragma Inline (Non_Binary_Modulus); 7744 pragma Inline (Non_Limited_View); 7745 pragma Inline (Nonzero_Is_True); 7746 pragma Inline (Normalized_First_Bit); 7747 pragma Inline (Normalized_Position); 7748 pragma Inline (Normalized_Position_Max); 7749 pragma Inline (OK_To_Rename); 7750 pragma Inline (OK_To_Reorder_Components); 7751 pragma Inline (Optimize_Alignment_Space); 7752 pragma Inline (Optimize_Alignment_Time); 7753 pragma Inline (Original_Access_Type); 7754 pragma Inline (Original_Array_Type); 7755 pragma Inline (Original_Record_Component); 7756 pragma Inline (Overlays_Constant); 7757 pragma Inline (Overridden_Operation); 7758 pragma Inline (PPC_Wrapper); 7759 pragma Inline (Package_Instantiation); 7760 pragma Inline (Packed_Array_Type); 7761 pragma Inline (Parameter_Mode); 7762 pragma Inline (Parent_Subtype); 7763 pragma Inline (Postcondition_Proc); 7764 pragma Inline (Prival); 7765 pragma Inline (Prival_Link); 7766 pragma Inline (Private_Dependents); 7767 pragma Inline (Private_View); 7768 pragma Inline (Protected_Body_Subprogram); 7769 pragma Inline (Protected_Formal); 7770 pragma Inline (Protection_Object); 7771 pragma Inline (RM_Size); 7772 pragma Inline (Reachable); 7773 pragma Inline (Referenced); 7774 pragma Inline (Referenced_As_LHS); 7775 pragma Inline (Referenced_As_Out_Parameter); 7776 pragma Inline (Refined_State); 7777 pragma Inline (Register_Exception_Call); 7778 pragma Inline (Related_Array_Object); 7779 pragma Inline (Related_Expression); 7780 pragma Inline (Related_Instance); 7781 pragma Inline (Related_Type); 7782 pragma Inline (Relative_Deadline_Variable); 7783 pragma Inline (Renamed_Entity); 7784 pragma Inline (Renamed_In_Spec); 7785 pragma Inline (Renamed_Object); 7786 pragma Inline (Renaming_Map); 7787 pragma Inline (Requires_Overriding); 7788 pragma Inline (Return_Applies_To); 7789 pragma Inline (Return_Present); 7790 pragma Inline (Returns_By_Ref); 7791 pragma Inline (Reverse_Bit_Order); 7792 pragma Inline (Reverse_Storage_Order); 7793 pragma Inline (Scalar_Range); 7794 pragma Inline (Scale_Value); 7795 pragma Inline (Scope_Depth_Value); 7796 pragma Inline (Sec_Stack_Needed_For_Return); 7797 pragma Inline (Shadow_Entities); 7798 pragma Inline (Shared_Var_Procs_Instance); 7799 pragma Inline (Size_Check_Code); 7800 pragma Inline (Size_Depends_On_Discriminant); 7801 pragma Inline (Size_Known_At_Compile_Time); 7802 pragma Inline (Small_Value); 7803 pragma Inline (Spec_Entity); 7804 pragma Inline (Static_Elaboration_Desired); 7805 pragma Inline (Static_Initialization); 7806 pragma Inline (Static_Predicate); 7807 pragma Inline (Status_Flag_Or_Transient_Decl); 7808 pragma Inline (Storage_Size_Variable); 7809 pragma Inline (Stored_Constraint); 7810 pragma Inline (Strict_Alignment); 7811 pragma Inline (String_Literal_Length); 7812 pragma Inline (String_Literal_Low_Bound); 7813 pragma Inline (Subprograms_For_Type); 7814 pragma Inline (Suppress_Elaboration_Warnings); 7815 pragma Inline (Suppress_Initialization); 7816 pragma Inline (Suppress_Style_Checks); 7817 pragma Inline (Suppress_Value_Tracking_On_Call); 7818 pragma Inline (Task_Body_Procedure); 7819 pragma Inline (Treat_As_Volatile); 7820 pragma Inline (Underlying_Full_View); 7821 pragma Inline (Underlying_Record_View); 7822 pragma Inline (Universal_Aliasing); 7823 pragma Inline (Unset_Reference); 7824 pragma Inline (Used_As_Generic_Actual); 7825 pragma Inline (Uses_Lock_Free); 7826 pragma Inline (Uses_Sec_Stack); 7827 pragma Inline (Warnings_Off); 7828 pragma Inline (Warnings_Off_Used); 7829 pragma Inline (Warnings_Off_Used_Unmodified); 7830 pragma Inline (Warnings_Off_Used_Unreferenced); 7831 pragma Inline (Was_Hidden); 7832 pragma Inline (Wrapped_Entity); 7833 7834 pragma Inline (Init_Alignment); 7835 pragma Inline (Init_Component_Bit_Offset); 7836 pragma Inline (Init_Component_Size); 7837 pragma Inline (Init_Digits_Value); 7838 pragma Inline (Init_Esize); 7839 pragma Inline (Init_RM_Size); 7840 7841 pragma Inline (Set_Abstract_States); 7842 pragma Inline (Set_Accept_Address); 7843 pragma Inline (Set_Access_Disp_Table); 7844 pragma Inline (Set_Actual_Subtype); 7845 pragma Inline (Set_Address_Taken); 7846 pragma Inline (Set_Alias); 7847 pragma Inline (Set_Alignment); 7848 pragma Inline (Set_Associated_Formal_Package); 7849 pragma Inline (Set_Associated_Node_For_Itype); 7850 pragma Inline (Set_Associated_Storage_Pool); 7851 pragma Inline (Set_Barrier_Function); 7852 pragma Inline (Set_Block_Node); 7853 pragma Inline (Set_Body_Entity); 7854 pragma Inline (Set_Body_Needed_For_SAL); 7855 pragma Inline (Set_CR_Discriminant); 7856 pragma Inline (Set_C_Pass_By_Copy); 7857 pragma Inline (Set_Can_Never_Be_Null); 7858 pragma Inline (Set_Can_Use_Internal_Rep); 7859 pragma Inline (Set_Checks_May_Be_Suppressed); 7860 pragma Inline (Set_Class_Wide_Type); 7861 pragma Inline (Set_Cloned_Subtype); 7862 pragma Inline (Set_Component_Bit_Offset); 7863 pragma Inline (Set_Component_Clause); 7864 pragma Inline (Set_Component_Size); 7865 pragma Inline (Set_Component_Type); 7866 pragma Inline (Set_Contract); 7867 pragma Inline (Set_Corresponding_Concurrent_Type); 7868 pragma Inline (Set_Corresponding_Discriminant); 7869 pragma Inline (Set_Corresponding_Equality); 7870 pragma Inline (Set_Corresponding_Protected_Entry); 7871 pragma Inline (Set_Corresponding_Record_Type); 7872 pragma Inline (Set_Corresponding_Remote_Type); 7873 pragma Inline (Set_Current_Use_Clause); 7874 pragma Inline (Set_Current_Value); 7875 pragma Inline (Set_DTC_Entity); 7876 pragma Inline (Set_DT_Entry_Count); 7877 pragma Inline (Set_DT_Offset_To_Top_Func); 7878 pragma Inline (Set_DT_Position); 7879 pragma Inline (Set_Debug_Info_Off); 7880 pragma Inline (Set_Debug_Renaming_Link); 7881 pragma Inline (Set_Default_Aspect_Component_Value); 7882 pragma Inline (Set_Default_Aspect_Value); 7883 pragma Inline (Set_Default_Expr_Function); 7884 pragma Inline (Set_Default_Expressions_Processed); 7885 pragma Inline (Set_Default_Value); 7886 pragma Inline (Set_Delay_Cleanups); 7887 pragma Inline (Set_Delay_Subprogram_Descriptors); 7888 pragma Inline (Set_Delta_Value); 7889 pragma Inline (Set_Dependent_Instances); 7890 pragma Inline (Set_Depends_On_Private); 7891 pragma Inline (Set_Digits_Value); 7892 pragma Inline (Set_Direct_Primitive_Operations); 7893 pragma Inline (Set_Directly_Designated_Type); 7894 pragma Inline (Set_Discard_Names); 7895 pragma Inline (Set_Discriminal); 7896 pragma Inline (Set_Discriminal_Link); 7897 pragma Inline (Set_Discriminant_Checking_Func); 7898 pragma Inline (Set_Discriminant_Constraint); 7899 pragma Inline (Set_Discriminant_Default_Value); 7900 pragma Inline (Set_Discriminant_Number); 7901 pragma Inline (Set_Dispatch_Table_Wrappers); 7902 pragma Inline (Set_Elaborate_Body_Desirable); 7903 pragma Inline (Set_Elaboration_Entity); 7904 pragma Inline (Set_Elaboration_Entity_Required); 7905 pragma Inline (Set_Enclosing_Scope); 7906 pragma Inline (Set_Entry_Accepted); 7907 pragma Inline (Set_Entry_Bodies_Array); 7908 pragma Inline (Set_Entry_Cancel_Parameter); 7909 pragma Inline (Set_Entry_Component); 7910 pragma Inline (Set_Entry_Formal); 7911 pragma Inline (Set_Entry_Parameters_Type); 7912 pragma Inline (Set_Enum_Pos_To_Rep); 7913 pragma Inline (Set_Enumeration_Pos); 7914 pragma Inline (Set_Enumeration_Rep); 7915 pragma Inline (Set_Enumeration_Rep_Expr); 7916 pragma Inline (Set_Equivalent_Type); 7917 pragma Inline (Set_Esize); 7918 pragma Inline (Set_Exception_Code); 7919 pragma Inline (Set_Extra_Accessibility); 7920 pragma Inline (Set_Extra_Accessibility_Of_Result); 7921 pragma Inline (Set_Extra_Constrained); 7922 pragma Inline (Set_Extra_Formal); 7923 pragma Inline (Set_Extra_Formals); 7924 pragma Inline (Set_Finalization_Master); 7925 pragma Inline (Set_Finalizer); 7926 pragma Inline (Set_First_Entity); 7927 pragma Inline (Set_First_Exit_Statement); 7928 pragma Inline (Set_First_Index); 7929 pragma Inline (Set_First_Literal); 7930 pragma Inline (Set_First_Optional_Parameter); 7931 pragma Inline (Set_First_Private_Entity); 7932 pragma Inline (Set_First_Rep_Item); 7933 pragma Inline (Set_Freeze_Node); 7934 pragma Inline (Set_From_With_Type); 7935 pragma Inline (Set_Full_View); 7936 pragma Inline (Set_Generic_Homonym); 7937 pragma Inline (Set_Generic_Renamings); 7938 pragma Inline (Set_Handler_Records); 7939 pragma Inline (Set_Has_Aliased_Components); 7940 pragma Inline (Set_Has_Alignment_Clause); 7941 pragma Inline (Set_Has_All_Calls_Remote); 7942 pragma Inline (Set_Has_Anonymous_Master); 7943 pragma Inline (Set_Has_Atomic_Components); 7944 pragma Inline (Set_Has_Biased_Representation); 7945 pragma Inline (Set_Has_Completion); 7946 pragma Inline (Set_Has_Completion_In_Body); 7947 pragma Inline (Set_Has_Complex_Representation); 7948 pragma Inline (Set_Has_Component_Size_Clause); 7949 pragma Inline (Set_Has_Constrained_Partial_View); 7950 pragma Inline (Set_Has_Contiguous_Rep); 7951 pragma Inline (Set_Has_Controlled_Component); 7952 pragma Inline (Set_Has_Controlling_Result); 7953 pragma Inline (Set_Has_Convention_Pragma); 7954 pragma Inline (Set_Has_Default_Aspect); 7955 pragma Inline (Set_Has_Delayed_Aspects); 7956 pragma Inline (Set_Has_Delayed_Freeze); 7957 pragma Inline (Set_Has_Discriminants); 7958 pragma Inline (Set_Has_Dispatch_Table); 7959 pragma Inline (Set_Has_Enumeration_Rep_Clause); 7960 pragma Inline (Set_Has_Exit); 7961 pragma Inline (Set_Has_External_Tag_Rep_Clause); 7962 pragma Inline (Set_Has_Forward_Instantiation); 7963 pragma Inline (Set_Has_Fully_Qualified_Name); 7964 pragma Inline (Set_Has_Gigi_Rep_Item); 7965 pragma Inline (Set_Has_Homonym); 7966 pragma Inline (Set_Has_Implicit_Dereference); 7967 pragma Inline (Set_Has_Independent_Components); 7968 pragma Inline (Set_Has_Inheritable_Invariants); 7969 pragma Inline (Set_Has_Initial_Value); 7970 pragma Inline (Set_Has_Invariants); 7971 pragma Inline (Set_Has_Machine_Radix_Clause); 7972 pragma Inline (Set_Has_Master_Entity); 7973 pragma Inline (Set_Has_Missing_Return); 7974 pragma Inline (Set_Has_Nested_Block_With_Handler); 7975 pragma Inline (Set_Has_Non_Standard_Rep); 7976 pragma Inline (Set_Has_Object_Size_Clause); 7977 pragma Inline (Set_Has_Per_Object_Constraint); 7978 pragma Inline (Set_Has_Postconditions); 7979 pragma Inline (Set_Has_Pragma_Controlled); 7980 pragma Inline (Set_Has_Pragma_Elaborate_Body); 7981 pragma Inline (Set_Has_Pragma_Inline); 7982 pragma Inline (Set_Has_Pragma_Inline_Always); 7983 pragma Inline (Set_Has_Pragma_No_Inline); 7984 pragma Inline (Set_Has_Pragma_Ordered); 7985 pragma Inline (Set_Has_Pragma_Pack); 7986 pragma Inline (Set_Has_Pragma_Preelab_Init); 7987 pragma Inline (Set_Has_Pragma_Pure); 7988 pragma Inline (Set_Has_Pragma_Pure_Function); 7989 pragma Inline (Set_Has_Pragma_Thread_Local_Storage); 7990 pragma Inline (Set_Has_Pragma_Unmodified); 7991 pragma Inline (Set_Has_Pragma_Unreferenced); 7992 pragma Inline (Set_Has_Pragma_Unreferenced_Objects); 7993 pragma Inline (Set_Has_Predicates); 7994 pragma Inline (Set_Has_Primitive_Operations); 7995 pragma Inline (Set_Has_Private_Ancestor); 7996 pragma Inline (Set_Has_Private_Declaration); 7997 pragma Inline (Set_Has_Qualified_Name); 7998 pragma Inline (Set_Has_RACW); 7999 pragma Inline (Set_Has_Record_Rep_Clause); 8000 pragma Inline (Set_Has_Recursive_Call); 8001 pragma Inline (Set_Has_Size_Clause); 8002 pragma Inline (Set_Has_Small_Clause); 8003 pragma Inline (Set_Has_Specified_Layout); 8004 pragma Inline (Set_Has_Specified_Stream_Input); 8005 pragma Inline (Set_Has_Specified_Stream_Output); 8006 pragma Inline (Set_Has_Specified_Stream_Read); 8007 pragma Inline (Set_Has_Specified_Stream_Write); 8008 pragma Inline (Set_Has_Static_Discriminants); 8009 pragma Inline (Set_Has_Storage_Size_Clause); 8010 pragma Inline (Set_Has_Stream_Size_Clause); 8011 pragma Inline (Set_Has_Task); 8012 pragma Inline (Set_Has_Thunks); 8013 pragma Inline (Set_Has_Unchecked_Union); 8014 pragma Inline (Set_Has_Unknown_Discriminants); 8015 pragma Inline (Set_Has_Up_Level_Access); 8016 pragma Inline (Set_Has_Volatile_Components); 8017 pragma Inline (Set_Has_Xref_Entry); 8018 pragma Inline (Set_Hiding_Loop_Variable); 8019 pragma Inline (Set_Homonym); 8020 pragma Inline (Set_In_Package_Body); 8021 pragma Inline (Set_In_Private_Part); 8022 pragma Inline (Set_In_Use); 8023 pragma Inline (Set_Inner_Instances); 8024 pragma Inline (Set_Integrity_Level); 8025 pragma Inline (Set_Interface_Alias); 8026 pragma Inline (Set_Interface_Name); 8027 pragma Inline (Set_Interfaces); 8028 pragma Inline (Set_Is_AST_Entry); 8029 pragma Inline (Set_Is_Abstract_Subprogram); 8030 pragma Inline (Set_Is_Abstract_Type); 8031 pragma Inline (Set_Is_Access_Constant); 8032 pragma Inline (Set_Is_Ada_2005_Only); 8033 pragma Inline (Set_Is_Ada_2012_Only); 8034 pragma Inline (Set_Is_Aliased); 8035 pragma Inline (Set_Is_Asynchronous); 8036 pragma Inline (Set_Is_Atomic); 8037 pragma Inline (Set_Is_Bit_Packed_Array); 8038 pragma Inline (Set_Is_CPP_Class); 8039 pragma Inline (Set_Is_Called); 8040 pragma Inline (Set_Is_Character_Type); 8041 pragma Inline (Set_Is_Child_Unit); 8042 pragma Inline (Set_Is_Class_Wide_Equivalent_Type); 8043 pragma Inline (Set_Is_Compilation_Unit); 8044 pragma Inline (Set_Is_Completely_Hidden); 8045 pragma Inline (Set_Is_Concurrent_Record_Type); 8046 pragma Inline (Set_Is_Constr_Subt_For_UN_Aliased); 8047 pragma Inline (Set_Is_Constr_Subt_For_U_Nominal); 8048 pragma Inline (Set_Is_Constrained); 8049 pragma Inline (Set_Is_Constructor); 8050 pragma Inline (Set_Is_Controlled); 8051 pragma Inline (Set_Is_Controlling_Formal); 8052 pragma Inline (Set_Is_Descendent_Of_Address); 8053 pragma Inline (Set_Is_Discrim_SO_Function); 8054 pragma Inline (Set_Is_Dispatch_Table_Entity); 8055 pragma Inline (Set_Is_Dispatching_Operation); 8056 pragma Inline (Set_Is_Eliminated); 8057 pragma Inline (Set_Is_Entry_Formal); 8058 pragma Inline (Set_Is_Exported); 8059 pragma Inline (Set_Is_First_Subtype); 8060 pragma Inline (Set_Is_For_Access_Subtype); 8061 pragma Inline (Set_Is_Formal_Subprogram); 8062 pragma Inline (Set_Is_Frozen); 8063 pragma Inline (Set_Is_Generic_Actual_Type); 8064 pragma Inline (Set_Is_Generic_Instance); 8065 pragma Inline (Set_Is_Generic_Type); 8066 pragma Inline (Set_Is_Hidden); 8067 pragma Inline (Set_Is_Hidden_Open_Scope); 8068 pragma Inline (Set_Is_Immediately_Visible); 8069 pragma Inline (Set_Is_Implementation_Defined); 8070 pragma Inline (Set_Is_Imported); 8071 pragma Inline (Set_Is_Inlined); 8072 pragma Inline (Set_Is_Instantiated); 8073 pragma Inline (Set_Is_Interface); 8074 pragma Inline (Set_Is_Internal); 8075 pragma Inline (Set_Is_Interrupt_Handler); 8076 pragma Inline (Set_Is_Intrinsic_Subprogram); 8077 pragma Inline (Set_Is_Itype); 8078 pragma Inline (Set_Is_Known_Non_Null); 8079 pragma Inline (Set_Is_Known_Null); 8080 pragma Inline (Set_Is_Known_Valid); 8081 pragma Inline (Set_Is_Limited_Composite); 8082 pragma Inline (Set_Is_Limited_Interface); 8083 pragma Inline (Set_Is_Limited_Record); 8084 pragma Inline (Set_Is_Local_Anonymous_Access); 8085 pragma Inline (Set_Is_Machine_Code_Subprogram); 8086 pragma Inline (Set_Is_Non_Static_Subtype); 8087 pragma Inline (Set_Is_Null_Init_Proc); 8088 pragma Inline (Set_Is_Obsolescent); 8089 pragma Inline (Set_Is_Only_Out_Parameter); 8090 pragma Inline (Set_Is_Optional_Parameter); 8091 pragma Inline (Set_Is_Package_Body_Entity); 8092 pragma Inline (Set_Is_Packed); 8093 pragma Inline (Set_Is_Packed_Array_Type); 8094 pragma Inline (Set_Is_Potentially_Use_Visible); 8095 pragma Inline (Set_Is_Preelaborated); 8096 pragma Inline (Set_Is_Primitive); 8097 pragma Inline (Set_Is_Primitive_Wrapper); 8098 pragma Inline (Set_Is_Private_Composite); 8099 pragma Inline (Set_Is_Private_Descendant); 8100 pragma Inline (Set_Is_Private_Primitive); 8101 pragma Inline (Set_Is_Processed_Transient); 8102 pragma Inline (Set_Is_Public); 8103 pragma Inline (Set_Is_Pure); 8104 pragma Inline (Set_Is_Pure_Unit_Access_Type); 8105 pragma Inline (Set_Is_RACW_Stub_Type); 8106 pragma Inline (Set_Is_Raised); 8107 pragma Inline (Set_Is_Remote_Call_Interface); 8108 pragma Inline (Set_Is_Remote_Types); 8109 pragma Inline (Set_Is_Renaming_Of_Object); 8110 pragma Inline (Set_Is_Return_Object); 8111 pragma Inline (Set_Is_Safe_To_Reevaluate); 8112 pragma Inline (Set_Is_Shared_Passive); 8113 pragma Inline (Set_Is_Statically_Allocated); 8114 pragma Inline (Set_Is_Tag); 8115 pragma Inline (Set_Is_Tagged_Type); 8116 pragma Inline (Set_Is_Thunk); 8117 pragma Inline (Set_Is_Trivial_Subprogram); 8118 pragma Inline (Set_Is_True_Constant); 8119 pragma Inline (Set_Is_Unchecked_Union); 8120 pragma Inline (Set_Is_Underlying_Record_View); 8121 pragma Inline (Set_Is_Unsigned_Type); 8122 pragma Inline (Set_Is_VMS_Exception); 8123 pragma Inline (Set_Is_Valued_Procedure); 8124 pragma Inline (Set_Is_Visible_Formal); 8125 pragma Inline (Set_Is_Visible_Lib_Unit); 8126 pragma Inline (Set_Is_Volatile); 8127 pragma Inline (Set_Itype_Printed); 8128 pragma Inline (Set_Kill_Elaboration_Checks); 8129 pragma Inline (Set_Kill_Range_Checks); 8130 pragma Inline (Set_Known_To_Have_Preelab_Init); 8131 pragma Inline (Set_Last_Assignment); 8132 pragma Inline (Set_Last_Entity); 8133 pragma Inline (Set_Limited_View); 8134 pragma Inline (Set_Lit_Indexes); 8135 pragma Inline (Set_Lit_Strings); 8136 pragma Inline (Set_Loop_Entry_Attributes); 8137 pragma Inline (Set_Low_Bound_Tested); 8138 pragma Inline (Set_Machine_Radix_10); 8139 pragma Inline (Set_Master_Id); 8140 pragma Inline (Set_Materialize_Entity); 8141 pragma Inline (Set_Mechanism); 8142 pragma Inline (Set_Modulus); 8143 pragma Inline (Set_Must_Be_On_Byte_Boundary); 8144 pragma Inline (Set_Must_Have_Preelab_Init); 8145 pragma Inline (Set_Needs_Debug_Info); 8146 pragma Inline (Set_Needs_No_Actuals); 8147 pragma Inline (Set_Never_Set_In_Source); 8148 pragma Inline (Set_Next_Inlined_Subprogram); 8149 pragma Inline (Set_No_Pool_Assigned); 8150 pragma Inline (Set_No_Return); 8151 pragma Inline (Set_No_Strict_Aliasing); 8152 pragma Inline (Set_Non_Binary_Modulus); 8153 pragma Inline (Set_Non_Limited_View); 8154 pragma Inline (Set_Nonzero_Is_True); 8155 pragma Inline (Set_Normalized_First_Bit); 8156 pragma Inline (Set_Normalized_Position); 8157 pragma Inline (Set_Normalized_Position_Max); 8158 pragma Inline (Set_OK_To_Rename); 8159 pragma Inline (Set_OK_To_Reorder_Components); 8160 pragma Inline (Set_Optimize_Alignment_Space); 8161 pragma Inline (Set_Optimize_Alignment_Time); 8162 pragma Inline (Set_Original_Access_Type); 8163 pragma Inline (Set_Original_Array_Type); 8164 pragma Inline (Set_Original_Record_Component); 8165 pragma Inline (Set_Overlays_Constant); 8166 pragma Inline (Set_Overridden_Operation); 8167 pragma Inline (Set_PPC_Wrapper); 8168 pragma Inline (Set_Package_Instantiation); 8169 pragma Inline (Set_Packed_Array_Type); 8170 pragma Inline (Set_Parent_Subtype); 8171 pragma Inline (Set_Postcondition_Proc); 8172 pragma Inline (Set_Prival); 8173 pragma Inline (Set_Prival_Link); 8174 pragma Inline (Set_Private_Dependents); 8175 pragma Inline (Set_Private_View); 8176 pragma Inline (Set_Protected_Body_Subprogram); 8177 pragma Inline (Set_Protected_Formal); 8178 pragma Inline (Set_Protection_Object); 8179 pragma Inline (Set_RM_Size); 8180 pragma Inline (Set_Reachable); 8181 pragma Inline (Set_Referenced); 8182 pragma Inline (Set_Referenced_As_LHS); 8183 pragma Inline (Set_Referenced_As_Out_Parameter); 8184 pragma Inline (Set_Refined_State); 8185 pragma Inline (Set_Register_Exception_Call); 8186 pragma Inline (Set_Related_Array_Object); 8187 pragma Inline (Set_Related_Expression); 8188 pragma Inline (Set_Related_Instance); 8189 pragma Inline (Set_Related_Type); 8190 pragma Inline (Set_Relative_Deadline_Variable); 8191 pragma Inline (Set_Renamed_Entity); 8192 pragma Inline (Set_Renamed_In_Spec); 8193 pragma Inline (Set_Renamed_Object); 8194 pragma Inline (Set_Renaming_Map); 8195 pragma Inline (Set_Requires_Overriding); 8196 pragma Inline (Set_Return_Applies_To); 8197 pragma Inline (Set_Return_Present); 8198 pragma Inline (Set_Returns_By_Ref); 8199 pragma Inline (Set_Reverse_Bit_Order); 8200 pragma Inline (Set_Reverse_Storage_Order); 8201 pragma Inline (Set_Scalar_Range); 8202 pragma Inline (Set_Scale_Value); 8203 pragma Inline (Set_Scope_Depth_Value); 8204 pragma Inline (Set_Sec_Stack_Needed_For_Return); 8205 pragma Inline (Set_Shadow_Entities); 8206 pragma Inline (Set_Shared_Var_Procs_Instance); 8207 pragma Inline (Set_Size_Check_Code); 8208 pragma Inline (Set_Size_Depends_On_Discriminant); 8209 pragma Inline (Set_Size_Known_At_Compile_Time); 8210 pragma Inline (Set_Small_Value); 8211 pragma Inline (Set_Spec_Entity); 8212 pragma Inline (Set_Static_Elaboration_Desired); 8213 pragma Inline (Set_Static_Initialization); 8214 pragma Inline (Set_Static_Predicate); 8215 pragma Inline (Set_Status_Flag_Or_Transient_Decl); 8216 pragma Inline (Set_Storage_Size_Variable); 8217 pragma Inline (Set_Stored_Constraint); 8218 pragma Inline (Set_Strict_Alignment); 8219 pragma Inline (Set_String_Literal_Length); 8220 pragma Inline (Set_String_Literal_Low_Bound); 8221 pragma Inline (Set_Subprograms_For_Type); 8222 pragma Inline (Set_Suppress_Elaboration_Warnings); 8223 pragma Inline (Set_Suppress_Initialization); 8224 pragma Inline (Set_Suppress_Style_Checks); 8225 pragma Inline (Set_Suppress_Value_Tracking_On_Call); 8226 pragma Inline (Set_Task_Body_Procedure); 8227 pragma Inline (Set_Treat_As_Volatile); 8228 pragma Inline (Set_Underlying_Full_View); 8229 pragma Inline (Set_Underlying_Record_View); 8230 pragma Inline (Set_Universal_Aliasing); 8231 pragma Inline (Set_Unset_Reference); 8232 pragma Inline (Set_Used_As_Generic_Actual); 8233 pragma Inline (Set_Uses_Lock_Free); 8234 pragma Inline (Set_Uses_Sec_Stack); 8235 pragma Inline (Set_Warnings_Off); 8236 pragma Inline (Set_Warnings_Off_Used); 8237 pragma Inline (Set_Warnings_Off_Used_Unmodified); 8238 pragma Inline (Set_Warnings_Off_Used_Unreferenced); 8239 pragma Inline (Set_Was_Hidden); 8240 pragma Inline (Set_Wrapped_Entity); 8241 8242 -- END XEINFO INLINES 8243 8244 -- The following Inline pragmas are *not* read by xeinfo when building 8245 -- the C version of this interface automatically (so the C version will 8246 -- end up making out of line calls). The pragma scan in xeinfo will be 8247 -- terminated on encountering the END XEINFO INLINES line. We inline 8248 -- things here which are small, but not of the canonical attribute 8249 -- access/set format that can be handled by xeinfo. 8250 8251 pragma Inline (Base_Type); 8252 pragma Inline (Is_Base_Type); 8253 pragma Inline (Is_Package_Or_Generic_Package); 8254 pragma Inline (Is_Volatile); 8255 pragma Inline (Is_Wrapper_Package); 8256 pragma Inline (Known_RM_Size); 8257 pragma Inline (Known_Static_Component_Bit_Offset); 8258 pragma Inline (Known_Static_RM_Size); 8259 pragma Inline (Scope_Depth); 8260 pragma Inline (Scope_Depth_Set); 8261 pragma Inline (Unknown_RM_Size); 8262 8263end Einfo; 8264