1------------------------------------------------------------------------------ 2-- -- 3-- GNAT COMPILER COMPONENTS -- 4-- -- 5-- E I N F O -- 6-- -- 7-- S p e c -- 8-- -- 9-- Copyright (C) 1992-2003 Free Software Foundation, Inc. -- 10-- -- 11-- GNAT is free software; you can redistribute it and/or modify it under -- 12-- terms of the GNU General Public License as published by the Free Soft- -- 13-- ware Foundation; either version 2, or (at your option) any later ver- -- 14-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- 15-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- 16-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -- 17-- for more details. You should have received a copy of the GNU General -- 18-- Public License distributed with GNAT; see file COPYING. If not, write -- 19-- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, -- 20-- MA 02111-1307, USA. -- 21-- -- 22-- As a special exception, if other files instantiate generics from this -- 23-- unit, or you link this unit with other files to produce an executable, -- 24-- this unit does not by itself cause the resulting executable to be -- 25-- covered by the GNU General Public License. This exception does not -- 26-- however invalidate any other reasons why the executable file might be -- 27-- covered by the GNU Public License. -- 28-- -- 29-- GNAT was originally developed by the GNAT team at New York University. -- 30-- Extensive contributions were provided by Ada Core Technologies Inc. -- 31-- -- 32------------------------------------------------------------------------------ 33 34with Snames; use Snames; 35with Types; use Types; 36with Uintp; use Uintp; 37with Urealp; use Urealp; 38 39package Einfo is 40 41-- This package defines the annotations to the abstract syntax tree that 42-- are needed to support semantic processing of an Ada compilation. 43 44-- These annotations are for the most part attributes of declared entities, 45-- and they correspond to conventional symbol table information. Other 46-- attributes include sets of meanings for overloaded names, possible 47-- types for overloaded expressions, flags to indicate deferred constants, 48-- incomplete types, etc. These attributes are stored in available fields 49-- in tree nodes (i.e. fields not used by the parser, as defined by the 50-- Sinfo package specification), and accessed by means of a set of 51-- subprograms which define an abstract interface. 52 53-- There are two kinds of semantic information 54 55-- First, the tree nodes with the following Nkind values: 56 57-- N_Defining_Identifier 58-- N_Defining_Character_Literal 59-- N_Defining_Operator_Symbol 60 61-- are called Entities, and constitute the information that would often 62-- be stored separately in a symbol table. These nodes are all extended 63-- to provide extra space, and contain fields which depend on the entity 64-- kind, as defined by the contents of the Ekind field. The use of the 65-- Ekind field, and the associated fields in the entity, are defined 66-- in this package, as are the access functions to these fields. 67 68-- Second, in some cases semantic information is stored directly in other 69-- kinds of nodes, e.g. the Etype field, used to indicate the type of an 70-- expression. The access functions to these fields are defined in the 71-- Sinfo package, but their full documentation is to be found in 72-- the Einfo package specification. 73 74-- Declaration processing places information in the nodes of their defining 75-- identifiers. Name resolution places in all other occurrences of an 76-- identifier a pointer to the corresponding defining occurrence. 77 78-------------------------------- 79-- The XEINFO Utility Program -- 80-------------------------------- 81 82-- XEINFO is a utility program which automatically produces a C header file, 83-- a-xeinfo.h from the spec and body of package Einfo. It reads the input 84-- files einfo.ads and einfo.adb and produces the output file a-xeinfo.h. 85 86-- In order for this utility program to operate correctly, the form of the 87-- einfo.ads and einfo.adb files must meet certain requirements and be laid 88-- out in a specific manner. 89 90-- The general form of einfo.ads is as follows: 91 92-- type declaration for type Entity_Kind 93-- subtype declarations declaring subranges of Entity_Kind 94-- subtype declarations declaring synonyms for some standard types 95-- function specs for attributes 96-- procedure specs 97-- pragma Inline declarations 98 99-- This order must be observed. There are no restrictions on the procedures, 100-- since the C header file only includes functions (Gigi is not allowed to 101-- modify the generated tree). However, functions are required to have headers 102-- that fit on a single line. 103 104-- XEINFO reads and processes the function specs and the pragma Inlines. For 105-- functions that are declared as inlined, XEINFO reads the corresponding body 106-- from xeinfo.adb, and processes it into C code. This results in some strict 107-- restrictions on which functions can be inlined: 108 109-- The function spec must be on a single line 110 111-- There can only be a single statement, contained on a single line, 112-- not counting any pragma Assert statements. 113 114-- This single statement must either by a function call with simple, 115-- single token arguments, or it must be a membership test of the form 116-- a in b, where a and b are single tokens. 117 118-- For functions that are not inlined, there is no restriction on the body, 119-- and XEINFO generates a direct reference in the C header file which allows 120-- the C code in Gigi to directly call the corresponding Ada body. 121 122---------------------------------- 123-- Handling of Type'Size Values -- 124---------------------------------- 125 126-- The Ada 95 RM contains some rather peculiar (to us!) rules on the value 127-- of type'Size (see RM 13.3(55)). We have found that attempting to use 128-- these RM Size values generally, and in particular for determining the 129-- default size of objects, creates chaos, and major incompatibilies in 130-- existing code. 131 132-- We proceed as follows, for discrete and fixed-point subtypes, we have 133-- two separate sizes for each subtype: 134 135-- The Object_Size, which is used for determining the default size of 136-- objects and components. This size value can be referred to using the 137-- Object_Size attribute. The phrase "is used" here means that it is 138-- the basis of the determination of the size. The backend is free to 139-- pad this up if necessary for efficiency, e.g. an 8-bit stand-alone 140-- character might be stored in 32 bits on a machine with no efficient 141-- byte access instructions such as the Alpha. 142 143-- The default rules for the value of Object_Size for fixed-point and 144-- discrete types are as follows: 145 146-- The Object_Size for base subtypes reflect the natural hardware 147-- size in bits (see Ttypes and Cstand for integer types). For 148-- enumeration and fixed-point base subtypes have 8. 16. 32 or 64 149-- bits for this size, depending on the range of values to be stored. 150 151-- The Object_Size of a subtype is the same as the Object_Size of 152-- the subtype from which it is obtained. 153 154-- The Object_Size of a derived base type is copied from the parent 155-- base type, and the Object_Size of a derived first subtype is copied 156-- from the parent first subtype. 157 158-- The Value_Size which is the number of bits required to store a value 159-- of the type. This size can be referred to using the Value_Size 160-- attribute. This value is used to determine how tightly to pack 161-- records or arrays with components of this type, and also affects 162-- the semantics of unchecked conversion (unchecked conversions where 163-- the Value_Size values differ generate a warning, and are potentially 164-- target dependent). 165 166-- The default rule for the value of Value_Size are as follows: 167 168-- The Value_Size for a base subtype is the minimum number of bits 169-- required to store all values of the type (including the sign bit 170-- only if negative values are possible). 171 172-- If a subtype statically matches the first subtype, then it has 173-- by default the same Value_Size as the first subtype. This is a 174-- consequence of RM 13.1(14) ("if two subtypes statically match, 175-- then their subtype-specific aspects are the same".) 176 177-- All other subtypes have a Value_Size corresponding to the minimum 178-- number of bits required to store all values of the subtype. For 179-- dynamic bounds, it is assumed that the value can range down or up 180-- to the corresponding bound of the ancestor 181 182-- The RM defined attribute Size corresponds to the Value_Size attribute. 183 184-- The Size attribute may be defined for a first-named subtype. This sets 185-- the Value_Size of the first-named subtype to the given value, and the 186-- Object_Size of this first-named subtype to the given value padded up 187-- to an appropriate boundary. It is a consequence of the default rules 188-- above that this Object_Size will apply to all further subtypes. On the 189-- otyher hand, Value_Size is affected only for the first subtype, any 190-- dynamic subtypes obtained from it directly, and any statically matching 191-- subtypes. The Value_Size of any other static subtypes is not affected. 192 193-- Value_Size and Object_Size may be explicitly set for any subtype using 194-- an attribute definition clause. Note that the use of these attributes 195-- can cause the RM 13.1(14) rule to be violated. If two access types 196-- reference aliased objects whose subtypes have differing Object_Size 197-- values as a result of explicit attribute definition clauses, then it 198-- is erroneous to convert from one access subtype to the other. 199 200-- At the implementation level, Esize stores the Object_Size and the 201-- RM_Size field stores the Value_Size (and hence the value of the 202-- Size attribute, which, as noted above, is equivalent to Value_Size). 203 204-- To get a feel for the difference, consider the following examples (note 205-- that in each case the base is short_short_integer with a size of 8): 206 207-- Object_Size Value_Size 208 209-- type x1 is range 0..5; 8 3 210 211-- type x2 is range 0..5; 212-- for x2'size use 12; 12 12 213 214-- subtype x3 is x2 range 0 .. 3; 12 2 215 216-- subtype x4 is x2'base range 0 .. 10; 8 4 217 218-- subtype x5 is x2 range 0 .. dynamic; 12 (7) 219 220-- subtype x6 is x2'base range 0 .. dynamic; 8 (7) 221 222-- Note: the entries marked (7) are not actually specified by the Ada 95 RM, 223-- but it seems in the spirit of the RM rules to allocate the minimum number 224-- of bits known to be large enough to hold the given range of values. 225 226-- So far, so good, but GNAT has to obey the RM rules, so the question is 227-- under what conditions must the RM Size be used. The following is a list 228-- of the occasions on which the RM Size must be used: 229 230-- Component size for packed arrays or records 231-- Value of the attribute Size for a type 232-- Warning about sizes not matching for unchecked conversion 233 234-- The RM_Size field keeps track of the RM Size as needed in these 235-- three situations. 236 237-- For types other than discrete and fixed-point types, the Object_Size 238-- and Value_Size are the same (and equivalent to the RM attribute Size). 239-- Only Size may be specified for such types. 240 241----------------------- 242-- Entity Attributes -- 243----------------------- 244 245-- This section contains a complete list of the attributes that are defined 246-- on entities. Some attributes apply to all entities, others only to certain 247-- kinds of entities. In the latter case the attribute should only be set or 248-- accessed if the Ekind field indicates an appropriate entity. 249 250-- There are two kinds of attributes that apply to entities, stored and 251-- synthesized. Stored attributes correspond to a field or flag in the entity 252-- itself. Such attributes are identified in the table below by giving the 253-- field or flag in the attribute that is used to hold the attribute value. 254-- Synthesized attributes are not stored directly, but are rather computed as 255-- needed from other attributes, or from information in the tree. These are 256-- marked "synthesized" in the table below. The stored attributes have both 257-- access functions and set procedures to set the corresponding values, while 258-- synthesized attributes have only access functions. 259 260-- Note: in the case of Node, Uint, or Elist fields, there are cases where 261-- the same physical field is used for different purposes in different 262-- entities, so these access functions should only be referenced for the 263-- class of entities in which they are defined as being present. Flags are 264-- not overlapped in this way, but nevertheless as a matter of style and 265-- abstraction (which may or may not be checked by assertions in the body), 266-- this restriction should be observed for flag fields as well. 267 268-- Note: certain of the attributes on types apply only to base types, and 269-- are so noted by the notation [base type only]. These are cases where the 270-- attribute of any subtype is the same as the attribute of the base type. 271-- The attribute can be referenced on a subtype (and automatically retrieves 272-- the value from the base type). However, it is an error to try to set the 273-- attribute on other than the base type, and if assertions are enabled, 274-- an attempt to set the attribute on a subtype will raise an assert error. 275 276-- Other attributes are noted as applying the implementation base type only. 277-- These are representation attributes which must always apply to a full 278-- non-private type, and where the attributes are always on the full type. 279-- The attribute can be referenced on a subtype (and automatically retries 280-- the value from the implementation base type). However, it is an error 281-- to try to set the attribute on other than the implementation base type, 282-- and if assertions are enabled, an attempt to set the attribute on a 283-- subtype will raise an assert error. 284 285-- Accept_Address (Elist21) 286-- Present in entries. If an accept has a statement sequence, then an 287-- address variable is created, which is used to hold the address of the 288-- parameters, as passed by the runtime. Accept_Address holds an element 289-- list which represents a stack of entities for these address variables. 290-- The current entry is the top of the stack, which is the last element 291-- on the list. A stack is required to handle the case of nested select 292-- statements referencing the same entry. 293 294-- Actual_Subtype (Node17) 295-- Present in variables, constants, and formal parameters. This is the 296-- subtype imposed by the value of the object, as opposed to its nominal 297-- subtype, which is imposed by the declaration. The actual subtype 298-- differs from the nominal one when the latter is indefinite (as in the 299-- case of an unconstrained formal parameter, or a variable declared 300-- with an unconstrained type and an initial value). The nominal subtype 301-- is the Etype entry for the entity. The Actual_Subtype field is set 302-- only if the actual subtype differs from the nominal subtype. If the 303-- actual and nominal subtypes are the same, then the Actual_Subtype 304-- field is Empty, and Etype indicates both types. 305-- 306-- For objects, the Actual_Subtype is set only if this is a discriminated 307-- type. For arrays, the bounds of the expression are obtained and the 308-- Etype of the object is directly the constrained subtype. This is 309-- rather irregular, and the semantic checks that depend on the nominal 310-- subtype being unconstrained use flag Is_Constr_Subt_For_U_Nominal(qv). 311 312-- Access_Disp_Table (Node16) [implementation base type only] 313-- Present in record type entities. For a tagged type, points to the 314-- dispatch table associated with the tagged type. For a non-tagged 315-- record, contains Empty. 316 317-- Address_Clause (synthesized) 318-- Applies to entries, objects and subprograms. Set if an address clause 319-- is present which references the object or subprogram and points to 320-- the N_Attribute_Definition_Clause node. Empty if no Address clause. 321-- The expression in the address clause is always a constant that is 322-- defined before the entity to which the address clause applies. 323-- Note: Gigi references this field in E_Task_Type entities??? 324 325-- Address_Taken (Flag104) 326-- Present in all entities. Set if the Address or Unrestricted_Access 327-- attribute is applied directly to the entity, i.e. the entity is the 328-- entity of the prefix of the attribute reference. Used by Gigi to 329-- make sure that the address can be meaningfully taken. 330 331-- Alias (Node18) 332-- Present in overloaded entities (literals, subprograms, entries). 333-- Points to parent subprogram of a derived subprogram. Also used for 334-- a subprogram renaming, where it points to the renamed subprogram. 335-- Always empty for entries. 336 337-- Alignment (Uint14) 338-- Present in entities for types and also in constants, variables, 339-- loop parameters, and formal parameters. This indicates the desired 340-- alignment for a type, or the actual alignment for an object. A value 341-- of zero (Uint_0) indicates that the alignment has not been set yet. 342-- The alignment can be set by an explicit alignment clause, or set by 343-- the front-end in package Layout, or set by the back-end as part of 344-- the back end back-annotation process. The alignment field is also 345-- present in E_Exception entities, but there it is used only by the 346-- back-end for back annotation. 347 348-- Alignment_Clause (synthesized) 349-- Appllies to all entities for types and objects. If an alignment 350-- attribute definition clause is present for the entity, then this 351-- function returns the N_Attribute_Definition clause that specifies the 352-- alignment. If no alignment clause applies to the type, then the call 353-- to this function returns Empty. Note that the call can return a 354-- non-Empty value even if Has_Alignment_Clause is not set (happens with 355-- subtype and derived type declarations). Note also that a record 356-- definition clause with an (obsolescent) mod clause is converted 357-- into an attribute definition clause for this purpose. 358 359-- Ancestor_Subtype (synthesized) 360-- Applies to all type and subtype entities. If the argument is a 361-- subtype then it returns the subtype or type from which the subtype 362-- was obtained, otherwise it returns Empty. 363 364-- Associated_Formal_Package (Node12) 365-- Present in packages that are the actuals of formal_packages. Points 366-- to the entity in the declaration for the formal package. 367 368-- Associated_Node_For_Itype (Node8) 369-- Present in all type and subtype entities. Set non-Empty only for 370-- Itypes. Set to point to the associated node for the Itype, i.e. 371-- the node whose elaboration generated the Itype. This is used for 372-- copying trees, to determine whether or not to copy an Itype. 373 374-- Associated_Storage_Pool (Node22) [root type only] 375-- Present in simple and general access type entities. References the 376-- storage pool to be used for the corresponding collection. A value of 377-- Empty means that the default pool is to be used. This is present 378-- only in the root type, since derived types must have the same pool 379-- as the parent type. 380 381-- Associated_Final_Chain (Node23) 382-- Present in simple and general access type entities. References the 383-- List_Controller object that holds the finalization chain on which 384-- are attached dynamically allocated objects referenced by the access 385-- type. Empty when the access type cannot reference a controlled object. 386 387-- Barrier_Function (Node12) 388-- Present in protected entries and entry families. This is the 389-- subprogram declaration for the body of the function that returns 390-- the value of the entry barrier. 391 392-- Base_Type (synthesized) 393-- Applies to all type entities. Returns the base type of a type or 394-- subtype. The base type of a type is the type itself. The base type 395-- of a subtype is the type that it constrains (which is always a type 396-- entity, not some other subtype). Note that in the case of a subtype 397-- of a private type, it is possible for the base type attribute to 398-- return a private type, even if the subtype to which it applies is 399-- non-private. See also Implementation_Base_Type. Note: it is allowed 400-- to apply Base_Type to other than a type, in which case it simply 401-- returns the entity unchanged. 402 403-- Block_Node (Node11) 404-- Present in block entities. Points to the identifier in the 405-- Block_Statement itself. Used when retrieving the block construct 406-- for finalization purposes, The block entity has an implicit label 407-- declaration in the enclosing declarative part, and has otherwise 408-- no direct connection in the tree with the block statement. The 409-- link is to the identifier (which is an occurence of the entity) 410-- and not to the block_statement itself, because the statement may 411-- be rewritten, e.g. in the process of removing dead code. 412 413-- Body_Entity (Node19) 414-- Present in package and generic package entities, points to the 415-- corresponding package body entity if one is present. 416 417-- Body_Needed_For_SAL (Flag40) 418-- Present in package and subprogram entities that are compilation 419-- units. Indicates that the source for the body must be included 420-- when the unit is part of a standalone library. 421 422-- C_Pass_By_Copy (Flag125) [implementation base type only] 423-- Present in record types. Set if a pragma Convention for the record 424-- type specifies convention C_Pass_By_Copy. This convention name is 425-- treated as identical in all respects to convention C, except that 426-- if it is specified for a record type, then the C_Pass_By_Copy flag 427-- is set, and if a foreign convention subprogram has a formal of the 428-- corresponding type, then the parameter passing mechanism will be 429-- set to By_Copy (unless specifically overridden by an Import or 430-- Export pragma). 431 432-- Can_Never_Be_Null (Flag38) 433-- This flag is present in all entities, but can only be set in an 434-- object which can never have a null value. This is used to avoid 435-- unncessary resetting of the Is_Known_Non_Null flag for such 436-- entities. The cases where this is set True are constant access 437-- values initialized to a non-null value, and access parameters. 438 439-- Chars (Name1) 440-- Present in all entities. This field contains an entry into the names 441-- table that has the character string of the identifier, character 442-- literal or operator symbol. See Namet for further details. Note that 443-- throughout the processing of the front end, this name is the simple 444-- unqualified name. However, just before gigi is called, a call is made 445-- to Qualify_All_Entity_Names. This causes entity names to be qualified 446-- using the encoding described in exp_dbug.ads, and from that point on 447-- (including post gigi steps such as cross-reference generation), the 448-- entities will contain the encoded qualified names. 449 450-- Checks_May_Be_Suppressed (Flag31) 451-- Present in all entities. Set if a pragma Suppress or Unsuppress 452-- mentions the entity specifically in the second argument. If this 453-- flag is set the the Global_Entity_Suppress and Local_Entity_Suppress 454-- tables must be consulted to determine if the is actually an active 455-- Suppress or Unsuppress pragma that applies to the entity. 456 457-- Class_Wide_Type (Node9) 458-- Present in all type entities. For a tagged type or subtype, returns 459-- the corresponding implicitly declared class-wide type. Set to Empty 460-- for non-tagged types. 461 462-- Cloned_Subtype (Node16) 463-- Present in E_Record_Subtype and E_Class_Wide_Subtype entities. 464-- Each such entity can either have a Discriminant_Constraint, in 465-- which case it represents a distinct type from the base type (and 466-- will have a list of components and discrimants in the list headed by 467-- First_Entity) or else no such constraint, in which case it will be a 468-- copy of the base type. 469-- 470-- o Each element of the list in First_Entity is copied from the base 471-- type; in that case, this field is Empty. 472-- 473-- o The list in First_Entity is shared with the base type; in that 474-- case, this field points to that entity. 475-- 476-- A record or classwide subtype may also be a copy of some other 477-- subtype and share the entities in the First_Entity with that subtype. 478-- In that case, this field points to that subtype. 479-- 480-- For E_Class_Wide_Subtype, the presence of Equivalent_Type overrides 481-- this field. Note that this field ONLY appears in subtype entries, not 482-- in type entries, it is not present, and it is an error to reference 483-- Cloned_Subtype in an E_Record_Type or E_Class_Wide_Type entity. 484 485-- Comes_From_Source 486-- This flag appears on all nodes, including entities, and indicates 487-- that the node was created by the scanner or parser from the original 488-- source. Thus for entities, it indicates that the entity is defined 489-- in the original source program. 490 491-- Component_Alignment (special field) [base type only] 492-- Present in array and record entities. Contains a value of type 493-- Component_Alignment_Kind indicating the alignment of components. 494-- Set to Calign_Default normally, but can be overridden by use of 495-- the Component_Alignment pragma. Note: this field is currently 496-- stored in a non-standard way, see body for details. 497 498-- Component_Bit_Offset (Uint11) 499-- Present in record components (E_Component, E_Discriminant) if a 500-- component clause applies to the component. First bit position of 501-- given component, computed from the first bit and position values 502-- given in the component clause. A value of No_Uint means that the 503-- value is not yet known. The value can be set by the appearence of 504-- an explicit component clause in a record representation clause, 505-- or it can be set by the front-end in package Layout, or it can be 506-- set by the backend. By the time backend processing is completed, 507-- this field is always set. A negative value is used to represent 508-- a value which is not known at compile time, and must be computed 509-- at run-time (this happens if fields of a record have variable 510-- lengths). See package Layout for details of these values. 511-- 512-- Note: this field is obsolescent, to be eventually replaced entirely 513-- by Normalized_First_Bit and Normalized_Position, but for the moment, 514-- gigi is still using (and back annotating) this field, and gigi does 515-- not know about the new fields. For the front end layout case, the 516-- Component_Bit_Offset field is only set if it is static, and otherwise 517-- the new Normalized_First_Bit and Normalized_Position fields are used. 518 519-- Component_Clause (Node13) 520-- Present in record components and discriminants. If a record 521-- representation clause is present for the corresponding record 522-- type a that specifies a position for the component, then the 523-- Component_Clause field of the E_Component entity points to the 524-- N_Component_Clause node. Set to Empty if no record representation 525-- clause was present, or if there was no specification for this 526-- component. 527 528-- Component_Size (Uint22) [implementation base type only] 529-- Present in array types. It contains the component size value for 530-- the array. A value of zero means that the value is not yet set. 531-- The value can be set by the use of a component size clause, or 532-- by the front end in package Layout, or by the backend. A negative 533-- value is used to represent a value which is not known at compile 534-- time, and must be computed at run-time (this happens if the type 535-- of the component has a variable length size). See package Layout 536-- for details of these values. 537 538-- Component_Type (Node20) [implementation base type only] 539-- Present in array types and string types. References component type. 540 541-- Constant_Value (synthesized) 542-- Applies to variables, constants, named integers, and named reals. 543-- Obtains the initialization expression for the entity. Will return 544-- Empty for for a deferred constant whose full view is not available 545-- or in some other cases of internal entities, which cannot be treated 546-- as constants from the point of view of constant folding. Empty is 547-- also returned for variables with no initialization expression. 548 549-- Corresponding_Concurrent_Type (Node18) 550-- Present in record types that are constructed by the expander to 551-- represent task and protected types (Is_Concurrent_Record_Type flag 552-- set True). Points to the entity for the corresponding task type or 553-- protected type. 554 555-- Corresponding_Discriminant (Node19) 556-- Present in discriminants of a derived type, when the discriminant is 557-- used to constrain a discriminant of the parent type. Points to the 558-- corresponding discriminant in the parent type. Otherwise it is Empty. 559 560-- Corresponding_Equality (Node13) 561-- Present in function entities for implicit inequality operators. 562-- Denotes the explicit or derived equality operation that creates 563-- the implicit inequality. Note that this field is not present in 564-- other function entities, only in implicit inequality routines, 565-- where Comes_From_Source is always False. 566 567-- Corresponding_Record_Type (Node18) 568-- Present in protected and task types and subtypes. References the 569-- entity for the corresponding record type constructed by the expander 570-- (see Exp_Ch9). This type is used to represent values of the task type. 571 572-- Corresponding_Remote_Type (Node22) 573-- Present in record types that describe the fat pointer structure for 574-- Remote_Access_To_Subrogram types. References the original access type. 575 576-- CR_Discriminant (Node23) 577-- Present in discriminants of concurrent types. Denotes the homologous 578-- discriminant of the corresponding record type. The CR_Discriminant is 579-- created at the same time as the discriminal, and used to replace 580-- occurrences of the discriminant within the type declaration. 581 582-- Current_Value (Node9) 583-- Present in E_Variable, E_Out_Parameter and E_In_Out_Parameter 584-- entities. Set non-Empty if the (constant) current value of the 585-- variable is known. This value is valid only for references from 586-- the same sequential scope as the entity. The sequential scope 587-- of an entity includes the immediate scope and any contained 588-- scopes that are package specs, package bodies, or blocks (at 589-- any nesting level). For convenience in coding, this field is 590-- also present in other object entities (E_Loop_Parameter and 591-- E_In_Parameter and E_Constant), but is not used to hold a 592-- constant value, since value tracking is not needed in this case. 593-- 594-- Another related use of this field is to record information 595-- about the value obtained from an IF statement condition. 596-- If the IF/ELSIF condition has the form "[NOT] OBJ RELOP VAL", 597-- where OBJ is a reference to an entity with a Current_Value field, 598-- RELOP is one of the six relational operators, and VAL is a compile- 599-- time known valoue, then the Current_Value field if OBJ is set to 600-- point to the N_If_Statement or N_Elsif_Part node of the relevant 601-- construct. For more details on this usage, see the procedure 602-- Exp_Util.Get_Current_Value_Condition. 603 604-- Debug_Info_Off (Flag166) 605-- Present in all entities. Set if a pragma Suppress_Debug_Info applies 606-- to the entity, or if internal processing in the compiler determines 607-- that suppression of debug information is desirable. Note that this 608-- flag is only for use by the front end as part of the processing for 609-- determining if Needs_Debug_Info should be set. The back end should 610-- always test Needs_Debug_Info, it should never test Debug_Info_Off. 611 612-- Debug_Renaming_Link (Node13) 613-- Used to link the enumeration literal of a debug renaming declaration 614-- to the renamed entity. See Exp_Dbug.Debug_Renaming_Declaration for 615-- details of the use of this field. 616 617-- Declaration_Node (synthesized) 618-- Applies to all entities. Returns the tree node for the declaration 619-- that declared the entity. Normally this is just the Parent of the 620-- entity. One exception arises with child units, where the parent of 621-- the entity is a selected component or a defining program unit name. 622-- Another exception is that if the entity is an incomplete type that 623-- has been completed, then we obtain the declaration node denoted by 624-- the full type, i.e. the full type declaration node. 625 626-- Default_Expr_Function (Node21) 627-- Present in parameters. It holds the entity of the parameterless 628-- function that is built to evaluate the default expression if it is 629-- more complex than a simple identifier or literal. For the latter 630-- simple cases or if there is no default value, this field is Empty. 631 632-- Default_Expressions_Processed (Flag108) 633-- A flag in subprograms (functions, operators, procedures) and in 634-- entries and entry families used to indicate that default expressions 635-- have been processed and to avoid multiple calls to process the 636-- default expressions (see Freeze.Process_Default_Expressions), which 637-- would not only waste time, but also generate false error messages. 638 639-- Default_Value (Node20) 640-- Present in formal parameters. Points to the node representing the 641-- expression for the default value for the parameter. Empty if the 642-- parameter has no default value (which is always the case for OUT 643-- and IN OUT parameters in the absence of errors). 644 645-- Delay_Cleanups (Flag114) 646-- Present in entities that have finalization lists (subprograms 647-- blocks, and tasks). Set if there are pending generic body 648-- instantiations for the corresponding entity. If this flag is 649-- set, then generation of cleanup actions for the corresponding 650-- entity must be delayed, since the insertion of the generic body 651-- may affect cleanup generation (see Inline for further details). 652 653-- Delay_Subprogram_Descriptors (Flag50) 654-- Present in entities for which exception subprogram descriptors 655-- are generated (subprograms, package declarations and package 656-- bodies). Present if there are pending generic body instantiations 657-- for the corresponding entity. If this flag is set, then generation 658-- of the subprogram descriptor for the corresponding enities must 659-- be delayed, since the insertion of the generic body may add entries 660-- to the list of handlers. 661-- 662-- Note: for subprograms, Delay_Subprogram_Descriptors is set if and 663-- only if Delay_Cleanups is set. But Delay_Cleanups can be set for a 664-- a block (in which case Delay_Subprogram_Descriptors is set for the 665-- containing subprogram). In addition Delay_Subprogram_Descriptors is 666-- set for a library level package declaration or body which contains 667-- delayed instantiations (in this case the descriptor refers to the 668-- enclosing elaboration procedure). 669 670-- Delta_Value (Ureal18) 671-- Present in fixed and decimal types. Points to a universal real 672-- that holds value of delta for the type, as given in the declaration 673-- or as inherited by a subtype or derived type. 674 675-- Dependent_Instances (Elist8) 676-- Present in packages that are instances. Holds list of instances 677-- of inner generics. Used to place freeze nodes for those instances 678-- after that of the current one, i.e. after the corresponding generic 679-- bodies. 680 681-- Depends_On_Private (Flag14) 682-- Present in all type entities. Set if the type is private or if it 683-- depends on a private type. 684 685-- Designated_Type (synthesized) 686-- Applies to access types. Returns the designated type. Differs 687-- from Directly_Designated_Type in that if the access type refers 688-- to an incomplete type, and the full type is available, then this 689-- full type is returned instead of the incomplete type. 690 691-- Digits_Value (Uint17) 692-- Present in floating point types and subtypes and decimal types and 693-- subtypes. Contains the Digits value specified in the declaration. 694 695-- Directly_Designated_Type (Node20) 696-- Present in access types. This field points to the type that is 697-- directly designated by the access type. In the case of an access 698-- type to an incomplete type, this field references the incomplete 699-- type. Note that in the semantic processing, what is useful in 700-- nearly all cases is the full type designated by the access type. 701-- The function Designated_Type obtains this full type in the case of 702-- access to an incomplete type. 703 704-- Discard_Names (Flag88) 705-- Present in types and exception entities. Set if pragma Discard_Names 706-- applies to the entity. It is also set for declarative regions and 707-- package specs for which a Discard_Names pragma with zero arguments 708-- has been encountered. The purpose of setting this flag is to be able 709-- to set the Discard_Names attribute on enumeration types declared 710-- after the pragma within the same declarative region. This flag is 711-- set to False if a Keep_Names pragma appears for an enumeration type. 712 713-- Discriminal (Node17) 714-- Present in discriminants (Discriminant formal: GNAT's first 715-- coinage). The entity used as a formal parameter that corresponds 716-- to a discriminant. See section "Handling of Discriminants" for 717-- full details of the use of discriminals. 718 719-- Discriminal_Link (Node10) 720-- Present in discriminals (which have an Ekind of E_In_Parameter, 721-- or E_Constant), points back to corresponding discriminant. 722 723-- Discriminant_Checking_Func (Node20) 724-- Present in components. Points to the defining identifier of the 725-- function built by the expander returns a Boolean indicating whether 726-- the given record component exists for the current discriminant 727-- values. 728 729-- Discriminant_Constraint (Elist21) 730-- Present in entities whose Has_Discriminants flag is set (concurrent 731-- types, subtypes, record types and subtypes, private types and 732-- subtypes, limited private types and subtypes and incomplete types). 733-- It is an error to reference the Discriminant_Constraint field if 734-- Has_Discriminants is False. 735-- 736-- If the Is_Constrained flag is set, Discriminant_Constraint points 737-- to an element list containing the discriminant constraints in the 738-- same order in which the discriminants are declared. 739-- 740-- If the Is_Constrained flag is not set but the discriminants of the 741-- unconstrained type have default initial values then this field 742-- points to an element list giving these default initial values in 743-- the same order in which the discriminants are declared. Note that 744-- in this case the entity cannot be a tagged record type, because 745-- discriminants in this case cannot have defaults. 746-- 747-- If the entity is a tagged record implicit type, then this field is 748-- inherited from the first subtype (so that the itype is subtype 749-- conformant with its first subtype, which is needed when the first 750-- subtype overrides primitive operations inherited by the implicit 751-- base type). 752-- 753-- In all other cases Discriminant_Constraint contains the empty 754-- Elist (ie it is initialized with a call to New_Elmt_List). 755 756-- Discriminant_Default_Value (Node20) 757-- Present in discriminants. Points to the node representing the 758-- expression for the default value of the discriminant. Set to 759-- Empty if the discriminant has no default value. 760 761-- Discriminant_Number (Uint15) 762-- Present in discriminants. Gives the ranking of a discriminant in 763-- the list of discriminants of the type, i.e. a sequential integer 764-- index starting at 1 and ranging up to Number_Discriminants. 765 766-- DTC_Entity (Node16) 767-- Present in function and procedure entities. Set to Empty unless 768-- the subprogram is dispatching in which case it references the 769-- Dispatch Table pointer Component. That is to say the component _tag 770-- for regular Ada tagged types, for CPP_Class types and their 771-- descendants this field points to the component entity in the record 772-- that is the Vtable pointer for the Vtable containing the entry that 773-- references the subprogram. 774 775-- DT_Entry_Count (Uint15) 776-- Present in E_Component entities. Only used for component marked 777-- Is_Tag. Store the number of entries in the Vtable (or Dispatch Table) 778 779-- DT_Position (Uint15) 780-- Present in function and procedure entities which are dispatching 781-- (should not be referenced without first checking that flag 782-- Is_Dispatching_Operation is True). Contains the offset into 783-- the Vtable for the entry that references the subprogram. 784 785-- Ekind (Ekind) 786-- Present in all entities. Contains a value of the enumeration type 787-- Entity_Kind declared in a subsequent section in this spec. 788 789-- Elaborate_All_Desirable (Flag146) 790-- Present in package and subprogram entities, and in generic package 791-- and subprogram entities. Set if internal analysis of a client that 792-- with's this unit determines that Elaborate_All is desirable, i.e. 793-- that there is a possibility that Program_Error may be raised if 794-- Elaborate_All conditions cannot be met. 795 796-- Elaboration_Entity (Node13) 797-- Present in generic and non-generic package and subprogram 798-- entities. This is a boolean entity associated with the unit that 799-- is initiallly set to False, and is set True when the unit is 800-- elaborated. This is used for two purposes. First, it is used to 801-- implement required access before elaboration checks (the flag 802-- must be true to call a subprogram at elaboration time). Second, 803-- it is used to guard against repeated execution of the generated 804-- elaboration code. 805-- 806-- Note that we always allocate this flag, and set this field, but 807-- we do not always actually use it. It is only used if it is needed 808-- for access-before-elaboration use (see Elaboration_Entity_Required 809-- flag) or if either the spec or the body has elaboration code. If 810-- neither of these two conditions holds, then the entity is still 811-- allocated (since we don't know early enough whether or not there 812-- is elaboration code), but is simply not used for any purpose. 813 814-- Elaboration_Entity_Required (Flag174) 815-- Present in generics and non-generic package and subprogram 816-- entities. Set only if Elaboration_Entity is non-Empty to indicate 817-- that the boolean is required to be set even if there is no other 818-- elaboration code. This occurs when the Elaboration_Entity flag 819-- is used for required access-before-elaboration checking. If the 820-- flag is only for preventing multiple execution of the elaboration 821-- code, then if there is no other elaboration code, obviously there 822-- is no need to set the flag. 823 824-- Enclosing_Dynamic_Scope (synthesized) 825-- Appliesa to all entities. Returns the closest dynamic scope in which 826-- the entity is declared or Standard_Standard for library-level entities 827 828-- Enclosing_Scope (Node18) 829-- Present in labels. Denotes the innermost enclosing construct that 830-- contains the label. Identical to the scope of the label, except for 831-- labels declared in the body of an accept statement, in which case the 832-- entry_name is the Enclosing_Scope. Used to validate goto's within 833-- accept statements. 834 835-- Entry_Accepted (Flag152) 836-- Present in E_Entry and E_Entry_Family entities. Set if there is 837-- at least one accept for this entry in the task body. Used to 838-- generate warnings for missing accepts. 839 840-- Entry_Bodies_Array (Node15) 841-- Present in protected types for which Has_Entries is true. 842-- This is the defining identifier for the array of entry body 843-- action procedures and barrier functions used by the runtime to 844-- execute the user code associated with each entry. 845 846-- Entry_Cancel_Parameter (Node23) 847-- Present in blocks. This only applies to a block statement for 848-- which the Is_Asynchronous_Call_Block flag is set. It 849-- contains the defining identifier of an object that must be 850-- passed to the Cancel_Task_Entry_Call or Cancel_Protected_Entry_Call 851-- call in the cleanup handler added to the block by 852-- Exp_Ch7.Expand_Cleanup_Actions. This parameter is a Boolean 853-- object for task entry calls and a Communications_Block object 854-- in the case of protected entry calls. In both cases the objects 855-- are declared in outer scopes to this block. 856 857-- Entry_Component (Node11) 858-- Present in formal parameters (in, in out and out parameters). Used 859-- only for formals of entries. References the corresponding component 860-- of the entry parameter record for the entry. 861 862-- Entry_Formal (Node16) 863-- Present in components of the record built to correspond to entry 864-- parameters. This field points from the component to the formal. It 865-- is the back pointer corresponding to Entry_Component. 866 867-- Entry_Index_Constant (Node18) 868-- Present in an entry index parameter. This is an identifier that 869-- eventually becomes the name of a constant representing the index 870-- of the entry family member whose entry body is being executed. Used 871-- to expand references to the entry index specification identifier. 872 873-- Entry_Index_Type (synthesized) 874-- Applies to an entry family. Denotes Etype of the subtype indication 875-- in the entry declaration. Used to resolve the index expression in an 876-- accept statement for a member of the family, and in the prefix of 877-- 'COUNT when it applies to a family member. 878 879-- Entry_Parameters_Type (Node15) 880-- Present in entries. Points to the access-to-record type that is 881-- constructed by the expander to hold a reference to the parameter 882-- values. This reference is manipulated (as an address) by the 883-- tasking runtime. The designated record represents a packaging 884-- up of the entry parameters (see Exp_Ch9.Expand_N_Entry_Declaration 885-- for further details). Entry_Parameters_Type is Empty if the entry 886-- has no parameters. 887 888-- Enumeration_Pos (Uint11) 889-- Present in enumeration literals. Contains the position number 890-- corresponding to the value of the enumeration literal. 891 892-- Enumeration_Rep (Uint12) 893-- Present in enumeration literals. Contains the representation that 894-- corresponds to the value of the enumeration literal. Note that 895-- this is normally the same as Enumeration_Pos except in the presence 896-- of representation clauses, where Pos will still represent the 897-- position of the literal within the type and Rep will have be the 898-- value given in the representation clause. 899 900-- Enumeration_Rep_Expr (Node22) 901-- Present in enumeration literals. Points to the expression in an 902-- associated enumeration rep clause that provides the representation 903-- value for this literal. Empty if no enumeration rep clause for this 904-- literal (or if rep clause does not have an entry for this literal, 905-- an error situation). This is also used to catch duplicate entries 906-- for the same literal. 907 908-- Enum_Pos_To_Rep (Node23) 909-- Present in enumeration types (but not enumeration subtypes). Set to 910-- Empty unless the enumeration type has a non-standard representation 911-- (i.e. at least one literal has a representation value different from 912-- its pos value). In this case, Enum_Pos_To_Rep is the entity for an 913-- array constructed when the type is frozen that maps Pos values to 914-- corresponding Rep values. The index type of this array is Natural, 915-- and the component type is a suitable integer type that holds the 916-- full range of representation values. 917 918-- Equivalent_Type (Node18) 919-- Present in class wide types and subtypes, access to protected 920-- subprogram types, and in exception_types. For a classwide type, it 921-- is always Empty. For a class wide subtype, it points to an entity 922-- created by the expander which gives Gigi an easily understandable 923-- equivalent of the class subtype with a known size (given by an 924-- initial value). See Exp_Util.Expand_Class_Wide_Subtype for further 925-- details. For E_exception_type, this points to the record containing 926-- the data necessary to represent exceptions (for further details, see 927-- System.Standard_Library. For access_to_protected subprograms, it 928-- denotes a record that holds pointers to the operation and to the 929-- protected object. For remote Access_To_Subprogram types, it denotes 930-- the record that is the fat pointer representation of an RAST. 931 932-- Esize (Uint12) 933-- Present in all types and subtypes, and also for components, constants, 934-- and variables. Contains the Object_Size of the type or of the object. 935-- A value of zero indicates that the value is not yet known. 936-- 937-- For the case of components where a component clause is present, the 938-- value is the value from the component clause, which must be non- 939-- negative (but may be zero, which is acceptable for the case of 940-- a type with only one possible value). It is also possible for Esize 941-- of a component to be set without a component clause present, which 942-- means that the component size is specified, but not the position. 943-- See also RM_Size and the section on "Handling of Type'Size Values". 944-- During gigi processing, the value is back annotated for all zero 945-- values, so that after the call to gigi, the value is properly set. 946 947-- Etype (Node5) 948-- Present in all entities. Represents the type of the entity, which 949-- is itself another entity. For a type entity, points to the parent 950-- type for a derived type, or if the type is not derived, points to 951-- itself. For a subtype entity, Etype points to the base type. For 952-- a class wide type, points to the parent type. For a subprogram or 953-- subprogram type, Etype has the return type of a function or is set 954-- to Standard_Void_Type to represent a procedure. 955 956-- Exception_Code (Uint22) 957-- Present in exception entitites. Set to zero unless either an 958-- Import_Exception or Export_Exception pragma applies to the 959-- pragma and specifies a Code value. See description of these 960-- pragmas for details. Note that this field is relevant only if 961-- Is_VMS_Exception is set. 962 963-- Extra_Formal (Node15) 964-- Present in formal parameters in the non-generic case. Certain 965-- parameters require extra implicit information to be passed 966-- (e.g. the flag indicating if an unconstrained variant record 967-- argument is constrained, and the accessibility level for 968-- access parameters. See description of Extra_Constrained, 969-- Extra_Accessibility fields for further details. Extra formal 970-- parameters are constructed to represent these values, and 971-- chained to the end of the list of formals using the 972-- Extra_Formal field (i.e. the Extra_Formal field of the last 973-- "real" formal points to the first extra formal, and the 974-- Extra_Formal field of each extra formal points to the next 975-- one, with Empty indicating the end of the list of extra 976-- formals. 977 978-- Extra_Accessibility (Node13) 979-- Present in formal parameters in the non-generic case if 980-- expansion is active. Normally Empty, but if a parameter is 981-- one for which a dynamic accessibility check is required, then 982-- an extra formal of type Natural is created (see description 983-- of field Extra_Formal), and the Extra_Accessibility field of 984-- the formal parameter points to the entity for this extra 985-- formal. Also present in variables when compiling receiving 986-- stubs. In this case, a non Empty value means that this 987-- variable's accessibility depth has been transmitted by the 988-- caller and must be retrieved through the entity designed by 989-- this field instead of being computed. 990 991-- Extra_Constrained (Node23) 992-- Present in formal parameters in the non-generic case if 993-- expansion is active. Normally Empty, but if a parameter is 994-- one for which a dynamic indication of its constrained status 995-- is required, then an extra formal of type Boolean is created 996-- (see description of field Extra_Formal), and the 997-- Extra_Constrained field of the formal parameter points to the 998-- entity for this extra formal. Also present in variables when 999-- compiling receiving stubs. In this case, a non empty value 1000-- means that this variable's constrained status has been 1001-- transmitted by the caller and must be retrieved through the 1002-- entity designed by this field instead of being computed. 1003 1004-- Finalization_Chain_Entity (Node19) 1005-- Present in scopes which can have finalizable entities (blocks, 1006-- functions, procedures, tasks, entries). When this field is empty it 1007-- means that there are no finalization actions to perform on exit of the 1008-- scope. When this field contains 'Error', it means that no 1009-- finalization actions should happen at this level and the 1010-- finalization chain of a parent scope shall be used (??? this is 1011-- an improper use of 'Error' and should be changed). otherwise it 1012-- contains an entity of type Finalizable_Ptr that is the head of the 1013-- list of objects to finalize on exit. See "Finalization Management" 1014-- section in exp_ch7.adb for more details. 1015 1016-- Finalize_Storage_Only (Flag158) [base type only] 1017-- Present in all types. Set on direct controlled types to which a 1018-- valid Finalize_Storage_Only pragma applies. This flag is also set on 1019-- composite types when they have at least one controlled component and 1020-- all their controlled components are Finalize_Storage_Only. It is also 1021-- inherited by type derivation except for direct controlled types where 1022-- the Finalize_Storage_Only pragma is required at each level of 1023-- derivation. 1024 1025-- First_Component (synthesized) 1026-- Applies to record types. Returns the first component by following 1027-- the chain of declared entities for the record until a component 1028-- is found (one with an Ekind of E_Component). The discriminants are 1029-- skipped. If the record is null, then Empty is returned. 1030 1031-- First_Discriminant (synthesized) 1032-- Applies to types with discriminants. The discriminants are the 1033-- first entities declared in the type, so normally this is equivalent 1034-- to First_Entity. The exception arises for tagged types, where the 1035-- tag itself is prepended to the front of the entity chain, so the 1036-- First_Discriminant function steps past the tag if it is present. 1037 1038-- First_Entity (Node17) 1039-- Present in all entities which act as scopes to which a list of 1040-- associated entities is attached (blocks, class subtypes and types, 1041-- entries, functions, loops, packages, procedures, protected objects, 1042-- record types and subtypes, private types, task types and subtypes). 1043-- Points to a list of associated entities using the Next_Entity field 1044-- as a chain pointer with Empty marking the end of the list. 1045 1046-- First_Formal (synthesized) 1047-- Applies to subprograms and subprogram types, and also in entries 1048-- and entry families. Returns first formal of the subprogram or entry. 1049-- The formals are the first entities declared in a subprogram or in 1050-- a subprogram type (the designated type of an Access_To_Subprogram 1051-- definition) or in an entry. 1052 1053-- First_Index (Node17) 1054-- Present in array types and subtypes and in string types and subtypes. 1055-- By introducing implicit subtypes for the index constraints, we have 1056-- the same structure for constrained and unconstrained arrays, subtype 1057-- marks and discrete ranges are both represented by a subtype. This 1058-- function returns the tree node corresponding to an occurrence of the 1059-- first index (NOT the entity for the type). Subsequent indexes are 1060-- obtained using Next_Index. Note that this field is present for the 1061-- case of string literal subtypes, but is always Empty. 1062 1063-- First_Literal (Node17) 1064-- Present in all enumeration types, including character and boolean 1065-- types. This field points to the first enumeration literal entity 1066-- for the type (i.e. it is set to First (Literals (N)) where N is 1067-- the enumeration type definition node. A special case occurs with 1068-- standard character and wide character types, where this field is 1069-- Empty, since there are no enumeration literal lists in these cases. 1070-- Note that this field is set in enumeration subtypes, but it still 1071-- points to the first literal of the base type in this case. 1072 1073-- First_Optional_Parameter (Node14) 1074-- Present in (non-generic) function and procedure entities. Set to a 1075-- non-null value only if a pragma Import_Function, Import_Procedure 1076-- or Import_Valued_Procedure specifies a First_Optional_Parameter 1077-- argument, in which case this field points to the parameter entity 1078-- corresponding to the specified parameter. 1079 1080-- First_Private_Entity (Node16) 1081-- Present in all entities containing private parts (packages, 1082-- protected types and subtypes, task types and subtypes). The 1083-- entities on the entity chain are in order of declaration, so the 1084-- entries for private entities are at the end of the chain. This 1085-- field points to the first entity for the private part. It is 1086-- Empty if there are no entities declared in the private part or 1087-- if there is no private part. 1088 1089-- First_Rep_Item (Node6) 1090-- Present in all entities. If non-empty, points to a linked list of 1091-- representation pragmas nodes and representation clause nodes that 1092-- apply to the entity, linked using Next_Rep_Item, with Empty marking 1093-- the end of the list. In the case of derived types and subtypes, the 1094-- new entity inherits the chain at the point of declaration. This 1095-- means that it is possible to have multiple instances of the same 1096-- kind of rep item on the chain, in which case it is the first one 1097-- that applies to the entity. 1098-- 1099-- For most representation items, the representation information is 1100-- reflected in other fields and flags in the entity. For example if 1101-- a record representation clause is present, the component entities 1102-- reflect the specified information. However, there are some items 1103-- that are only reflected in the chain. These include: 1104-- 1105-- Alignment attribute definition clause 1106-- Machine_Attribute pragma 1107-- Link_Alias pragma 1108-- Link-Section pragma 1109-- Weak_External pragma 1110-- 1111-- If any of these items are present, then the flag Has_Gigi_Rep_Item 1112-- is set, indicating that Gigi should search the chain. 1113-- 1114-- Other representation items are included in the chain so that error 1115-- messages can easily locate the relevant nodes for posting errors. 1116-- Note in particular that size clauses are present only for this 1117-- purpose, and should only be accessed if Has_Size_Clause is set. 1118 1119-- First_Stored_Discriminant (synthesized) 1120-- Applies to types with discriminants. Gives the first discriminant 1121-- stored in the object. In many cases, these are the same as the 1122-- normal visible discriminants for the type, but in the case of 1123-- renamed discriminants, this is not always the case. 1124-- 1125-- For tagged types, and untagged types which are root types or 1126-- derived types but which do not rename discriminants in their 1127-- root type, the stored discriminants are the same as the actual 1128-- discriminants of the type, and hence this function is the same 1129-- as First_Discriminant. 1130-- 1131-- For derived non-tagged types that rename discriminants in the root 1132-- type this is the first of the discriminants that occurr in the 1133-- root type. To be precise, in this case stored discriminants are 1134-- entities attached to the entity chain of the derived type which 1135-- are a copy of the discriminants of the root type. Furthermore their 1136-- Is_Completely_Hidden flag is set since although they are actually 1137-- stored in the object, they are not in the set of discriminants that 1138-- is visble in the type. 1139-- 1140-- For derived untagged types, stored discriminants are the real 1141-- discriminants from Gigi's standpoint, i.e. those that will be 1142-- stored in actual objects of the type. 1143 1144-- First_Subtype (synthesized) 1145-- Applies to all types and subtypes. For types, yields the first 1146-- subtype of the type. For subtypes, yields the first subtype of 1147-- the base type of the subtype. 1148 1149-- Freeze_Node (Node7) 1150-- Present in all entities. If there is an associated freeze node for 1151-- the entity, this field references this freeze node. If no freeze 1152-- node is associated with the entity, then this field is Empty. See 1153-- package Freeze for further details. 1154 1155-- From_With_Type (Flag159) 1156-- Present in package and type entities. Indicates that the entity 1157-- appears in a With_Type clause in the context of some other unit, 1158-- either as the prefix (which must be a package), or as a type name. 1159-- The package can only be used to retrieve such a type, and the type 1160-- can be used only in component declarations and access definitions. 1161-- The With_Type clause is used to construct mutually recursive 1162-- types, i.e. record types (Java classes) that hold pointers to each 1163-- other. If such a type is an access type, it has no explicit freeze 1164-- node, so that the back-end does not attempt to elaborate it. 1165-- Currently this flag is also used to implement Ada0Y (AI-50217). 1166-- It will be renamed to From_Limited_With after removal of the current 1167-- GNAT with_type clause??? 1168 1169-- Full_View (Node11) 1170-- Present in all type and subtype entities and in deferred constants. 1171-- References the entity for the corresponding full type declaration. 1172-- For all types other than private and incomplete types, this field 1173-- always contains Empty. See also Underlying_Type. 1174 1175-- Function_Returns_With_DSP (Flag169) 1176-- Present in all subprogram entities, and type entities for access 1177-- to subprogram values. Set True if the function (or referenced 1178-- function in the case of an access value) returns with using the 1179-- DSP (depressed stack pointer) approach. This can only be set 1180-- True if Targparm.Functions_Return_By_DSP_On_Target is True and 1181-- the function returns a value of a type whose size is not known 1182-- at compile time. 1183 1184-- Generic_Homonym (Node11) 1185-- Present in generic packages. The generic homonym is the entity of 1186-- a renaming declaration inserted in every generic unit. It is used 1187-- to resolve the name of a local entity that is given by a qualified 1188-- name, when the generic entity itself is hidden by a local name. 1189 1190-- Generic_Renamings (Elist23) 1191-- Present in package and subprogram instances. Holds mapping that 1192-- associates generic parameters with the corresponding instances, in 1193-- those cases where the instance is an entity. 1194 1195-- Handler_Records (List10) 1196-- Present in subprogram and package entities. Points to a list of 1197-- identifiers referencing the handler record entities for the 1198-- corresponding unit. 1199 1200-- Has_Aliased_Components (Flag135) [implementation base type only] 1201-- Present in array type entities. Indicates that the component type 1202-- of the array is aliased. 1203 1204-- Has_Alignment_Clause (Flag46) 1205-- Present in all type entities and objects. Indicates if an alignment 1206-- clause has been given for the entity. If set, then Alignment_Clause 1207-- returns the N_Attribute_Definition node for the alignment attribute 1208-- definition clause. Note that it is possible for this flag to be False 1209-- even when Alignment_Clause returns non_Empty (this happens in the case 1210-- of derived type declarations). 1211 1212-- Has_All_Calls_Remote (Flag79) 1213-- Present in all library unit entities. Set true if the library unit 1214-- has an All_Calls_Remote pragma. Note that such entities must also 1215-- be RCI entities, so the flag Is_Remote_Call_Interface will always 1216-- be set if this flag is set. 1217 1218-- Has_Atomic_Components (Flag86) [implementation base type only] 1219-- Present in all types and objects. Set only for an array type or 1220-- an array object if a valid pragma Atomic_Components applies to the 1221-- type or object. Note that in the case of an object, this flag is 1222-- only set on the object if there was an explicit pragma for the 1223-- object. In other words, the proper test for whether an object has 1224-- atomic components is to see if either the object or its base type 1225-- has this flag set. Note that in the case of a type, the pragma will 1226-- be chained to the rep item chain of the first subtype in the usual 1227-- manner. 1228 1229-- Has_Attach_Handler (synthesized) 1230-- Applies to record types that are constructed by the expander to 1231-- represent protected types. Returns True if there is at least one 1232-- Attach_Handler pragma in the corresponding specification. 1233 1234-- Has_Biased_Representation (Flag139) 1235-- Present in discrete types (where it applies to the type'size value), 1236-- and to objects (both stand-alone and components), where it applies to 1237-- the size of the object from a size or record component clause. In 1238-- all cases it indicates that the size in question is smaller than 1239-- would normally be required, but that the size requirement can be 1240-- satisfied by using a biased representation, in which stored values 1241-- have the low bound (Expr_Value (Type_Low_Bound (T)) subtracted to 1242-- reduce the required size. For example, a type with a range of 1..2 1243-- takes one bit, using 0 to represent 1 and 1 to represent 2. 1244-- 1245-- Note that in the object and component cases, the flag is only set 1246-- if the type is unbiased, but the object specifies a smaller size 1247-- than the size of the type, forcing biased representation for the 1248-- object, but the subtype is still an unbiased type. 1249 1250-- Has_Completion (Flag26) 1251-- Present in all entities that require a completion (functions, 1252-- procedures, private types, limited private types, incomplete types, 1253-- and packages that require a body). Set if the completion has been 1254-- encountered and analyzed. 1255 1256-- Has_Completion_In_Body (Flag71) 1257-- Present in "Taft amendment types" that is to say incomplete types 1258-- whose full declaration appears in the package body. 1259 1260-- Has_Complex_Representation (Flag140) [implementation base type only] 1261-- Present in all type entities. Set only for a record base type to 1262-- which a valid pragma Complex_Representation applies. 1263 1264-- Has_Component_Size_Clause (Flag68) [implementation base type only] 1265-- Present in all type entities. Set if a component size clause is 1266-- present for the given type. Note that this flag can be False even 1267-- if Component_Size is non-zero (happens in the case of derived types). 1268 1269-- Has_Contiguous_Rep (Flag181) 1270-- Present in enumeration types. True if the type as a representation 1271-- clause whose entries are successive integers. 1272 1273-- Has_Controlling_Result (Flag98) 1274-- Present in E_Function entities. True if The function is a primitive 1275-- function of a tagged type which can dispatch on result 1276 1277-- Has_Controlled_Component (Flag43) [base type only] 1278-- Present in composite type entities. Indicates that the type has a 1279-- component that either is a controlled type, or itself contains a 1280-- controlled component (i.e. either Has_Controlled_Component or 1281-- Is_Controlled is set for at least one component). 1282 1283-- Has_Convention_Pragma (Flag119) 1284-- Present in an entity for which a Convention, Import, or Export 1285-- pragma has been given. Used to prevent more than one such pragma 1286-- appearing for a given entity (RM B.1(45)). 1287 1288-- Has_Delayed_Freeze (Flag18) 1289-- Present in all entities. Set to indicate that an explicit freeze 1290-- node must be generated for the entity at its freezing point. See 1291-- separate section ("Delayed Freezing and Elaboration") for details. 1292 1293-- Has_Discriminants (Flag5) 1294-- Present in all types and subtypes. For types that are allowed to have 1295-- discriminants (record types and subtypes, task types and subtypes, 1296-- protected types and subtypes, private types, limited private types, 1297-- and incomplete types), indicates if the corresponding type or subtype 1298-- has a known discriminant part. Always false for all other types. 1299 1300-- Has_Entries (synthesized) 1301-- Applies to concurrent types. True if any entries are declared 1302-- within the task or protected definition for the type. 1303 1304-- Has_Enumeration_Rep_Clause (Flag66) 1305-- Present in enumeration types. Set if an enumeration representation 1306-- clause has been given for this enumeration type. Used to prevent more 1307-- than one enumeration representation clause for a given type. Note 1308-- that this does not imply a representation with holes, since the rep 1309-- clause may merely confirm the default 0..N representation. 1310 1311-- Has_External_Tag_Rep_Clause (Flag110) 1312-- Present in tagged types. Set if an external_tag rep. clause has been 1313-- given for this type. Use to avoid the generation of the default 1314-- external_tag. 1315 1316-- Has_Exit (Flag47) 1317-- Present in loop entities. Set if the loop contains an exit statement. 1318 1319-- Has_Foreign_Convention (synthesized) 1320-- Applies to all entities. Determines if the Convention for the 1321-- entity is a foreign convention (i.e. is other than Convention_Ada, 1322-- Convention_Intrinsic, Convention_Entry or Convention_Protected). 1323 1324-- Has_Forward_Instantiation (Flag175) 1325-- Present in package entities. Set true for packages that contain 1326-- instantiations of local generic entities, before the corresponding 1327-- generic body has been seen. If a package has a forward instantiation, 1328-- we cannot inline subprograms appearing in the same package because 1329-- the placement requirements of the instance will conflict with the 1330-- linear elaboration of front-end inlining. 1331 1332-- Has_Fully_Qualified_Name (Flag173) 1333-- Present in all entities. Set True if the name in the Chars field 1334-- has been replaced by the fully qualified name, as used for debug 1335-- output. See Exp_Dbug for a full description of the use of this 1336-- flag and also the related flag Has_Qualified_Name. 1337 1338-- Has_Gigi_Rep_Item (Flag82) 1339-- This flag is set if the rep item chain (referenced by First_Rep_Item 1340-- and linked through the Next_Rep_Item chain contains a representation 1341-- item that needs to be specially processed by Gigi, i.e. one of the 1342-- following items: 1343-- 1344-- Machine_Attribute pragma 1345-- Linker_Alias pragma 1346-- Linker_Section pragma 1347-- Weak_External pragma 1348-- 1349-- If this flag is set, then Gigi should scan the rep item chain to 1350-- process any of these items that appear. At least one such item will 1351-- be present. 1352 1353-- Has_Homonym (Flag56) 1354-- Present in all entities. Set if an entity has a homonym in the same 1355-- scope. Used by Gigi to generate unique names for such entities. 1356 1357-- Has_Interrupt_Handler (synthesized) 1358-- Applies to all protected type entities. Set if the protected type 1359-- definition contains at least one procedure to which a pragma 1360-- Interrupt_Handler applies. 1361 1362-- Has_Machine_Radix_Clause (Flag83) 1363-- Present in decimal types and subtypes, set if a Machine_Radix 1364-- representation clause is present. This flag is used to detect 1365-- the error of multiple machine radix clauses for a single type. 1366 1367-- Has_Master_Entity (Flag21) 1368-- Present in entities that can appear in the scope stack (see spec 1369-- of Sem). It is set if a task master entity (_master) has been 1370-- declared and initialized in the corresponding scope. 1371 1372-- Has_Missing_Return (Flag142) 1373-- Present in functions and generic functions. Set if there is one or 1374-- more missing return statements in the function. This is used to 1375-- control wrapping of the body in Exp_Ch6 to ensure that the program 1376-- error exeption is correctly raised in this case at runtime. 1377 1378-- Has_Nested_Block_With_Handler (Flag101) 1379-- Present in scope entities. Set if there is a nested block within the 1380-- scope that has an exception handler and the two scopes are in the 1381-- same procedure. This is used by the backend for controlling certain 1382-- optimizations to ensure that they are consistent with exceptions. 1383-- See documentation in Gigi for further details. 1384 1385-- Has_Non_Standard_Rep (Flag75) [implementation base type only] 1386-- Present in all type entities. Set when some representation clause 1387-- or pragma causes the representation of the item to be significantly 1388-- modified. In this category are changes of small or radix for a 1389-- fixed-point type, change of component size for an array, and record 1390-- or enumeration representation clauses, as well as packed pragmas. 1391-- All other representation clauses (e.g. Size and Alignment clauses) 1392-- are not considered to be significant since they do not affect 1393-- stored bit patterns. 1394 1395-- Has_Object_Size_Clause (Flag172) 1396-- Present in entities for types and subtypes. Set if an Object_Size 1397-- clause has been processed for the type Used to prevent multiple 1398-- Object_Size clauses for a given entity. 1399 1400-- Has_Per_Object_Constraint (Flag154) 1401-- Present in E_Component entities, true if the subtype of the 1402-- component has a per object constraint, i.e. an actual discriminant 1403-- value of the form T'Access, where T is the enclosing type. 1404 1405-- Has_Pragma_Controlled (Flag27) [implementation base type only] 1406-- Present in access type entities. It is set if a pragma Controlled 1407-- applies to the access type. 1408 1409-- Has_Pragma_Elaborate_Body (Flag150) 1410-- Present in all entities. Set in compilation unit entities if a 1411-- pragma Elaborate_Body applies to the compilation unit. 1412 1413-- Has_Pragma_Inline (Flag157) 1414-- Present in all entities. Set for functions and procedures for which 1415-- a pragma Inline or Inline_Always applies to the subprogram. Note 1416-- that this flag can be set even if Is_Inlined is not set. This 1417-- happens for pragma Inline (if Inline_Active is False). In other 1418-- words, the flag Has_Pragma_Inline represents the formal semantic 1419-- status, and is used for checking semantic correctness. 1420-- The flag Is_Inlined indicates whether inlining is actually active 1421-- for the entity. 1422 1423-- Has_Pragma_Pack (Flag121) [implementation base type only] 1424-- Present in all entities. It indicates that a valid pragma Pack was 1425-- was given for the type. Note that this flag is not inherited by a 1426-- derived type. See also the Is_Packed flag. 1427 1428-- Has_Pragma_Pure_Function (Flag179) 1429-- Present in subprogram entities. It indicates that a valid pragma 1430-- Pure_Function was given for the entity. In some cases, we need to 1431-- know that Is_Pure was explicitly set using this pragma. 1432 1433-- Has_Pragma_Unreferenced (Flag180) 1434-- Present in all entities. Set if a valid pragma Unreferenced applies 1435-- to the pragma, indicating that no warning should be given if the 1436-- entity has no references, but a warning should be given if it is 1437-- in fact referenced. 1438 1439-- Has_Primitive_Operations (Flag120) [base type only] 1440-- Present in all type entities. Set if at least one primitive operation 1441-- is defined for the type. 1442 1443-- Has_Private_Ancestor (synthesized) 1444-- Applies to all type and subtype entities. Returns True if at least 1445-- one ancestor is private, and otherwise False if there are no private 1446-- ancestors. 1447 1448-- Has_Private_Declaration (Flag155) 1449-- Present in all entities. Returns True if it is the defining entity 1450-- of a private type declaration or its corresponding full declaration. 1451-- This flag is thus preserved when the full and the partial views are 1452-- exchanged, to indicate if a full type declaration is a completion. 1453-- Used for semantic checks in E.4 (18), and elsewhere. 1454 1455-- Has_Qualified_Name (Flag161) 1456-- Present in all entities. Set True if the name in the Chars field 1457-- has been replaced by its qualified name, as used for debug output. 1458-- See Exp_Dbug for a full description of qualification requirements. 1459-- For some entities, the name is the fully qualified name, but there 1460-- are exceptions. In particular, for local variables in procedures, 1461-- we do not include the procedure itself or higher scopes. See also 1462-- the flag Has_Fully_Qualified_Name, which is set if the name does 1463-- indeed include the fully qualified name. 1464 1465-- Has_Record_Rep_Clause (Flag65) [implementation base type only] 1466-- Present in record types. Set if a record representation clause has 1467-- been given for this record type. Used to prevent more than one such 1468-- clause for a given record type. Note that this is initially cleared 1469-- for a derived type, even though the representation is inherited. See 1470-- also the flag Has_Specified_Layout. 1471 1472-- Has_Recursive_Call (Flag143) 1473-- Present in procedures. Set if a direct parameterless recursive call 1474-- is detected while analyzing the body. Used to activate some error 1475-- checks for infinite recursion. 1476 1477-- Has_Size_Clause (Flag29) 1478-- Present in entities for types and objects. Set if a size clause is 1479-- present for the entity. Used to prevent multiple Size clauses for a 1480-- given entity. Note that it is always initially cleared for a derived 1481-- type, even though the Size for such a type is inherited from a Size 1482-- clause given for the parent type. 1483 1484-- Has_Small_Clause (Flag67) 1485-- Present in ordinary fixed point types (but not subtypes). Indicates 1486-- that a small clause has been given for the entity. Used to prevent 1487-- multiple Small clauses for a given entity. Note that it is always 1488-- initially cleared for a derived type, even though the Small for such 1489-- a type is inherited from a Small clause given for the parent type. 1490 1491-- Has_Specified_Layout (Flag100) [implementation base type only] 1492-- Present in all type entities. Set for a record type or subtype if 1493-- the record layout has been specified by a record representation 1494-- clause. Note that this differs from the flag Has_Record_Rep_Clause 1495-- in that it is inherited by a derived type. Has_Record_Rep_Clause is 1496-- used to indicate that the type is mentioned explicitly in a record 1497-- representation clause, and thus is not inherited by a derived type. 1498-- This flag is always False for non-record types. 1499 1500-- Has_Storage_Size_Clause (Flag23) [implementation base type only] 1501-- Present in task types and access types. It is set if a Storage_Size 1502-- clause is present for the type. Used to prevent multiple clauses for 1503-- one type. Note that this flag is initially cleared for a derived type 1504-- even though the Storage_Size for such a type is inherited from a 1505-- Storage_Size clause given for the parent type. Note that in the case 1506-- of access types, this flag is present only in the root type, since a 1507-- storage size clause cannot be given to a derived type. 1508 1509-- Has_Subprogram_Descriptor (Flag93) 1510-- This flag is set on entities for which zero-cost exception subprogram 1511-- descriptors can be generated (subprograms and library level package 1512-- declarations and bodies). It indicates that a subprogram descriptor 1513-- has been generated, and is used to suppress generation of multiple 1514-- descriptors (e.g. when instantiating generic bodies). 1515 1516-- Has_Task (Flag30) [base type only] 1517-- Present in all type entities. Set on task types themselves, and also 1518-- (recursively) on any composite type which has a component for which 1519-- Has_Task is set. The meaning is that an allocator of such an object 1520-- must create the required tasks. Note that the flag is not set on 1521-- access types, even if they designate an object that Has_Task. 1522 1523-- Has_Unchecked_Union (Flag123) [base type only] 1524-- Present in all type entities. Set on unchecked unions themselves 1525-- and (recursively) on any composite type which has a component for 1526-- which Has_Unchecked_Union is set. The meaning is that a comparison 1527-- operation for the type is not permitted. Note that the flag is not 1528-- set on access types, even if they designate an object that has 1529-- the flag Has_Unchecked_Union set. 1530 1531-- Has_Unknown_Discriminants (Flag72) 1532-- Present in all type entities. Types can have unknown discriminants 1533-- either from their declaration or through type derivation. The use 1534-- of this flag exactly meets the spec in RM 3.7(26). Note that all 1535-- class-wide types are considered to have unknown discriminants. 1536 1537-- Has_Volatile_Components (Flag87) [implementation base type only] 1538-- Present in all types and objects. Set only for an array type or 1539-- array object if a valid pragma Volatile_Components or a valid 1540-- pragma Atomic_Components applies to the type or object. Note that 1541-- in the case of an object, this flag is only set on the object if 1542-- there was an explicit pragma for the object. In other words, the 1543-- proper test for whether an object has volatile components is to 1544-- see if either the object or its base type has this flag set. Note 1545-- that in the case of a type the pragma will be chained to the rep 1546-- item chain of the first subtype in the usual manner. 1547 1548-- Has_Xref_Entry (Flag182) 1549-- This flag is set if an entity has an entry in the Xref information 1550-- generated in ali files. This is true for all source entities in the 1551-- extended main source file. It is also true of entities in other 1552-- packages that are referenced directly or indirectly from the main 1553-- source file (indirect reference occurs when the main source file 1554-- references an entity with a type reference. See package Lib.Xref 1555-- for further details). 1556 1557-- Hiding_Loop_Variable (Node8) 1558-- Present in variables. Set only if a variable of a discrete type is 1559-- hidden by a loop variable in the same local scope, in which case 1560-- the Hiding_Loop_Variable field of the hidden variable points to 1561-- the E_Loop_Parameter entity doing the hiding. Used in processing 1562-- warning messages if the hidden variable turns out to be unused 1563-- or is referenced without being set. 1564 1565-- Homonym (Node4) 1566-- Present in all entities. Link for list of entities that have the 1567-- same source name and that are declared in the same or enclosing 1568-- scopes. Homonyms in the same scope are overloaded. Used for name 1569-- resolution and for the generation of debugging information. 1570 1571-- Implementation_Base_Type (synthesized) 1572-- Applies to all types. Similar to Base_Type, but never returns a 1573-- private type when applied to a non-private type. Instead in this 1574-- case, it always returns the Representation_Type of the base type 1575-- in this case, so that we still have a concrete type. Note: it is 1576-- allowed to apply Implementation_Base_Type to other than a type, 1577-- in which case it simply returns the entity unchanged. 1578 1579-- In_Package_Body (Flag48) 1580-- Set on the entity that denotes the package (the defining occurrence 1581-- of the package declaration) while analyzing and expanding the package 1582-- body. Reset on completion of analysis/expansion. 1583 1584-- In_Private_Part (Flag45) 1585-- Present in package entities. Flag is set to indicate that the 1586-- private part is being analyzed. The flag is reset at the end of the 1587-- package declaration. 1588 1589-- Inner_Instances (Elist23) 1590-- Present in generic units. Contains element list of units that are 1591-- instantiated within the given generic. Used to diagnose circular 1592-- instantiations. 1593 1594-- Interface_Name (Node21) 1595-- Present in exceptions, functions, procedures, variables, constants, 1596-- and packages. Set to Empty unless an export, import, or interface 1597-- name pragma has explicitly specified an external name, in which 1598-- case it references an N_String_Literal node for the specified 1599-- exteral name. In the case of exceptions, the field is set by 1600-- Import_Exception/Export_Exception (which can be used in OpenVMS 1601-- versions only). Note that if this field is Empty, and Is_Imported 1602-- or Is_Exported is set, then the default interface name is the name 1603-- of the entity, cased in a manner that is appropriate to the system 1604-- in use. Note that Interface_Name is ignored if an address clause 1605-- is present (since it is meaningless in this case). 1606-- 1607-- An additional special case usage of this field is in JGNAT for 1608-- E_Component and E_Discriminant. JGNAT allows these entities to 1609-- be imported by specifying pragma Import within a component's 1610-- containing record definition. This supports interfacing to 1611-- object fields defined within Java classes, and such pragmas 1612-- are generated by the jvm2ada binding generator tool whenever 1613-- it processes classes with public object fields. A pragma Import 1614-- for a component can define the External_Name of the imported 1615-- Java field (which is generally needed, because Java names are 1616-- case sensitive). 1617-- 1618-- In_Use (Flag8) 1619-- Present in packages and types. Set when analyzing a use clause for 1620-- the corresponding entity. Reset at end of corresponding declarative 1621-- part. The flag on a type is also used to determine the visibility of 1622-- the primitive operators of the type. 1623 1624-- Is_Abstract (Flag19) 1625-- Present in all types, and also for functions and procedures. Set 1626-- for abstract types and abstract subprograms. 1627 1628-- Is_Access_Constant (Flag69) 1629-- Present in access types and subtypes. Indicates that the keyword 1630-- constant was present in the access type definition. 1631 1632-- Is_Access_Type (synthesized) 1633-- Applies to all entities, true for access types and subtypes 1634 1635-- Is_Aliased (Flag15) 1636-- Present in objects whose declarations carry the keyword aliased, 1637-- and on record components that have the keyword. 1638 1639-- Is_Always_Inlined (synthesized) 1640-- Present in subprograms. True if there is a pragma Inline_Always for 1641-- the subprogram. 1642 1643-- Is_AST_Entry (Flag132) 1644-- Present in entry entities. Set if a valid pragma AST_Entry applies 1645-- to the entry. This flag can only be set in OpenVMS versions of GNAT. 1646-- Note: we also allow the flag to appear in entry families, but given 1647-- the current implementation of the pragma AST_Entry, this flag will 1648-- always be False in entry families. 1649 1650-- Is_Atomic (Flag85) 1651-- Present in all type entities, and also in constants, components and 1652-- variables. Set if a pragma Atomic or Shared applies to the entity. 1653-- In the case of private and incomplete types, this flag is set in 1654-- both the partial view and the full view. 1655 1656-- Is_Array_Type (synthesized) 1657-- Applies to all entities, true for array types and subtypes 1658 1659-- Is_Asynchronous (Flag81) 1660-- Present in all type entities and in procedure entities. Set 1661-- if a pragma Asynchronous applies to the entity. 1662 1663-- Is_Bit_Packed_Array (Flag122) [implementation base type only] 1664-- Present in all entities. This flag is set for a packed array 1665-- type that is bit packed (i.e. the component size is known by the 1666-- front end and is in the range 1-7, 9-15, 17-31, or 33-63). Is_Packed 1667-- is always set if Is_Bit_Packed_Array is set, but it is possible for 1668-- Is_Packed to be set without Is_Bit_Packed_Array for the case of an 1669-- array having one or more index types that are enumeration types 1670-- with non-standard enumeration representations. 1671 1672-- Is_Boolean_Type (synthesized) 1673-- Applies to all entities, true for boolean types and subtypes, 1674-- i.e. Standard.Boolean and all types ultimately derived from it. 1675 1676-- Is_By_Copy_Type (synthesized) 1677-- Applies to all type entities. Returns true if the entity is 1678-- a by copy type (RM 6.2(3)). 1679 1680-- Is_By_Reference_Type (synthesized) 1681-- Applies to all type entities. True if the type is required to 1682-- be passed by reference, as defined in (RM 6.2(4-9)). 1683 1684-- Is_Called (Flag102) 1685-- Present in subprograms. Returns true if the subprogram is called 1686-- in the unit being compiled or in a unit in the context. Used for 1687-- inlining. 1688 1689-- Is_Character_Type (Flag63) 1690-- Present in all entities, true for character types and subtypes, 1691-- i.e. enumeration types that have at least one character literal. 1692 1693-- Is_Child_Unit (Flag73) 1694-- Present in all entities. Set only for defining entities of program 1695-- units that are child units (but False for subunits). 1696 1697-- Is_Class_Wide_Type (synthesized) 1698-- Applies to all entities, true for class wide types and subtypes 1699 1700-- Is_Class_Wide_Equivalent_Type (Flag35) 1701-- Present in record types and subtypes. Set to True, if the type acts 1702-- as a class-wide equivalent type, i.e. the Equivalent_Type field of 1703-- some class-wide subtype entity references this record type. 1704 1705-- Is_Compilation_Unit (Flag149) 1706-- Present in all entities. Set if the entity is a package or subprogram 1707-- entity for a compilation unit other than a subunit (since we treat 1708-- subunits as part of the same compilation operation as the ultimate 1709-- parent, we do not consider them to be separate units for this flag). 1710 1711-- Is_Completely_Hidden (Flag103) 1712-- A flag set on an E_Discriminant entity. This flag can be set only 1713-- for girder discriminants of untagged types. When set, the entity 1714-- is a girder discriminant of a derived untagged type which is not 1715-- directly visible in the derived type because the derived type or 1716-- one of its ancestors have renamed the discriminants in the root 1717-- type. Note that there are girder discriminants which are not 1718-- Completely_Hidden (e.g. the discriminants of a root type). 1719 1720-- Is_Composite_Type (synthesized) 1721-- Applies to all entities, true for all composite types and 1722-- subtypes. Either Is_Composite_Type or Is_Elementary_Type (but 1723-- not both) is true of any type. 1724 1725-- Is_Concurrent_Record_Type (Flag20) 1726-- Present in record types and subtypes. Set if the type was created 1727-- by the expander to represent a task or protected type. For every 1728-- concurrent type, such as record type is constructed, and task and 1729-- protected objects are instances of this record type at runtime 1730-- (Gigi will replace declarations of the concurrent type using the 1731-- declarations of the corresponding record type). See package Exp_Ch9 1732-- for further details. 1733 1734-- Is_Concurrent_Type (synthesized) 1735-- Applies to all entities, true for task types and subtypes and 1736-- for protected types and subtypes. 1737 1738-- Is_Constrained (Flag12) 1739-- Present in types or subtypes which may have index, discriminant 1740-- or range constraint (i.e. array types and subtypes, record types 1741-- and subtypes, string types and subtypes, and all numeric types). 1742-- Set if the type or subtype is constrained. 1743 1744-- Is_Constr_Subt_For_U_Nominal (Flag80) 1745-- Present in all types and subtypes. Set true only for the constructed 1746-- subtype of an object whose nominal subtype is unconstrained. Note 1747-- that the constructed subtype itself will be constrained. 1748 1749-- Is_Constr_Subt_For_UN_Aliased (Flag141) 1750-- This flag can only be set if Is_Constr_Subt_For_U_Nominal is set. It 1751-- indicates that in addition the object concerned is aliased. This flag 1752-- is used by Gigi to determine whether a template must be constructed. 1753 1754-- Is_Constructor (Flag76) 1755-- Present in function and procedure entities. Set if a pragma 1756-- CPP_Constructor applies to the subprogram. 1757 1758-- Is_Controlled (Flag42) [base type only] 1759-- Present in all type entities. Indicates that the type is controlled, 1760-- i.e. is either a descendant of Ada.Finalization.Controlled or of 1761-- Ada.Finalization.Limited_Controlled. 1762 1763-- Is_Controlling_Formal (Flag97) 1764-- Present in all Formal_Kind entity. Marks the controlling parameters 1765-- of dispatching operations. 1766 1767-- Is_CPP_Class (Flag74) 1768-- Present in all type entities, set only for tagged and untagged 1769-- record types to which the pragma CPP_Class has been applied. 1770 1771-- Is_Decimal_Fixed_Point_Type (synthesized) 1772-- Applies to all type entities, true for decimal fixed point 1773-- types and subtypes. 1774 1775-- Is_Derived_Type (synthesized) 1776-- Applies to all type entities. Determine if given entity is a 1777-- derived type 1778 1779-- Is_Discrete_Type (synthesized) 1780-- Applies to all entities, true for all discrete types and subtypes 1781 1782-- Is_Discrete__Or_Fixed_Point_Type (synthesized) 1783-- Applies to all entities, true for all discrete types and subtypes 1784-- and all fixed-point types and subtypes. 1785 1786-- Is_Discrim_SO_Function (Flag176) 1787-- Present in all entities, set only in E_Function entities that Layout 1788-- creates to compute discriminant-dependent dynamic size/offset values. 1789 1790-- Is_Dispatching_Operation (Flag6) 1791-- Present in all entities. Set true for procedures, functions, 1792-- generic procedures and generic functions if the corresponding 1793-- operation is dispatching. 1794 1795-- Is_Dynamic_Scope (synthesized) 1796-- Applies to all Entities. Returns True if the entity is a dynamic 1797-- scope (i.e. a block, a subprogram a task_type or an entry). 1798 1799-- Is_Elementary_Type (synthesized) 1800-- Applies to all entities, true for all elementary types and 1801-- subtypes. Either Is_Composite_Type or Is_Elementary_Type (but 1802-- not both) is true of any type. 1803 1804-- Is_Eliminated (Flag124) 1805-- Present in type entities, subprogram entities, and object entities. 1806-- Indicates that the corresponding entity has been eliminated by use 1807-- of pragma Eliminate. Also used to mark subprogram entities whose 1808-- declaration and body are within unreachable code that is removed. 1809 1810-- Is_Enumeration_Type (synthesized) 1811-- Present in all entities, true for enumeration types and subtypes 1812 1813-- Is_Entry (synthesized) 1814-- Applies to all entities, True only for entry and entry family 1815-- entities and False for all other entity kinds. 1816 1817-- Is_Entry_Formal (Flag52) 1818-- Present in all entities. Set only for entry formals (which can 1819-- only be in, in-out or out parameters). This flag is used to speed 1820-- up the test for the need to replace references in Exp_Ch2. 1821 1822-- Is_Exported (Flag99) 1823-- Present in all entities. Set if the entity is exported. For now we 1824-- only allow the export of constants, exceptions, functions, procedures 1825-- and variables, but that may well change later on. Exceptions can only 1826-- be exported in the OpenVMS and Java VM implementations of GNAT. 1827 1828-- Is_First_Subtype (Flag70) 1829-- Present in all entities. True for first subtypes (RM 3.2.1(6)), 1830-- i.e. the entity in the type declaration that introduced the type. 1831-- This may be the base type itself (e.g. for record declarations and 1832-- enumeration type declarations), or it may be the first subtype of 1833-- an anonymous base type (e.g. for integer type declarations or 1834-- constrained array declarations). 1835 1836-- Is_Fixed_Point_Type (synthesized) 1837-- Applies to all entities, true for decimal and ordinary fixed 1838-- point types and subtypes 1839 1840-- Is_Floating_Point_Type (synthesized) 1841-- Applies to all entities, true for float types and subtypes 1842 1843-- Is_Formal (synthesized) 1844-- Applies to all entities, true for IN, IN OUT and OUT parameters 1845 1846-- Is_Formal_Subprogram (Flag111) 1847-- Defined on all entities, true for generic formal subprograms. 1848 1849-- Is_For_Access_Subtype (Flag118) 1850-- Present in E_Private_Subtype and E_Record_Subtype entities. 1851-- Means the sole purpose of the type is to be designated by an 1852-- Access_Subtype and hence should not be expanded into components 1853-- because the type may not have been found or frozen yet. 1854 1855-- Is_Frozen (Flag4) 1856-- Present in all type entities. Set if the type has been frozen. 1857 1858-- Is_Generic_Actual_Type (Flag94) 1859-- Present in the subtype declaration that renames the generic formal 1860-- as a subtype of the actual. Guarantees that the subtype is not static 1861-- within the instance. 1862 1863-- Is_Generic_Instance (Flag130) 1864-- Present in all entities. Set to indicate that the entity is an 1865-- instance of a generic unit. 1866 1867-- Is_Generic_Subprogram (synthesized) 1868-- Applies to all entities. Yields True for a generic subprogram 1869-- (generic function, generic subprogram), False for all other entities. 1870 1871-- Is_Generic_Type (Flag13) 1872-- Present in all types and subtypes. Set for types which are generic 1873-- formal types. Such types have an Ekind that corresponds to their 1874-- classification, so the Ekind cannot be used to identify generic types. 1875 1876-- Is_Generic_Unit (synthesized) 1877-- Applies to all entities. Yields True for a generic unit (generic 1878-- package, generic function, generic procedure), and False for all 1879-- other entities. 1880 1881-- Is_Hidden (Flag57) 1882-- Present in all entities. Set true for all entities declared in the 1883-- private part or body of a package. Also marks generic formals of a 1884-- formal package declared without a box. For library level entities, 1885-- this flag is set if the entity is not publicly visible. 1886 1887-- Is_Hidden_Open_Scope (Flag171) 1888-- Present in all entities. Set true for a scope that contains the 1889-- instantiation of a child unit, and whose entities are not visible 1890-- during analysis of the instance. 1891 1892-- Is_Immediately_Visible (Flag7) 1893-- Present in all entities. Set if entity is immediately visible, i.e. 1894-- is defined in some currently open scope (RM 8.3(4)). 1895 1896-- Is_Imported (Flag24) 1897-- Present in all entities. Set if the entity is imported. For now we 1898-- only allow the import of exceptions, functions, procedures, packages. 1899-- and variables. Exceptions can only be imported in the OpenVMS and 1900-- Java VM implementations of GNAT. Packages and types can only be 1901-- imported in the Java VM implementation. 1902 1903-- Is_Incomplete_Or_Private_Type (synthesized) 1904-- Applies to all entities, true for private and incomplete types 1905 1906-- Is_Indefinite_Subtype (synthesized) 1907-- Applies to all entities for types and subtypes. Determines if given 1908-- entity is an unconstrained array type or subtype, a discriminated 1909-- record type or subtype with no initial discriminant values or a 1910-- class wide type or subtype. 1911 1912-- Is_Inlined (Flag11) 1913-- Present in all entities. Set for functions and procedures which are 1914-- to be inlined. For subprograms created during expansion, this flag 1915-- may be set directly by the expander to request inlining. Also set 1916-- for packages that contain inlined subprograms, whose bodies must be 1917-- be compiled. Is_Inlined is also set on generic subprograms and is 1918-- inherited by their instances. It is also set on the body entities 1919-- of inlined subprograms. See also Has_Pragma_Inline. 1920 1921-- Is_Instantiated (Flag126) 1922-- Present in generic packages and generic subprograms. Set if the unit 1923-- is instantiated from somewhere in the extended main source unit. This 1924-- flag is used to control warnings about the unit being uninstantiated. 1925-- Also set in a package that is used as an actual for a generic package 1926-- formal in an instantiation. Also set on a parent instance, in the 1927-- instantiation of a child, which is implicitly declared in the parent. 1928 1929-- Is_Integer_Type (synthesized) 1930-- Applies to all entities, true for integer types and subtypes 1931 1932-- Is_Internal (Flag17) 1933-- Present in all entities. Set to indicate an entity created during 1934-- semantic processing (e.g. an implicit type). Need more documentation 1935-- on this one! ??? 1936 1937-- Is_Interrupt_Handler (Flag89) 1938-- Present in procedures. Set if a pragma Interrupt_Handler applies 1939-- to the procedure. The procedure must be parameterless, and on all 1940-- targets except AAMP it must be a protected procedure. 1941 1942-- Is_Intrinsic_Subprogram (Flag64) 1943-- Present in functions and procedures. It is set if a valid pragma 1944-- Interface or Import is present for this subprogram specifying pragma 1945-- Intrinsic. Valid means that the name and profile of the subprogram 1946-- match the requirements of one of the recognized intrinsic subprograms 1947-- (see package Sem_Intr for details). Note: the value of Convention for 1948-- such an entity will be set to Convention_Intrinsic, but it is the 1949-- setting of Is_Intrinsic_Subprogram, NOT simply having convention set 1950-- to intrinsic, which causes intrinsic code to be generated. 1951 1952-- Is_Itype (Flag91) 1953-- Present in all entities, set for Itypes. If it is set, then the 1954-- declaration for the type does not appear explicitly in the tree. 1955-- Instead gigi will elaborate the type when it is first used. 1956-- Has_Delayed_Freeze can be set for Itypes, and the meaning is that 1957-- the first use (the one which causes the type to be defined) will 1958-- be the freeze node. Note that an important restriction on Itypes 1959-- is that the first use of such a type (the one that causes it to be 1960-- defined) must be in the same scope as the type. 1961 1962-- Is_Known_Non_Null (Flag37) 1963-- Present in all entities. Relevant (and can be set True) only for 1964-- objects of an access type. It is set if the object is currently 1965-- known to have a non-null value (meaning that no access checks 1966-- are needed). The indication can for eample3 come from assignment 1967-- of an access parameter or an allocator. 1968-- 1969-- Note: this flag is set according to the sequential flow of the 1970-- program, watching the current value of the variable. However, 1971-- this processing can cases of changing the value of an aliased 1972-- or constant object, so even if this flag is set, it should not 1973-- be believed if the variable is aliased or volatile. It would 1974-- be a little neater to avoid the flag being set in the first 1975-- place in such cases, but that's trickier, and there is only 1976-- one place that tests the value anyway. 1977-- 1978-- The flag is dynamically set and reset as semantic analysis and 1979-- expansion proceeds. Its value is meaningless once the tree is 1980-- fully constructed, since it simply indicates the last state. 1981-- Thus this flag has no meaning to the back end. 1982 1983-- Is_Known_Valid (Flag170) 1984-- Present in all entities. Relevant for types (and subtype) and 1985-- for objects (and enumeration literals) of a discrete type. 1986-- 1987-- The purpose of this flag is to implement the requirement stated 1988-- in (RM 13.9.1(9-11)) which require that the use of possibly invalid 1989-- values may not cause programs to become erroneous. See the function 1990-- Exp_Util.Expr_Known_Valid for further details. Note that the setting 1991-- is conservative, in the sense that if the flag is set, it must be 1992-- right. If the flag is not set, nothing is known about the validity. 1993-- 1994-- For enumeration literals, the flag is always set, since clearly 1995-- an enumeration literal represents a valid value. Range checks 1996-- where necessary will ensure that this valid value is appropriate. 1997-- 1998-- For objects, the flag indicates the state of knowledge about the 1999-- current value of the object. This may be modified during expansion, 2000-- and thus the final value is not relevant to gigi. 2001-- 2002-- For types and subtypes, the flag is set if all possible bit patterns 2003-- of length Object_Size (i.e. Esize of the type) represent valid values 2004-- of the type. In general for such tytpes, all values are valid, the 2005-- only exception being the case where an object of the type has an 2006-- explicit size that is greater than Object_Size. 2007-- 2008-- For non-discrete objects, the setting of the Is_Known_Valid flag is 2009-- not defined, and is not relevant, since the considerations of the 2010-- requirement in (RM 13.9.1(9-11)) do not apply. 2011-- 2012-- The flag is dynamically set and reset as semantic analysis and 2013-- expansion proceeds. Its value is meaningless once the tree is 2014-- fully constructed, since it simply indicates the last state. 2015-- Thus this flag has no meaning to the back end. 2016 2017-- Is_Limited_Composite (Flag106) 2018-- Present in all entities. True for composite types that have a 2019-- limited component. Used to enforce the rule that operations on 2020-- the composite type that depend on the full view of the component 2021-- do not become visible until the immediate scope of the composite 2022-- type itself (RM 7.3.1 (5)). 2023 2024-- Is_Limited_Record (Flag25) 2025-- Present in all entities. Set to true for record (sub)types if the 2026-- record is declared to be limited. Note that this flag is not set 2027-- simply because some components of the record are limited. 2028 2029-- Is_Limited_Type (synthesized) 2030-- Applies to all entities. True if entity is a limited type (limited 2031-- private type, task type, protected type, composite containing a 2032-- limited component, or a subtype of any of these types). 2033 2034-- Is_Machine_Code_Subprogram (Flag137) 2035-- Present in subprogram entities. Set to indicate that the subprogram 2036-- is a machine code subprogram (i.e. its body includes at least one 2037-- code statement). Also indicates that all necessary semantic checks 2038-- as required by RM 13.8(3) have been performed. 2039 2040-- Is_Modular_Integer_Type (synthesized) 2041-- Applies to all entities. True if entity is a modular integer type 2042 2043-- Is_Non_Static_Subtype (Flag109) 2044-- This flag is present in all type and subtype entities. It is set in 2045-- some (but not all) cases in which a subtype is known to be non-static. 2046-- Before this flag was added, the computation of whether a subtype was 2047-- static was entirely synthesized, by looking at the bounds, and the 2048-- immediate subtype parent. However, this method does not work for some 2049-- Itypes that have no parent set (and the only way to find the immediate 2050-- subtype parent is to go through the tree). For now, this flay is set 2051-- conservatively, i.e. if it is set then for sure the subtype is non- 2052-- static, but if it is not set, then the type may or may not be static. 2053-- Thus the test for a static subtype is that this flag is clear AND 2054-- that the bounds are static AND that the parent subtype (if available 2055-- to be tested) is static. Eventually we should make sure this flag 2056-- is always set right, at which point, these comments can be removed, 2057-- and the tests for static subtypes greatly simplified. 2058 2059-- Is_Null_Init_Proc (Flag178) 2060-- Present in procedure entities. Set for generated init proc procedures 2061-- (used to initialize composite types), if the code for the procedure 2062-- is null (i.e. is a return and nothing else). Such null initialization 2063-- procedures are generated in case some client is compiled using the 2064-- Initialize_Scalars pragma, generating a call to this null procedure, 2065-- but there is no need to call such procedures within a compilation 2066-- unit, and this flag is used to suppress such calls. 2067 2068-- Is_Numeric_Type (synthesized) 2069-- Applies to all entities, true for all numeric types and subtypes 2070-- (integer, fixed, float). 2071 2072-- Is_Object (synthesized) 2073-- Applies to all entities, true for entities representing objects, 2074-- including generic formal parameters. 2075 2076-- Is_Optional_Parameter (Flag134) 2077-- Present in parameter entities. Set if the parameter is specified as 2078-- optional by use of a First_Optional_Parameter argument to one of the 2079-- extended Import pragmas. Can only be set for OpenVMS versions of GNAT. 2080 2081-- Is_Ordinary_Fixed_Point_Type (synthesized) 2082-- Applies to all entities, true for ordinary fixed point types 2083-- and subtypes 2084 2085-- Is_Overriding_Operation (Flag39) 2086-- Present in subprograms. Set if the subprogram is a primitive 2087-- operation of a derived type, that overrides an inherited operation. 2088 2089-- Is_Package (synthesized) 2090-- Applies to all entities. True for packages and generic packages. 2091-- False for all other entities. 2092 2093-- Is_Package_Body_Entity (Flag160) 2094-- Present in all entities. Set for entities defined at the top level 2095-- of a package body. Used to control externally generated names. 2096 2097-- Is_Packed (Flag51) [implementation base type only] 2098-- Present in all type entities. This flag is set only for record and 2099-- array types which have a packed representation. There are three 2100-- cases which cause packing: 2101-- 2102-- 1. Explicit use of pragma Pack for an array of package components 2103-- 2. Explicit use of pragma Pack to pack a record 2104-- 4. Setting Component_Size of an array to a bit-packable value 2105-- 3. Indexing an array with a non-standard enumeration type. 2106-- 2107-- For records, Is_Packed is always set if Has_Pack_Pragma is set, 2108-- and can also be set on its own in a derived type which inherited 2109-- its packed status. 2110-- 2111-- For arrays, Is_Packed is set if an array is bit packed (i.e. the 2112-- component size is known at compile time and is 1-7, 9-15 or 17-31), 2113-- or if the array has one or more index types that are enumeration 2114-- types with non-standard representations (in GNAT, we store such 2115-- arrays compactly, using the Pos of the enumeration type value). 2116-- 2117-- As for the case of records, Is_Packed can be set on its own for a 2118-- derived type, with the same dual before/after freeze meaning. 2119-- Is_Packed can also be set as the result of an explicit component 2120-- size clause that specifies an appropriate component size. 2121-- 2122-- In the bit packed array case, Is_Bit_Packed_Array will be set in 2123-- the bit packed case once the array type is frozen. 2124-- 2125-- Before an array type is frozen, Is_Packed will always be set if 2126-- Has_Pack_Pragma is set. Before the freeze point, it is not possible 2127-- to know the component size, since the component type is not frozen 2128-- until the array type is frozen. Thus Is_Packed for an array type 2129-- before it is frozen means that packed is required. Then if it turns 2130-- out that the component size is not suitable for bit packing, the 2131-- Is_Packed flag gets turned off. 2132 2133-- Is_Packed_Array_Type (Flag138) 2134-- Present in all entities. This flag is set on the entity for the type 2135-- used to implement a packed array (either a modular type, or a subtype 2136-- of Packed_Bytes{1,2,4} as appropriate). The flag is set if and only 2137-- if the type appears in the Packed_Array_Type field of some other type 2138-- entity. It is used by Gigi to activate the special processing for such 2139-- types (unchecked conversions that would not otherwise be allowed are 2140-- allowed for such types). If the Is_Packed_Array_Type flag is set in 2141-- an entity, then the Original_Array_Type field of this entity points 2142-- to the original array type for which this is the packed array type. 2143 2144-- Is_Potentially_Use_Visible (Flag9) 2145-- Present in all entities. Set if entity is potentially use visible, 2146-- i.e. it is defined in a package that appears in a currently active 2147-- use clause (RM 8.4(8)). Note that potentially use visible entities 2148-- are not necessarily use visible (RM 8.4(9-11)). 2149 2150-- Is_Preelaborated (Flag59) 2151-- Present in all entities, set in E_Package and E_Generic_Package 2152-- entities to which a pragma Preelaborate is applied, and also in 2153-- all entities within such packages. Note that the fact that this 2154-- flag is set does not necesarily mean that no elaboration code is 2155-- generated for the package. 2156 2157-- Is_Private_Composite (Flag107) 2158-- Present in composite types that have a private component. Used to 2159-- enforce the rule that operations on the composite type that depend 2160-- on the fulll view of the component, do not become visible until the 2161-- immediate scope of the composite type itself (7.3.1 (5)). Both this 2162-- flag and Is_Limited_Composite are needed. 2163 2164-- Is_Private_Descendant (Flag53) 2165-- Present in entities that can represent library units (packages, 2166-- functions, procedures). Set if the library unit is itself a private 2167-- child unit, or if it is the descendent of a private child unit. 2168 2169-- Is_Private_Type (synthesized) 2170-- Applies to all entities, true for private types and subtypes, 2171-- as well as for record with private types as subtypes 2172 2173-- Is_Protected_Type (synthesized) 2174-- Applies to all entities, true for protected types and subtypes 2175 2176-- Is_Psected (Flag153) 2177-- Present in entities for objects, true if a valid Psect_Object 2178-- pragma applies to the object. Used to detect duplicate pragmas. 2179 2180-- Is_Public (Flag10) 2181-- Present in all entities. Set to indicate that an entity defined in 2182-- one compilation unit can be referenced from other compilation units. 2183-- If this reference causes a reference in the generated variable, for 2184-- example in the case of a variable name, then Gigi will generate an 2185-- appropriate external name for use by the linker. 2186 2187-- Is_Protected_Private (synthesized) 2188-- Applies to a record component. Returns true if this component 2189-- is used to represent a private declaration of a protected type. 2190 2191-- Is_Protected_Record_Type (synthesized) 2192-- Applies to all entities, true if Is_Concurrent_Record_Type 2193-- Corresponding_Concurrent_Type is a protected type. 2194 2195-- Is_Pure (Flag44) 2196-- Present in all entities. Set in all entities of a unit to which a 2197-- pragma Pure is applied, and also set for the entity of the unit 2198-- itself. In addition, this flag may be set for any other functions 2199-- or procedures that are known to be side effect free, so in the case 2200-- of subprograms, the Is_Pure flag may be used by the optimizer to 2201-- imply that it can assume freedom from side effects (other than those 2202-- resulting from assignment to out parameters, or to objects designated 2203-- by access parameters). 2204 2205-- Is_Real_Type (synthesized) 2206-- Applies to all entities, true for real types and subtypes 2207 2208-- Is_Record_Type (synthesized) 2209-- Applies to all entities, true for record types and subtypes, 2210-- includes class-wide types and subtypes (which are also records) 2211 2212-- Is_Remote_Call_Interface (Flag62) 2213-- Present in all entities, set in E_Package and E_Generic_Package 2214-- entities to which a pragma Remote_Call_Interace is applied, and 2215-- also in all entities within such packages. 2216 2217-- Is_Remote_Types (Flag61) 2218-- Present in all entities, set in E_Package and E_Generic_Package 2219-- entities to which a pragma Remote_Types is applied, and also in 2220-- all entities within such packages. 2221 2222-- Is_Renaming_Of_Object (Flag112) 2223-- Present in all entities, set only for a variable or constant for 2224-- which the Renamed_Object field is non-empty and for which the 2225-- renaming is handled by the front end, by macro substitution of 2226-- a copy of the (evaluated) name tree whereever the variable is used. 2227 2228-- Is_Return_By_Reference_Type (synthesized) 2229-- Applies to all type entities. True if the type is required to 2230-- be returned by reference, as defined in 6.5(11-16). 2231 2232-- Is_Scalar_Type (synthesized) 2233-- Applies to all entities, true for scalar types and subtypes 2234 2235-- Is_Shared_Passive (Flag60) 2236-- Present in all entities, set in E_Package and E_Generic_Package 2237-- entities to which a pragma Shared_Passive is applied, and also in 2238-- all entities within such packages. 2239 2240-- Is_Statically_Allocated (Flag28) 2241-- Present in all entities. This can only be set True for exception, 2242-- variable, constant, and type/subtype entities. If the flag is set, 2243-- then the variable or constant must be allocated statically rather 2244-- than on the local stack frame. For exceptions, the meaning is that 2245-- the exception data should be allocated statically (and indeed this 2246-- flag is always set for exceptions, since exceptions do not have 2247-- local scope). For a type, the meaning is that the type must be 2248-- elaborated at the global level rather than locally. No type marked 2249-- with this flag may depend on a local variable, or on any other type 2250-- which does not also have this flag set to True. For a variable or 2251-- or constant, if the flag is set, then the type of the object must 2252-- either be declared at the library level, or it must also have the 2253-- flag set (since to allocate the oject statically, its type must 2254-- also be elaborated globally). 2255 2256-- Is_Subprogram (synthesized) 2257-- Applies to all entities, true for bodies of functions, procedures 2258-- and operators. 2259 2260-- Is_String_Type (synthesized) 2261-- Applies to all type entities. Determines if the given type is a 2262-- string type, i.e. it is directly a string type or string subtype, 2263-- or a string slice type, or an array type with one dimension and a 2264-- component type that is a character type. 2265 2266-- Is_Tag (Flag78) 2267-- Present in E_Component. For regular tagged type this flag is set on 2268-- the tag component (whose name is Name_uTag) and for CPP_Class tagged 2269-- types, this flag marks the pointer to the main vtable (i.e. the one 2270-- to be extended by derivation) 2271 2272-- Is_Tagged_Type (Flag55) 2273-- Present in all entities, true for an entity for a tagged type. 2274 2275-- Is_Task_Record_Type (synthesized) 2276-- Applies to all entities, true if Is_Concurrent_Record_Type 2277-- Corresponding_Concurrent_Type is a task type. 2278 2279-- Is_Task_Type (synthesized) 2280-- Applies to all entities, true for task types and subtypes 2281 2282-- Is_Thread_Body (Flag77) 2283-- Applies to subprogram entities. Set if a valid Thread_Body pragma 2284-- applies to this subprogram, which is thus a thread body. 2285 2286-- Is_True_Constant (Flag163) 2287-- This flag is set in constants and variables which have an initial 2288-- value specified but which are never assigned, partially or in the 2289-- whole. For variables, it means that the variable was initialized 2290-- but never modified, and hence can be treated as a constant by the 2291-- code generator. For a constant, it means that the constant was not 2292-- modified by generated code (e.g. to set a discriminant in an init 2293-- proc). Assignments by user or generated code will reset this flag. 2294-- 2295-- Note: there is one situation in which the back end does not permit 2296-- this flag to be set, even if no assignments are generated. This is 2297-- the case of an object of a record or array type which is initialized 2298-- with an aggregate, and is itself used as the expression initializing 2299-- an atomic object, or the right hand side of an assignment to an atomic 2300-- object. In this case the object must not have Is_True_Constant set, 2301-- even though no assignments are generated (the reason for this is that 2302-- the back end must not optimize the object away, because that would 2303-- violate the restriction on aggregates in these positions). 2304 2305-- Is_Type (synthesized) 2306-- Applies to all entities, true for a type entity 2307 2308-- Is_Unchecked_Union (Flag117) 2309-- Present in all entities. Set only in record types to which the 2310-- pragma Unchecked_Union has been validly applied. 2311 2312-- Is_Unsigned_Type (Flag144) 2313-- Present in all types, but can be set only for discrete and fixed-point 2314-- type and subtype entities. This flag is only valid if the entity is 2315-- frozen. If set it indicates that the representation is known to be 2316-- unsigned (i.e. that no negative values appear in the range). This is 2317-- normally just a reflection of the lower bound of the subtype or base 2318-- type, but there is one case in which the setting is non-obvious, 2319-- namely the case of an unsigned subtype of a signed type from which 2320-- a further subtype is obtained using variable bounds. This further 2321-- subtype is still unsigned, but this cannot be determined by looking 2322-- at its bounds or the bounds of the corresponding base type. 2323 2324-- Is_Valued_Procedure (Flag127) 2325-- Present in procedure entities. Set if an Import_Valued_Procedure 2326-- or Export_Valued_Procedure pragma applies to the procedure entity. 2327 2328-- Is_Visible_Child_Unit (Flag116) 2329-- Present in compilation units that are child units. Once compiled, 2330-- child units remain chained to the entities in the parent unit, and 2331-- a separate flag must be used to indicate whether the names are 2332-- visible by selected notation, or not. 2333 2334-- Is_VMS_Exception (Flag133) 2335-- Present in all entities. Set only for exception entities where the 2336-- exception was specified in an Import_Exception or Export_Exception 2337-- pragma with the VMS option for Form. See description of these pragmas 2338-- for details. This flag can only be set in OpenVMS versions of GNAT. 2339 2340-- Is_Volatile (Flag16) 2341-- Present in all type entities, and also in constants, components and 2342-- variables. Set if a pragma Volatile applies to the entity. Also set 2343-- if pragma Shared or pragma Atomic applies to entity. In the case of 2344-- private or incomplete types, this flag is set in both the private 2345-- and full view. The flag is not set reliably on private subtypes, 2346-- and is always retrieved from the base type (but this is not a base- 2347-- type-only attribute because it applies to other entities). Note that 2348-- the back end should use Treat_As_Volatile, rather than Is_Volatile 2349-- to indicate code generation requirements for volatile variables. 2350-- Similarly, any front end test which is concerned with suppressing 2351-- optimizations on volatile objects should test Treat_As_Volatile 2352-- rather than testing this flag. 2353 2354-- Is_Wrapper_Package (synthesized) 2355-- Present in package entities. Indicates that the package has been 2356-- created as a wrapper for a subprogram instantiation. 2357 2358-- Kill_Elaboration_Checks (Flag32) 2359-- Present in all entities. Set by the expander to kill elaboration 2360-- checks which are known not to be needed. Equivalent in effect to 2361-- the use of pragma Supress (Elaboration_Checks) for that entity 2362-- except that the effect is permanent and cannot be undone by a 2363-- subsequent pragma Unsuppress. 2364 2365-- Kill_Range_Checks (Flag33) 2366-- Present in all entities. Set by the expander to kill elaboration 2367-- checks which are known not to be needed. Equivalent in effect to 2368-- the use of pragma Supress (Range_Checks) for that entity except 2369-- that the result is permanent and cannot be undone by a subsequent 2370-- pragma Unsuppress. 2371 2372-- Kill_Tag_Checks (Flag34) 2373-- Present in all entities. Set by the expander to kill elaboration 2374-- checks which are known not to be needed. Equivalent in effect to 2375-- the use of pragma Supress (Tag_Checks) for that entity except 2376-- that the result is permanent and cannot be undone by a subsequent 2377-- pragma Unsuppress. 2378 2379-- Last_Entity (Node20) 2380-- Present in all entities which act as scopes to which a list of 2381-- associated entities is attached (blocks, class subtypes and types, 2382-- entries, functions, loops, packages, procedures, protected objects, 2383-- record types and subtypes, private types, task types and subtypes). 2384-- Points to a the last entry in the list of associated entities chained 2385-- through the Next_Entity field. Empty if no entities are chained. 2386 2387-- Limited_Views (Elist23) 2388-- Present in non-generic package entities that are not instances. 2389-- The elements of this list are the shadow entities created for the 2390-- types and local packages that are declared in a package that appears 2391-- in a limited_with clause (Ada0Y: AI-50217) 2392 2393-- Lit_Indexes (Node15) 2394-- Present in enumeration types and subtypes. Non-empty only for the 2395-- case of an enumeration root type, where it contains the entity for 2396-- the generated indexes entity. See unit Exp_Imgv for full details of 2397-- the nature and use of this entity for implkementing the Image and 2398-- Value attributes for the enumeration type in question. 2399-- 2400-- Lit_Strings (Node16) 2401-- Present in enumeration types and subtypes. Non-empty only for the 2402-- case of an enumeration root type, where it contains the entity for 2403-- the literals string entity. See unit Exp_Imgv for full details of 2404-- the nature and use of this entity for implementing the Image and 2405-- Value attributes for the enumeration type in question. 2406 2407-- Machine_Radix_10 (Flag84) 2408-- Present in decimal types and subtypes, set if the Machine_Radix 2409-- is 10, as the result of the specification of a machine radix 2410-- representation clause. Note that it is possible for this flag 2411-- to be set without having Has_Machine_Radix_Clause True. This 2412-- happens when a type is derived from a type with a clause present. 2413 2414-- Master_Id (Node17) 2415-- Present in access types and subtypes. Empty unless Has_Task is 2416-- set for the designated type, in which case it points to the entity 2417-- for the Master_Id for the access type master. 2418 2419-- Materialize_Entity (Flag168) 2420-- Present in all entities. Set only for constant or renamed entities 2421-- which should be materialized for debugging purposes. In the case of 2422-- a constant, a memory location should be allocated containing the 2423-- value. In the case of a renaming, a memory location containing the 2424-- renamed address should be allocated. 2425 2426-- Mechanism (Uint8) (returned as Mechanism_Type) 2427-- Present in functions and non-generic formal parameters. Indicates 2428-- the mechanism to be used for the function return or for the formal 2429-- parameter. See separate section on passing mechanisms. This field 2430-- is also set (to the default value of zero) in a subprogram body 2431-- entity but not used in this context. 2432 2433-- Modulus (Uint17) [base type only] 2434-- Present in modular types. Contains the modulus. For the binary 2435-- case, this will be a power of 2, but if Non_Binary_Modulus is 2436-- set, then it will not be a power of 2. 2437 2438-- Needs_Debug_Info (Flag147) 2439-- Present in all entities. Set if the entity requires debugging 2440-- information to be generated. This is true of all entities that 2441-- have Comes_From_Source set, and also transitively for entities 2442-- associated with such components (e.g. their types). It is true 2443-- for all entities in Debug_Generated_Code mode (-gnatD switch). 2444-- This is the flag that the back end should check to determine 2445-- whether or not to generate debugging information for an entity. 2446 2447-- Needs_No_Actuals (Flag22) 2448-- Present in callable entities (subprograms, entries, access to 2449-- subprograms) which can be called without actuals because all of 2450-- their formals (if any) have default values. This flag simplifies the 2451-- resolution of the syntactic ambiguity involving a call to these 2452-- entities when the return type is an array type, and a call can be 2453-- interpreted as an indexing of the result of the call. It is also 2454-- used to resolve various cases of entry calls. 2455 2456-- Never_Set_In_Source (Flag115) 2457-- Present in all entities, but relevant only for variables and 2458-- parameters. This flag is set if the object is never assigned 2459-- a value in user source code, either by assignment or by the 2460-- use of an initial value, or by some other means. 2461 2462-- This flag is only for the purposes of issuing warnings, it must not 2463-- be used by the code generator to indicate that the variable is in 2464-- fact a constant, since some assignments in generated code do not 2465-- count (for example, the call to an init proc to assign some but 2466-- not all of the fields in a partially initialized record). The code 2467-- generator should instead use the flag Is_True_Constant. 2468-- 2469-- For the purposes of this warning, the default assignment of 2470-- access variables to null is not considered the assignment of 2471-- of a value (so the warning can be given for code that relies 2472-- on this initial null value, when no other value is ever set). 2473-- 2474-- In variables and out parameters, if this flag is set after full 2475-- processing of the corresponding declarative unit, it indicates that 2476-- the variable or parameter was never set, and a warning message can 2477-- be issued. 2478-- 2479-- Note: this flag is initially set, and then cleared on encountering 2480-- any construct that might conceivably legitimately set the value. 2481-- Thus during the analysis of a declarative region and its associated 2482-- statement sequence, the meaning of the flag is "not set yet", and 2483-- once this analysis is complete the flag means "never assigned". 2484 2485-- Note: for variables appearing in package declarations, this flag 2486-- is never set. That is because there is no way to tell if some 2487-- client modifies the variable (or in the case of variables in the 2488-- private part, if some child unit modifies the variables). 2489 2490-- Note: in the case of renamed objects, the flag must be set in the 2491-- ultimate renamed object. Clients noting a possible modification 2492-- should use the Note_Possible_Modification procedure in Sem_Util 2493-- rather than Set_Never_Set_In_Source precisely to deal properly with 2494-- the renaming possibility. 2495 2496-- Next_Component (synthesized) 2497-- Applies to record components. Returns the next component by 2498-- following the chain of declared entities until one is found which 2499-- corresponds to a component (Ekind is E_Component). Any internal types 2500-- generated from the subtype indications of the record components are 2501-- skipped. Returns Empty if no more components. 2502 2503-- Next_Discriminant (synthesized) 2504-- Applies to discriminants returned by First/Next_Discriminant. 2505-- Returns the next language-defined (ie: perhaps non-girder) 2506-- discriminant by following the chain of declared entities as long as 2507-- the kind of the entity corresponds to a discriminant. Note that the 2508-- discriminants might be the only components of the record. 2509-- Returns Empty if there are no more. 2510 2511-- Next_Entity (Node2) 2512-- Present in all entities. The entities of a scope are chained, with 2513-- the head of the list being in the First_Entity field of the scope 2514-- entity. All entities use the Next_Entity field as a forward pointer 2515-- for this list, with Empty indicating the end of the list. Since this 2516-- field is in the base part of the entity, the access routines for this 2517-- field are in Sinfo. 2518 2519-- Next_Formal (synthesized) 2520-- Applies to the entity for a formal parameter. Returns the next 2521-- formal parameter of the subprogram or subprogram type. Returns 2522-- Empty if there are no more formals. 2523 2524-- Next_Formal_With_Extras (synthesized) 2525-- Applies to the entity for a formal parameter. Returns the next 2526-- formal parameter of the subprogram or subprogram type. Returns 2527-- Empty if there are no more formals. The list returned includes 2528-- all the extra formals (see description of Extra_Formal field) 2529 2530-- Next_Girder_Discriminant (synthesized) 2531-- Applies to discriminants. Set only for a discriminant returned by 2532-- a call to First/Next_Girder_Discriminant. Returns next girder 2533-- discriminant, if there are more (see complete description in 2534-- First_Girder_Discriminant), or Empty if there are no more. 2535 2536-- Next_Index (synthesized) 2537-- Applies to array types and subtypes and to string types and 2538-- subtypes. Yields the next index. The first index is obtained by 2539-- using the First_Index attribute, and then subsequent indexes are 2540-- obtained by applying Next_Index to the previous index. Empty is 2541-- returned to indicate that there are no more indexes. Note that 2542-- unlike most attributes in this package, Next_Index applies to 2543-- nodes for the indexes, not to entities. 2544 2545-- Next_Inlined_Subprogram (Node12) 2546-- Present in subprograms. Used to chain inlined subprograms used in 2547-- the current compilation, in the order in which they must be compiled 2548-- by Gigi to insure that all inlinings are performed. 2549 2550-- Next_Literal (synthesized) 2551-- Applies to enumeration literals, returns the next literal, or 2552-- Empty if applied to the last literal. This is actually a synonym 2553-- for Next, but its use is preferred in this context. 2554 2555-- Non_Binary_Modulus (Flag58) [base type only] 2556-- Present in modular integer types. Set if the modulus for the type 2557-- is other than a power of 2. 2558 2559-- Non_Limited_View (Node17) 2560-- Present in incomplete types that are the shadow entities created 2561-- when analyzing a limited_with_clause (Ada0Y: AI-50217). Points to 2562-- the defining entity in the original declaration. 2563 2564-- Nonzero_Is_True (Flag162) [base type only] 2565-- Present in enumeration types. True if any non-zero value is to be 2566-- interpreted as true. Currently this is set true for derived Boolean 2567-- types which have a convention of C, C++ or Fortran. 2568 2569-- No_Pool_Assigned (Flag131) [root type only] 2570-- Present in access types. Set if a storage size clause applies to 2571-- the variable with a compile time known value of zero. This flag is 2572-- used to generate warnings if any attempt is made to allocate or free 2573-- an instance of such an access type. This is set only in the root 2574-- type, since derived types must have the same pool. 2575 2576-- No_Return (Flag113) 2577-- Present in procedure and generic procedure entries. Indicates that 2578-- a pragma No_Return applies to the procedure. 2579 2580-- Normalized_First_Bit (Uint8) 2581-- Present in components and discriminants. Indicates the normalized 2582-- value of First_Bit for the component, i.e. the offset within the 2583-- lowest addressed storage unit containing part or all of the field. 2584-- Set to No_Uint if no first bit position is assigned yet. 2585 2586-- Normalized_Position (Uint14) 2587-- Present in components and discriminants. Indicates the normalized 2588-- value of Position for the component, i.e. the offset in storage 2589-- units from the start of the record to the lowest addressed storage 2590-- unit containing part or all of the field. 2591 2592-- Normalized_Position_Max (Uint10) 2593-- Present in components and discriminants. For almost all cases, this 2594-- is the same as Normalized_Position. The one exception is for the case 2595-- of a discriminated record containing one or more arrays whose length 2596-- depends on discriminants. In this case, the Normalized_Position_Max 2597-- field represents the maximum possible value of Normalized_Position 2598-- assuming min/max values for discriminant subscripts in all fields. 2599-- This is used by Layout in front end layout mode to properly computed 2600-- the maximum size such records (needed for allocation purposes when 2601-- there are default discriminants, and also for the 'Size value). 2602 2603-- Number_Dimensions (synthesized) 2604-- Applies to array types and subtypes. Returns the number of dimensions 2605-- of the array type or subtype as a value of type Pos. 2606 2607-- Number_Discriminants (synthesized) 2608-- Applies to all types with discriminants. Yields the number of 2609-- discriminants as a value of type Pos. 2610 2611-- Number_Entries (synthesized) 2612-- Applies to concurrent types. Returns the number of entries that are 2613-- declared within the task or protected definition for the type. 2614 2615-- Number_Formals (synthesized) 2616-- Applies to subprograms and subprogram types. Yields the number of 2617-- formals as a value of type Pos. 2618 2619-- Original_Array_Type (Node21) 2620-- Present in modular types and array types and subtypes. Set only 2621-- if the Is_Packed_Array_Type flag is set, indicating that the type 2622-- is the implementation type for a packed array, and in this case it 2623-- points to the original array type for which this is the packed 2624-- array implementation type. 2625 2626-- Object_Ref (Node17) 2627-- Present in protected bodies. This is an implicit prival for the 2628-- Protection object associated with a protected object. See Prival 2629-- for further details on the use of privals. 2630 2631-- Original_Record_Component (Node22) 2632-- Present in components, including discriminants. The usage depends 2633-- on whether the record is a base type and whether it is tagged. 2634-- 2635-- In base tagged types: 2636-- When the component is inherited in a record extension, it points 2637-- to the original component (the entity of the ancestor component 2638-- which is not itself inherited) otherwise it points to itself. 2639-- Gigi uses this attribute to implement the automatic dereference in 2640-- the extension and to apply the transformation: 2641-- 2642-- Rec_Ext.Comp -> Rec_Ext.Parent. ... .Parent.Comp 2643-- 2644-- In base non-tagged types: 2645-- Always points to itself except for non-girder discriminants, where 2646-- it points to the girder discriminant it renames. 2647-- 2648-- In subtypes (tagged and untagged): 2649-- Points to the component in the base type. 2650 2651-- Packed_Array_Type (Node23) 2652-- Present in array types and subtypes, including the string literal 2653-- subtype case, if the corresponding type is packed (either bit packed 2654-- or packed to eliminate holes in non-contiguous enumeration type 2655-- index types). References the type used to represent the packed array, 2656-- which is either a modular type for short static arrays, or an 2657-- array of System.Unsigned. Note that in some situations (internal 2658-- types, and references to fields of variant records), it is not 2659-- always possible to construct this type in advance of its use. If 2660-- Packed_Array_Type is empty, then the necessary type is declared 2661-- on the fly for each reference to the array. 2662 2663-- Parameter_Mode (synthesized) 2664-- Applies to formal parameter entities. This is a synonym for Ekind, 2665-- used when obtaining the formal kind of a formal parameter (the result 2666-- is one of E_[In/Out/In_Out]_Paramter) 2667 2668-- Parent_Subtype (Node19) 2669-- Present in E_Record_Type. Points to the subtype to use for a 2670-- field that references the parent record. 2671 2672-- Primitive_Operations (Elist15) 2673-- Present in tagged record types and subtypes and in tagged private 2674-- types. Points to an element list of entities for primitive operations 2675-- for the tagged type. Not present (and not set) in untagged types (it 2676-- is an error to reference the primitive operations field of a type 2677-- that is not tagged). 2678 2679-- Private_Dependents (Elist18) 2680-- Present in private (sub)types. Records the subtypes of the 2681-- private type, derivations from it, and records and arrays 2682-- with components dependent on the type. 2683-- 2684-- The subtypes are traversed when installing and deinstalling 2685-- (the full view of) a private type in order to ensure correct 2686-- view of the subtypes. 2687-- 2688-- Used in similar fashion for incomplete types: holds list of subtypes 2689-- of these incomplete types that have discriminant constraints. The 2690-- full views of these subtypes are constructed when the full view of 2691-- the incomplete type is processed. 2692 2693-- In addition, if the incomplete type is the designated type in an 2694-- access definition for an access parameter, the operation may be 2695-- a dispatching primitive operation, which is only known when the full 2696-- declaration of the type is seen. Subprograms that have such an 2697-- access parameter are also placed in the list of private_dependents. 2698 2699-- Prival (Node17) 2700-- Present in components. Used for representing private declarations 2701-- of protected objects (private formal: by analogy to Discriminal_Link). 2702-- Empty unless the synthesized Is_Protected_Private attribute is 2703-- true. The entity used as a formal parameter that corresponds to 2704-- the to the private declaration in protected operations. See 2705-- "Private data in protected objects" for details. 2706 2707-- Privals_Chain (Elist23) 2708-- Present in protected operations (subprograms and entries). Links 2709-- all occurrences of the Privals in the body of the operation, in 2710-- order to patch their types at the end of their expansion. See 2711-- "Private data in protected objects" for details. 2712 2713-- Private_View (Node22) 2714-- For each private type, three entities are allocated, the private view, 2715-- the full view, and the shadow entity. The shadow entity contains a 2716-- copy of the private view and is used for restoring the proper private 2717-- view after a region in which the full view is visible (and is copied 2718-- into the entity normally used for the private view during this period 2719-- of visibility). The Private_View field is self-referential when the 2720-- private view lives in its normal entity, but in the copy that is made 2721-- in the shadow entity, it points to the proper location in which to 2722-- restore the private view saved in the shadow. 2723 2724-- Protected_Formal (Node22) 2725-- Present in formal parameters (in, in out and out parameters). Used 2726-- only for formals of protected operations. References corresponding 2727-- formal parameter in the unprotected version of the operation that 2728-- is created during expansion. 2729 2730-- Protected_Body_Subprogram (Node11) 2731-- Present in protected operations. References the entity for the 2732-- subprogram which implements the body of the operation. 2733 2734-- Protected_Operation (Node23) 2735-- Present in components. Used for representing private declarations 2736-- of protected objects. Empty unless the synthesized attribute 2737-- Is_Protected_Private is True. This is the entity corresponding 2738-- to the body of the protected operation currently being analyzed, 2739-- and which will eventually use the current Prival associated with 2740-- this component to refer to the renaming of a private object 2741-- component. As soon as the expander generates this renaming, this 2742-- attribute is changed to refer to the next protected subprogram. 2743-- See "Private data in protected objects" for details. 2744 2745-- Reachable (Flag49) 2746-- Present in labels. The flag is set over the range of statements in 2747-- which a goto to that label is legal. 2748 2749-- Referenced (Flag156) 2750-- Present in all entities, set if the entity is referenced, except 2751-- for the case of an appearence of a simple variable that is not a 2752-- renaming, as the left side of an assignment in which case the flag 2753-- Referenced_As_LHS is set instead. 2754 2755-- Referenced_As_LHS (Flag36): This flag is set instead of 2756-- Referenced if a simple variable that is not a renaming appears as 2757-- the left side of an assignment. The reason we distinguish this kind 2758-- of reference is that we have a separate warning for variables that 2759-- are only assigned and never read. 2760 2761-- Referenced_Object (Node10) 2762-- Present in all type entities. Set non-Empty only for type entities 2763-- constructed for unconstrained objects, or objects that depend on 2764-- discriminants. Points to the expression from which the actual 2765-- subtype of the object can be evaluated. 2766 2767-- Register_Exception_Call (Node20) 2768-- Present in exception entities. When an exception is declared, 2769-- a call is expanded to Register_Exception. This field points to 2770-- the expanded N_Procedure_Call_Statement node for this call. It 2771-- is used for Import/Export_Exception processing to modify the 2772-- register call to make appropriate entries in the special tables 2773-- used for handling these pragmas at runtime. 2774 2775-- Related_Array_Object (Node19) 2776-- Present in array types and subtypes. Used only for the base type 2777-- and subtype created for an anonymous array object. Set to point 2778-- to the entity of the corresponding array object. Currently used 2779-- only for type-related error messages. 2780 2781-- Related_Instance (Node15) 2782-- Present in the wrapper packages created for subprogram instances. 2783-- The internal subprogram that implements the instance is inside the 2784-- wrapper package, but for debugging purposes its external symbol 2785-- must correspond to the name and scope of the related instance. 2786 2787-- Renamed_Entity (Node18) 2788-- Present in exceptions, packages and generic units that are defined 2789-- by a renaming declaration. Denotes the renamed entity, or transit- 2790-- itively the ultimate renamed entity if there is a chain of renaming 2791-- declarations. 2792 2793-- Renamed_Object (Node18) 2794-- Present in all objects (constants, variables, components, formal 2795-- parameters, generic formal parameters, and loop parameters). Set 2796-- non-Empty if the object was declared by a renaming declaration, in 2797-- which case it references the tree node for the name of the renamed 2798-- object. This is only possible for the variable and constant cases. 2799-- For formal parameters, this field is used in the course of inline 2800-- expansion, to map the formals of a subprogram into the corresponding 2801-- actuals. For formals of a task entry, it denotes the local renaming 2802-- that replaces the actual within the accept statement. 2803-- The field is Empty otherwise. 2804 2805-- Renaming_Map (Uint9) 2806-- Present in generic subprograms, generic packages, and their 2807-- instances. Also present in the instances of the corresponding 2808-- bodies. Denotes the renaming map (generic entities => instance 2809-- entities) used to construct the instance by givin an index into 2810-- the tables used to represent these maps. See Sem_Ch12 for further 2811-- details. The maps for package instances are also used when the 2812-- instance is the actual corresponding to a formal package. 2813 2814-- Return_Present (Flag54) 2815-- Present in function and generic function entities. Set if the 2816-- function contains a return statement (used for error checking). 2817-- This flag can also be set in procedure and generic procedure 2818-- entities (for convenience in setting it), but is only tested 2819-- for the function case. 2820 2821-- Returns_By_Ref (Flag90) 2822-- Present in function entities, to indicate that the function 2823-- returns the result by reference, either because its return typ is a 2824-- by-reference-type or because it uses explicitly the secondary stack. 2825 2826-- Reverse_Bit_Order (Flag164) [base type only] 2827-- Present in all record type entities. Set if a valid pragma an 2828-- attribute represention clause for Bit_Order has reversed the order 2829-- of bits from the default value. When this flag is set, a component 2830-- clause must specify a set of bits entirely contained in a single 2831-- storage unit. 2832 2833-- RM_Size (Uint13) 2834-- Present in all type and subtype entities. Contains the value of 2835-- type'Size as defined in the RM. See also the Esize field and 2836-- and the description on "Handling of Type'Size Values". A value 2837-- of zero in this field for a non-discrete type means that 2838-- the front end has not yet determined the size value. For the 2839-- case of a discrete type, this field is always set by the front 2840-- end and zero is a legitimate value for a type with one value. 2841 2842-- Root_Type (synthesized) 2843-- Applies to all type entities. For class-wide types, return the root 2844-- type of the class covered by the CW type, otherwise returns the 2845-- ultimate derivation ancestor of the given type. This function 2846-- preserves the view, i.e. the Root_Type of a partial view is the 2847-- partial view of the ulimate ancestor, the Root_Type of a full view 2848-- is the full view of the ultimate ancestor. Note that this function 2849-- does not correspond exactly to the use of root type in the RM, since 2850-- in the RM root type applies to a class of types, not to a type. 2851 2852-- Scalar_Range (Node20) 2853-- Present in all scalar types (including modular types, where the 2854-- bounds are 0 .. modulus - 1). References a node in the tree that 2855-- contains the bounds for the range. Note that this information 2856-- could be obtained by rummaging around the tree, but it is more 2857-- convenient to have it immediately at hand in the entity. The 2858-- contents of Scalar_Range can either be an N_Subtype_Indication 2859-- node (with a constraint), or a Range node, but not a simple 2860-- subtype reference (a subtype is converted into a range). 2861 2862-- Scale_Value (Uint15) 2863-- Present in decimal fixed-point types and subtypes. Contains the scale 2864-- for the type (i.e. the value of type'Scale = the number of decimal 2865-- digits after the decimal point). 2866 2867-- Scope (Node3) 2868-- Present in all entities. Points to the entity for the scope (block, 2869-- loop, subprogram, package etc.) in which the entity is declared. 2870-- Since this field is in the base part of the entity node, the access 2871-- routines for this field are in Sinfo. 2872 2873-- Scope_Depth (synth) 2874-- Applies to program units, blocks, concurrent types and entries, 2875-- and also to record types, i.e. to any entity that can appear on 2876-- the scope stack. Yields the scope depth value, which for those 2877-- entities other than records is simply the scope depth value, 2878-- for record entities, it is the Scope_Depth of the record scope. 2879 2880-- Scope_Depth_Value (Uint22) 2881-- Present in program units, blocks, concurrent types and entries. 2882-- Indicates the number of scopes that statically enclose the 2883-- declaration of the unit or type. Library units have a depth of zero. 2884-- Note that record types can act as scopes but do NOT have this field 2885-- set (see Scope_Depth above) 2886 2887-- Scope_Depth_Set (synthesized) 2888-- Applies to a special predicate function that returns a Boolean value 2889-- indicating whether or not the Scope_Depth field has been set. It 2890-- is needed, since returns an invalid value in this case! 2891 2892-- Sec_Stack_Needed_For_Return (Flag167) 2893-- Present in scope entities (blocks,functions, procedures, tasks, 2894-- entries). Set to True when secondary stack is used to hold 2895-- the returned value of a function and thus should not be 2896-- released on scope exit. 2897 2898-- Shadow_Entities (List14) 2899-- Present in package and generic package entities. Points to a list 2900-- of entities that correspond to private types. For each private type 2901-- a shadow entity is created that holds a copy of the private view. 2902-- In regions of the program where the full views of these private 2903-- entities are visible, the full view is copied into the entity that 2904-- is normally used to hold the private view, but the shadow entity 2905-- copy is unchanged. The shadow entities are then used to restore the 2906-- original private views at the end of the region. This list is a 2907-- standard format list (i.e. First (Shadow_Entities) is the first 2908-- entry and subsequent entries are obtained using Next. 2909 2910-- Shared_Var_Assign_Proc (Node22) 2911-- Present in variables. Set non-Empty only if Is_Shared_Passive is 2912-- set, in which case this is the entity for the shared memory assign 2913-- routine. See Exp_Smem for full details. 2914 2915-- Shared_Var_Read_Proc (Node15) 2916-- Present in variables. Set non-Empty only if Is_Shared_Passive is 2917-- set, in which case this is the entity for the shared memory read 2918-- routine. See Exp_Smem for full details. 2919 2920-- Size_Check_Code (Node19) 2921-- Present in constants and variables. Normally Empty. Set if code is 2922-- generated to check the size of the object. This field is used to 2923-- suppress this code if a subsequent address clause is encountered. 2924 2925-- Size_Clause (synthesized) 2926-- Applies to all entities. If a size clause is present in the rep 2927-- item chain for an entity then the attribute definition clause node 2928-- for the size clause is returned. Otherwise Size_Clause returns Empty 2929-- if no item is present. Usually this is only meaningful if the flag 2930-- Has_Size_Clause is set. This is because when the representation item 2931-- chain is copied for a derived type, it can inherit a size clause that 2932-- is not applicable to the entity. 2933 2934-- Size_Depends_On_Discriminant (Flag177) 2935-- Present in all entities for types and subtypes. Indicates that the 2936-- size of the type depends on the value of one or more discriminants. 2937-- Currently, this flag is only set in front end layout mode for arrays 2938-- which have one or more bounds depending on a discriminant value. 2939 2940-- Size_Known_At_Compile_Time (Flag92) 2941-- Present in all entities for types and subtypes. Indicates that the 2942-- size of objects of the type is known at compile time. This flag is 2943-- used to optimize some generated code sequences, and also to enable 2944-- some error checks (e.g. disallowing component clauses on variable 2945-- length objects. It is set conservatively (i.e. if it is True, the 2946-- size is certainly known at compile time, if it is False, then the 2947-- size may or may not be known at compile time, but the code will 2948-- assume that it is not known). 2949 2950-- Small_Value (Ureal21) 2951-- Present in fixed point types. Points to the universal real for the 2952-- Small of the type, either as given in a representation clause, or 2953-- as computed (as a power of two) by the compiler. 2954 2955-- Spec_Entity (Node19) 2956-- Present in package body entities. Points to corresponding package 2957-- spec entity. Also present in subprogram body parameters in the 2958-- case where there is a separate spec, where this field references 2959-- the corresponding parameter entities in the spec. 2960 2961-- Storage_Size_Variable (Node15) [implementation base type only] 2962-- Present in access types and task type entities. This flag is set 2963-- if a valid and effective pragma Storage_Size applies to the base 2964-- type. Points to the entity for a variable that is created to 2965-- hold the value given in a Storage_Size pragma for an access 2966-- collection or a task type. Note that in the access type case, 2967-- this field is present only in the root type (since derived types 2968-- share the same storage pool). 2969 2970-- Stored_Constraint (Elist23) 2971-- Present in entities that can have discriminants (concurrent types 2972-- subtypes, record types and subtypes, private types and subtypes, 2973-- limited private types and subtypes and incomplete types). Points 2974-- to an element list containing the expressions for each of the 2975-- stored discriminants for the record (sub)type. 2976 2977-- Strict_Alignment (Flag145) [implementation base type only] 2978-- Present in all type entities. Indicates that some containing part 2979-- is either aliased or tagged. This prohibits packing the object 2980-- tighter than its natural size and alignment. 2981 2982-- String_Literal_Length (Uint16) 2983-- Present in string literal subtypes (which are created to correspond 2984-- to string literals in the program). Contains the length of the string 2985-- literal. 2986 2987-- String_Literal_Low_Bound (Node15) 2988-- Present in string literal subtypes (which are created to correspond 2989-- to string literals in the program). Contains an expression whose 2990-- value represents the low bound of the literal. This is a copy of 2991-- the low bound of the applicable index constraint if there is one, 2992-- or a copy of the low bound of the index base type if not. 2993 2994-- Suppress_Elaboration_Warnings (Flag148) 2995-- Present in all entities, relevant only for subprogram entities. If 2996-- this flag is set then Sem_Elab will not generate elaboration warnings 2997-- for the subprogram. Suppression of such warnings is automatic for 2998-- subprograms for which elaboration checks are suppressed (without the 2999-- need to set this flag), but the flag is also set for various internal 3000-- entities (such as init procs) which are known not to generate any 3001-- possible access before elaboration. (we need a clear description of 3002-- how this flag differs in effect from Elaboration_Checks_Suppressed???) 3003 3004-- Suppress_Init_Proc (Flag105) [base type only] 3005-- Present in all type entities. Set to suppress the generation of 3006-- initialization procedures where they are known to be not needed. 3007-- For example, the enumeration image table entity uses this flag. 3008 3009-- Suppress_Style_Checks (Flag165) 3010-- Present in all entities. Suppresses any style checks specifically 3011-- associated with the given entity if set. 3012 3013-- Tag_Component (synthesized) 3014-- Applies to tagged record types, returns the entity for the _Tag 3015-- field in this record, which must be present. 3016 3017-- Treat_As_Volatile (Flag41) 3018-- Present in all type entities, and also in constants, components and 3019-- variables. Set if this entity is to be treated as volatile for code 3020-- generation purposes. Always set if Is_Volatile is set, but can also 3021-- be set as a result of situations (such as address overlays) where 3022-- the front end wishes to force volatile handling to inhibit aliasing 3023-- optimization which might be legally ok, but is undesirable. Note 3024-- that the back end always tests this flag rather than Is_Volatile. 3025-- The front end tests Is_Volatile if it is concerned with legality 3026-- checks associated with declared volatile variables, but if the test 3027-- is for the purposes of suppressing optimizations, then the front 3028-- end should test Treat_As_Volatile rather than Is_Volatile. 3029 3030-- Type_High_Bound (synthesized) 3031-- Applies to scalar types. Returns the tree node (Node_Id) that 3032-- contains the high bound of a scalar type. The returned value is a 3033-- literal for a base type, but may be an expression in the case of a 3034-- scalar type with dynamic bounds. Note that in the case of a fixed 3035-- point type, the high bound is in units of small, and is an integer. 3036 3037-- Type_Low_Bound (synthesized) 3038-- Applies to scalar types. Returns the tree node (Node_Id) that 3039-- contains the low bound of a scalar type. The returned value is a 3040-- literal for a base type, but may be an expression in the case of a 3041-- scalar type with dynamic bounds. Note that in the case of a fixed 3042-- point type, the low bound is in units of small, and is an integer. 3043 3044-- Underlying_Full_View (Node19) 3045-- Present in private subtypes that are the completion of other private 3046-- types, or in private types that are derived from private subtypes. 3047-- If the full view of a private type T is derived from another 3048-- private type with discriminants Td, the full view of T is also 3049-- private, and there is no way to attach to it a further full view that 3050-- would convey the structure of T to the back end. The Underlying_Full_ 3051-- View is an attribute of the full view that is a subtype of Td with 3052-- the same constraint as the declaration for T. The declaration for this 3053-- subtype is built at the point of the declaration of T, either as a 3054-- completion, or as a subtype declaration where the base type is private 3055-- and has a private completion. If Td is already constrained, then its 3056-- full view can serve directly as the full view of T. 3057 3058-- Underlying_Type (synthesized) 3059-- Applies to all entities. This is the identity function except in 3060-- the case where it is applied to an incomplete or private type, 3061-- in which case it is the underlying type of the type declared by 3062-- the completion, or Empty if the completion has not yet been 3063-- encountered and analyzed. 3064-- 3065-- Note: the reason this attribute applies to all entities, and not 3066-- just types, is to legitimize code where Underlying_Type is applied 3067-- to an entity which may or may not be a type, with the intent that 3068-- if it is a type, its underlying type is taken. 3069 3070-- Unset_Reference (Node16) 3071-- Present in variables and out parameters. This is normally Empty. 3072-- It is set to point to an identifier that represents a reference 3073-- to the entity before any value has been set. Only the first such 3074-- reference is identified. This field is used to generate a warning 3075-- message if necessary (see Sem_Warn.Check_Unset_Reference). 3076 3077-- Uses_Sec_Stack (Flag95) 3078-- Present in scope entities (blocks,functions, procedures, tasks, 3079-- entries). Set to True when secondary stack is used in this scope and 3080-- must be released on exit unless Sec_Stack_Needed_For_Return is set. 3081 3082-- Vax_Float (Flag151) [base type only] 3083-- Present in all type entities. Set only on the base type of float 3084-- types with Vax format. The particular format is determined by the 3085-- Digits_Value value which is 6,9,15 for F_Float, D_Float, G_Float. 3086 3087-- Warnings_Off (Flag96) 3088-- Present in all entities. Set if a pragma Warnings (Off, entity-name) 3089-- is used to suppress warnings for a given entity. It is also used by 3090-- the compiler in some situations to kill spurious warnings. 3091 3092 ------------------ 3093 -- Access Kinds -- 3094 ------------------ 3095 3096 -- The following three entity kinds are introduced by the corresponding 3097 -- type definitions: 3098 3099 -- E_Access_Type, E_General_Access_Type, E_Anonymous_Access_Type. 3100 3101 -- In addition, we define the kind E_Allocator_Type to label 3102 -- allocators. This is because special resolution rules apply to this 3103 -- construct. Eventually the constructs are labeled with the access 3104 -- type imposed by the context. Gigi should never see the type 3105 -- E_Allocator. 3106 3107 -- Similarly, the type E_Access_Attribute_Type is used as the initial 3108 -- kind associated with an access attribute. After resolution a specific 3109 -- access type will be established as determined by the context. 3110 3111 -- Finally, the type Any_Access is used to label -null- during type 3112 -- resolution. Any_Access is also replaced by the context type after 3113 -- resolution. 3114 3115 -------------------------------- 3116 -- Classification of Entities -- 3117 -------------------------------- 3118 3119 -- The classification of program entities which follows is a refinement of 3120 -- the list given in RM 3.1(1). E.g., separate entities denote subtypes of 3121 -- different type classes. Ada 95 entities include class wide types, 3122 -- protected types, subprogram types, generalized access types, generic 3123 -- formal derived types and generic formal packages. 3124 3125 -- The order chosen for these kinds allows us to classify related entities 3126 -- so that they are contiguous. As a result, they do not appear in the 3127 -- exact same order as their order of first appearance in the LRM (For 3128 -- example, private types are listed before packages). The contiguity 3129 -- allows us to define useful subtypes (see below) such as type entities, 3130 -- overloaded entities, etc. 3131 3132 -- Each entity (explicitly or implicitly declared) has a kind, which is 3133 -- a value of the following type: 3134 3135 type Entity_Kind is ( 3136 3137 E_Void, 3138 -- The initial Ekind value for a newly created entity. Also used as 3139 -- the Ekind for Standard_Void_Type, a type entity in Standard used 3140 -- as a dummy type for the return type of a procedure (the reason we 3141 -- create this type is to share the circuits for performing overload 3142 -- resolution on calls). 3143 3144 ------------- 3145 -- Objects -- 3146 ------------- 3147 3148 E_Variable, 3149 -- Variables created by an object declaration with no constant keyword 3150 3151 E_Component, 3152 -- Components of a record declaration, private declarations of 3153 -- protected objects. 3154 3155 E_Constant, 3156 -- Constants created by an object declaration with a constant keyword 3157 3158 E_Discriminant, 3159 -- A discriminant, created by the use of a discriminant in a type 3160 -- declaration. 3161 3162 E_Loop_Parameter, 3163 -- A loop parameter created by a for loop 3164 3165 ------------------------ 3166 -- Parameter Entities -- 3167 ------------------------ 3168 3169 -- Parameters are also objects 3170 3171 E_In_Parameter, 3172 -- An in parameter of a subprogram or entry 3173 3174 E_Out_Parameter, 3175 -- An out parameter of a subprogram or entry 3176 3177 E_In_Out_Parameter, 3178 -- An in-out parameter of a subprogram or entry 3179 3180 -------------------------------- 3181 -- Generic Parameter Entities -- 3182 -------------------------------- 3183 3184 -- Generic parameters are also objects 3185 3186 E_Generic_In_Out_Parameter, 3187 -- A generic in out parameter, created by the use of a generic in out 3188 -- parameter in a generic declaration. 3189 3190 E_Generic_In_Parameter, 3191 -- A generic in parameter, created by the use of a generic in 3192 -- parameter in a generic declaration. 3193 3194 ------------------- 3195 -- Named Numbers -- 3196 ------------------- 3197 3198 E_Named_Integer, 3199 -- Named numbers created by a number declaration with an integer value 3200 3201 E_Named_Real, 3202 -- Named numbers created by a number declaration with a real value 3203 3204 ----------------------- 3205 -- Enumeration Types -- 3206 ----------------------- 3207 3208 E_Enumeration_Type, 3209 -- Enumeration types, created by an enumeration type declaration 3210 3211 E_Enumeration_Subtype, 3212 -- Enumeration subtypes, created by an explicit or implicit subtype 3213 -- declaration applied to an enumeration type or subtype. 3214 3215 ------------------- 3216 -- Numeric Types -- 3217 ------------------- 3218 3219 E_Signed_Integer_Type, 3220 -- Signed integer type, used for the anonymous base type of the 3221 -- integer subtype created by an integer type declaration. 3222 3223 E_Signed_Integer_Subtype, 3224 -- Signed integer subtype, created by either an integer subtype or 3225 -- integer type declaration (in the latter case an integer type is 3226 -- created for the base type, and this is the first named subtype). 3227 3228 E_Modular_Integer_Type, 3229 -- Modular integer type, used for the anonymous base type of the 3230 -- integer subtype created by a modular integer type declaration. 3231 3232 E_Modular_Integer_Subtype, 3233 -- Modular integer subtype, created by either an modular subtype 3234 -- or modular type declaration (in the latter case a modular type 3235 -- is created for the base type, and this is the first named subtype). 3236 3237 E_Ordinary_Fixed_Point_Type, 3238 -- Ordinary fixed type, used for the anonymous base type of the 3239 -- fixed subtype created by an ordinary fixed point type declaration. 3240 3241 E_Ordinary_Fixed_Point_Subtype, 3242 -- Ordinary fixed point subtype, created by either an ordinary fixed 3243 -- point subtype or ordinary fixed point type declaration (in the 3244 -- latter case a fixed point type is created for the base type, and 3245 -- this is the first named subtype). 3246 3247 E_Decimal_Fixed_Point_Type, 3248 -- Decimal fixed type, used for the anonymous base type of the decimal 3249 -- fixed subtype created by an ordinary fixed point type declaration. 3250 3251 E_Decimal_Fixed_Point_Subtype, 3252 -- Decimal fixed point subtype, created by either a decimal fixed point 3253 -- subtype or decimal fixed point type declaration (in the latter case 3254 -- a fixed point type is created for the base type, and this is the 3255 -- first named subtype). 3256 3257 E_Floating_Point_Type, 3258 -- Floating point type, used for the anonymous base type of the 3259 -- floating point subtype created by a floating point type declaration. 3260 3261 E_Floating_Point_Subtype, 3262 -- Floating point subtype, created by either a floating point subtype 3263 -- or floating point type declaration (in the latter case a floating 3264 -- point type is created for the base type, and this is the first 3265 -- named subtype). 3266 3267 ------------------ 3268 -- Access Types -- 3269 ------------------ 3270 3271 E_Access_Type, 3272 -- An access type created by an access type declaration with no all 3273 -- keyword present. Note that the predefined type Any_Access, which 3274 -- has E_Access_Type Ekind, is used to label NULL in the upwards pass 3275 -- of type analysis, to be replaced by the true access type in the 3276 -- downwards resolution pass. 3277 3278 E_Access_Subtype, 3279 -- An access subtype created by a subtype declaration for any access 3280 -- type (whether or not it is a general access type). 3281 3282 E_Access_Attribute_Type, 3283 -- An access type created for an access attribute (such as 'Access, 3284 -- 'Unrestricted_Access and Unchecked_Access) 3285 3286 E_Allocator_Type, 3287 -- A special internal type used to label allocators and attribute 3288 -- references using 'Access. This is needed because special resolution 3289 -- rules apply to these constructs. On the resolution pass, this type 3290 -- is always replaced by the actual access type, so Gigi should never 3291 -- see types with this Ekind. 3292 3293 E_General_Access_Type, 3294 -- An access type created by an access type declaration with the all 3295 -- keyword present. 3296 3297 E_Access_Subprogram_Type, 3298 -- An access to subprogram type, created by an access to subprogram 3299 -- declaration. 3300 3301 E_Access_Protected_Subprogram_Type, 3302 -- An access to a protected subprogram, created by the corresponding 3303 -- declaration. Values of such a type denote both a protected object 3304 -- and a protected operation within, and have different compile-time 3305 -- and run-time properties than other access to subprograms. 3306 3307 E_Anonymous_Access_Type, 3308 -- An anonymous access type created by an access parameter or access 3309 -- discriminant. 3310 3311 --------------------- 3312 -- Composite Types -- 3313 --------------------- 3314 3315 E_Array_Type, 3316 -- An array type created by an array type declaration. Includes all 3317 -- cases of arrays, except for string types. 3318 3319 E_Array_Subtype, 3320 -- An array subtype, created by an explicit array subtype declaration, 3321 -- or the use of an anonymous array subtype. 3322 3323 E_String_Type, 3324 -- A string type, i.e. an array type whose component type is a character 3325 -- type, and for which string literals can thus be written. 3326 3327 E_String_Subtype, 3328 -- A string subtype, created by an explicit subtype declaration for a 3329 -- string type, or the use of an anonymous subtype of a string type, 3330 3331 E_String_Literal_Subtype, 3332 -- A special string subtype, used only to describe the type of a string 3333 -- literal (will always be one dimensional, with literal bounds). 3334 3335 E_Class_Wide_Type, 3336 -- A class wide type, created by any tagged type declaration (i.e. if 3337 -- a tagged type is declared, the corresponding class type is always 3338 -- created, using this Ekind value). 3339 3340 E_Class_Wide_Subtype, 3341 -- A subtype of a class wide type, created by a subtype declaration 3342 -- used to declare a subtype of a class type. 3343 3344 E_Record_Type, 3345 -- A record type, created by a record type declaration 3346 3347 E_Record_Subtype, 3348 -- A record subtype, created by a record subtype declaration. 3349 3350 E_Record_Type_With_Private, 3351 -- Used for types defined by a private extension declaration. Includes 3352 -- the fields for both private types and for record types (with the 3353 -- sole exception of Corresponding_Concurrent_Type which is obviously 3354 -- not needed). This entity is considered to be both a record type and 3355 -- a private type. 3356 3357 E_Record_Subtype_With_Private, 3358 -- A subtype of a type defined by a private extension declaration. 3359 3360 E_Private_Type, 3361 -- A private type, created by a private type declaration that does 3362 -- not have the keyword limited. 3363 3364 E_Private_Subtype, 3365 -- A subtype of a private type, created by a subtype declaration used 3366 -- to declare a subtype of a private type. 3367 3368 E_Limited_Private_Type, 3369 -- A limited private type, created by a private type declaration that 3370 -- has the keyword limited. 3371 3372 E_Limited_Private_Subtype, 3373 -- A subtype of a limited private type, created by a subtype declaration 3374 -- used to declare a subtype of a limited private type. 3375 3376 E_Incomplete_Type, 3377 -- An incomplete type, created by an incomplete type declaration 3378 3379 E_Task_Type, 3380 -- A task type, created by a task type declaration. An entity with this 3381 -- Ekind is also created to describe the anonymous type of a task that 3382 -- is created by a single task declaration. 3383 3384 E_Task_Subtype, 3385 -- A subtype of a task type, created by a subtype declaration used to 3386 -- declare a subtype of a task type. 3387 3388 E_Protected_Type, 3389 -- A protected type, created by a protected type declaration. An entity 3390 -- with this Ekind is also created to describe the anonymous type of 3391 -- a protected object created by a single protected declaration. 3392 3393 E_Protected_Subtype, 3394 -- A subtype of a protected type, created by a subtype declaration used 3395 -- to declare a subtype of a protected type. 3396 3397 ----------------- 3398 -- Other Types -- 3399 ----------------- 3400 3401 E_Exception_Type, 3402 -- The type of an exception created by an exception declaration 3403 3404 E_Subprogram_Type, 3405 -- This is the designated type of an Access_To_Subprogram. Has type 3406 -- and signature like a subprogram entity, so can appear in calls, 3407 -- which are resolved like regular calls, except that such an entity 3408 -- is not overloadable. 3409 3410 --------------------------- 3411 -- Overloadable Entities -- 3412 --------------------------- 3413 3414 E_Enumeration_Literal, 3415 -- An enumeration literal, created by the use of the literal in an 3416 -- enumeration type definition. 3417 3418 E_Function, 3419 -- A function, created by a function declaration or a function body 3420 -- that acts as its own declaration. 3421 3422 E_Operator, 3423 -- A predefined operator, appearing in Standard, or an implicitly 3424 -- defined concatenation operator created whenever an array is 3425 -- declared. We do not make normal derived operators explicit in 3426 -- the tree, but the concatenation operators are made explicit. 3427 3428 E_Procedure, 3429 -- A procedure, created by a procedure declaration or a procedure 3430 -- body that acts as its own declaration. 3431 3432 E_Entry, 3433 -- An entry, created by an entry declaration in a task or protected 3434 -- object. 3435 3436 -------------------- 3437 -- Other Entities -- 3438 -------------------- 3439 3440 E_Entry_Family, 3441 -- An entry family, created by an entry family declaration in a 3442 -- task or protected type definition. 3443 3444 E_Block, 3445 -- A block identifier, created by an explicit or implicit label on 3446 -- a block or declare statement. 3447 3448 E_Entry_Index_Parameter, 3449 -- An entry index parameter created by an entry index specification 3450 -- for the body of a protected entry family. 3451 3452 E_Exception, 3453 -- An exception created by an exception declaration. The exception 3454 -- itself uses E_Exception for the Ekind, the implicit type that is 3455 -- created to represent its type uses the Ekind E_Exception_Type. 3456 3457 E_Generic_Function, 3458 -- A generic function. This is the entity for a generic function 3459 -- created by a generic subprogram declaration. 3460 3461 E_Generic_Procedure, 3462 -- A generic function. This is the entity for a generic procedure 3463 -- created by a generic subprogram declaration. 3464 3465 E_Generic_Package, 3466 -- A generic package, this is the entity for a generic package created 3467 -- by a generic package declaration. 3468 3469 E_Label, 3470 -- The defining entity for a label. Note that this is created by the 3471 -- implicit label declaration, not the occurrence of the label itself, 3472 -- which is simply a direct name referring to the label. 3473 3474 E_Loop, 3475 -- A loop identifier, created by an explicit or implicit label on a 3476 -- loop statement. 3477 3478 E_Package, 3479 -- A package, created by a package declaration 3480 3481 E_Package_Body, 3482 -- A package body. This entity serves only limited functions, since 3483 -- most semantic analysis uses the package entity (E_Package). However 3484 -- there are some attributes that are significant for the body entity. 3485 -- For example, collection of exception handlers. 3486 3487 E_Protected_Object, 3488 -- A protected object, created by an object declaration that declares 3489 -- an object of a protected type. 3490 3491 E_Protected_Body, 3492 -- A protected body. This entity serves almost no function, since all 3493 -- semantic analysis uses the protected entity (E_Protected_Type) 3494 3495 E_Task_Body, 3496 -- A task body. This entity serves almost no function, since all 3497 -- semantic analysis uses the protected entity (E_Task_Type). 3498 3499 E_Subprogram_Body 3500 -- A subprogram body. Used when a subprogram has a separate declaration 3501 -- to represent the entity for the body. This entity serves almost no 3502 -- function, since all semantic analysis uses the subprogram entity 3503 -- for the declaration (E_Function or E_Procedure). 3504 ); 3505 3506 for Entity_Kind'Size use 8; 3507 -- The data structures in Atree assume this! 3508 3509 -------------------------- 3510 -- Subtype Declarations -- 3511 -------------------------- 3512 3513 -- The above entities are arranged so that they can be conveniently 3514 -- grouped into subtype ranges. Note that for each of the xxx_Kind 3515 -- ranges defined below, there is a corresponding Is_xxx.. predicate 3516 -- which is to be used in preference to direct range tests using the 3517 -- subtype name. However, the subtype names are available for direct 3518 -- use, e.g. as choices in case statements. 3519 3520 subtype Access_Kind is Entity_Kind range 3521 E_Access_Type .. 3522 -- E_Access_Subtype 3523 -- E_Access_Attribute_Type 3524 -- E_Allocator_Type 3525 -- E_General_Access_Type 3526 -- E_Access_Subprogram_Type 3527 -- E_Access_Protected_Subprogram_Type 3528 E_Anonymous_Access_Type; 3529 3530 subtype Array_Kind is Entity_Kind range 3531 E_Array_Type .. 3532 -- E_Array_Subtype 3533 -- E_String_Type 3534 -- E_String_Subtype 3535 E_String_Literal_Subtype; 3536 3537 subtype Class_Wide_Kind is Entity_Kind range 3538 E_Class_Wide_Type .. 3539 E_Class_Wide_Subtype; 3540 3541 subtype Composite_Kind is Entity_Kind range 3542 E_Array_Type .. 3543 -- E_Array_Subtype 3544 -- E_String_Type 3545 -- E_String_Subtype 3546 -- E_String_Literal_Subtype 3547 -- E_Class_Wide_Type 3548 -- E_Class_Wide_Subtype 3549 -- E_Record_Type 3550 -- E_Record_Subtype 3551 -- E_Record_Type_With_Private 3552 -- E_Record_Subtype_With_Private 3553 -- E_Private_Type 3554 -- E_Private_Subtype 3555 -- E_Limited_Private_Type 3556 -- E_Limited_Private_Subtype 3557 -- E_Incomplete_Type 3558 -- E_Task_Type 3559 -- E_Task_Subtype, 3560 -- E_Protected_Type, 3561 E_Protected_Subtype; 3562 3563 subtype Concurrent_Kind is Entity_Kind range 3564 E_Task_Type .. 3565 -- E_Task_Subtype, 3566 -- E_Protected_Type, 3567 E_Protected_Subtype; 3568 3569 subtype Concurrent_Body_Kind is Entity_Kind range 3570 E_Protected_Body .. 3571 E_Task_Body; 3572 3573 subtype Decimal_Fixed_Point_Kind is Entity_Kind range 3574 E_Decimal_Fixed_Point_Type .. 3575 E_Decimal_Fixed_Point_Subtype; 3576 3577 subtype Digits_Kind is Entity_Kind range 3578 E_Decimal_Fixed_Point_Type .. 3579 -- E_Decimal_Fixed_Point_Subtype 3580 -- E_Floating_Point_Type 3581 E_Floating_Point_Subtype; 3582 3583 subtype Discrete_Kind is Entity_Kind range 3584 E_Enumeration_Type .. 3585 -- E_Enumeration_Subtype 3586 -- E_Signed_Integer_Type 3587 -- E_Signed_Integer_Subtype 3588 -- E_Modular_Integer_Type 3589 E_Modular_Integer_Subtype; 3590 3591 subtype Discrete_Or_Fixed_Point_Kind is Entity_Kind range 3592 E_Enumeration_Type .. 3593 -- E_Enumeration_Subtype 3594 -- E_Signed_Integer_Type 3595 -- E_Signed_Integer_Subtype 3596 -- E_Modular_Integer_Type 3597 -- E_Modular_Integer_Subtype 3598 -- E_Ordinary_Fixed_Point_Type 3599 -- E_Ordinary_Fixed_Point_Subtype 3600 -- E_Decimal_Fixed_Point_Type 3601 E_Decimal_Fixed_Point_Subtype; 3602 3603 subtype Elementary_Kind is Entity_Kind range 3604 E_Enumeration_Type .. 3605 -- E_Enumeration_Subtype 3606 -- E_Signed_Integer_Type 3607 -- E_Signed_Integer_Subtype 3608 -- E_Modular_Integer_Type 3609 -- E_Modular_Integer_Subtype 3610 -- E_Ordinary_Fixed_Point_Type 3611 -- E_Ordinary_Fixed_Point_Subtype 3612 -- E_Decimal_Fixed_Point_Type 3613 -- E_Decimal_Fixed_Point_Subtype 3614 -- E_Floating_Point_Type 3615 -- E_Floating_Point_Subtype 3616 -- E_Access_Type 3617 -- E_Access_Subtype 3618 -- E_Access_Attribute_Type 3619 -- E_Allocator_Type 3620 -- E_General_Access_Type 3621 -- E_Access_Subprogram_Type 3622 -- E_Access_Protected_Subprogram_Type 3623 E_Anonymous_Access_Type; 3624 3625 subtype Enumeration_Kind is Entity_Kind range 3626 E_Enumeration_Type .. 3627 E_Enumeration_Subtype; 3628 3629 subtype Entry_Kind is Entity_Kind range 3630 E_Entry .. 3631 E_Entry_Family; 3632 3633 subtype Fixed_Point_Kind is Entity_Kind range 3634 E_Ordinary_Fixed_Point_Type .. 3635 -- E_Ordinary_Fixed_Point_Subtype 3636 -- E_Decimal_Fixed_Point_Type 3637 E_Decimal_Fixed_Point_Subtype; 3638 3639 subtype Float_Kind is Entity_Kind range 3640 E_Floating_Point_Type .. 3641 E_Floating_Point_Subtype; 3642 3643 subtype Formal_Kind is Entity_Kind range 3644 E_In_Parameter .. 3645 -- E_Out_Parameter 3646 E_In_Out_Parameter; 3647 3648 subtype Generic_Subprogram_Kind is Entity_Kind range 3649 E_Generic_Function .. 3650 E_Generic_Procedure; 3651 3652 subtype Generic_Unit_Kind is Entity_Kind range 3653 E_Generic_Function .. 3654 -- E_Generic_Procedure 3655 E_Generic_Package; 3656 3657 subtype Incomplete_Or_Private_Kind is Entity_Kind range 3658 E_Record_Type_With_Private .. 3659 -- E_Record_Subtype_With_Private 3660 -- E_Private_Type 3661 -- E_Private_Subtype 3662 -- E_Limited_Private_Type 3663 -- E_Limited_Private_Subtype 3664 E_Incomplete_Type; 3665 3666 subtype Integer_Kind is Entity_Kind range 3667 E_Signed_Integer_Type .. 3668 -- E_Signed_Integer_Subtype 3669 -- E_Modular_Integer_Type 3670 E_Modular_Integer_Subtype; 3671 3672 subtype Modular_Integer_Kind is Entity_Kind range 3673 E_Modular_Integer_Type .. 3674 E_Modular_Integer_Subtype; 3675 3676 subtype Named_Kind is Entity_Kind range 3677 E_Named_Integer .. 3678 E_Named_Real; 3679 3680 subtype Numeric_Kind is Entity_Kind range 3681 E_Signed_Integer_Type .. 3682 -- E_Signed_Integer_Subtype 3683 -- E_Modular_Integer_Type 3684 -- E_Modular_Integer_Subtype 3685 -- E_Ordinary_Fixed_Point_Type 3686 -- E_Ordinary_Fixed_Point_Subtype 3687 -- E_Decimal_Fixed_Point_Type 3688 -- E_Decimal_Fixed_Point_Subtype 3689 -- E_Floating_Point_Type 3690 E_Floating_Point_Subtype; 3691 3692 subtype Object_Kind is Entity_Kind range 3693 E_Variable .. 3694 -- E_Component 3695 -- E_Constant 3696 -- E_Discriminant 3697 -- E_Loop_Parameter 3698 -- E_In_Parameter 3699 -- E_Out_Parameter 3700 -- E_In_Out_Parameter 3701 -- E_Generic_In_Out_Parameter 3702 E_Generic_In_Parameter; 3703 3704 subtype Ordinary_Fixed_Point_Kind is Entity_Kind range 3705 E_Ordinary_Fixed_Point_Type .. 3706 E_Ordinary_Fixed_Point_Subtype; 3707 3708 subtype Overloadable_Kind is Entity_Kind range 3709 E_Enumeration_Literal .. 3710 -- E_Function 3711 -- E_Operator 3712 -- E_Procedure 3713 E_Entry; 3714 3715 subtype Private_Kind is Entity_Kind range 3716 E_Record_Type_With_Private .. 3717 -- E_Record_Subtype_With_Private 3718 -- E_Private_Type 3719 -- E_Private_Subtype 3720 -- E_Limited_Private_Type 3721 E_Limited_Private_Subtype; 3722 3723 subtype Protected_Kind is Entity_Kind range 3724 E_Protected_Type .. 3725 E_Protected_Subtype; 3726 3727 subtype Real_Kind is Entity_Kind range 3728 E_Ordinary_Fixed_Point_Type .. 3729 -- E_Ordinary_Fixed_Point_Subtype 3730 -- E_Decimal_Fixed_Point_Type 3731 -- E_Decimal_Fixed_Point_Subtype 3732 -- E_Floating_Point_Type 3733 E_Floating_Point_Subtype; 3734 3735 subtype Record_Kind is Entity_Kind range 3736 E_Class_Wide_Type .. 3737 -- E_Class_Wide_Subtype 3738 -- E_Record_Type 3739 -- E_Record_Subtype 3740 -- E_Record_Type_With_Private 3741 E_Record_Subtype_With_Private; 3742 3743 subtype Scalar_Kind is Entity_Kind range 3744 E_Enumeration_Type .. 3745 -- E_Enumeration_Subtype 3746 -- E_Signed_Integer_Type 3747 -- E_Signed_Integer_Subtype 3748 -- E_Modular_Integer_Type 3749 -- E_Modular_Integer_Subtype 3750 -- E_Ordinary_Fixed_Point_Type 3751 -- E_Ordinary_Fixed_Point_Subtype 3752 -- E_Decimal_Fixed_Point_Type 3753 -- E_Decimal_Fixed_Point_Subtype 3754 -- E_Floating_Point_Type 3755 E_Floating_Point_Subtype; 3756 3757 subtype String_Kind is Entity_Kind range 3758 E_String_Type .. 3759 -- E_String_Subtype 3760 E_String_Literal_Subtype; 3761 3762 subtype Subprogram_Kind is Entity_Kind range 3763 E_Function .. 3764 -- E_Operator 3765 E_Procedure; 3766 3767 subtype Signed_Integer_Kind is Entity_Kind range 3768 E_Signed_Integer_Type .. 3769 E_Signed_Integer_Subtype; 3770 3771 subtype Task_Kind is Entity_Kind range 3772 E_Task_Type .. 3773 E_Task_Subtype; 3774 3775 subtype Type_Kind is Entity_Kind range 3776 E_Enumeration_Type .. 3777 -- E_Enumeration_Subtype 3778 -- E_Signed_Integer_Type 3779 -- E_Signed_Integer_Subtype 3780 -- E_Modular_Integer_Type 3781 -- E_Modular_Integer_Subtype 3782 -- E_Ordinary_Fixed_Point_Type 3783 -- E_Ordinary_Fixed_Point_Subtype 3784 -- E_Decimal_Fixed_Point_Type 3785 -- E_Decimal_Fixed_Point_Subtype 3786 -- E_Floating_Point_Type 3787 -- E_Floating_Point_Subtype 3788 -- E_Access_Type 3789 -- E_Access_Subtype 3790 -- E_Access_Attribute_Type 3791 -- E_Allocator_Type, 3792 -- E_General_Access_Type 3793 -- E_Access_Subprogram_Type, 3794 -- E_Access_Protected_Subprogram_Type 3795 -- E_Anonymous_Access_Type 3796 -- E_Array_Type 3797 -- E_Array_Subtype 3798 -- E_String_Type 3799 -- E_String_Subtype 3800 -- E_String_Literal_Subtype 3801 -- E_Class_Wide_Subtype 3802 -- E_Class_Wide_Type 3803 -- E_Record_Type 3804 -- E_Record_Subtype 3805 -- E_Record_Type_With_Private 3806 -- E_Record_Subtype_With_Private 3807 -- E_Private_Type 3808 -- E_Private_Subtype 3809 -- E_Limited_Private_Type 3810 -- E_Limited_Private_Subtype 3811 -- E_Incomplete_Type 3812 -- E_Task_Type 3813 -- E_Task_Subtype 3814 -- E_Protected_Type 3815 -- E_Protected_Subtype 3816 -- E_Exception_Type 3817 E_Subprogram_Type; 3818 3819 -------------------------------------------------------- 3820 -- Description of Defined Attributes for Entity_Kinds -- 3821 -------------------------------------------------------- 3822 3823 -- For each enumeration value defined in Entity_Kind we list all the 3824 -- attributes defined in Einfo which can legally be applied to an entity 3825 -- of that kind. The implementation of the attribute functions (and for 3826 -- non-synthesized attributes, or the corresponding set procedures) are 3827 -- in the Einfo body. 3828 3829 -- The following attributes apply to all entities 3830 3831 -- Ekind (Ekind) 3832 3833 -- Chars (Name1) 3834 -- Next_Entity (Node2) 3835 -- Scope (Node3) 3836 -- Homonym (Node4) 3837 -- Etype (Node5) 3838 -- First_Rep_Item (Node6) 3839 -- Freeze_Node (Node7) 3840 3841 -- Address_Taken (Flag104) 3842 -- Can_Never_Be_Null (Flag38) 3843 -- Checks_May_Be_Suppressed (Flag31) 3844 -- Debug_Info_Off (Flag166) 3845 -- Has_Convention_Pragma (Flag119) 3846 -- Has_Delayed_Freeze (Flag18) 3847 -- Has_Fully_Qualified_Name (Flag173) 3848 -- Has_Gigi_Rep_Item (Flag82) 3849 -- Has_Homonym (Flag56) 3850 -- Has_Pragma_Elaborate_Body (Flag150) 3851 -- Has_Pragma_Inline (Flag157) 3852 -- Has_Pragma_Unreferenced (Flag180) 3853 -- Has_Private_Declaration (Flag155) 3854 -- Has_Qualified_Name (Flag161) 3855 -- Has_Unknown_Discriminants (Flag72) 3856 -- Has_Xref_Entry (Flag182) 3857 -- Is_Bit_Packed_Array (Flag122) (base type only) 3858 -- Is_Child_Unit (Flag73) 3859 -- Is_Compilation_Unit (Flag149) 3860 -- Is_Completely_Hidden (Flag103) 3861 -- Is_Discrim_SO_Function (Flag176) 3862 -- Is_Dispatching_Operation (Flag6) 3863 -- Is_Exported (Flag99) 3864 -- Is_First_Subtype (Flag70) 3865 -- Is_Formal_Subprogram (Flag111) 3866 -- Is_Generic_Instance (Flag130) 3867 -- Is_Hidden (Flag57) 3868 -- Is_Hidden_Open_Scope (Flag171) 3869 -- Is_Immediately_Visible (Flag7) 3870 -- Is_Imported (Flag24) 3871 -- Is_Inlined (Flag11) 3872 -- Is_Internal (Flag17) 3873 -- Is_Itype (Flag91) 3874 -- Is_Known_Non_Null (Flag37) 3875 -- Is_Known_Valid (Flag170) 3876 -- Is_Limited_Composite (Flag106) 3877 -- Is_Limited_Record (Flag25) 3878 -- Is_Package_Body_Entity (Flag160) 3879 -- Is_Packed_Array_Type (Flag138) 3880 -- Is_Potentially_Use_Visible (Flag9) 3881 -- Is_Preelaborated (Flag59) 3882 -- Is_Public (Flag10) 3883 -- Is_Pure (Flag44) 3884 -- Is_Remote_Call_Interface (Flag62) 3885 -- Is_Remote_Types (Flag61) 3886 -- Is_Shared_Passive (Flag60) 3887 -- Is_Statically_Allocated (Flag28) 3888 -- Is_Unchecked_Union (Flag117) 3889 -- Is_VMS_Exception (Flag133) 3890 -- Kill_Elaboration_Checks (Flag32) 3891 -- Kill_Range_Checks (Flag33) 3892 -- Kill_Tag_Checks (Flag34) 3893 -- Materialize_Entity (Flag168) 3894 -- Needs_Debug_Info (Flag147) 3895 -- Referenced (Flag156) 3896 -- Referenced_As_LHS (Flag36) 3897 -- Suppress_Elaboration_Warnings (Flag148) 3898 -- Suppress_Style_Checks (Flag165) 3899 3900 -- Declaration_Node (synth) 3901 -- Enclosing_Dynamic_Scope (synth) 3902 -- Has_Foreign_Convention (synth) 3903 -- Is_Dynamic_Scope (synth) 3904 -- Is_Limited_Type (synth) 3905 -- Underlying_Type (synth) 3906 -- all classification attributes (synth) 3907 3908 -- The following list of access functions applies to all entities for 3909 -- types and subtypes. References to this list appear subsequently as 3910 -- as "(plus type attributes)" for each appropriate Entity_Kind. 3911 3912 -- Associated_Node_For_Itype (Node8) 3913 -- Class_Wide_Type (Node9) 3914 -- Referenced_Object (Node10) 3915 -- Full_View (Node11) 3916 -- Esize (Uint12) 3917 -- RM_Size (Uint13) 3918 -- Alignment (Uint14) 3919 3920 -- Depends_On_Private (Flag14) 3921 -- Discard_Names (Flag88) 3922 -- Finalize_Storage_Only (Flag158) (base type only) 3923 -- From_With_Type (Flag159) 3924 -- Has_Aliased_Components (Flag135) (base type only) 3925 -- Has_Alignment_Clause (Flag46) 3926 -- Has_Atomic_Components (Flag86) (base type only) 3927 -- Has_Complex_Representation (Flag140) (base type only) 3928 -- Has_Discriminants (Flag5) 3929 -- Has_Non_Standard_Rep (Flag75) (base type only) 3930 -- Has_Object_Size_Clause (Flag172) 3931 -- Has_Primitive_Operations (Flag120) (base type only) 3932 -- Has_Size_Clause (Flag29) 3933 -- Has_Specified_Layout (Flag100) (base type only) 3934 -- Has_Task (Flag30) (base type only) 3935 -- Has_Unchecked_Union (Flag123) (base type only) 3936 -- Has_Volatile_Components (Flag87) (base type only) 3937 -- In_Use (Flag8) 3938 -- Is_Abstract (Flag19) 3939 -- Is_Asynchronous (Flag81) 3940 -- Is_Atomic (Flag85) 3941 -- Is_Constr_Subt_For_U_Nominal (Flag80) 3942 -- Is_Constr_Subt_For_UN_Aliased (Flag141) 3943 -- Is_Controlled (Flag42) (base type only) 3944 -- Is_Eliminated (Flag124) 3945 -- Is_Frozen (Flag4) 3946 -- Is_Generic_Actual_Type (Flag94) 3947 -- Is_Generic_Type (Flag13) 3948 -- Is_Non_Static_Subtype (Flag109) 3949 -- Is_Packed (Flag51) (base type only) 3950 -- Is_Private_Composite (Flag107) 3951 -- Is_Renaming_Of_Object (Flag112) 3952 -- Is_Tagged_Type (Flag55) 3953 -- Is_Unsigned_Type (Flag144) 3954 -- Is_Volatile (Flag16) 3955 -- Size_Depends_On_Discriminant (Flag177) 3956 -- Size_Known_At_Compile_Time (Flag92) 3957 -- Strict_Alignment (Flag145) (base type only) 3958 -- Suppress_Init_Proc (Flag105) (base type only) 3959 -- Treat_As_Volatile (Flag41) 3960 3961 -- Alignment_Clause (synth) 3962 -- Ancestor_Subtype (synth) 3963 -- Base_Type (synth) 3964 -- First_Subtype (synth) 3965 -- Has_Private_Ancestor (synth) 3966 -- Implementation_Base_Type (synth) 3967 -- Is_By_Copy_Type (synth) 3968 -- Is_By_Reference_Type (synth) 3969 -- Is_Return_By_Reference_Type (synth) 3970 -- Root_Type (synth) 3971 -- Size_Clause (synth) 3972 3973 ------------------------------------------ 3974 -- Applicable attributes by entity kind -- 3975 ------------------------------------------ 3976 3977 -- E_Access_Protected_Subprogram_Type 3978 -- Equivalent_Type (Node18) 3979 -- Directly_Designated_Type (Node20) 3980 -- Needs_No_Actuals (Flag22) 3981 -- (plus type attributes) 3982 3983 -- E_Access_Subprogram_Type 3984 -- Equivalent_Type (Node18) (remote types only) 3985 -- Directly_Designated_Type (Node20) 3986 -- Needs_No_Actuals (Flag22) 3987 -- (plus type attributes) 3988 3989 -- E_Access_Type 3990 -- E_Access_Subtype 3991 -- Storage_Size_Variable (Node15) (base type only) 3992 -- Master_Id (Node17) 3993 -- Directly_Designated_Type (Node20) 3994 -- Associated_Storage_Pool (Node22) (base type only) 3995 -- Associated_Final_Chain (Node23) 3996 -- Has_Pragma_Controlled (Flag27) (base type only) 3997 -- Has_Storage_Size_Clause (Flag23) (base type only) 3998 -- Is_Access_Constant (Flag69) 3999 -- No_Pool_Assigned (Flag131) (base type only) 4000 -- (plus type attributes) 4001 4002 -- E_Access_Attribute_Type 4003 -- Directly_Designated_Type (Node20) 4004 -- (plus type attributes) 4005 4006 -- E_Allocator_Type 4007 -- Directly_Designated_Type (Node20) 4008 -- (plus type attributes) 4009 4010 -- E_Anonymous_Access_Type 4011 -- Storage_Size_Variable (Node15) ??? is this needed ??? 4012 -- Directly_Designated_Type (Node20) 4013 -- (plus type attributes) 4014 4015 -- E_Array_Type 4016 -- E_Array_Subtype 4017 -- First_Index (Node17) 4018 -- Related_Array_Object (Node19) 4019 -- Component_Type (Node20) (base type only) 4020 -- Original_Array_Type (Node21) 4021 -- Component_Size (Uint22) (base type only) 4022 -- Packed_Array_Type (Node23) 4023 -- Component_Alignment (special) (base type only) 4024 -- Has_Component_Size_Clause (Flag68) (base type only) 4025 -- Has_Controlled_Component (Flag43) (base type only) 4026 -- Has_Pragma_Pack (Flag121) (base type only) 4027 -- Is_Aliased (Flag15) 4028 -- Is_Constrained (Flag12) 4029 -- Next_Index (synth) 4030 -- Number_Dimensions (synth) 4031 -- (plus type attributes) 4032 4033 -- E_Block 4034 -- Block_Node (Node11) 4035 -- First_Entity (Node17) 4036 -- Last_Entity (Node20) 4037 -- Delay_Cleanups (Flag114) 4038 -- Discard_Names (Flag88) 4039 -- Finalization_Chain_Entity (Node19) 4040 -- Scope_Depth_Value (Uint22) 4041 -- Entry_Cancel_Parameter (Node23) 4042 -- Has_Master_Entity (Flag21) 4043 -- Has_Nested_Block_With_Handler (Flag101) 4044 -- Sec_Stack_Needed_For_Return (Flag167) 4045 -- Uses_Sec_Stack (Flag95) 4046 -- Scope_Depth (synth) 4047 4048 -- E_Class_Wide_Type 4049 -- E_Class_Wide_Subtype 4050 -- Cloned_Subtype (Node16) (subtype case only) 4051 -- First_Entity (Node17) 4052 -- Equivalent_Type (Node18) (always Empty in type case) 4053 -- Last_Entity (Node20) 4054 -- Has_Controlled_Component (Flag43) (base type only) 4055 -- First_Component (synth) 4056 -- (plus type attributes) 4057 4058 -- E_Component 4059 -- Normalized_First_Bit (Uint8) 4060 -- Current_Value (Node9) (always Empty) 4061 -- Normalized_Position_Max (Uint10) 4062 -- Component_Bit_Offset (Uint11) 4063 -- Esize (Uint12) 4064 -- Component_Clause (Node13) 4065 -- Normalized_Position (Uint14) 4066 -- DT_Entry_Count (Uint15) 4067 -- Entry_Formal (Node16) 4068 -- Prival (Node17) 4069 -- Renamed_Object (Node18) (always Empty) 4070 -- Discriminant_Checking_Func (Node20) 4071 -- Interface_Name (Node21) (JGNAT usage only) 4072 -- Original_Record_Component (Node22) 4073 -- Protected_Operation (Node23) 4074 -- Has_Biased_Representation (Flag139) 4075 -- Has_Per_Object_Constraint (Flag154) 4076 -- Is_Atomic (Flag85) 4077 -- Is_Tag (Flag78) 4078 -- Is_Volatile (Flag16) 4079 -- Treat_As_Volatile (Flag41) 4080 -- Is_Protected_Private (synth) 4081 -- Next_Component (synth) 4082 4083 -- E_Constant 4084 -- E_Loop_Parameter 4085 -- Current_Value (Node9) (always Empty) 4086 -- Discriminal_Link (Node10) (discriminals only) 4087 -- Full_View (Node11) 4088 -- Esize (Uint12) 4089 -- Alignment (Uint14) 4090 -- Actual_Subtype (Node17) 4091 -- Renamed_Object (Node18) 4092 -- Size_Check_Code (Node19) (constants only) 4093 -- Interface_Name (Node21) 4094 -- Has_Alignment_Clause (Flag46) 4095 -- Has_Atomic_Components (Flag86) 4096 -- Has_Biased_Representation (Flag139) 4097 -- Has_Size_Clause (Flag29) 4098 -- Has_Volatile_Components (Flag87) 4099 -- Is_Atomic (Flag85) 4100 -- Is_Eliminated (Flag124) 4101 -- Is_Psected (Flag153) 4102 -- Is_True_Constant (Flag163) 4103 -- Is_Volatile (Flag16) 4104 -- Never_Set_In_Source (Flag115) 4105 -- Treat_As_Volatile (Flag41) 4106 -- Address_Clause (synth) 4107 -- Alignment_Clause (synth) 4108 -- Constant_Value (synth) 4109 -- Size_Clause (synth) 4110 4111 -- E_Decimal_Fixed_Point_Type 4112 -- E_Decimal_Fixed_Subtype 4113 -- Scale_Value (Uint15) 4114 -- Digits_Value (Uint17) 4115 -- Scalar_Range (Node20) 4116 -- Delta_Value (Ureal18) 4117 -- Small_Value (Ureal21) 4118 -- Has_Machine_Radix_Clause (Flag83) 4119 -- Machine_Radix_10 (Flag84) 4120 -- Type_Low_Bound (synth) 4121 -- Type_High_Bound (synth) 4122 -- (plus type attributes) 4123 4124 -- E_Discriminant 4125 -- Normalized_First_Bit (Uint8) 4126 -- Current_Value (Node9) (always Empty) 4127 -- Normalized_Position_Max (Uint10) 4128 -- Component_Bit_Offset (Uint11) 4129 -- Esize (Uint12) 4130 -- Component_Clause (Node13) 4131 -- Normalized_Position (Uint14) 4132 -- Discriminant_Number (Uint15) 4133 -- Discriminal (Node17) 4134 -- Renamed_Object (Node18) (always Empty) 4135 -- Corresponding_Discriminant (Node19) 4136 -- Discriminant_Default_Value (Node20) 4137 -- Interface_Name (Node21) (JGNAT usage only) 4138 -- Original_Record_Component (Node22) 4139 -- CR_Discriminant (Node23) 4140 -- Next_Discriminant (synth) 4141 -- Next_Stored_Discriminant (synth) 4142 4143 -- E_Entry 4144 -- E_Entry_Family 4145 -- Protected_Body_Subprogram (Node11) 4146 -- Barrier_Function (Node12) 4147 -- Entry_Parameters_Type (Node15) 4148 -- First_Entity (Node17) 4149 -- Alias (Node18) (Entry only. Always empty) 4150 -- Finalization_Chain_Entity (Node19) 4151 -- Last_Entity (Node20) 4152 -- Accept_Address (Elist21) 4153 -- Scope_Depth_Value (Uint22) 4154 -- Privals_Chain (Elist23) (for a protected entry) 4155 -- Default_Expressions_Processed (Flag108) 4156 -- Entry_Accepted (Flag152) 4157 -- Is_AST_Entry (Flag132) (for entry only) 4158 -- Needs_No_Actuals (Flag22) 4159 -- Sec_Stack_Needed_For_Return (Flag167) 4160 -- Uses_Sec_Stack (Flag95) 4161 -- Address_Clause (synth) 4162 -- First_Formal (synth) 4163 -- Entry_Index_Type (synth) 4164 -- Number_Formals (synth) 4165 -- Scope_Depth (synth) 4166 4167 -- E_Entry_Index_Parameter 4168 -- Entry_Index_Constant (Node18) 4169 4170 -- E_Enumeration_Literal 4171 -- Enumeration_Pos (Uint11) 4172 -- Enumeration_Rep (Uint12) 4173 -- Debug_Renaming_Link (Node13) 4174 -- Alias (Node18) 4175 -- Enumeration_Rep_Expr (Node22) 4176 -- Next_Literal (synth) 4177 4178 -- E_Enumeration_Type 4179 -- E_Enumeration_Subtype 4180 -- Lit_Indexes (Node15) (root type only) 4181 -- Lit_Strings (Node16) (root type only) 4182 -- First_Literal (Node17) 4183 -- Scalar_Range (Node20) 4184 -- Enum_Pos_To_Rep (Node23) (type only, not subtype) 4185 -- Has_Biased_Representation (Flag139) 4186 -- Has_Contiguous_Rep (Flag181) 4187 -- Has_Enumeration_Rep_Clause (Flag66) 4188 -- Nonzero_Is_True (Flag162) (base type only) 4189 -- Type_Low_Bound (synth) 4190 -- Type_High_Bound (synth) 4191 -- (plus type attributes) 4192 4193 -- E_Exception 4194 -- Alignment (Uint14) 4195 -- Renamed_Entity (Node18) 4196 -- Register_Exception_Call (Node20) 4197 -- Interface_Name (Node21) 4198 -- Exception_Code (Uint22) 4199 -- Discard_Names (Flag88) 4200 -- Is_VMS_Exception (Flag133) 4201 4202 -- E_Exception_Type 4203 -- Equivalent_Type (Node18) 4204 -- (plus type attributes) 4205 4206 -- E_Floating_Point_Type 4207 -- E_Floating_Point_Subtype 4208 -- Digits_Value (Uint17) 4209 -- Scalar_Range (Node20) 4210 -- Type_Low_Bound (synth) 4211 -- Type_High_Bound (synth) 4212 -- (plus type attributes) 4213 4214 -- E_Function 4215 -- E_Generic_Function 4216 -- Mechanism (Uint8) (returns Mechanism_Type) 4217 -- Renaming_Map (Uint9) 4218 -- Handler_Records (List10) (non-generic case only) 4219 -- Protected_Body_Subprogram (Node11) 4220 -- Next_Inlined_Subprogram (Node12) 4221 -- Corresponding_Equality (Node13) (implicit /= only) 4222 -- Elaboration_Entity (Node13) (all other cases) 4223 -- First_Optional_Parameter (Node14) (non-generic case only) 4224 -- DT_Position (Uint15) 4225 -- DTC_Entity (Node16) 4226 -- First_Entity (Node17) 4227 -- Alias (Node18) (non-generic case only) 4228 -- Renamed_Entity (Node18) (generic case only) 4229 -- Finalization_Chain_Entity (Node19) 4230 -- Last_Entity (Node20) 4231 -- Interface_Name (Node21) 4232 -- Scope_Depth_Value (Uint22) 4233 -- Generic_Renamings (Elist23) (for an instance) 4234 -- Inner_Instances (Elist23) (for a generic function) 4235 -- Privals_Chain (Elist23) (for a protected function) 4236 -- Body_Needed_For_SAL (Flag40) 4237 -- Elaboration_Entity_Required (Flag174) 4238 -- Function_Returns_With_DSP (Flag169) 4239 -- Default_Expressions_Processed (Flag108) 4240 -- Delay_Cleanups (Flag114) 4241 -- Delay_Subprogram_Descriptors (Flag50) 4242 -- Discard_Names (Flag88) 4243 -- Elaborate_All_Desirable (Flag146) 4244 -- Has_Completion (Flag26) 4245 -- Has_Controlling_Result (Flag98) 4246 -- Has_Master_Entity (Flag21) 4247 -- Has_Missing_Return (Flag142) 4248 -- Has_Nested_Block_With_Handler (Flag101) 4249 -- Has_Pragma_Pure_Function (Flag179) (non-generic case only) 4250 -- Has_Recursive_Call (Flag143) 4251 -- Has_Subprogram_Descriptor (Flag93) 4252 -- Is_Abstract (Flag19) 4253 -- Is_Called (Flag102) (non-generic case only) 4254 -- Is_Constructor (Flag76) 4255 -- Is_Discrim_SO_Function (Flag176) 4256 -- Is_Eliminated (Flag124) 4257 -- Is_Instantiated (Flag126) (generic case only) 4258 -- Is_Intrinsic_Subprogram (Flag64) 4259 -- Is_Machine_Code_Subprogram (Flag137) (non-generic case only) 4260 -- Is_Overriding_Operation (Flag39) (non-generic case only) 4261 -- Is_Private_Descendant (Flag53) 4262 -- Is_Pure (Flag44) 4263 -- Is_Thread_Body (Flag77) (non-generic case only) 4264 -- Is_Visible_Child_Unit (Flag116) 4265 -- Needs_No_Actuals (Flag22) 4266 -- Return_Present (Flag54) 4267 -- Returns_By_Ref (Flag90) 4268 -- Sec_Stack_Needed_For_Return (Flag167) 4269 -- Uses_Sec_Stack (Flag95) 4270 -- Address_Clause (synth) 4271 -- First_Formal (synth) 4272 -- Number_Formals (synth) 4273 -- Scope_Depth (synth) 4274 4275 -- E_General_Access_Type 4276 -- Storage_Size_Variable (Node15) (base type only) 4277 -- Master_Id (Node17) 4278 -- Directly_Designated_Type (Node20) 4279 -- Associated_Storage_Pool (Node22) (base type only) 4280 -- Associated_Final_Chain (Node23) 4281 -- (plus type attributes) 4282 4283 -- E_Generic_In_Parameter 4284 -- E_Generic_In_Out_Parameter 4285 -- Current_Value (Node9) (always Empty) 4286 -- Entry_Component (Node11) 4287 -- Actual_Subtype (Node17) 4288 -- Renamed_Object (Node18) (always Empty) 4289 -- Default_Value (Node20) 4290 -- Protected_Formal (Node22) 4291 -- Is_Controlling_Formal (Flag97) 4292 -- Is_Entry_Formal (Flag52) 4293 -- Parameter_Mode (synth) 4294 4295 -- E_Incomplete_Type 4296 -- Non_Limited_View (Node17) 4297 -- Private_Dependents (Elist18) 4298 -- Discriminant_Constraint (Elist21) 4299 -- Stored_Constraint (Elist23) 4300 -- First_Discriminant (synth) 4301 -- First_Stored_Discriminant (synth) 4302 -- (plus type attributes) 4303 4304 -- E_In_Parameter 4305 -- E_In_Out_Parameter 4306 -- E_Out_Parameter 4307 -- Mechanism (Uint8) (returns Mechanism_Type) 4308 -- Current_Value (Node9) (always Empty for IN case) 4309 -- Discriminal_Link (Node10) (discriminals only) 4310 -- Entry_Component (Node11) 4311 -- Esize (Uint12) 4312 -- Extra_Accessibility (Node13) 4313 -- Alignment (Uint14) 4314 -- Extra_Formal (Node15) 4315 -- Unset_Reference (Node16) 4316 -- Actual_Subtype (Node17) 4317 -- Renamed_Object (Node18) 4318 -- Spec_Entity (Node19) 4319 -- Default_Value (Node20) 4320 -- Default_Expr_Function (Node21) 4321 -- Protected_Formal (Node22) 4322 -- Extra_Constrained (Node23) 4323 -- Is_Controlling_Formal (Flag97) 4324 -- Is_Entry_Formal (Flag52) 4325 -- Is_Optional_Parameter (Flag134) 4326 -- Never_Set_In_Source (Flag115) 4327 -- Parameter_Mode (synth) 4328 4329 -- E_Label 4330 -- Enclosing_Scope (Node18) 4331 -- Reachable (Flag49) 4332 4333 -- E_Limited_Private_Type 4334 -- E_Limited_Private_Subtype 4335 -- First_Entity (Node17) 4336 -- Private_Dependents (Elist18) 4337 -- Underlying_Full_View (Node19) 4338 -- Last_Entity (Node20) 4339 -- Discriminant_Constraint (Elist21) 4340 -- Private_View (Node22) 4341 -- Stored_Constraint (Elist23) 4342 -- Has_Completion (Flag26) 4343 -- Has_Completion_In_Body (Flag71) 4344 -- First_Discriminant (synth) 4345 -- First_Stored_Discriminant (synth) 4346 -- (plus type attributes) 4347 4348 -- E_Loop 4349 -- Has_Exit (Flag47) 4350 -- Has_Master_Entity (Flag21) 4351 -- Has_Nested_Block_With_Handler (Flag101) 4352 4353 -- E_Modular_Integer_Type 4354 -- E_Modular_Integer_Subtype 4355 -- Modulus (Uint17) (base type only) 4356 -- Original_Array_Type (Node21) 4357 -- Scalar_Range (Node20) 4358 -- Non_Binary_Modulus (Flag58) (base type only) 4359 -- Has_Biased_Representation (Flag139) 4360 -- Type_Low_Bound (synth) 4361 -- Type_High_Bound (synth) 4362 -- (plus type attributes) 4363 4364 -- E_Named_Integer 4365 -- Constant_Value (synth) 4366 4367 -- E_Named_Real 4368 -- Constant_Value (synth) 4369 4370 -- E_Operator 4371 -- First_Entity (Node17) 4372 -- Alias (Node18) 4373 -- Last_Entity (Node20) 4374 -- Is_Machine_Code_Subprogram (Flag137) 4375 -- Is_Pure (Flag44) 4376 -- Is_Intrinsic_Subprogram (Flag64) 4377 -- Is_Overriding_Operation (Flag39) 4378 -- Default_Expressions_Processed (Flag108) 4379 -- Has_Pragma_Pure_Function (Flag179) 4380 4381 -- E_Ordinary_Fixed_Point_Type 4382 -- E_Ordinary_Fixed_Point_Subtype 4383 -- Delta_Value (Ureal18) 4384 -- Scalar_Range (Node20) 4385 -- Small_Value (Ureal21) 4386 -- Has_Small_Clause (Flag67) 4387 -- Type_Low_Bound (synth) 4388 -- Type_High_Bound (synth) 4389 -- (plus type attributes) 4390 4391 -- E_Package 4392 -- E_Generic_Package 4393 -- Dependent_Instances (Elist8) (for an instance) 4394 -- Renaming_Map (Uint9) 4395 -- Handler_Records (List10) (non-generic case only) 4396 -- Generic_Homonym (Node11) (generic case only) 4397 -- Associated_Formal_Package (Node12) 4398 -- Elaboration_Entity (Node13) 4399 -- Shadow_Entities (List14) 4400 -- Related_Instance (Node15) (non-generic case only) 4401 -- First_Private_Entity (Node16) 4402 -- First_Entity (Node17) 4403 -- Renamed_Entity (Node18) 4404 -- Body_Entity (Node19) 4405 -- Last_Entity (Node20) 4406 -- Interface_Name (Node21) 4407 -- Scope_Depth_Value (Uint22) 4408 -- Generic_Renamings (Elist23) (for an instance) 4409 -- Inner_Instances (Elist23) (generic case only) 4410 -- Limited_Views (Elist23) (non-generic, not instance) 4411 -- Delay_Subprogram_Descriptors (Flag50) 4412 -- Body_Needed_For_SAL (Flag40) 4413 -- Discard_Names (Flag88) 4414 -- Elaborate_All_Desirable (Flag146) 4415 -- Elaboration_Entity_Required (Flag174) 4416 -- From_With_Type (Flag159) 4417 -- Has_All_Calls_Remote (Flag79) 4418 -- Has_Completion (Flag26) 4419 -- Has_Forward_Instantiation (Flag175) 4420 -- Has_Master_Entity (Flag21) 4421 -- Has_Subprogram_Descriptor (Flag93) 4422 -- In_Package_Body (Flag48) 4423 -- In_Private_Part (Flag45) 4424 -- In_Use (Flag8) 4425 -- Is_Instantiated (Flag126) 4426 -- Is_Private_Descendant (Flag53) 4427 -- Is_Visible_Child_Unit (Flag116) 4428 -- Is_Wrapper_Package (synth) (non-generic case only) 4429 -- Scope_Depth (synth) 4430 4431 -- E_Package_Body 4432 -- Handler_Records (List10) (non-generic case only) 4433 -- Related_Instance (Node15) (non-generic case only) 4434 -- First_Entity (Node17) 4435 -- Spec_Entity (Node19) 4436 -- Last_Entity (Node20) 4437 -- Scope_Depth_Value (Uint22) 4438 -- Scope_Depth (synth) 4439 -- Delay_Subprogram_Descriptors (Flag50) 4440 -- Has_Subprogram_Descriptor (Flag93) 4441 4442 -- E_Private_Type 4443 -- E_Private_Subtype 4444 -- Primitive_Operations (Elist15) 4445 -- First_Entity (Node17) 4446 -- Private_Dependents (Elist18) 4447 -- Underlying_Full_View (Node19) 4448 -- Last_Entity (Node20) 4449 -- Discriminant_Constraint (Elist21) 4450 -- Private_View (Node22) 4451 -- Stored_Constraint (Elist23) 4452 -- Has_Completion (Flag26) 4453 -- Has_Completion_In_Body (Flag71) 4454 -- Is_Controlled (Flag42) (base type only) 4455 -- Is_For_Access_Subtype (Flag118) (subtype only) 4456 -- First_Discriminant (synth) 4457 -- First_Stored_Discriminant (synth) 4458 -- (plus type attributes) 4459 4460 -- E_Procedure 4461 -- E_Generic_Procedure 4462 -- Renaming_Map (Uint9) 4463 -- Handler_Records (List10) (non-generic case only) 4464 -- Protected_Body_Subprogram (Node11) 4465 -- Next_Inlined_Subprogram (Node12) 4466 -- Elaboration_Entity (Node13) 4467 -- First_Optional_Parameter (Node14) (non-generic case only) 4468 -- DT_Position (Uint15) 4469 -- DTC_Entity (Node16) 4470 -- First_Entity (Node17) 4471 -- Alias (Node18) (non-generic case only) 4472 -- Renamed_Entity (Node18) (generic case only) 4473 -- Finalization_Chain_Entity (Node19) 4474 -- Last_Entity (Node20) 4475 -- Interface_Name (Node21) 4476 -- Scope_Depth_Value (Uint22) 4477 -- Scope_Depth (synth) 4478 -- Generic_Renamings (Elist23) (for an instance) 4479 -- Inner_Instances (Elist23) (for a generic procedure) 4480 -- Privals_Chain (Elist23) (for a protected procedure) 4481 -- Body_Needed_For_SAL (Flag40) 4482 -- Elaboration_Entity_Required (Flag174) 4483 -- Function_Returns_With_DSP (Flag169) (always False for procedure) 4484 -- Default_Expressions_Processed (Flag108) 4485 -- Delay_Cleanups (Flag114) 4486 -- Delay_Subprogram_Descriptors (Flag50) 4487 -- Discard_Names (Flag88) 4488 -- Elaborate_All_Desirable (Flag146) 4489 -- Has_Completion (Flag26) 4490 -- Has_Master_Entity (Flag21) 4491 -- Has_Nested_Block_With_Handler (Flag101) 4492 -- Has_Pragma_Pure_Function (Flag179) (non-generic case only) 4493 -- Has_Subprogram_Descriptor (Flag93) 4494 -- Is_Visible_Child_Unit (Flag116) 4495 -- Is_Abstract (Flag19) 4496 -- Is_Asynchronous (Flag81) 4497 -- Is_Called (Flag102) (non-generic subprogram) 4498 -- Is_Constructor (Flag76) 4499 -- Is_Eliminated (Flag124) 4500 -- Is_Instantiated (Flag126) (generic case only) 4501 -- Is_Interrupt_Handler (Flag89) 4502 -- Is_Intrinsic_Subprogram (Flag64) 4503 -- Is_Machine_Code_Subprogram (Flag137) (non-generic case only) 4504 -- Is_Null_Init_Proc (Flag178) 4505 -- Is_Overriding_Operation (Flag39) (non-generic case only) 4506 -- Is_Private_Descendant (Flag53) 4507 -- Is_Pure (Flag44) 4508 -- Is_Thread_Body (Flag77) (non-generic case only) 4509 -- Is_Valued_Procedure (Flag127) 4510 -- Is_Visible_Child_Unit (Flag116) 4511 -- Needs_No_Actuals (Flag22) 4512 -- No_Return (Flag113) 4513 -- Sec_Stack_Needed_For_Return (Flag167) 4514 -- Address_Clause (synth) 4515 -- First_Formal (synth) 4516 -- Number_Formals (synth) 4517 4518 -- E_Protected_Body 4519 -- Object_Ref (Node17) 4520 -- (any others??? First/Last Entity, Scope_Depth???) 4521 4522 -- E_Protected_Object 4523 4524 -- E_Protected_Type 4525 -- E_Protected_Subtype 4526 -- Entry_Bodies_Array (Node15) 4527 -- First_Private_Entity (Node16) 4528 -- First_Entity (Node17) 4529 -- Corresponding_Record_Type (Node18) 4530 -- Finalization_Chain_Entity (Node19) 4531 -- Last_Entity (Node20) 4532 -- Discriminant_Constraint (Elist21) 4533 -- Scope_Depth_Value (Uint22) 4534 -- Scope_Depth (synth) 4535 -- Stored_Constraint (Elist23) 4536 -- Has_Controlled_Component (Flag43) (base type only) 4537 -- Has_Interrupt_Handler (synth) 4538 -- Sec_Stack_Needed_For_Return (Flag167) ??? 4539 -- Uses_Sec_Stack (Flag95) ??? 4540 -- Has_Entries (synth) 4541 -- Number_Entries (synth) 4542 4543 -- E_Record_Type 4544 -- E_Record_Subtype 4545 -- Primitive_Operations (Elist15) 4546 -- Access_Disp_Table (Node16) (base type only) 4547 -- Cloned_Subtype (Node16) (subtype case only) 4548 -- First_Entity (Node17) 4549 -- Corresponding_Concurrent_Type (Node18) 4550 -- Parent_Subtype (Node19) 4551 -- Last_Entity (Node20) 4552 -- Discriminant_Constraint (Elist21) 4553 -- Corresponding_Remote_Type (Node22) 4554 -- Stored_Constraint (Elist23) 4555 -- Component_Alignment (special) (base type only) 4556 -- C_Pass_By_Copy (Flag125) (base type only) 4557 -- Has_Controlled_Component (Flag43) (base type only) 4558 -- Has_External_Tag_Rep_Clause (Flag110) 4559 -- Has_Record_Rep_Clause (Flag65) (base type only) 4560 -- Is_Class_Wide_Equivalent_Type (Flag35) 4561 -- Is_Concurrent_Record_Type (Flag20) 4562 -- Is_Constrained (Flag12) 4563 -- Is_Controlled (Flag42) (base type only) 4564 -- Reverse_Bit_Order (Flag164) (base type only) 4565 -- First_Component (synth) 4566 -- First_Discriminant (synth) 4567 -- First_Stored_Discriminant (synth) 4568 -- Tag_Component (synth) 4569 -- (plus type attributes) 4570 4571 -- E_Record_Type_With_Private 4572 -- E_Record_Subtype_With_Private 4573 -- Primitive_Operations (Elist15) 4574 -- Access_Disp_Table (Node16) (base type only) 4575 -- First_Entity (Node17) 4576 -- Private_Dependents (Elist18) 4577 -- Underlying_Full_View (Node19) 4578 -- Last_Entity (Node20) 4579 -- Discriminant_Constraint (Elist21) 4580 -- Private_View (Node22) 4581 -- Stored_Constraint (Elist23) 4582 -- Has_Completion (Flag26) 4583 -- Has_Completion_In_Body (Flag71) 4584 -- Has_Controlled_Component (Flag43) (base type only) 4585 -- Has_Record_Rep_Clause (Flag65) (base type only) 4586 -- Has_External_Tag_Rep_Clause (Flag110) 4587 -- Is_Concurrent_Record_Type (Flag20) 4588 -- Is_Constrained (Flag12) 4589 -- Is_Controlled (Flag42) (base type only) 4590 -- Reverse_Bit_Order (Flag164) (base type only) 4591 -- First_Component (synth) 4592 -- First_Discriminant (synth) 4593 -- First_Stored_Discriminant (synth) 4594 -- Tag_Component (synth) 4595 -- (plus type attributes) 4596 4597 -- E_Signed_Integer_Type 4598 -- E_Signed_Integer_Subtype 4599 -- Scalar_Range (Node20) 4600 -- Has_Biased_Representation (Flag139) 4601 -- Type_Low_Bound (synth) 4602 -- Type_High_Bound (synth) 4603 -- (plus type attributes) 4604 4605 -- E_String_Type 4606 -- E_String_Subtype 4607 -- First_Index (Node17) 4608 -- Component_Type (Node20) (base type only) 4609 -- Is_Constrained (Flag12) 4610 -- Next_Index (synth) 4611 -- Number_Dimensions (synth) 4612 -- (plus type attributes) 4613 4614 -- E_String_Literal_Subtype 4615 -- String_Literal_Low_Bound (Node15) 4616 -- String_Literal_Length (Uint16) 4617 -- First_Index (Node17) (always Empty) 4618 -- Packed_Array_Type (Node23) 4619 -- (plus type attributes) 4620 4621 -- E_Subprogram_Body 4622 -- Mechanism (Uint8) 4623 -- First_Entity (Node17) 4624 -- Last_Entity (Node20) 4625 -- Scope_Depth_Value (Uint22) 4626 -- Scope_Depth (synth) 4627 4628 -- E_Subprogram_Type 4629 -- Directly_Designated_Type (Node20) 4630 -- First_Formal (synth) 4631 -- Number_Formals (synth) 4632 -- Function_Returns_With_DSP (Flag169) 4633 -- (plus type attributes) 4634 4635 -- E_Task_Body 4636 -- (any others??? First/Last Entity, Scope_Depth???) 4637 4638 -- E_Task_Type 4639 -- E_Task_Subtype 4640 -- Storage_Size_Variable (Node15) (base type only) 4641 -- First_Private_Entity (Node16) 4642 -- First_Entity (Node17) 4643 -- Corresponding_Record_Type (Node18) 4644 -- Finalization_Chain_Entity (Node19) 4645 -- Last_Entity (Node20) 4646 -- Discriminant_Constraint (Elist21) 4647 -- Scope_Depth_Value (Uint22) 4648 -- Scope_Depth (synth) 4649 -- Stored_Constraint (Elist23) 4650 -- Delay_Cleanups (Flag114) 4651 -- Has_Master_Entity (Flag21) 4652 -- Has_Storage_Size_Clause (Flag23) (base type only) 4653 -- Uses_Sec_Stack (Flag95) ??? 4654 -- Sec_Stack_Needed_For_Return (Flag167) ??? 4655 -- Has_Entries (synth) 4656 -- Number_Entries (synth) 4657 -- (plus type attributes) 4658 4659 -- E_Variable 4660 -- Hiding_Loop_Variable (Node8) 4661 -- Current_Value (Node9) 4662 -- Esize (Uint12) 4663 -- Extra_Accessibility (Node13) 4664 -- Alignment (Uint14) 4665 -- Shared_Var_Read_Proc (Node15) 4666 -- Unset_Reference (Node16) 4667 -- Actual_Subtype (Node17) 4668 -- Renamed_Object (Node18) 4669 -- Size_Check_Code (Node19) 4670 -- Interface_Name (Node21) 4671 -- Shared_Var_Assign_Proc (Node22) 4672 -- Extra_Constrained (Node23) 4673 -- Has_Alignment_Clause (Flag46) 4674 -- Has_Atomic_Components (Flag86) 4675 -- Has_Biased_Representation (Flag139) 4676 -- Has_Size_Clause (Flag29) 4677 -- Has_Volatile_Components (Flag87) 4678 -- Is_Atomic (Flag85) 4679 -- Is_Eliminated (Flag124) 4680 -- Is_Psected (Flag153) 4681 -- Is_Shared_Passive (Flag60) 4682 -- Is_True_Constant (Flag163) 4683 -- Is_Volatile (Flag16) 4684 -- Never_Set_In_Source (Flag115) 4685 -- Treat_As_Volatile (Flag41) 4686 -- Address_Clause (synth) 4687 -- Alignment_Clause (synth) 4688 -- Constant_Value (synth) 4689 -- Size_Clause (synth) 4690 4691 -- E_Void 4692 -- Since E_Void is the initial Ekind value of an entity when it is first 4693 -- created, one might expect that no attributes would be defined on such 4694 -- an entity until its Ekind field is set. However, in practice, there 4695 -- are many instances in which fields of an E_Void entity are set in the 4696 -- code prior to setting the Ekind field. This is not well documented or 4697 -- well controlled, and needs cleaning up later. Meanwhile, the access 4698 -- procedures in the body of Einfo permit many, but not all, attributes 4699 -- to be applied to an E_Void entity, precisely so that this kind of 4700 -- pre-setting of attributes works. This is really a hole in the dynamic 4701 -- type checking, since there is no assurance that the eventual Ekind 4702 -- value will be appropriate for the attributes set, and the consequence 4703 -- is that the dynamic type checking in the Einfo body is unnecessarily 4704 -- weak. To be looked at systematically some time ??? 4705 4706 --------------------------------- 4707 -- Component_Alignment Control -- 4708 --------------------------------- 4709 4710 -- There are four types of alignment possible for array and record 4711 -- types, and a field in the type entities contains a value of the 4712 -- following type indicating which alignment choice applies. For full 4713 -- details of the meaning of these aligment types, see description 4714 -- of the Component_Alignment pragma 4715 4716 type Component_Alignment_Kind is ( 4717 Calign_Default, -- default alignment 4718 Calign_Component_Size, -- natural alignment for component size 4719 Calign_Component_Size_4, -- natural for size <= 4, 4 for size >= 4 4720 Calign_Storage_Unit); -- all components byte aligned 4721 4722 --------------- 4723 -- Iterators -- 4724 --------------- 4725 4726 -- In addition to attributes that are stored as plain data, other 4727 -- attributes are procedural, and require some small amount of 4728 -- computation. Of course, from the point of view of a user of this 4729 -- package, the distinction is not visible (even the field information 4730 -- provided below should be disregarded, as it is subject to change 4731 -- without notice!). A number of attributes appear as lists: lists of 4732 -- formals, lists of actuals, of discriminants, etc. For these, pairs 4733 -- of functions are defined, which take the form: 4734 4735 -- function First_Thing (E : Enclosing_Construct) return Thing; 4736 -- function Next_Thing (T : Thing) return Thing; 4737 4738 -- The end of iteration is always signaled by a value of Empty, so that 4739 -- loops over these chains invariably have the form: 4740 4741 -- This : Thing; 4742 -- ... 4743 -- This := First_Thing (E); 4744 4745 -- while Present (This) loop 4746 -- Do_Something_With (This); 4747 -- ... 4748 -- This := Next_Thing (This); 4749 -- end loop; 4750 4751 ----------------------------------- 4752 -- Handling of Check Suppression -- 4753 ----------------------------------- 4754 4755 -- There are three ways that checks can be suppressed: 4756 4757 -- 1. At the command line level 4758 -- 2. At the scope level. 4759 -- 3. At the entity level. 4760 4761 -- See spec of Sem in sem.ads for details of the data structures used 4762 -- to keep track of these various methods for suppressing checks. 4763 4764 ------------------------------- 4765 -- Handling of Discriminants -- 4766 ------------------------------- 4767 4768 -- During semantic processing, discriminants are separate entities which 4769 -- reflect the semantic properties and allowed usage of discriminants in 4770 -- the language. 4771 4772 -- In the case of discriminants used as bounds, the references are handled 4773 -- directly, since special processing is needed in any case. However, there 4774 -- are two circumstances in which discriminants are referenced in a quite 4775 -- general manner, like any other variables: 4776 4777 -- In initialization expressions for records. Note that the expressions 4778 -- used in Priority, Storage_Size, and Task_Info pragmas are effectively 4779 -- in this category, since these pragmas are converted to initialized 4780 -- record fields in the Corresponding_Record_Type. 4781 4782 -- In task and protected bodies, where the discriminant values may be 4783 -- referenced freely within these bodies. Discriminants can also appear 4784 -- in bounds of entry families and in defaults of operations. 4785 4786 -- In both these cases, the discriminants must be treated essentially as 4787 -- objects. The following approach is used to simplify and minimize the 4788 -- special processing that is required. 4789 4790 -- When a record type with discriminants is processed, the semantic 4791 -- processing creates the entities for the discriminants. It also creates 4792 -- an additional set of entities, called discriminals, one for each of 4793 -- the discriminants, and the Discriminal field of the discriminant entity 4794 -- points to this additional entity, which is initially created as an 4795 -- uninitialized (E_Void) entity. 4796 4797 -- During expansion of expressions, any discriminant reference is replaced 4798 -- by a reference to the corresponding discriminal. When the initialization 4799 -- procedure for the record is created (there will always be one, since 4800 -- discriminants are present, see Exp_Ch3 for further details), the 4801 -- discriminals are used as the entities for the formal parameters of 4802 -- this initialization procedure. The references to these discriminants 4803 -- have already been replaced by references to these discriminals, which 4804 -- are now the formal parameters corresponding to the required objects. 4805 4806 -- In the case of a task or protected body, the semantics similarly 4807 -- creates a set of discriminals for the discriminants of the task or 4808 -- protected type. When the procedure is created for the task body, 4809 -- the parameter passed in is a reference to the task value type, which 4810 -- contains the required discriminant values. The expander creates a 4811 -- set of declarations of the form: 4812 4813 -- discriminal : constant dtype renames _Task.discriminant; 4814 4815 -- where discriminal is the discriminal entity referenced by the task 4816 -- discriminant, and _Task is the task value passed in as the parameter. 4817 -- Again, any references to discriminants in the task body have been 4818 -- replaced by the discriminal reference, which is now an object that 4819 -- contains the required value. 4820 4821 -- This approach for tasks means that two sets of discriminals are needed 4822 -- for a task type, one for the initialization procedure, and one for the 4823 -- task body. This works out nicely, since the semantics allocates one set 4824 -- for the task itself, and one set for the corresponding record. 4825 4826 -- The one bit of trickiness arises in making sure that the right set of 4827 -- discriminals is used at the right time. First the task definition is 4828 -- processed. Any references to discriminants here are replaced by the 4829 -- the corresponding *task* discriminals (the record type doesn't even 4830 -- exist yet, since it is constructed as part of the expansion of the 4831 -- task declaration, which happens after the semantic processing of the 4832 -- task definition). The discriminants to be used for the corresponding 4833 -- record are created at the same time as the other discriminals, and 4834 -- held in the CR_Discriminant field of the discriminant. A use of the 4835 -- discriminant in a bound for an entry family is replaced with the CR_ 4836 -- discriminant because it controls the bound of the entry queue array 4837 -- which is a component of the corresponding record. 4838 4839 -- Just before the record initialization routine is constructed, the 4840 -- expander exchanges the task and record discriminals. This has two 4841 -- effects. First the generation of the record initialization routine 4842 -- uses the discriminals that are now on the record, which is the set 4843 -- that used to be on the task, which is what we want. 4844 4845 -- Second, a new set of (so far unused) discriminals is now on the task 4846 -- discriminants, and it is this set that will be used for expanding the 4847 -- task body, and also for the discriminal declarations at the start of 4848 -- the task body. 4849 4850 --------------------------------------- 4851 -- Private data in protected objects -- 4852 --------------------------------------- 4853 4854 -- Private object declarations in protected types pose problems 4855 -- similar to those of discriminants. They are expanded to components 4856 -- of a record which is passed as the parameter "_object" to expanded 4857 -- forms of all protected operations. As with discriminants, timing 4858 -- of this expansion is a problem. The sequence of statements for a 4859 -- protected operation is expanded before the operation itself, so the 4860 -- formal parameter for the record object containing the private data 4861 -- does not exist when the references to that data are expanded. 4862 4863 -- For this reason, private data is handled in the same way as 4864 -- discriminants, expanding references to private data in protected 4865 -- operations (which appear as components) to placeholders which will 4866 -- eventually become renamings of the private selected components 4867 -- of the "_object" formal parameter. These placeholders are called 4868 -- "privals", by analogy to the "discriminals" used to implement 4869 -- discriminants. They are attached to the component declaration nodes 4870 -- representing the private object declarations of the protected type. 4871 4872 -- As with discriminals, each protected subprogram needs a unique set 4873 -- of privals, since they must refer to renamings of components of a 4874 -- formal parameter of that operation. Entry bodies need another set, 4875 -- which they all share and which is associated with renamings in the 4876 -- Service_Entries procedure for the protected type (this is not yet 4877 -- implemented???). This means that we must associate a new set of 4878 -- privals (and discriminals) with the private declarations after 4879 -- the body of a protected subprogram is processed. 4880 4881 -- The last complication is the presence of discriminants and discriminated 4882 -- components. In the corresponding record, the components are constrained 4883 -- by the discriminants of the record, but within each protected operation 4884 -- they are constrained by the discriminants of the actual. The actual 4885 -- subtypes of those components are constructed as for other unconstrained 4886 -- formals, but the privals are created before the formal object is added 4887 -- to the parameter list of the protected operation, so they carry the 4888 -- nominal subtype of the original component. After the protected operation 4889 -- is actually created (in the expansion of the protected body) we must 4890 -- patch the types of each prival occurrence with the proper actual subtype 4891 -- which is by now set. The Privals_Chain is used for this patching. 4892 4893 ------------------- 4894 -- Type Synonyms -- 4895 ------------------- 4896 4897 -- The following type synonyms are used to tidy up the function and 4898 -- procedure declarations that follow, and also to make it possible 4899 -- to meet the requirement for the XEINFO utility that all function 4900 -- specs must fit on a single source line. 4901 4902 subtype B is Boolean; 4903 subtype C is Component_Alignment_Kind; 4904 subtype E is Entity_Id; 4905 subtype M is Mechanism_Type; 4906 subtype N is Node_Id; 4907 subtype U is Uint; 4908 subtype R is Ureal; 4909 subtype L is Elist_Id; 4910 subtype S is List_Id; 4911 4912 --------------------------------- 4913 -- Attribute Access Functions -- 4914 --------------------------------- 4915 4916 -- All attributes are manipulated through a procedural interface. This 4917 -- section contains the functions used to obtain attribute values which 4918 -- correspond to values in fields or flags in the entity itself. 4919 4920 function Accept_Address (Id : E) return L; 4921 function Access_Disp_Table (Id : E) return E; 4922 function Actual_Subtype (Id : E) return E; 4923 function Address_Taken (Id : E) return B; 4924 function Alias (Id : E) return E; 4925 function Alignment (Id : E) return U; 4926 function Associated_Final_Chain (Id : E) return E; 4927 function Associated_Formal_Package (Id : E) return E; 4928 function Associated_Node_For_Itype (Id : E) return N; 4929 function Associated_Storage_Pool (Id : E) return E; 4930 function Barrier_Function (Id : E) return N; 4931 function Block_Node (Id : E) return N; 4932 function Body_Entity (Id : E) return E; 4933 function Body_Needed_For_SAL (Id : E) return B; 4934 function CR_Discriminant (Id : E) return E; 4935 function C_Pass_By_Copy (Id : E) return B; 4936 function Can_Never_Be_Null (Id : E) return B; 4937 function Checks_May_Be_Suppressed (Id : E) return B; 4938 function Class_Wide_Type (Id : E) return E; 4939 function Cloned_Subtype (Id : E) return E; 4940 function Component_Alignment (Id : E) return C; 4941 function Component_Clause (Id : E) return N; 4942 function Component_Bit_Offset (Id : E) return U; 4943 function Component_Size (Id : E) return U; 4944 function Component_Type (Id : E) return E; 4945 function Corresponding_Concurrent_Type (Id : E) return E; 4946 function Corresponding_Discriminant (Id : E) return E; 4947 function Corresponding_Equality (Id : E) return E; 4948 function Corresponding_Record_Type (Id : E) return E; 4949 function Corresponding_Remote_Type (Id : E) return E; 4950 function Current_Value (Id : E) return N; 4951 function Debug_Info_Off (Id : E) return B; 4952 function Debug_Renaming_Link (Id : E) return E; 4953 function DTC_Entity (Id : E) return E; 4954 function DT_Entry_Count (Id : E) return U; 4955 function DT_Position (Id : E) return U; 4956 function Default_Expr_Function (Id : E) return E; 4957 function Default_Expressions_Processed (Id : E) return B; 4958 function Default_Value (Id : E) return N; 4959 function Delay_Cleanups (Id : E) return B; 4960 function Delay_Subprogram_Descriptors (Id : E) return B; 4961 function Delta_Value (Id : E) return R; 4962 function Dependent_Instances (Id : E) return L; 4963 function Depends_On_Private (Id : E) return B; 4964 function Digits_Value (Id : E) return U; 4965 function Directly_Designated_Type (Id : E) return E; 4966 function Discard_Names (Id : E) return B; 4967 function Discriminal (Id : E) return E; 4968 function Discriminal_Link (Id : E) return E; 4969 function Discriminant_Checking_Func (Id : E) return E; 4970 function Discriminant_Constraint (Id : E) return L; 4971 function Discriminant_Default_Value (Id : E) return N; 4972 function Discriminant_Number (Id : E) return U; 4973 function Elaborate_All_Desirable (Id : E) return B; 4974 function Elaboration_Entity (Id : E) return E; 4975 function Elaboration_Entity_Required (Id : E) return B; 4976 function Enclosing_Scope (Id : E) return E; 4977 function Entry_Accepted (Id : E) return B; 4978 function Entry_Bodies_Array (Id : E) return E; 4979 function Entry_Cancel_Parameter (Id : E) return E; 4980 function Entry_Component (Id : E) return E; 4981 function Entry_Formal (Id : E) return E; 4982 function Entry_Index_Constant (Id : E) return E; 4983 function Entry_Index_Type (Id : E) return E; 4984 function Entry_Parameters_Type (Id : E) return E; 4985 function Enum_Pos_To_Rep (Id : E) return E; 4986 function Enumeration_Pos (Id : E) return U; 4987 function Enumeration_Rep (Id : E) return U; 4988 function Enumeration_Rep_Expr (Id : E) return N; 4989 function Equivalent_Type (Id : E) return E; 4990 function Esize (Id : E) return U; 4991 function Exception_Code (Id : E) return U; 4992 function Extra_Accessibility (Id : E) return E; 4993 function Extra_Constrained (Id : E) return E; 4994 function Extra_Formal (Id : E) return E; 4995 function Finalization_Chain_Entity (Id : E) return E; 4996 function Finalize_Storage_Only (Id : E) return B; 4997 function First_Entity (Id : E) return E; 4998 function First_Index (Id : E) return N; 4999 function First_Literal (Id : E) return E; 5000 function First_Optional_Parameter (Id : E) return E; 5001 function First_Private_Entity (Id : E) return E; 5002 function First_Rep_Item (Id : E) return N; 5003 function Freeze_Node (Id : E) return N; 5004 function From_With_Type (Id : E) return B; 5005 function Full_View (Id : E) return E; 5006 function Function_Returns_With_DSP (Id : E) return B; 5007 function Generic_Homonym (Id : E) return E; 5008 function Generic_Renamings (Id : E) return L; 5009 function Handler_Records (Id : E) return S; 5010 function Has_Aliased_Components (Id : E) return B; 5011 function Has_Alignment_Clause (Id : E) return B; 5012 function Has_All_Calls_Remote (Id : E) return B; 5013 function Has_Atomic_Components (Id : E) return B; 5014 function Has_Biased_Representation (Id : E) return B; 5015 function Has_Completion (Id : E) return B; 5016 function Has_Completion_In_Body (Id : E) return B; 5017 function Has_Complex_Representation (Id : E) return B; 5018 function Has_Component_Size_Clause (Id : E) return B; 5019 function Has_Contiguous_Rep (Id : E) return B; 5020 function Has_Controlled_Component (Id : E) return B; 5021 function Has_Controlling_Result (Id : E) return B; 5022 function Has_Convention_Pragma (Id : E) return B; 5023 function Has_Delayed_Freeze (Id : E) return B; 5024 function Has_Discriminants (Id : E) return B; 5025 function Has_Enumeration_Rep_Clause (Id : E) return B; 5026 function Has_Exit (Id : E) return B; 5027 function Has_External_Tag_Rep_Clause (Id : E) return B; 5028 function Has_Fully_Qualified_Name (Id : E) return B; 5029 function Has_Gigi_Rep_Item (Id : E) return B; 5030 function Has_Homonym (Id : E) return B; 5031 function Has_Interrupt_Handler (Id : E) return B; 5032 function Has_Machine_Radix_Clause (Id : E) return B; 5033 function Has_Master_Entity (Id : E) return B; 5034 function Has_Missing_Return (Id : E) return B; 5035 function Has_Nested_Block_With_Handler (Id : E) return B; 5036 function Has_Forward_Instantiation (Id : E) return B; 5037 function Has_Non_Standard_Rep (Id : E) return B; 5038 function Has_Object_Size_Clause (Id : E) return B; 5039 function Has_Per_Object_Constraint (Id : E) return B; 5040 function Has_Pragma_Controlled (Id : E) return B; 5041 function Has_Pragma_Elaborate_Body (Id : E) return B; 5042 function Has_Pragma_Inline (Id : E) return B; 5043 function Has_Pragma_Pack (Id : E) return B; 5044 function Has_Pragma_Pure_Function (Id : E) return B; 5045 function Has_Pragma_Unreferenced (Id : E) return B; 5046 function Has_Primitive_Operations (Id : E) return B; 5047 function Has_Qualified_Name (Id : E) return B; 5048 function Has_Record_Rep_Clause (Id : E) return B; 5049 function Has_Recursive_Call (Id : E) return B; 5050 function Has_Size_Clause (Id : E) return B; 5051 function Has_Small_Clause (Id : E) return B; 5052 function Has_Specified_Layout (Id : E) return B; 5053 function Has_Storage_Size_Clause (Id : E) return B; 5054 function Has_Subprogram_Descriptor (Id : E) return B; 5055 function Has_Task (Id : E) return B; 5056 function Has_Unchecked_Union (Id : E) return B; 5057 function Has_Unknown_Discriminants (Id : E) return B; 5058 function Has_Volatile_Components (Id : E) return B; 5059 function Has_Xref_Entry (Id : E) return B; 5060 function Hiding_Loop_Variable (Id : E) return E; 5061 function Homonym (Id : E) return E; 5062 function In_Package_Body (Id : E) return B; 5063 function In_Private_Part (Id : E) return B; 5064 function In_Use (Id : E) return B; 5065 function Inner_Instances (Id : E) return L; 5066 function Interface_Name (Id : E) return N; 5067 function Is_AST_Entry (Id : E) return B; 5068 function Is_Abstract (Id : E) return B; 5069 function Is_Access_Constant (Id : E) return B; 5070 function Is_Aliased (Id : E) return B; 5071 function Is_Asynchronous (Id : E) return B; 5072 function Is_Atomic (Id : E) return B; 5073 function Is_Bit_Packed_Array (Id : E) return B; 5074 function Is_CPP_Class (Id : E) return B; 5075 function Is_Called (Id : E) return B; 5076 function Is_Character_Type (Id : E) return B; 5077 function Is_Child_Unit (Id : E) return B; 5078 function Is_Class_Wide_Equivalent_Type (Id : E) return B; 5079 function Is_Compilation_Unit (Id : E) return B; 5080 function Is_Completely_Hidden (Id : E) return B; 5081 function Is_Constr_Subt_For_UN_Aliased (Id : E) return B; 5082 function Is_Constr_Subt_For_U_Nominal (Id : E) return B; 5083 function Is_Constrained (Id : E) return B; 5084 function Is_Constructor (Id : E) return B; 5085 function Is_Controlled (Id : E) return B; 5086 function Is_Controlling_Formal (Id : E) return B; 5087 function Is_Discrim_SO_Function (Id : E) return B; 5088 function Is_Dispatching_Operation (Id : E) return B; 5089 function Is_Eliminated (Id : E) return B; 5090 function Is_Entry_Formal (Id : E) return B; 5091 function Is_Exported (Id : E) return B; 5092 function Is_First_Subtype (Id : E) return B; 5093 function Is_For_Access_Subtype (Id : E) return B; 5094 function Is_Frozen (Id : E) return B; 5095 function Is_Generic_Instance (Id : E) return B; 5096 function Is_Hidden (Id : E) return B; 5097 function Is_Hidden_Open_Scope (Id : E) return B; 5098 function Is_Immediately_Visible (Id : E) return B; 5099 function Is_Imported (Id : E) return B; 5100 function Is_Inlined (Id : E) return B; 5101 function Is_Instantiated (Id : E) return B; 5102 function Is_Internal (Id : E) return B; 5103 function Is_Interrupt_Handler (Id : E) return B; 5104 function Is_Intrinsic_Subprogram (Id : E) return B; 5105 function Is_Itype (Id : E) return B; 5106 function Is_Known_Non_Null (Id : E) return B; 5107 function Is_Known_Valid (Id : E) return B; 5108 function Is_Limited_Composite (Id : E) return B; 5109 function Is_Machine_Code_Subprogram (Id : E) return B; 5110 function Is_Non_Static_Subtype (Id : E) return B; 5111 function Is_Null_Init_Proc (Id : E) return B; 5112 function Is_Optional_Parameter (Id : E) return B; 5113 function Is_Package_Body_Entity (Id : E) return B; 5114 function Is_Packed (Id : E) return B; 5115 function Is_Packed_Array_Type (Id : E) return B; 5116 function Is_Potentially_Use_Visible (Id : E) return B; 5117 function Is_Preelaborated (Id : E) return B; 5118 function Is_Private_Composite (Id : E) return B; 5119 function Is_Private_Descendant (Id : E) return B; 5120 function Is_Psected (Id : E) return B; 5121 function Is_Public (Id : E) return B; 5122 function Is_Pure (Id : E) return B; 5123 function Is_Remote_Call_Interface (Id : E) return B; 5124 function Is_Remote_Types (Id : E) return B; 5125 function Is_Renaming_Of_Object (Id : E) return B; 5126 function Is_Shared_Passive (Id : E) return B; 5127 function Is_Statically_Allocated (Id : E) return B; 5128 function Is_Tag (Id : E) return B; 5129 function Is_Tagged_Type (Id : E) return B; 5130 function Is_Thread_Body (Id : E) return B; 5131 function Is_True_Constant (Id : E) return B; 5132 function Is_Unchecked_Union (Id : E) return B; 5133 function Is_Unsigned_Type (Id : E) return B; 5134 function Is_VMS_Exception (Id : E) return B; 5135 function Is_Valued_Procedure (Id : E) return B; 5136 function Is_Visible_Child_Unit (Id : E) return B; 5137 function Is_Volatile (Id : E) return B; 5138 function Is_Wrapper_Package (Id : E) return B; 5139 function Kill_Elaboration_Checks (Id : E) return B; 5140 function Kill_Range_Checks (Id : E) return B; 5141 function Kill_Tag_Checks (Id : E) return B; 5142 function Last_Entity (Id : E) return E; 5143 function Limited_Views (Id : E) return L; 5144 function Lit_Indexes (Id : E) return E; 5145 function Lit_Strings (Id : E) return E; 5146 function Machine_Radix_10 (Id : E) return B; 5147 function Master_Id (Id : E) return E; 5148 function Materialize_Entity (Id : E) return B; 5149 function Mechanism (Id : E) return M; 5150 function Modulus (Id : E) return U; 5151 function Needs_Debug_Info (Id : E) return B; 5152 function Needs_No_Actuals (Id : E) return B; 5153 function Never_Set_In_Source (Id : E) return B; 5154 function Next_Inlined_Subprogram (Id : E) return E; 5155 function No_Pool_Assigned (Id : E) return B; 5156 function No_Return (Id : E) return B; 5157 function Non_Binary_Modulus (Id : E) return B; 5158 function Non_Limited_View (Id : E) return E; 5159 function Nonzero_Is_True (Id : E) return B; 5160 function Normalized_First_Bit (Id : E) return U; 5161 function Normalized_Position (Id : E) return U; 5162 function Normalized_Position_Max (Id : E) return U; 5163 function Object_Ref (Id : E) return E; 5164 function Original_Array_Type (Id : E) return E; 5165 function Original_Record_Component (Id : E) return E; 5166 function Packed_Array_Type (Id : E) return E; 5167 function Parent_Subtype (Id : E) return E; 5168 function Primitive_Operations (Id : E) return L; 5169 function Prival (Id : E) return E; 5170 function Privals_Chain (Id : E) return L; 5171 function Private_Dependents (Id : E) return L; 5172 function Private_View (Id : E) return N; 5173 function Protected_Body_Subprogram (Id : E) return E; 5174 function Protected_Formal (Id : E) return E; 5175 function Protected_Operation (Id : E) return E; 5176 function RM_Size (Id : E) return U; 5177 function Reachable (Id : E) return B; 5178 function Referenced (Id : E) return B; 5179 function Referenced_As_LHS (Id : E) return B; 5180 function Referenced_Object (Id : E) return N; 5181 function Register_Exception_Call (Id : E) return N; 5182 function Related_Array_Object (Id : E) return E; 5183 function Related_Instance (Id : E) return E; 5184 function Renamed_Entity (Id : E) return N; 5185 function Renamed_Object (Id : E) return N; 5186 function Renaming_Map (Id : E) return U; 5187 function Return_Present (Id : E) return B; 5188 function Returns_By_Ref (Id : E) return B; 5189 function Reverse_Bit_Order (Id : E) return B; 5190 function Scalar_Range (Id : E) return N; 5191 function Scale_Value (Id : E) return U; 5192 function Scope_Depth_Value (Id : E) return U; 5193 function Sec_Stack_Needed_For_Return (Id : E) return B; 5194 function Shadow_Entities (Id : E) return S; 5195 function Shared_Var_Assign_Proc (Id : E) return E; 5196 function Shared_Var_Read_Proc (Id : E) return E; 5197 function Size_Check_Code (Id : E) return N; 5198 function Size_Known_At_Compile_Time (Id : E) return B; 5199 function Size_Depends_On_Discriminant (Id : E) return B; 5200 function Small_Value (Id : E) return R; 5201 function Spec_Entity (Id : E) return E; 5202 function Storage_Size_Variable (Id : E) return E; 5203 function Stored_Constraint (Id : E) return L; 5204 function Strict_Alignment (Id : E) return B; 5205 function String_Literal_Length (Id : E) return U; 5206 function String_Literal_Low_Bound (Id : E) return N; 5207 function Suppress_Elaboration_Warnings (Id : E) return B; 5208 function Suppress_Init_Proc (Id : E) return B; 5209 function Suppress_Style_Checks (Id : E) return B; 5210 function Treat_As_Volatile (Id : E) return B; 5211 function Underlying_Full_View (Id : E) return E; 5212 function Unset_Reference (Id : E) return N; 5213 function Uses_Sec_Stack (Id : E) return B; 5214 function Vax_Float (Id : E) return B; 5215 function Warnings_Off (Id : E) return B; 5216 5217 ------------------------------- 5218 -- Classification Attributes -- 5219 ------------------------------- 5220 5221 -- These functions provide a convenient functional notation for testing 5222 -- whether an Ekind value belongs to a specified kind, for example the 5223 -- function Is_Elementary_Type tests if its argument is in Elementary_Kind. 5224 -- In some cases, the test is of an entity attribute (e.g. in the case of 5225 -- Is_Generic_Type where the Ekind does not provide the needed information) 5226 5227 function Is_Access_Type (Id : E) return B; 5228 function Is_Array_Type (Id : E) return B; 5229 function Is_Class_Wide_Type (Id : E) return B; 5230 function Is_Composite_Type (Id : E) return B; 5231 function Is_Concurrent_Body (Id : E) return B; 5232 function Is_Concurrent_Record_Type (Id : E) return B; 5233 function Is_Concurrent_Type (Id : E) return B; 5234 function Is_Decimal_Fixed_Point_Type (Id : E) return B; 5235 function Is_Digits_Type (Id : E) return B; 5236 function Is_Discrete_Or_Fixed_Point_Type (Id : E) return B; 5237 function Is_Discrete_Type (Id : E) return B; 5238 function Is_Elementary_Type (Id : E) return B; 5239 function Is_Entry (Id : E) return B; 5240 function Is_Enumeration_Type (Id : E) return B; 5241 function Is_Fixed_Point_Type (Id : E) return B; 5242 function Is_Floating_Point_Type (Id : E) return B; 5243 function Is_Formal (Id : E) return B; 5244 function Is_Formal_Subprogram (Id : E) return B; 5245 function Is_Generic_Actual_Type (Id : E) return B; 5246 function Is_Generic_Unit (Id : E) return B; 5247 function Is_Generic_Type (Id : E) return B; 5248 function Is_Generic_Subprogram (Id : E) return B; 5249 function Is_Incomplete_Or_Private_Type (Id : E) return B; 5250 function Is_Integer_Type (Id : E) return B; 5251 function Is_Limited_Record (Id : E) return B; 5252 function Is_Modular_Integer_Type (Id : E) return B; 5253 function Is_Named_Number (Id : E) return B; 5254 function Is_Numeric_Type (Id : E) return B; 5255 function Is_Object (Id : E) return B; 5256 function Is_Ordinary_Fixed_Point_Type (Id : E) return B; 5257 function Is_Overloadable (Id : E) return B; 5258 function Is_Overriding_Operation (Id : E) return B; 5259 function Is_Private_Type (Id : E) return B; 5260 function Is_Protected_Type (Id : E) return B; 5261 function Is_Real_Type (Id : E) return B; 5262 function Is_Record_Type (Id : E) return B; 5263 function Is_Scalar_Type (Id : E) return B; 5264 function Is_Signed_Integer_Type (Id : E) return B; 5265 function Is_Subprogram (Id : E) return B; 5266 function Is_Task_Type (Id : E) return B; 5267 function Is_Type (Id : E) return B; 5268 5269 ------------------------------------- 5270 -- Synthesized Attribute Functions -- 5271 ------------------------------------- 5272 5273 -- The functions in this section synthesize attributes from the tree, 5274 -- so they do not correspond to defined fields in the entity itself. 5275 5276 function Address_Clause (Id : E) return N; 5277 function Alignment_Clause (Id : E) return N; 5278 function Ancestor_Subtype (Id : E) return E; 5279 function Base_Type (Id : E) return E; 5280 function Constant_Value (Id : E) return N; 5281 function Declaration_Node (Id : E) return N; 5282 function Designated_Type (Id : E) return E; 5283 function Enclosing_Dynamic_Scope (Id : E) return E; 5284 function First_Component (Id : E) return E; 5285 function First_Discriminant (Id : E) return E; 5286 function First_Formal (Id : E) return E; 5287 function First_Stored_Discriminant (Id : E) return E; 5288 function First_Subtype (Id : E) return E; 5289 function Has_Attach_Handler (Id : E) return B; 5290 function Has_Entries (Id : E) return B; 5291 function Has_Foreign_Convention (Id : E) return B; 5292 function Has_Private_Ancestor (Id : E) return B; 5293 function Has_Private_Declaration (Id : E) return B; 5294 function Implementation_Base_Type (Id : E) return E; 5295 function Is_Always_Inlined (Id : E) return B; 5296 function Is_Boolean_Type (Id : E) return B; 5297 function Is_By_Copy_Type (Id : E) return B; 5298 function Is_By_Reference_Type (Id : E) return B; 5299 function Is_Derived_Type (Id : E) return B; 5300 function Is_Dynamic_Scope (Id : E) return B; 5301 function Is_Indefinite_Subtype (Id : E) return B; 5302 function Is_Limited_Type (Id : E) return B; 5303 function Is_Package (Id : E) return B; 5304 function Is_Protected_Private (Id : E) return B; 5305 function Is_Protected_Record_Type (Id : E) return B; 5306 function Is_Return_By_Reference_Type (Id : E) return B; 5307 function Is_String_Type (Id : E) return B; 5308 function Is_Task_Record_Type (Id : E) return B; 5309 function Next_Component (Id : E) return E; 5310 function Next_Discriminant (Id : E) return E; 5311 function Next_Formal (Id : E) return E; 5312 function Next_Formal_With_Extras (Id : E) return E; 5313 function Next_Literal (Id : E) return E; 5314 function Next_Stored_Discriminant (Id : E) return E; 5315 function Number_Dimensions (Id : E) return Pos; 5316 function Number_Discriminants (Id : E) return Pos; 5317 function Number_Entries (Id : E) return Nat; 5318 function Number_Formals (Id : E) return Pos; 5319 function Parameter_Mode (Id : E) return Formal_Kind; 5320 function Root_Type (Id : E) return E; 5321 function Scope_Depth_Set (Id : E) return B; 5322 function Size_Clause (Id : E) return N; 5323 function Tag_Component (Id : E) return E; 5324 function Type_High_Bound (Id : E) return N; 5325 function Type_Low_Bound (Id : E) return N; 5326 function Underlying_Type (Id : E) return E; 5327 5328 ---------------------------------------------- 5329 -- Type Representation Attribute Predicates -- 5330 ---------------------------------------------- 5331 5332 -- These predicates test the setting of the indicated attribute. If 5333 -- the value has been set, then Known is True, and Unknown is False. 5334 -- If no value is set, then Known is False and Unknown is True. The 5335 -- Known_Static predicate is true only if the value is set (Known) 5336 -- and is set to a compile time known value. Note that in the case 5337 -- of Alignment and Normalized_First_Bit, dynamic values are not 5338 -- possible, so we do not need a separate Known_Static calls in 5339 -- these cases. The not set (unknown values are as follows: 5340 5341 -- Alignment Uint_0 or No_Uint 5342 -- Component_Size Uint_0 or No_Uint 5343 -- Component_Bit_Offset No_Uint 5344 -- Digits_Value Uint_0 or No_Uint 5345 -- Esize Uint_0 or No_Uint 5346 -- Normalized_First_Bit No_Uint 5347 -- Normalized_Position No_Uint 5348 -- Normalized_Position_Max No_Uint 5349 -- RM_Size Uint_0 or No_Uint 5350 5351 -- It would be cleaner to use No_Uint in all these cases, but historically 5352 -- we chose to use Uint_0 at first, and the change over will take time ??? 5353 -- This is particularly true for the RM_Size field, where a value of zero 5354 -- is legitimate. We deal with this by a nasty kludge that knows that the 5355 -- value is always known static for discrete types (and no other types can 5356 -- have an RM_Size value of zero). 5357 5358 function Known_Alignment (E : Entity_Id) return B; 5359 function Known_Component_Bit_Offset (E : Entity_Id) return B; 5360 function Known_Component_Size (E : Entity_Id) return B; 5361 function Known_Esize (E : Entity_Id) return B; 5362 function Known_Normalized_First_Bit (E : Entity_Id) return B; 5363 function Known_Normalized_Position (E : Entity_Id) return B; 5364 function Known_Normalized_Position_Max (E : Entity_Id) return B; 5365 function Known_RM_Size (E : Entity_Id) return B; 5366 5367 function Known_Static_Component_Bit_Offset (E : Entity_Id) return B; 5368 function Known_Static_Component_Size (E : Entity_Id) return B; 5369 function Known_Static_Esize (E : Entity_Id) return B; 5370 function Known_Static_Normalized_First_Bit (E : Entity_Id) return B; 5371 function Known_Static_Normalized_Position (E : Entity_Id) return B; 5372 function Known_Static_Normalized_Position_Max (E : Entity_Id) return B; 5373 function Known_Static_RM_Size (E : Entity_Id) return B; 5374 5375 function Unknown_Alignment (E : Entity_Id) return B; 5376 function Unknown_Component_Bit_Offset (E : Entity_Id) return B; 5377 function Unknown_Component_Size (E : Entity_Id) return B; 5378 function Unknown_Esize (E : Entity_Id) return B; 5379 function Unknown_Normalized_First_Bit (E : Entity_Id) return B; 5380 function Unknown_Normalized_Position (E : Entity_Id) return B; 5381 function Unknown_Normalized_Position_Max (E : Entity_Id) return B; 5382 function Unknown_RM_Size (E : Entity_Id) return B; 5383 5384 ------------------------------ 5385 -- Attribute Set Procedures -- 5386 ------------------------------ 5387 5388 procedure Set_Accept_Address (Id : E; V : L); 5389 procedure Set_Access_Disp_Table (Id : E; V : E); 5390 procedure Set_Actual_Subtype (Id : E; V : E); 5391 procedure Set_Address_Taken (Id : E; V : B := True); 5392 procedure Set_Alias (Id : E; V : E); 5393 procedure Set_Alignment (Id : E; V : U); 5394 procedure Set_Associated_Final_Chain (Id : E; V : E); 5395 procedure Set_Associated_Formal_Package (Id : E; V : E); 5396 procedure Set_Associated_Node_For_Itype (Id : E; V : N); 5397 procedure Set_Associated_Storage_Pool (Id : E; V : E); 5398 procedure Set_Barrier_Function (Id : E; V : N); 5399 procedure Set_Block_Node (Id : E; V : N); 5400 procedure Set_Body_Entity (Id : E; V : E); 5401 procedure Set_Body_Needed_For_SAL (Id : E; V : B := True); 5402 procedure Set_CR_Discriminant (Id : E; V : E); 5403 procedure Set_C_Pass_By_Copy (Id : E; V : B := True); 5404 procedure Set_Can_Never_Be_Null (Id : E; V : B := True); 5405 procedure Set_Checks_May_Be_Suppressed (Id : E; V : B := True); 5406 procedure Set_Class_Wide_Type (Id : E; V : E); 5407 procedure Set_Cloned_Subtype (Id : E; V : E); 5408 procedure Set_Component_Alignment (Id : E; V : C); 5409 procedure Set_Component_Bit_Offset (Id : E; V : U); 5410 procedure Set_Component_Clause (Id : E; V : N); 5411 procedure Set_Component_Size (Id : E; V : U); 5412 procedure Set_Component_Type (Id : E; V : E); 5413 procedure Set_Corresponding_Concurrent_Type (Id : E; V : E); 5414 procedure Set_Corresponding_Discriminant (Id : E; V : E); 5415 procedure Set_Corresponding_Equality (Id : E; V : E); 5416 procedure Set_Corresponding_Record_Type (Id : E; V : E); 5417 procedure Set_Corresponding_Remote_Type (Id : E; V : E); 5418 procedure Set_Current_Value (Id : E; V : N); 5419 procedure Set_Debug_Info_Off (Id : E; V : B := True); 5420 procedure Set_Debug_Renaming_Link (Id : E; V : E); 5421 procedure Set_DTC_Entity (Id : E; V : E); 5422 procedure Set_DT_Entry_Count (Id : E; V : U); 5423 procedure Set_DT_Position (Id : E; V : U); 5424 procedure Set_Default_Expr_Function (Id : E; V : E); 5425 procedure Set_Default_Expressions_Processed (Id : E; V : B := True); 5426 procedure Set_Default_Value (Id : E; V : N); 5427 procedure Set_Delay_Cleanups (Id : E; V : B := True); 5428 procedure Set_Delay_Subprogram_Descriptors (Id : E; V : B := True); 5429 procedure Set_Delta_Value (Id : E; V : R); 5430 procedure Set_Dependent_Instances (Id : E; V : L); 5431 procedure Set_Depends_On_Private (Id : E; V : B := True); 5432 procedure Set_Digits_Value (Id : E; V : U); 5433 procedure Set_Directly_Designated_Type (Id : E; V : E); 5434 procedure Set_Discard_Names (Id : E; V : B := True); 5435 procedure Set_Discriminal (Id : E; V : E); 5436 procedure Set_Discriminal_Link (Id : E; V : E); 5437 procedure Set_Discriminant_Checking_Func (Id : E; V : E); 5438 procedure Set_Discriminant_Constraint (Id : E; V : L); 5439 procedure Set_Discriminant_Default_Value (Id : E; V : N); 5440 procedure Set_Discriminant_Number (Id : E; V : U); 5441 procedure Set_Elaborate_All_Desirable (Id : E; V : B := True); 5442 procedure Set_Elaboration_Entity (Id : E; V : E); 5443 procedure Set_Elaboration_Entity_Required (Id : E; V : B := True); 5444 procedure Set_Enclosing_Scope (Id : E; V : E); 5445 procedure Set_Entry_Accepted (Id : E; V : B := True); 5446 procedure Set_Entry_Bodies_Array (Id : E; V : E); 5447 procedure Set_Entry_Cancel_Parameter (Id : E; V : E); 5448 procedure Set_Entry_Component (Id : E; V : E); 5449 procedure Set_Entry_Formal (Id : E; V : E); 5450 procedure Set_Entry_Index_Constant (Id : E; V : E); 5451 procedure Set_Entry_Parameters_Type (Id : E; V : E); 5452 procedure Set_Enum_Pos_To_Rep (Id : E; V : E); 5453 procedure Set_Enumeration_Pos (Id : E; V : U); 5454 procedure Set_Enumeration_Rep (Id : E; V : U); 5455 procedure Set_Enumeration_Rep_Expr (Id : E; V : N); 5456 procedure Set_Equivalent_Type (Id : E; V : E); 5457 procedure Set_Esize (Id : E; V : U); 5458 procedure Set_Exception_Code (Id : E; V : U); 5459 procedure Set_Extra_Accessibility (Id : E; V : E); 5460 procedure Set_Extra_Constrained (Id : E; V : E); 5461 procedure Set_Extra_Formal (Id : E; V : E); 5462 procedure Set_Finalization_Chain_Entity (Id : E; V : E); 5463 procedure Set_Finalize_Storage_Only (Id : E; V : B := True); 5464 procedure Set_First_Entity (Id : E; V : E); 5465 procedure Set_First_Index (Id : E; V : N); 5466 procedure Set_First_Literal (Id : E; V : E); 5467 procedure Set_First_Optional_Parameter (Id : E; V : E); 5468 procedure Set_First_Private_Entity (Id : E; V : E); 5469 procedure Set_First_Rep_Item (Id : E; V : N); 5470 procedure Set_Freeze_Node (Id : E; V : N); 5471 procedure Set_From_With_Type (Id : E; V : B := True); 5472 procedure Set_Full_View (Id : E; V : E); 5473 procedure Set_Function_Returns_With_DSP (Id : E; V : B := True); 5474 procedure Set_Generic_Homonym (Id : E; V : E); 5475 procedure Set_Generic_Renamings (Id : E; V : L); 5476 procedure Set_Handler_Records (Id : E; V : S); 5477 procedure Set_Has_Aliased_Components (Id : E; V : B := True); 5478 procedure Set_Has_Alignment_Clause (Id : E; V : B := True); 5479 procedure Set_Has_All_Calls_Remote (Id : E; V : B := True); 5480 procedure Set_Has_Atomic_Components (Id : E; V : B := True); 5481 procedure Set_Has_Biased_Representation (Id : E; V : B := True); 5482 procedure Set_Has_Completion (Id : E; V : B := True); 5483 procedure Set_Has_Completion_In_Body (Id : E; V : B := True); 5484 procedure Set_Has_Complex_Representation (Id : E; V : B := True); 5485 procedure Set_Has_Component_Size_Clause (Id : E; V : B := True); 5486 procedure Set_Has_Contiguous_Rep (Id : E; V : B := True); 5487 procedure Set_Has_Controlled_Component (Id : E; V : B := True); 5488 procedure Set_Has_Controlling_Result (Id : E; V : B := True); 5489 procedure Set_Has_Convention_Pragma (Id : E; V : B := True); 5490 procedure Set_Has_Delayed_Freeze (Id : E; V : B := True); 5491 procedure Set_Has_Discriminants (Id : E; V : B := True); 5492 procedure Set_Has_Enumeration_Rep_Clause (Id : E; V : B := True); 5493 procedure Set_Has_Exit (Id : E; V : B := True); 5494 procedure Set_Has_External_Tag_Rep_Clause (Id : E; V : B := True); 5495 procedure Set_Has_Fully_Qualified_Name (Id : E; V : B := True); 5496 procedure Set_Has_Gigi_Rep_Item (Id : E; V : B := True); 5497 procedure Set_Has_Homonym (Id : E; V : B := True); 5498 procedure Set_Has_Machine_Radix_Clause (Id : E; V : B := True); 5499 procedure Set_Has_Master_Entity (Id : E; V : B := True); 5500 procedure Set_Has_Missing_Return (Id : E; V : B := True); 5501 procedure Set_Has_Nested_Block_With_Handler (Id : E; V : B := True); 5502 procedure Set_Has_Forward_Instantiation (Id : E; V : B := True); 5503 procedure Set_Has_Non_Standard_Rep (Id : E; V : B := True); 5504 procedure Set_Has_Object_Size_Clause (Id : E; V : B := True); 5505 procedure Set_Has_Per_Object_Constraint (Id : E; V : B := True); 5506 procedure Set_Has_Pragma_Controlled (Id : E; V : B := True); 5507 procedure Set_Has_Pragma_Elaborate_Body (Id : E; V : B := True); 5508 procedure Set_Has_Pragma_Inline (Id : E; V : B := True); 5509 procedure Set_Has_Pragma_Pack (Id : E; V : B := True); 5510 procedure Set_Has_Pragma_Pure_Function (Id : E; V : B := True); 5511 procedure Set_Has_Pragma_Unreferenced (Id : E; V : B := True); 5512 procedure Set_Has_Primitive_Operations (Id : E; V : B := True); 5513 procedure Set_Has_Private_Declaration (Id : E; V : B := True); 5514 procedure Set_Has_Qualified_Name (Id : E; V : B := True); 5515 procedure Set_Has_Record_Rep_Clause (Id : E; V : B := True); 5516 procedure Set_Has_Recursive_Call (Id : E; V : B := True); 5517 procedure Set_Has_Size_Clause (Id : E; V : B := True); 5518 procedure Set_Has_Small_Clause (Id : E; V : B := True); 5519 procedure Set_Has_Specified_Layout (Id : E; V : B := True); 5520 procedure Set_Has_Storage_Size_Clause (Id : E; V : B := True); 5521 procedure Set_Has_Subprogram_Descriptor (Id : E; V : B := True); 5522 procedure Set_Has_Task (Id : E; V : B := True); 5523 procedure Set_Has_Unchecked_Union (Id : E; V : B := True); 5524 procedure Set_Has_Unknown_Discriminants (Id : E; V : B := True); 5525 procedure Set_Has_Volatile_Components (Id : E; V : B := True); 5526 procedure Set_Has_Xref_Entry (Id : E; V : B := True); 5527 procedure Set_Hiding_Loop_Variable (Id : E; V : E); 5528 procedure Set_Homonym (Id : E; V : E); 5529 procedure Set_In_Package_Body (Id : E; V : B := True); 5530 procedure Set_In_Private_Part (Id : E; V : B := True); 5531 procedure Set_In_Use (Id : E; V : B := True); 5532 procedure Set_Inner_Instances (Id : E; V : L); 5533 procedure Set_Interface_Name (Id : E; V : N); 5534 procedure Set_Is_AST_Entry (Id : E; V : B := True); 5535 procedure Set_Is_Abstract (Id : E; V : B := True); 5536 procedure Set_Is_Access_Constant (Id : E; V : B := True); 5537 procedure Set_Is_Aliased (Id : E; V : B := True); 5538 procedure Set_Is_Asynchronous (Id : E; V : B := True); 5539 procedure Set_Is_Atomic (Id : E; V : B := True); 5540 procedure Set_Is_Bit_Packed_Array (Id : E; V : B := True); 5541 procedure Set_Is_CPP_Class (Id : E; V : B := True); 5542 procedure Set_Is_Called (Id : E; V : B := True); 5543 procedure Set_Is_Character_Type (Id : E; V : B := True); 5544 procedure Set_Is_Child_Unit (Id : E; V : B := True); 5545 procedure Set_Is_Class_Wide_Equivalent_Type (Id : E; V : B := True); 5546 procedure Set_Is_Compilation_Unit (Id : E; V : B := True); 5547 procedure Set_Is_Completely_Hidden (Id : E; V : B := True); 5548 procedure Set_Is_Concurrent_Record_Type (Id : E; V : B := True); 5549 procedure Set_Is_Constr_Subt_For_UN_Aliased (Id : E; V : B := True); 5550 procedure Set_Is_Constr_Subt_For_U_Nominal (Id : E; V : B := True); 5551 procedure Set_Is_Constrained (Id : E; V : B := True); 5552 procedure Set_Is_Constructor (Id : E; V : B := True); 5553 procedure Set_Is_Controlled (Id : E; V : B := True); 5554 procedure Set_Is_Controlling_Formal (Id : E; V : B := True); 5555 procedure Set_Is_Discrim_SO_Function (Id : E; V : B := True); 5556 procedure Set_Is_Dispatching_Operation (Id : E; V : B := True); 5557 procedure Set_Is_Eliminated (Id : E; V : B := True); 5558 procedure Set_Is_Entry_Formal (Id : E; V : B := True); 5559 procedure Set_Is_Exported (Id : E; V : B := True); 5560 procedure Set_Is_First_Subtype (Id : E; V : B := True); 5561 procedure Set_Is_For_Access_Subtype (Id : E; V : B := True); 5562 procedure Set_Is_Formal_Subprogram (Id : E; V : B := True); 5563 procedure Set_Is_Frozen (Id : E; V : B := True); 5564 procedure Set_Is_Generic_Actual_Type (Id : E; V : B := True); 5565 procedure Set_Is_Generic_Instance (Id : E; V : B := True); 5566 procedure Set_Is_Generic_Type (Id : E; V : B := True); 5567 procedure Set_Is_Hidden (Id : E; V : B := True); 5568 procedure Set_Is_Hidden_Open_Scope (Id : E; V : B := True); 5569 procedure Set_Is_Immediately_Visible (Id : E; V : B := True); 5570 procedure Set_Is_Imported (Id : E; V : B := True); 5571 procedure Set_Is_Inlined (Id : E; V : B := True); 5572 procedure Set_Is_Instantiated (Id : E; V : B := True); 5573 procedure Set_Is_Internal (Id : E; V : B := True); 5574 procedure Set_Is_Interrupt_Handler (Id : E; V : B := True); 5575 procedure Set_Is_Intrinsic_Subprogram (Id : E; V : B := True); 5576 procedure Set_Is_Itype (Id : E; V : B := True); 5577 procedure Set_Is_Known_Non_Null (Id : E; V : B := True); 5578 procedure Set_Is_Known_Valid (Id : E; V : B := True); 5579 procedure Set_Is_Limited_Composite (Id : E; V : B := True); 5580 procedure Set_Is_Limited_Record (Id : E; V : B := True); 5581 procedure Set_Is_Machine_Code_Subprogram (Id : E; V : B := True); 5582 procedure Set_Is_Non_Static_Subtype (Id : E; V : B := True); 5583 procedure Set_Is_Null_Init_Proc (Id : E; V : B := True); 5584 procedure Set_Is_Optional_Parameter (Id : E; V : B := True); 5585 procedure Set_Is_Overriding_Operation (Id : E; V : B := True); 5586 procedure Set_Is_Package_Body_Entity (Id : E; V : B := True); 5587 procedure Set_Is_Packed (Id : E; V : B := True); 5588 procedure Set_Is_Packed_Array_Type (Id : E; V : B := True); 5589 procedure Set_Is_Potentially_Use_Visible (Id : E; V : B := True); 5590 procedure Set_Is_Preelaborated (Id : E; V : B := True); 5591 procedure Set_Is_Private_Composite (Id : E; V : B := True); 5592 procedure Set_Is_Private_Descendant (Id : E; V : B := True); 5593 procedure Set_Is_Psected (Id : E; V : B := True); 5594 procedure Set_Is_Public (Id : E; V : B := True); 5595 procedure Set_Is_Pure (Id : E; V : B := True); 5596 procedure Set_Is_Remote_Call_Interface (Id : E; V : B := True); 5597 procedure Set_Is_Remote_Types (Id : E; V : B := True); 5598 procedure Set_Is_Renaming_Of_Object (Id : E; V : B := True); 5599 procedure Set_Is_Shared_Passive (Id : E; V : B := True); 5600 procedure Set_Is_Statically_Allocated (Id : E; V : B := True); 5601 procedure Set_Is_Tag (Id : E; V : B := True); 5602 procedure Set_Is_Tagged_Type (Id : E; V : B := True); 5603 procedure Set_Is_Thread_Body (Id : E; V : B := True); 5604 procedure Set_Is_True_Constant (Id : E; V : B := True); 5605 procedure Set_Is_Unchecked_Union (Id : E; V : B := True); 5606 procedure Set_Is_Unsigned_Type (Id : E; V : B := True); 5607 procedure Set_Is_VMS_Exception (Id : E; V : B := True); 5608 procedure Set_Is_Valued_Procedure (Id : E; V : B := True); 5609 procedure Set_Is_Visible_Child_Unit (Id : E; V : B := True); 5610 procedure Set_Is_Volatile (Id : E; V : B := True); 5611 procedure Set_Kill_Elaboration_Checks (Id : E; V : B := True); 5612 procedure Set_Kill_Range_Checks (Id : E; V : B := True); 5613 procedure Set_Kill_Tag_Checks (Id : E; V : B := True); 5614 procedure Set_Last_Entity (Id : E; V : E); 5615 procedure Set_Limited_Views (Id : E; V : L); 5616 procedure Set_Lit_Indexes (Id : E; V : E); 5617 procedure Set_Lit_Strings (Id : E; V : E); 5618 procedure Set_Machine_Radix_10 (Id : E; V : B := True); 5619 procedure Set_Master_Id (Id : E; V : E); 5620 procedure Set_Materialize_Entity (Id : E; V : B := True); 5621 procedure Set_Mechanism (Id : E; V : M); 5622 procedure Set_Modulus (Id : E; V : U); 5623 procedure Set_Needs_Debug_Info (Id : E; V : B := True); 5624 procedure Set_Needs_No_Actuals (Id : E; V : B := True); 5625 procedure Set_Never_Set_In_Source (Id : E; V : B := True); 5626 procedure Set_Next_Inlined_Subprogram (Id : E; V : E); 5627 procedure Set_No_Pool_Assigned (Id : E; V : B := True); 5628 procedure Set_No_Return (Id : E; V : B := True); 5629 procedure Set_Non_Binary_Modulus (Id : E; V : B := True); 5630 procedure Set_Non_Limited_View (Id : E; V : E); 5631 procedure Set_Nonzero_Is_True (Id : E; V : B := True); 5632 procedure Set_Normalized_First_Bit (Id : E; V : U); 5633 procedure Set_Normalized_Position (Id : E; V : U); 5634 procedure Set_Normalized_Position_Max (Id : E; V : U); 5635 procedure Set_Object_Ref (Id : E; V : E); 5636 procedure Set_Original_Array_Type (Id : E; V : E); 5637 procedure Set_Original_Record_Component (Id : E; V : E); 5638 procedure Set_Packed_Array_Type (Id : E; V : E); 5639 procedure Set_Parent_Subtype (Id : E; V : E); 5640 procedure Set_Primitive_Operations (Id : E; V : L); 5641 procedure Set_Prival (Id : E; V : E); 5642 procedure Set_Privals_Chain (Id : E; V : L); 5643 procedure Set_Private_Dependents (Id : E; V : L); 5644 procedure Set_Private_View (Id : E; V : N); 5645 procedure Set_Protected_Body_Subprogram (Id : E; V : E); 5646 procedure Set_Protected_Formal (Id : E; V : E); 5647 procedure Set_Protected_Operation (Id : E; V : N); 5648 procedure Set_RM_Size (Id : E; V : U); 5649 procedure Set_Reachable (Id : E; V : B := True); 5650 procedure Set_Referenced (Id : E; V : B := True); 5651 procedure Set_Referenced_As_LHS (Id : E; V : B := True); 5652 procedure Set_Referenced_Object (Id : E; V : N); 5653 procedure Set_Register_Exception_Call (Id : E; V : N); 5654 procedure Set_Related_Array_Object (Id : E; V : E); 5655 procedure Set_Related_Instance (Id : E; V : E); 5656 procedure Set_Renamed_Entity (Id : E; V : N); 5657 procedure Set_Renamed_Object (Id : E; V : N); 5658 procedure Set_Renaming_Map (Id : E; V : U); 5659 procedure Set_Return_Present (Id : E; V : B := True); 5660 procedure Set_Returns_By_Ref (Id : E; V : B := True); 5661 procedure Set_Reverse_Bit_Order (Id : E; V : B := True); 5662 procedure Set_Scalar_Range (Id : E; V : N); 5663 procedure Set_Scale_Value (Id : E; V : U); 5664 procedure Set_Scope_Depth_Value (Id : E; V : U); 5665 procedure Set_Sec_Stack_Needed_For_Return (Id : E; V : B := True); 5666 procedure Set_Shadow_Entities (Id : E; V : S); 5667 procedure Set_Shared_Var_Assign_Proc (Id : E; V : E); 5668 procedure Set_Shared_Var_Read_Proc (Id : E; V : E); 5669 procedure Set_Size_Check_Code (Id : E; V : N); 5670 procedure Set_Size_Depends_On_Discriminant (Id : E; V : B := True); 5671 procedure Set_Size_Known_At_Compile_Time (Id : E; V : B := True); 5672 procedure Set_Small_Value (Id : E; V : R); 5673 procedure Set_Spec_Entity (Id : E; V : E); 5674 procedure Set_Storage_Size_Variable (Id : E; V : E); 5675 procedure Set_Stored_Constraint (Id : E; V : L); 5676 procedure Set_Strict_Alignment (Id : E; V : B := True); 5677 procedure Set_String_Literal_Length (Id : E; V : U); 5678 procedure Set_String_Literal_Low_Bound (Id : E; V : N); 5679 procedure Set_Suppress_Elaboration_Warnings (Id : E; V : B := True); 5680 procedure Set_Suppress_Init_Proc (Id : E; V : B := True); 5681 procedure Set_Suppress_Style_Checks (Id : E; V : B := True); 5682 procedure Set_Treat_As_Volatile (Id : E; V : B := True); 5683 procedure Set_Underlying_Full_View (Id : E; V : E); 5684 procedure Set_Unset_Reference (Id : E; V : N); 5685 procedure Set_Uses_Sec_Stack (Id : E; V : B := True); 5686 procedure Set_Vax_Float (Id : E; V : B := True); 5687 procedure Set_Warnings_Off (Id : E; V : B := True); 5688 5689 ----------------------------------- 5690 -- Field Initialization Routines -- 5691 ----------------------------------- 5692 5693 -- These routines are overloadings of some of the above Set procedures 5694 -- where the argument is normally a Uint. The overloadings take an Int 5695 -- parameter instead, and appropriately convert it. There are also 5696 -- versions that implicitly initialize to the appropriate "not set" 5697 -- value. The not set (unknown) values are as follows: 5698 5699 -- Alignment Uint_0 5700 -- Component_Size Uint_0 5701 -- Component_Bit_Offset No_Uint 5702 -- Digits_Value Uint_0 5703 -- Esize Uint_0 5704 -- Normalized_First_Bit No_Uint 5705 -- Normalized_Position No_Uint 5706 -- Normalized_Position_Max No_Uint 5707 -- RM_Size Uint_0 5708 5709 -- It would be cleaner to use No_Uint in all these cases, but historically 5710 -- we chose to use Uint_0 at first, and the change over will take time ??? 5711 -- This is particularly true for the RM_Size field, where a value of zero 5712 -- is legitimate and causes some kludges around the code. 5713 5714 procedure Init_Alignment (Id : E; V : Int); 5715 procedure Init_Component_Size (Id : E; V : Int); 5716 procedure Init_Component_Bit_Offset (Id : E; V : Int); 5717 procedure Init_Digits_Value (Id : E; V : Int); 5718 procedure Init_Esize (Id : E; V : Int); 5719 procedure Init_Normalized_First_Bit (Id : E; V : Int); 5720 procedure Init_Normalized_Position (Id : E; V : Int); 5721 procedure Init_Normalized_Position_Max (Id : E; V : Int); 5722 procedure Init_RM_Size (Id : E; V : Int); 5723 5724 procedure Init_Alignment (Id : E); 5725 procedure Init_Component_Size (Id : E); 5726 procedure Init_Component_Bit_Offset (Id : E); 5727 procedure Init_Digits_Value (Id : E); 5728 procedure Init_Esize (Id : E); 5729 procedure Init_Normalized_First_Bit (Id : E); 5730 procedure Init_Normalized_Position (Id : E); 5731 procedure Init_Normalized_Position_Max (Id : E); 5732 procedure Init_RM_Size (Id : E); 5733 5734 procedure Init_Size_Align (Id : E); 5735 -- This procedure initializes both size fields and the alignment 5736 -- field to all be Unknown. 5737 5738 procedure Init_Size (Id : E; V : Int); 5739 -- Initialize both the Esize and RM_Size fields of E to V 5740 5741 procedure Init_Component_Location (Id : E); 5742 -- Initializes all fields describing the location of a component 5743 -- (Normalized_Position, Component_Bit_Offset, Normalized_First_Bit, 5744 -- Normalized_Position_Max, Esize) to all be Unknown. 5745 5746 --------------- 5747 -- Iterators -- 5748 --------------- 5749 5750 -- The call to Next_xxx (obj) is equivalent to obj := Next_xxx (obj) 5751 -- We define the set of Proc_Next_xxx routines simply for the purposes 5752 -- of inlining them without necessarily inlining the function. 5753 5754 procedure Proc_Next_Component (N : in out Node_Id); 5755 procedure Proc_Next_Discriminant (N : in out Node_Id); 5756 procedure Proc_Next_Formal (N : in out Node_Id); 5757 procedure Proc_Next_Formal_With_Extras (N : in out Node_Id); 5758 procedure Proc_Next_Index (N : in out Node_Id); 5759 procedure Proc_Next_Inlined_Subprogram (N : in out Node_Id); 5760 procedure Proc_Next_Literal (N : in out Node_Id); 5761 procedure Proc_Next_Stored_Discriminant (N : in out Node_Id); 5762 5763 pragma Inline (Proc_Next_Component); 5764 pragma Inline (Proc_Next_Discriminant); 5765 pragma Inline (Proc_Next_Formal); 5766 pragma Inline (Proc_Next_Formal_With_Extras); 5767 pragma Inline (Proc_Next_Index); 5768 pragma Inline (Proc_Next_Inlined_Subprogram); 5769 pragma Inline (Proc_Next_Literal); 5770 pragma Inline (Proc_Next_Stored_Discriminant); 5771 5772 procedure Next_Component (N : in out Node_Id) 5773 renames Proc_Next_Component; 5774 5775 procedure Next_Discriminant (N : in out Node_Id) 5776 renames Proc_Next_Discriminant; 5777 5778 procedure Next_Formal (N : in out Node_Id) 5779 renames Proc_Next_Formal; 5780 5781 procedure Next_Formal_With_Extras (N : in out Node_Id) 5782 renames Proc_Next_Formal_With_Extras; 5783 5784 procedure Next_Index (N : in out Node_Id) 5785 renames Proc_Next_Index; 5786 5787 procedure Next_Inlined_Subprogram (N : in out Node_Id) 5788 renames Proc_Next_Inlined_Subprogram; 5789 5790 procedure Next_Literal (N : in out Node_Id) 5791 renames Proc_Next_Literal; 5792 5793 procedure Next_Stored_Discriminant (N : in out Node_Id) 5794 renames Proc_Next_Stored_Discriminant; 5795 5796 ------------------------------- 5797 -- Miscellaneous Subprograms -- 5798 ------------------------------- 5799 5800 procedure Append_Entity (Id : Entity_Id; V : Entity_Id); 5801 -- Add an entity to the list of entities declared in the scope V 5802 5803 function Get_Rep_Pragma (E : Entity_Id; Nam : Name_Id) return Node_Id; 5804 -- Searches the Rep_Item chain for the given entity E, for an instance 5805 -- of a representation pragma with the given name Nam. If found then 5806 -- the value returned is the N_Pragma node, otherwise Empty is returned. 5807 5808 function Get_Attribute_Definition_Clause 5809 (E : Entity_Id; 5810 Id : Attribute_Id) 5811 return Node_Id; 5812 -- Searches the Rep_Item chain for a given entity E, for an instance 5813 -- of an attribute definition clause with the given attibute Id Id. If 5814 -- found, the value returned is the N_Attribute_Definition_Clause node, 5815 -- otherwise Empty is returned. 5816 5817 function Is_Entity_Name (N : Node_Id) return Boolean; 5818 -- Test if the node N is the name of an entity (i.e. is an identifier, 5819 -- expanded name, or an attribute reference that returns an entity). 5820 5821 function Next_Index (Id : Node_Id) return Node_Id; 5822 -- Given an index from a previous call to First_Index or Next_Index, 5823 -- returns a node representing the occurrence of the next index subtype, 5824 -- or Empty if there are no more index subtypes. 5825 5826 function Scope_Depth (Id : Entity_Id) return Uint; 5827 -- Returns the scope depth value of the Id, unless the Id is a record 5828 -- type, in which case it returns the scope depth of the record scope. 5829 5830 function Subtype_Kind (K : Entity_Kind) return Entity_Kind; 5831 -- Given an entity_kind K this function returns the entity_kind 5832 -- corresponding to subtype kind of the type represented by K. For 5833 -- example if K is E_Signed_Integer_Type then E_Signed_Integer_Subtype 5834 -- is returned. If K is already a subtype kind it itself is returned. An 5835 -- internal error is generated if no such correspondence exists for K. 5836 5837 ---------------------------------- 5838 -- Debugging Output Subprograms -- 5839 ---------------------------------- 5840 5841 procedure Write_Entity_Flags (Id : Entity_Id; Prefix : String); 5842 -- Writes a series of entries giving a line for each flag that is 5843 -- set to True. Each line is prefixed by the given string 5844 5845 procedure Write_Entity_Info (Id : Entity_Id; Prefix : String); 5846 -- A debugging procedure to write out information about an entity 5847 5848 procedure Write_Field6_Name (Id : Entity_Id); 5849 procedure Write_Field7_Name (Id : Entity_Id); 5850 procedure Write_Field8_Name (Id : Entity_Id); 5851 procedure Write_Field9_Name (Id : Entity_Id); 5852 procedure Write_Field10_Name (Id : Entity_Id); 5853 procedure Write_Field11_Name (Id : Entity_Id); 5854 procedure Write_Field12_Name (Id : Entity_Id); 5855 procedure Write_Field13_Name (Id : Entity_Id); 5856 procedure Write_Field14_Name (Id : Entity_Id); 5857 procedure Write_Field15_Name (Id : Entity_Id); 5858 procedure Write_Field16_Name (Id : Entity_Id); 5859 procedure Write_Field17_Name (Id : Entity_Id); 5860 procedure Write_Field18_Name (Id : Entity_Id); 5861 procedure Write_Field19_Name (Id : Entity_Id); 5862 procedure Write_Field20_Name (Id : Entity_Id); 5863 procedure Write_Field21_Name (Id : Entity_Id); 5864 procedure Write_Field22_Name (Id : Entity_Id); 5865 procedure Write_Field23_Name (Id : Entity_Id); 5866 -- These routines are used to output a nice symbolic name for the given 5867 -- field, depending on the Ekind. No blanks or end of lines are output, 5868 -- just the characters of the field name. 5869 5870 -------------------- 5871 -- Inline Pragmas -- 5872 -------------------- 5873 5874 -- Note that these inline pragmas are referenced by the XEINFO utility 5875 -- program in preparing the corresponding C header, and only those 5876 -- subprograms meeting the requirements documented in the section on 5877 -- XEINFO may be referenced in this section. 5878 5879 pragma Inline (Accept_Address); 5880 pragma Inline (Access_Disp_Table); 5881 pragma Inline (Actual_Subtype); 5882 pragma Inline (Address_Taken); 5883 pragma Inline (Alias); 5884 pragma Inline (Alignment); 5885 pragma Inline (Associated_Final_Chain); 5886 pragma Inline (Associated_Formal_Package); 5887 pragma Inline (Associated_Node_For_Itype); 5888 pragma Inline (Associated_Storage_Pool); 5889 pragma Inline (Barrier_Function); 5890 pragma Inline (Block_Node); 5891 pragma Inline (Body_Entity); 5892 pragma Inline (Body_Needed_For_SAL); 5893 pragma Inline (CR_Discriminant); 5894 pragma Inline (C_Pass_By_Copy); 5895 pragma Inline (Can_Never_Be_Null); 5896 pragma Inline (Checks_May_Be_Suppressed); 5897 pragma Inline (Class_Wide_Type); 5898 pragma Inline (Cloned_Subtype); 5899 pragma Inline (Component_Bit_Offset); 5900 pragma Inline (Component_Clause); 5901 pragma Inline (Component_Size); 5902 pragma Inline (Component_Type); 5903 pragma Inline (Corresponding_Concurrent_Type); 5904 pragma Inline (Corresponding_Discriminant); 5905 pragma Inline (Corresponding_Equality); 5906 pragma Inline (Corresponding_Record_Type); 5907 pragma Inline (Corresponding_Remote_Type); 5908 pragma Inline (Current_Value); 5909 pragma Inline (Debug_Info_Off); 5910 pragma Inline (Debug_Renaming_Link); 5911 pragma Inline (DTC_Entity); 5912 pragma Inline (DT_Entry_Count); 5913 pragma Inline (DT_Position); 5914 pragma Inline (Default_Expr_Function); 5915 pragma Inline (Default_Expressions_Processed); 5916 pragma Inline (Default_Value); 5917 pragma Inline (Delay_Cleanups); 5918 pragma Inline (Delay_Subprogram_Descriptors); 5919 pragma Inline (Delta_Value); 5920 pragma Inline (Dependent_Instances); 5921 pragma Inline (Depends_On_Private); 5922 pragma Inline (Digits_Value); 5923 pragma Inline (Directly_Designated_Type); 5924 pragma Inline (Discard_Names); 5925 pragma Inline (Discriminal); 5926 pragma Inline (Discriminal_Link); 5927 pragma Inline (Discriminant_Checking_Func); 5928 pragma Inline (Discriminant_Constraint); 5929 pragma Inline (Discriminant_Default_Value); 5930 pragma Inline (Discriminant_Number); 5931 pragma Inline (Elaborate_All_Desirable); 5932 pragma Inline (Elaboration_Entity); 5933 pragma Inline (Elaboration_Entity_Required); 5934 pragma Inline (Enclosing_Scope); 5935 pragma Inline (Entry_Accepted); 5936 pragma Inline (Entry_Bodies_Array); 5937 pragma Inline (Entry_Cancel_Parameter); 5938 pragma Inline (Entry_Component); 5939 pragma Inline (Entry_Formal); 5940 pragma Inline (Entry_Index_Constant); 5941 pragma Inline (Entry_Index_Type); 5942 pragma Inline (Entry_Parameters_Type); 5943 pragma Inline (Enum_Pos_To_Rep); 5944 pragma Inline (Enumeration_Pos); 5945 pragma Inline (Enumeration_Rep); 5946 pragma Inline (Enumeration_Rep_Expr); 5947 pragma Inline (Equivalent_Type); 5948 pragma Inline (Esize); 5949 pragma Inline (Exception_Code); 5950 pragma Inline (Extra_Accessibility); 5951 pragma Inline (Extra_Constrained); 5952 pragma Inline (Extra_Formal); 5953 pragma Inline (Finalization_Chain_Entity); 5954 pragma Inline (First_Entity); 5955 pragma Inline (First_Index); 5956 pragma Inline (First_Literal); 5957 pragma Inline (First_Optional_Parameter); 5958 pragma Inline (First_Private_Entity); 5959 pragma Inline (First_Rep_Item); 5960 pragma Inline (Freeze_Node); 5961 pragma Inline (From_With_Type); 5962 pragma Inline (Full_View); 5963 pragma Inline (Function_Returns_With_DSP); 5964 pragma Inline (Generic_Homonym); 5965 pragma Inline (Generic_Renamings); 5966 pragma Inline (Handler_Records); 5967 pragma Inline (Has_Aliased_Components); 5968 pragma Inline (Has_Alignment_Clause); 5969 pragma Inline (Has_All_Calls_Remote); 5970 pragma Inline (Has_Atomic_Components); 5971 pragma Inline (Has_Biased_Representation); 5972 pragma Inline (Has_Completion); 5973 pragma Inline (Has_Completion_In_Body); 5974 pragma Inline (Has_Complex_Representation); 5975 pragma Inline (Has_Component_Size_Clause); 5976 pragma Inline (Has_Contiguous_Rep); 5977 pragma Inline (Has_Controlled_Component); 5978 pragma Inline (Has_Controlling_Result); 5979 pragma Inline (Has_Convention_Pragma); 5980 pragma Inline (Has_Delayed_Freeze); 5981 pragma Inline (Has_Discriminants); 5982 pragma Inline (Has_Enumeration_Rep_Clause); 5983 pragma Inline (Has_Exit); 5984 pragma Inline (Has_External_Tag_Rep_Clause); 5985 pragma Inline (Has_Fully_Qualified_Name); 5986 pragma Inline (Has_Gigi_Rep_Item); 5987 pragma Inline (Has_Homonym); 5988 pragma Inline (Has_Machine_Radix_Clause); 5989 pragma Inline (Has_Master_Entity); 5990 pragma Inline (Has_Missing_Return); 5991 pragma Inline (Has_Nested_Block_With_Handler); 5992 pragma Inline (Has_Forward_Instantiation); 5993 pragma Inline (Has_Non_Standard_Rep); 5994 pragma Inline (Has_Object_Size_Clause); 5995 pragma Inline (Has_Per_Object_Constraint); 5996 pragma Inline (Has_Pragma_Controlled); 5997 pragma Inline (Has_Pragma_Elaborate_Body); 5998 pragma Inline (Has_Pragma_Inline); 5999 pragma Inline (Has_Pragma_Pack); 6000 pragma Inline (Has_Pragma_Pure_Function); 6001 pragma Inline (Has_Pragma_Unreferenced); 6002 pragma Inline (Has_Primitive_Operations); 6003 pragma Inline (Has_Private_Declaration); 6004 pragma Inline (Has_Qualified_Name); 6005 pragma Inline (Has_Record_Rep_Clause); 6006 pragma Inline (Has_Recursive_Call); 6007 pragma Inline (Has_Size_Clause); 6008 pragma Inline (Has_Small_Clause); 6009 pragma Inline (Has_Specified_Layout); 6010 pragma Inline (Has_Storage_Size_Clause); 6011 pragma Inline (Has_Subprogram_Descriptor); 6012 pragma Inline (Has_Task); 6013 pragma Inline (Has_Unchecked_Union); 6014 pragma Inline (Has_Unknown_Discriminants); 6015 pragma Inline (Has_Volatile_Components); 6016 pragma Inline (Has_Xref_Entry); 6017 pragma Inline (Hiding_Loop_Variable); 6018 pragma Inline (Homonym); 6019 pragma Inline (In_Package_Body); 6020 pragma Inline (In_Private_Part); 6021 pragma Inline (In_Use); 6022 pragma Inline (Inner_Instances); 6023 pragma Inline (Interface_Name); 6024 pragma Inline (Is_AST_Entry); 6025 pragma Inline (Is_Abstract); 6026 pragma Inline (Is_Access_Constant); 6027 pragma Inline (Is_Access_Type); 6028 pragma Inline (Is_Aliased); 6029 pragma Inline (Is_Array_Type); 6030 pragma Inline (Is_Asynchronous); 6031 pragma Inline (Is_Atomic); 6032 pragma Inline (Is_Bit_Packed_Array); 6033 pragma Inline (Is_CPP_Class); 6034 pragma Inline (Is_Called); 6035 pragma Inline (Is_Character_Type); 6036 pragma Inline (Is_Child_Unit); 6037 pragma Inline (Is_Class_Wide_Equivalent_Type); 6038 pragma Inline (Is_Class_Wide_Type); 6039 pragma Inline (Is_Compilation_Unit); 6040 pragma Inline (Is_Completely_Hidden); 6041 pragma Inline (Is_Composite_Type); 6042 pragma Inline (Is_Concurrent_Body); 6043 pragma Inline (Is_Concurrent_Record_Type); 6044 pragma Inline (Is_Concurrent_Type); 6045 pragma Inline (Is_Constr_Subt_For_UN_Aliased); 6046 pragma Inline (Is_Constr_Subt_For_U_Nominal); 6047 pragma Inline (Is_Constrained); 6048 pragma Inline (Is_Constructor); 6049 pragma Inline (Is_Controlled); 6050 pragma Inline (Is_Controlling_Formal); 6051 pragma Inline (Is_Decimal_Fixed_Point_Type); 6052 pragma Inline (Is_Discrim_SO_Function); 6053 pragma Inline (Is_Digits_Type); 6054 pragma Inline (Is_Discrete_Or_Fixed_Point_Type); 6055 pragma Inline (Is_Discrete_Type); 6056 pragma Inline (Is_Dispatching_Operation); 6057 pragma Inline (Is_Elementary_Type); 6058 pragma Inline (Is_Eliminated); 6059 pragma Inline (Is_Entry); 6060 pragma Inline (Is_Entry_Formal); 6061 pragma Inline (Is_Enumeration_Type); 6062 pragma Inline (Is_Exported); 6063 pragma Inline (Is_First_Subtype); 6064 pragma Inline (Is_Fixed_Point_Type); 6065 pragma Inline (Is_Floating_Point_Type); 6066 pragma Inline (Is_For_Access_Subtype); 6067 pragma Inline (Is_Formal); 6068 pragma Inline (Is_Formal_Subprogram); 6069 pragma Inline (Is_Frozen); 6070 pragma Inline (Is_Generic_Actual_Type); 6071 pragma Inline (Is_Generic_Instance); 6072 pragma Inline (Is_Generic_Subprogram); 6073 pragma Inline (Is_Generic_Type); 6074 pragma Inline (Is_Generic_Unit); 6075 pragma Inline (Is_Hidden); 6076 pragma Inline (Is_Hidden_Open_Scope); 6077 pragma Inline (Is_Immediately_Visible); 6078 pragma Inline (Is_Imported); 6079 pragma Inline (Is_Incomplete_Or_Private_Type); 6080 pragma Inline (Is_Inlined); 6081 pragma Inline (Is_Instantiated); 6082 pragma Inline (Is_Integer_Type); 6083 pragma Inline (Is_Internal); 6084 pragma Inline (Is_Interrupt_Handler); 6085 pragma Inline (Is_Intrinsic_Subprogram); 6086 pragma Inline (Is_Itype); 6087 pragma Inline (Is_Known_Non_Null); 6088 pragma Inline (Is_Known_Valid); 6089 pragma Inline (Is_Limited_Composite); 6090 pragma Inline (Is_Limited_Record); 6091 pragma Inline (Is_Machine_Code_Subprogram); 6092 pragma Inline (Is_Modular_Integer_Type); 6093 pragma Inline (Is_Named_Number); 6094 pragma Inline (Is_Non_Static_Subtype); 6095 pragma Inline (Is_Null_Init_Proc); 6096 pragma Inline (Is_Numeric_Type); 6097 pragma Inline (Is_Object); 6098 pragma Inline (Is_Optional_Parameter); 6099 pragma Inline (Is_Package_Body_Entity); 6100 pragma Inline (Is_Ordinary_Fixed_Point_Type); 6101 pragma Inline (Is_Overloadable); 6102 pragma Inline (Is_Overriding_Operation); 6103 pragma Inline (Is_Packed); 6104 pragma Inline (Is_Packed_Array_Type); 6105 pragma Inline (Is_Potentially_Use_Visible); 6106 pragma Inline (Is_Preelaborated); 6107 pragma Inline (Is_Private_Composite); 6108 pragma Inline (Is_Private_Descendant); 6109 pragma Inline (Is_Private_Type); 6110 pragma Inline (Is_Protected_Type); 6111 pragma Inline (Is_Psected); 6112 pragma Inline (Is_Public); 6113 pragma Inline (Is_Pure); 6114 pragma Inline (Is_Real_Type); 6115 pragma Inline (Is_Record_Type); 6116 pragma Inline (Is_Remote_Call_Interface); 6117 pragma Inline (Is_Remote_Types); 6118 pragma Inline (Is_Renaming_Of_Object); 6119 pragma Inline (Is_Scalar_Type); 6120 pragma Inline (Is_Shared_Passive); 6121 pragma Inline (Is_Signed_Integer_Type); 6122 pragma Inline (Is_Statically_Allocated); 6123 pragma Inline (Is_Subprogram); 6124 pragma Inline (Is_Tag); 6125 pragma Inline (Is_Tagged_Type); 6126 pragma Inline (Is_Thread_Body); 6127 pragma Inline (Is_True_Constant); 6128 pragma Inline (Is_Task_Type); 6129 pragma Inline (Is_Type); 6130 pragma Inline (Is_Unchecked_Union); 6131 pragma Inline (Is_Unsigned_Type); 6132 pragma Inline (Is_VMS_Exception); 6133 pragma Inline (Is_Valued_Procedure); 6134 pragma Inline (Is_Visible_Child_Unit); 6135 pragma Inline (Kill_Elaboration_Checks); 6136 pragma Inline (Kill_Range_Checks); 6137 pragma Inline (Kill_Tag_Checks); 6138 pragma Inline (Last_Entity); 6139 pragma Inline (Limited_Views); 6140 pragma Inline (Lit_Indexes); 6141 pragma Inline (Lit_Strings); 6142 pragma Inline (Machine_Radix_10); 6143 pragma Inline (Master_Id); 6144 pragma Inline (Materialize_Entity); 6145 pragma Inline (Mechanism); 6146 pragma Inline (Modulus); 6147 pragma Inline (Needs_Debug_Info); 6148 pragma Inline (Needs_No_Actuals); 6149 pragma Inline (Never_Set_In_Source); 6150 pragma Inline (Next_Index); 6151 pragma Inline (Next_Inlined_Subprogram); 6152 pragma Inline (Next_Literal); 6153 pragma Inline (No_Pool_Assigned); 6154 pragma Inline (No_Return); 6155 pragma Inline (Non_Binary_Modulus); 6156 pragma Inline (Non_Limited_View); 6157 pragma Inline (Nonzero_Is_True); 6158 pragma Inline (Normalized_First_Bit); 6159 pragma Inline (Normalized_Position); 6160 pragma Inline (Normalized_Position_Max); 6161 pragma Inline (Object_Ref); 6162 pragma Inline (Original_Array_Type); 6163 pragma Inline (Original_Record_Component); 6164 pragma Inline (Packed_Array_Type); 6165 pragma Inline (Parameter_Mode); 6166 pragma Inline (Parent_Subtype); 6167 pragma Inline (Primitive_Operations); 6168 pragma Inline (Prival); 6169 pragma Inline (Privals_Chain); 6170 pragma Inline (Private_Dependents); 6171 pragma Inline (Private_View); 6172 pragma Inline (Protected_Body_Subprogram); 6173 pragma Inline (Protected_Formal); 6174 pragma Inline (Protected_Operation); 6175 pragma Inline (RM_Size); 6176 pragma Inline (Reachable); 6177 pragma Inline (Referenced); 6178 pragma Inline (Referenced_As_LHS); 6179 pragma Inline (Referenced_Object); 6180 pragma Inline (Register_Exception_Call); 6181 pragma Inline (Related_Array_Object); 6182 pragma Inline (Related_Instance); 6183 pragma Inline (Renamed_Entity); 6184 pragma Inline (Renamed_Object); 6185 pragma Inline (Renaming_Map); 6186 pragma Inline (Return_Present); 6187 pragma Inline (Returns_By_Ref); 6188 pragma Inline (Reverse_Bit_Order); 6189 pragma Inline (Scalar_Range); 6190 pragma Inline (Scale_Value); 6191 pragma Inline (Scope_Depth_Value); 6192 pragma Inline (Sec_Stack_Needed_For_Return); 6193 pragma Inline (Shadow_Entities); 6194 pragma Inline (Shared_Var_Assign_Proc); 6195 pragma Inline (Shared_Var_Read_Proc); 6196 pragma Inline (Size_Check_Code); 6197 pragma Inline (Size_Depends_On_Discriminant); 6198 pragma Inline (Size_Known_At_Compile_Time); 6199 pragma Inline (Small_Value); 6200 pragma Inline (Spec_Entity); 6201 pragma Inline (Storage_Size_Variable); 6202 pragma Inline (Stored_Constraint); 6203 pragma Inline (Strict_Alignment); 6204 pragma Inline (String_Literal_Length); 6205 pragma Inline (String_Literal_Low_Bound); 6206 pragma Inline (Suppress_Elaboration_Warnings); 6207 pragma Inline (Suppress_Init_Proc); 6208 pragma Inline (Suppress_Style_Checks); 6209 pragma Inline (Treat_As_Volatile); 6210 pragma Inline (Underlying_Full_View); 6211 pragma Inline (Unset_Reference); 6212 pragma Inline (Uses_Sec_Stack); 6213 pragma Inline (Vax_Float); 6214 pragma Inline (Warnings_Off); 6215 6216 pragma Inline (Init_Alignment); 6217 pragma Inline (Init_Component_Bit_Offset); 6218 pragma Inline (Init_Component_Size); 6219 pragma Inline (Init_Digits_Value); 6220 pragma Inline (Init_Esize); 6221 pragma Inline (Init_RM_Size); 6222 6223 pragma Inline (Set_Accept_Address); 6224 pragma Inline (Set_Access_Disp_Table); 6225 pragma Inline (Set_Actual_Subtype); 6226 pragma Inline (Set_Address_Taken); 6227 pragma Inline (Set_Alias); 6228 pragma Inline (Set_Alignment); 6229 pragma Inline (Set_Associated_Final_Chain); 6230 pragma Inline (Set_Associated_Formal_Package); 6231 pragma Inline (Set_Associated_Node_For_Itype); 6232 pragma Inline (Set_Associated_Storage_Pool); 6233 pragma Inline (Set_Barrier_Function); 6234 pragma Inline (Set_Block_Node); 6235 pragma Inline (Set_Body_Entity); 6236 pragma Inline (Set_Body_Needed_For_SAL); 6237 pragma Inline (Set_CR_Discriminant); 6238 pragma Inline (Set_C_Pass_By_Copy); 6239 pragma Inline (Set_Can_Never_Be_Null); 6240 pragma Inline (Set_Checks_May_Be_Suppressed); 6241 pragma Inline (Set_Class_Wide_Type); 6242 pragma Inline (Set_Cloned_Subtype); 6243 pragma Inline (Set_Component_Bit_Offset); 6244 pragma Inline (Set_Component_Clause); 6245 pragma Inline (Set_Component_Size); 6246 pragma Inline (Set_Component_Type); 6247 pragma Inline (Set_Corresponding_Concurrent_Type); 6248 pragma Inline (Set_Corresponding_Discriminant); 6249 pragma Inline (Set_Corresponding_Equality); 6250 pragma Inline (Set_Corresponding_Record_Type); 6251 pragma Inline (Set_Corresponding_Remote_Type); 6252 pragma Inline (Set_Current_Value); 6253 pragma Inline (Set_Debug_Info_Off); 6254 pragma Inline (Set_Debug_Renaming_Link); 6255 pragma Inline (Set_DTC_Entity); 6256 pragma Inline (Set_DT_Position); 6257 pragma Inline (Set_Default_Expr_Function); 6258 pragma Inline (Set_Default_Expressions_Processed); 6259 pragma Inline (Set_Default_Value); 6260 pragma Inline (Set_Delay_Cleanups); 6261 pragma Inline (Set_Delay_Subprogram_Descriptors); 6262 pragma Inline (Set_Delta_Value); 6263 pragma Inline (Set_Dependent_Instances); 6264 pragma Inline (Set_Depends_On_Private); 6265 pragma Inline (Set_Digits_Value); 6266 pragma Inline (Set_Directly_Designated_Type); 6267 pragma Inline (Set_Discard_Names); 6268 pragma Inline (Set_Discriminal); 6269 pragma Inline (Set_Discriminal_Link); 6270 pragma Inline (Set_Discriminant_Checking_Func); 6271 pragma Inline (Set_Discriminant_Constraint); 6272 pragma Inline (Set_Discriminant_Default_Value); 6273 pragma Inline (Set_Discriminant_Number); 6274 pragma Inline (Set_Elaborate_All_Desirable); 6275 pragma Inline (Set_Elaboration_Entity); 6276 pragma Inline (Set_Elaboration_Entity_Required); 6277 pragma Inline (Set_Enclosing_Scope); 6278 pragma Inline (Set_Entry_Accepted); 6279 pragma Inline (Set_Entry_Bodies_Array); 6280 pragma Inline (Set_Entry_Cancel_Parameter); 6281 pragma Inline (Set_Entry_Component); 6282 pragma Inline (Set_Entry_Formal); 6283 pragma Inline (Set_Entry_Parameters_Type); 6284 pragma Inline (Set_Enum_Pos_To_Rep); 6285 pragma Inline (Set_Enumeration_Pos); 6286 pragma Inline (Set_Enumeration_Rep); 6287 pragma Inline (Set_Enumeration_Rep_Expr); 6288 pragma Inline (Set_Equivalent_Type); 6289 pragma Inline (Set_Esize); 6290 pragma Inline (Set_Exception_Code); 6291 pragma Inline (Set_Extra_Accessibility); 6292 pragma Inline (Set_Extra_Constrained); 6293 pragma Inline (Set_Extra_Formal); 6294 pragma Inline (Set_Finalization_Chain_Entity); 6295 pragma Inline (Set_First_Entity); 6296 pragma Inline (Set_First_Index); 6297 pragma Inline (Set_First_Literal); 6298 pragma Inline (Set_First_Optional_Parameter); 6299 pragma Inline (Set_First_Private_Entity); 6300 pragma Inline (Set_First_Rep_Item); 6301 pragma Inline (Set_Freeze_Node); 6302 pragma Inline (Set_From_With_Type); 6303 pragma Inline (Set_Full_View); 6304 pragma Inline (Set_Function_Returns_With_DSP); 6305 pragma Inline (Set_Generic_Homonym); 6306 pragma Inline (Set_Generic_Renamings); 6307 pragma Inline (Set_Handler_Records); 6308 pragma Inline (Set_Has_Aliased_Components); 6309 pragma Inline (Set_Has_Alignment_Clause); 6310 pragma Inline (Set_Has_All_Calls_Remote); 6311 pragma Inline (Set_Has_Atomic_Components); 6312 pragma Inline (Set_Has_Biased_Representation); 6313 pragma Inline (Set_Has_Completion); 6314 pragma Inline (Set_Has_Completion_In_Body); 6315 pragma Inline (Set_Has_Complex_Representation); 6316 pragma Inline (Set_Has_Component_Size_Clause); 6317 pragma Inline (Set_Has_Contiguous_Rep); 6318 pragma Inline (Set_Has_Controlled_Component); 6319 pragma Inline (Set_Has_Controlling_Result); 6320 pragma Inline (Set_Has_Convention_Pragma); 6321 pragma Inline (Set_Has_Delayed_Freeze); 6322 pragma Inline (Set_Has_Discriminants); 6323 pragma Inline (Set_Has_Enumeration_Rep_Clause); 6324 pragma Inline (Set_Has_Exit); 6325 pragma Inline (Set_Has_External_Tag_Rep_Clause); 6326 pragma Inline (Set_Has_Fully_Qualified_Name); 6327 pragma Inline (Set_Has_Gigi_Rep_Item); 6328 pragma Inline (Set_Has_Homonym); 6329 pragma Inline (Set_Has_Machine_Radix_Clause); 6330 pragma Inline (Set_Has_Master_Entity); 6331 pragma Inline (Set_Has_Missing_Return); 6332 pragma Inline (Set_Has_Nested_Block_With_Handler); 6333 pragma Inline (Set_Has_Forward_Instantiation); 6334 pragma Inline (Set_Has_Non_Standard_Rep); 6335 pragma Inline (Set_Has_Object_Size_Clause); 6336 pragma Inline (Set_Has_Per_Object_Constraint); 6337 pragma Inline (Set_Has_Pragma_Controlled); 6338 pragma Inline (Set_Has_Pragma_Elaborate_Body); 6339 pragma Inline (Set_Has_Pragma_Inline); 6340 pragma Inline (Set_Has_Pragma_Pack); 6341 pragma Inline (Set_Has_Pragma_Pure_Function); 6342 pragma Inline (Set_Has_Pragma_Unreferenced); 6343 pragma Inline (Set_Has_Primitive_Operations); 6344 pragma Inline (Set_Has_Private_Declaration); 6345 pragma Inline (Set_Has_Qualified_Name); 6346 pragma Inline (Set_Has_Record_Rep_Clause); 6347 pragma Inline (Set_Has_Recursive_Call); 6348 pragma Inline (Set_Has_Size_Clause); 6349 pragma Inline (Set_Has_Small_Clause); 6350 pragma Inline (Set_Has_Specified_Layout); 6351 pragma Inline (Set_Has_Storage_Size_Clause); 6352 pragma Inline (Set_Has_Subprogram_Descriptor); 6353 pragma Inline (Set_Has_Task); 6354 pragma Inline (Set_Has_Unchecked_Union); 6355 pragma Inline (Set_Has_Unknown_Discriminants); 6356 pragma Inline (Set_Has_Volatile_Components); 6357 pragma Inline (Set_Has_Xref_Entry); 6358 pragma Inline (Set_Hiding_Loop_Variable); 6359 pragma Inline (Set_Homonym); 6360 pragma Inline (Set_In_Package_Body); 6361 pragma Inline (Set_In_Private_Part); 6362 pragma Inline (Set_In_Use); 6363 pragma Inline (Set_Inner_Instances); 6364 pragma Inline (Set_Interface_Name); 6365 pragma Inline (Set_Is_AST_Entry); 6366 pragma Inline (Set_Is_Abstract); 6367 pragma Inline (Set_Is_Access_Constant); 6368 pragma Inline (Set_Is_Aliased); 6369 pragma Inline (Set_Is_Asynchronous); 6370 pragma Inline (Set_Is_Atomic); 6371 pragma Inline (Set_Is_Bit_Packed_Array); 6372 pragma Inline (Set_Is_CPP_Class); 6373 pragma Inline (Set_Is_Called); 6374 pragma Inline (Set_Is_Character_Type); 6375 pragma Inline (Set_Is_Child_Unit); 6376 pragma Inline (Set_Is_Class_Wide_Equivalent_Type); 6377 pragma Inline (Set_Is_Compilation_Unit); 6378 pragma Inline (Set_Is_Completely_Hidden); 6379 pragma Inline (Set_Is_Concurrent_Record_Type); 6380 pragma Inline (Set_Is_Constr_Subt_For_U_Nominal); 6381 pragma Inline (Set_Is_Constr_Subt_For_UN_Aliased); 6382 pragma Inline (Set_Is_Constrained); 6383 pragma Inline (Set_Is_Constructor); 6384 pragma Inline (Set_Is_Controlled); 6385 pragma Inline (Set_Is_Controlling_Formal); 6386 pragma Inline (Set_Is_Discrim_SO_Function); 6387 pragma Inline (Set_Is_Dispatching_Operation); 6388 pragma Inline (Set_Is_Eliminated); 6389 pragma Inline (Set_Is_Entry_Formal); 6390 pragma Inline (Set_Is_Exported); 6391 pragma Inline (Set_Is_First_Subtype); 6392 pragma Inline (Set_Is_For_Access_Subtype); 6393 pragma Inline (Set_Is_Formal_Subprogram); 6394 pragma Inline (Set_Is_Frozen); 6395 pragma Inline (Set_Is_Generic_Actual_Type); 6396 pragma Inline (Set_Is_Generic_Instance); 6397 pragma Inline (Set_Is_Generic_Type); 6398 pragma Inline (Set_Is_Hidden); 6399 pragma Inline (Set_Is_Hidden_Open_Scope); 6400 pragma Inline (Set_Is_Immediately_Visible); 6401 pragma Inline (Set_Is_Imported); 6402 pragma Inline (Set_Is_Inlined); 6403 pragma Inline (Set_Is_Instantiated); 6404 pragma Inline (Set_Is_Internal); 6405 pragma Inline (Set_Is_Interrupt_Handler); 6406 pragma Inline (Set_Is_Intrinsic_Subprogram); 6407 pragma Inline (Set_Is_Itype); 6408 pragma Inline (Set_Is_Known_Non_Null); 6409 pragma Inline (Set_Is_Known_Valid); 6410 pragma Inline (Set_Is_Limited_Composite); 6411 pragma Inline (Set_Is_Limited_Record); 6412 pragma Inline (Set_Is_Machine_Code_Subprogram); 6413 pragma Inline (Set_Is_Non_Static_Subtype); 6414 pragma Inline (Set_Is_Null_Init_Proc); 6415 pragma Inline (Set_Is_Optional_Parameter); 6416 pragma Inline (Set_Is_Overriding_Operation); 6417 pragma Inline (Set_Is_Package_Body_Entity); 6418 pragma Inline (Set_Is_Packed); 6419 pragma Inline (Set_Is_Packed_Array_Type); 6420 pragma Inline (Set_Is_Potentially_Use_Visible); 6421 pragma Inline (Set_Is_Preelaborated); 6422 pragma Inline (Set_Is_Private_Composite); 6423 pragma Inline (Set_Is_Private_Descendant); 6424 pragma Inline (Set_Is_Psected); 6425 pragma Inline (Set_Is_Public); 6426 pragma Inline (Set_Is_Pure); 6427 pragma Inline (Set_Is_Remote_Call_Interface); 6428 pragma Inline (Set_Is_Remote_Types); 6429 pragma Inline (Set_Is_Renaming_Of_Object); 6430 pragma Inline (Set_Is_Shared_Passive); 6431 pragma Inline (Set_Is_Statically_Allocated); 6432 pragma Inline (Set_Is_Tag); 6433 pragma Inline (Set_Is_Tagged_Type); 6434 pragma Inline (Set_Is_Thread_Body); 6435 pragma Inline (Set_Is_True_Constant); 6436 pragma Inline (Set_Is_Unchecked_Union); 6437 pragma Inline (Set_Is_Unsigned_Type); 6438 pragma Inline (Set_Is_VMS_Exception); 6439 pragma Inline (Set_Is_Valued_Procedure); 6440 pragma Inline (Set_Is_Visible_Child_Unit); 6441 pragma Inline (Set_Is_Volatile); 6442 pragma Inline (Set_Kill_Elaboration_Checks); 6443 pragma Inline (Set_Kill_Range_Checks); 6444 pragma Inline (Set_Kill_Tag_Checks); 6445 pragma Inline (Set_Last_Entity); 6446 pragma Inline (Set_Limited_Views); 6447 pragma Inline (Set_Lit_Indexes); 6448 pragma Inline (Set_Lit_Strings); 6449 pragma Inline (Set_Machine_Radix_10); 6450 pragma Inline (Set_Master_Id); 6451 pragma Inline (Set_Materialize_Entity); 6452 pragma Inline (Set_Mechanism); 6453 pragma Inline (Set_Modulus); 6454 pragma Inline (Set_Needs_Debug_Info); 6455 pragma Inline (Set_Needs_No_Actuals); 6456 pragma Inline (Set_Never_Set_In_Source); 6457 pragma Inline (Set_Next_Inlined_Subprogram); 6458 pragma Inline (Set_No_Pool_Assigned); 6459 pragma Inline (Set_No_Return); 6460 pragma Inline (Set_Non_Binary_Modulus); 6461 pragma Inline (Set_Non_Limited_View); 6462 pragma Inline (Set_Nonzero_Is_True); 6463 pragma Inline (Set_Normalized_First_Bit); 6464 pragma Inline (Set_Normalized_Position); 6465 pragma Inline (Set_Normalized_Position_Max); 6466 pragma Inline (Set_Object_Ref); 6467 pragma Inline (Set_Original_Array_Type); 6468 pragma Inline (Set_Original_Record_Component); 6469 pragma Inline (Set_Packed_Array_Type); 6470 pragma Inline (Set_Parent_Subtype); 6471 pragma Inline (Set_Primitive_Operations); 6472 pragma Inline (Set_Prival); 6473 pragma Inline (Set_Privals_Chain); 6474 pragma Inline (Set_Private_Dependents); 6475 pragma Inline (Set_Private_View); 6476 pragma Inline (Set_Protected_Body_Subprogram); 6477 pragma Inline (Set_Protected_Formal); 6478 pragma Inline (Set_Protected_Operation); 6479 pragma Inline (Set_RM_Size); 6480 pragma Inline (Set_Reachable); 6481 pragma Inline (Set_Referenced); 6482 pragma Inline (Set_Referenced_As_LHS); 6483 pragma Inline (Set_Referenced_Object); 6484 pragma Inline (Set_Register_Exception_Call); 6485 pragma Inline (Set_Related_Array_Object); 6486 pragma Inline (Set_Related_Instance); 6487 pragma Inline (Set_Renamed_Entity); 6488 pragma Inline (Set_Renamed_Object); 6489 pragma Inline (Set_Renaming_Map); 6490 pragma Inline (Set_Return_Present); 6491 pragma Inline (Set_Returns_By_Ref); 6492 pragma Inline (Set_Reverse_Bit_Order); 6493 pragma Inline (Set_Scalar_Range); 6494 pragma Inline (Set_Scale_Value); 6495 pragma Inline (Set_Scope_Depth_Value); 6496 pragma Inline (Set_Sec_Stack_Needed_For_Return); 6497 pragma Inline (Set_Shadow_Entities); 6498 pragma Inline (Set_Shared_Var_Assign_Proc); 6499 pragma Inline (Set_Shared_Var_Read_Proc); 6500 pragma Inline (Set_Size_Check_Code); 6501 pragma Inline (Set_Size_Depends_On_Discriminant); 6502 pragma Inline (Set_Size_Known_At_Compile_Time); 6503 pragma Inline (Set_Small_Value); 6504 pragma Inline (Set_Spec_Entity); 6505 pragma Inline (Set_Storage_Size_Variable); 6506 pragma Inline (Set_Stored_Constraint); 6507 pragma Inline (Set_Strict_Alignment); 6508 pragma Inline (Set_String_Literal_Length); 6509 pragma Inline (Set_String_Literal_Low_Bound); 6510 pragma Inline (Set_Suppress_Elaboration_Warnings); 6511 pragma Inline (Set_Suppress_Init_Proc); 6512 pragma Inline (Set_Suppress_Style_Checks); 6513 pragma Inline (Set_Treat_As_Volatile); 6514 pragma Inline (Set_Underlying_Full_View); 6515 pragma Inline (Set_Unset_Reference); 6516 pragma Inline (Set_Uses_Sec_Stack); 6517 pragma Inline (Set_Vax_Float); 6518 pragma Inline (Set_Warnings_Off); 6519 6520 -- END XEINFO INLINES 6521 6522 -- The following Inline pragmas are *not* read by xeinfo when building 6523 -- the C version of this interface automatically (so the C version will 6524 -- end up making out of line calls). The pragma scan in xeinfo will be 6525 -- terminated on encountering the END XEINFO INLINES line. We inline 6526 -- things here which are small, but not of the canonical attribute 6527 -- access/set format that can be handled by xeinfo. 6528 6529 pragma Inline (Is_Package); 6530 pragma Inline (Is_Wrapper_Package); 6531 pragma Inline (Known_RM_Size); 6532 pragma Inline (Known_Static_Component_Bit_Offset); 6533 pragma Inline (Known_Static_RM_Size); 6534 pragma Inline (Scope_Depth); 6535 pragma Inline (Scope_Depth_Set); 6536 pragma Inline (Unknown_RM_Size); 6537 6538end Einfo; 6539