diff options
-rw-r--r-- | gcc/ada/ChangeLog | 50 | ||||
-rw-r--r-- | gcc/ada/atree.ads | 2 | ||||
-rw-r--r-- | gcc/ada/bindgen.adb | 30 | ||||
-rw-r--r-- | gcc/ada/einfo.ads | 861 | ||||
-rw-r--r-- | gcc/ada/exp_attr.adb | 3 | ||||
-rw-r--r-- | gcc/ada/exp_ch9.adb | 13 | ||||
-rw-r--r-- | gcc/ada/exp_dist.adb | 63 | ||||
-rw-r--r-- | gcc/ada/exp_dist.ads | 13 | ||||
-rw-r--r-- | gcc/ada/rtsfind.ads | 2 | ||||
-rw-r--r-- | gcc/ada/s-tarest.adb | 26 | ||||
-rw-r--r-- | gcc/ada/s-tarest.ads | 23 | ||||
-rw-r--r-- | gcc/ada/sem_ch13.adb | 10 | ||||
-rw-r--r-- | gcc/ada/sem_ch5.adb | 50 | ||||
-rw-r--r-- | gcc/ada/sem_res.adb | 9 |
14 files changed, 648 insertions, 507 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index ecd16a2f91e..9a5a99d79c9 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,53 @@ +2012-10-29 Robert Dewar <dewar@adacore.com> + + * sem_ch5.adb (Analyze_Loop_Statement): Add warning for identical + inner/outer ranges. + +2012-10-29 Robert Dewar <dewar@adacore.com> + + * einfo.ads: Change terminology "present" to "defined" in talking + about whether a given field is defined for a given entity kind. + +2012-10-29 Bob Duff <duff@adacore.com> + + * atree.ads: Minor comment fix. + +2012-10-29 Bob Duff <duff@adacore.com> + + * sem_ch13.adb (Replace_Type_Reference): Set_Comes_From_Source. + Otherwise, the node is ignored by ASIS. + * sem_ch5.adb: Minor reformatting. + +2012-10-29 Thomas Quinot <quinot@adacore.com> + + * exp_attr.adb, exp_dist.adb, exp_dist.ads (Build_To_Any_Call): Pass + an explicit Loc parameter to set the source location of generated + nodes. + +2012-10-29 Tristan Gingold <gingold@adacore.com> + + * exp_ch9.adb (Build_Task_Activation_Call): Do nothing on + restricted profile. + * bindgen.adb (System_Tasking_Restricted_Stages_Used): New variable. + (Gen_Adainit): Declare and call Activate_Tasks when the above variable + is set. + (Resolve_Binder_Options): Set the variable. + * rtsfind.ads (RE_Activate_Restricted_Tasks): Removed (now unused). + * s-tarest.adb (Tasks_Activation_Chain): New variable. + (Activate_Restricted_Tasks): Removed, and replaced by ... + (Activate_Tasks): New procedure, to activate all tasks at + the end of elaboration. + (Create_Restricted_Tasks): Chain parameter is now unreferenced. Put + the created task on the Tasks_Activation_Chain list. + * s-tarest.ads (Activate_Restricted_Tasks): Removed. + (Activate_Tasks): Added. + +2012-10-29 Gary Dismukes <dismukes@adacore.com> + + * sem_res.adb (Resolve_If_Expression): Compare subtype of the 'then' + expression against the subtype of the expression rather than comparing + base types, same as is already done for the 'else' expression. + 2012-10-29 Steve Baird <baird@adacore.com> * sem_ch13.adb (Analyze_Attribute_Definition_Clause): If CodePeer_Mode diff --git a/gcc/ada/atree.ads b/gcc/ada/atree.ads index c0568ba5c77..305ef9f3978 100644 --- a/gcc/ada/atree.ads +++ b/gcc/ada/atree.ads @@ -767,7 +767,7 @@ package Atree is -- Note that this routine is very rarely used, since usually the -- default mechanism provided sets the right value, but in some -- unusual cases, the value needs to be reset (e.g. when a source - -- node is copied, and the copy must not have Comes_From_Source set. + -- node is copied, and the copy must not have Comes_From_Source set). procedure Set_Has_Aspects (N : Node_Id; Val : Boolean := True); pragma Inline (Set_Has_Aspects); diff --git a/gcc/ada/bindgen.adb b/gcc/ada/bindgen.adb index bb5a0aac906..36c41969860 100644 --- a/gcc/ada/bindgen.adb +++ b/gcc/ada/bindgen.adb @@ -78,6 +78,12 @@ package body Bindgen is -- disallow the creation of new dispatching domains just before calling -- the main procedure from the environment task. + System_Tasking_Restricted_Stages_Used : Boolean := False; + -- Flag indicating whether the unit System.Tasking.Restricted.Stages is in + -- the closure of the partition. This is set by Resolve_Binder_Options, + -- and it used to call a routine to active all the tasks at the end of + -- the elaboration. + Lib_Final_Built : Boolean := False; -- Flag indicating whether the finalize_library rountine has been built @@ -534,6 +540,12 @@ package body Bindgen is WBI (""); end if; + if System_Tasking_Restricted_Stages_Used then + WBI (" procedure Activate_Tasks;"); + WBI (" pragma Import (C, Activate_Tasks," & + " ""__gnat_activate_tasks"");"); + end if; + WBI (" begin"); if Main_Priority /= No_Main_Priority then @@ -625,6 +637,14 @@ package body Bindgen is WBI (" pragma Import (C, Handler_Installed, " & """__gnat_handler_installed"");"); + -- Import task activation procedure for ravenscar + + if System_Tasking_Restricted_Stages_Used then + WBI (" procedure Activate_Tasks;"); + WBI (" pragma Import (C, Activate_Tasks," & + " ""__gnat_activate_tasks"");"); + end if; + -- The import of the soft link which performs library-level object -- finalization is not needed for VM targets; regular Ada is used in -- that case. For restricted run-time libraries (ZFP and Ravenscar) @@ -945,6 +965,10 @@ package body Bindgen is WBI (" Freeze_Dispatching_Domains;"); end if; + if System_Tasking_Restricted_Stages_Used then + WBI (" Activate_Tasks;"); + end if; + -- Case of main program is CIL function or procedure if VM_Target = CLI_Target @@ -2863,6 +2887,12 @@ package body Bindgen is if OpenVMS_On_Target and then Name_Buffer (1 .. 5) = "dec%s" then With_DECGNAT := True; end if; + + -- Likewise for the use of restricted tasking + + if Name_Buffer (1 .. 34) = "system.tasking.restricted.stages%s" then + System_Tasking_Restricted_Stages_Used := True; + end if; end loop; end Resolve_Binder_Options; diff --git a/gcc/ada/einfo.ads b/gcc/ada/einfo.ads index bf360161bcf..08fba5a80c9 100644 --- a/gcc/ada/einfo.ads +++ b/gcc/ada/einfo.ads @@ -328,7 +328,7 @@ package Einfo is -- subtype will raise an assert error. -- Accept_Address (Elist21) --- Present in entries. If an accept has a statement sequence, then an +-- Defined in entries. If an accept has a statement sequence, then an -- address variable is created, which is used to hold the address of the -- parameters, as passed by the runtime. Accept_Address holds an element -- list which represents a stack of entities for these address variables. @@ -337,7 +337,7 @@ package Einfo is -- statements referencing the same entry. -- Access_Disp_Table (Elist16) [implementation base type only] --- Present in E_Record_Type and E_Record_Subtype entities. Set in tagged +-- Defined in E_Record_Type and E_Record_Subtype entities. Set in tagged -- types to point to their dispatch tables. The first two entities are -- associated with the primary dispatch table: 1) primary dispatch table -- with user-defined primitives 2) primary dispatch table with predefined @@ -351,7 +351,7 @@ package Einfo is -- For a non-tagged record, contains No_Elist. -- Actual_Subtype (Node17) --- Present in variables, constants, and formal parameters. This is the +-- Defined in variables, constants, and formal parameters. This is the -- subtype imposed by the value of the object, as opposed to its nominal -- subtype, which is imposed by the declaration. The actual subtype -- differs from the nominal one when the latter is indefinite (as in the @@ -377,7 +377,7 @@ package Einfo is -- Note: Gigi references this field in E_Task_Type entities??? -- Address_Taken (Flag104) --- Present in all entities. Set if the Address or Unrestricted_Access +-- Defined in all entities. Set if the Address or Unrestricted_Access -- attribute is applied directly to the entity, i.e. the entity is the -- entity of the prefix of the attribute reference. Also set if the -- entity is the second argument of an Asm_Input or Asm_Output attribute, @@ -390,7 +390,7 @@ package Einfo is -- that holds value of the Aft attribute for the type. -- Alias (Node18) --- Present in overloadable entities (literals, subprograms, entries) and +-- Defined in overloadable entities (literals, subprograms, entries) and -- subprograms that cover a primitive operation of an abstract interface -- (that is, subprograms with the Interface_Alias attribute). In case of -- overloaded entities it points to the parent subprogram of a derived @@ -404,7 +404,7 @@ package Einfo is -- because it hides the implicit one. Alias is always empty for entries. -- Alignment (Uint14) --- Present in entities for types and also in constants, variables +-- Defined in entities for types and also in constants, variables -- (including exceptions where it refers to the static data allocated for -- an exception), loop parameters, and formal parameters. This indicates -- the desired alignment for a type, or the actual alignment for an @@ -412,7 +412,7 @@ package Einfo is -- been set yet. The alignment can be set by an explicit alignment -- clause, or set by the front-end in package Layout, or set by the -- back-end as part of the back end back-annotation process. The --- alignment field is also present in E_Exception entities, but there it +-- alignment field is also defined in E_Exception entities, but there it -- is used only by the back-end for back annotation. -- Alignment_Clause (synthesized) @@ -427,11 +427,11 @@ package Einfo is -- into an attribute definition clause for this purpose. -- Associated_Formal_Package (Node12) --- Present in packages that are the actuals of formal_packages. Points +-- Defined in packages that are the actuals of formal_packages. Points -- to the entity in the declaration for the formal package. -- Associated_Node_For_Itype (Node8) --- Present in all type and subtype entities. Set non-Empty only for +-- Defined in all type and subtype entities. Set non-Empty only for -- Itypes. Set to point to the associated node for the Itype, i.e. -- the node whose elaboration generated the Itype. This is used for -- copying trees, to determine whether or not to copy an Itype, and @@ -448,14 +448,14 @@ package Einfo is -- creation of a given itype entity. -- Associated_Storage_Pool (Node22) [root type only] --- Present in simple and general access type entities. References the +-- Defined in simple and general access type entities. References the -- storage pool to be used for the corresponding collection. A value of --- Empty means that the default pool is to be used. This is present +-- Empty means that the default pool is to be used. This is defined -- only in the root type, since derived types must have the same pool -- as the parent type. -- Barrier_Function (Node12) --- Present in protected entries and entry families. This is the +-- Defined in protected entries and entry families. This is the -- subprogram declaration for the body of the function that returns -- the value of the entry barrier. @@ -471,7 +471,7 @@ package Einfo is -- the entity unchanged. -- Block_Node (Node11) --- Present in block entities. Points to the identifier in the +-- Defined in block entities. Points to the identifier in the -- Block_Statement itself. Used when retrieving the block construct -- for finalization purposes, The block entity has an implicit label -- declaration in the enclosing declarative part, and has otherwise @@ -481,16 +481,16 @@ package Einfo is -- be rewritten, e.g. in the process of removing dead code. -- Body_Entity (Node19) --- Present in package and generic package entities, points to the +-- Defined in package and generic package entities, points to the -- corresponding package body entity if one is present. -- Body_Needed_For_SAL (Flag40) --- Present in package and subprogram entities that are compilation +-- Defined in package and subprogram entities that are compilation -- units. Indicates that the source for the body must be included -- when the unit is part of a standalone library. -- C_Pass_By_Copy (Flag125) [implementation base type only] --- Present in record types. Set if a pragma Convention for the record +-- Defined in record types. Set if a pragma Convention for the record -- type specifies convention C_Pass_By_Copy. This convention name is -- treated as identical in all respects to convention C, except that -- if it is specified for a record type, then the C_Pass_By_Copy flag @@ -500,7 +500,7 @@ package Einfo is -- Export pragma). -- Can_Never_Be_Null (Flag38) --- This flag is present in all entities, but can only be set in an object +-- This flag is defined in all entities, but can only be set in an object -- which can never have a null value. This is set True for constant -- access values initialized to a non-null value. This is also True for -- all access parameters in Ada 83 and Ada 95 modes, and for access @@ -515,7 +515,7 @@ package Einfo is -- anonymous access type of a controlling formal. -- Can_Use_Internal_Rep (Flag229) [base type only] --- Present in Access_Subprogram_Kind nodes. This flag is set by the +-- Defined in Access_Subprogram_Kind nodes. This flag is set by the -- front end and used by the back end. False means that the back end -- must represent the type in the same way as Convention-C types (and -- other foreign-convention types). On many targets, this means that @@ -546,7 +546,7 @@ package Einfo is -- have convention Ada. -- Chars (Name1) --- Present in all entities. This field contains an entry into the names +-- Defined in all entities. This field contains an entry into the names -- table that has the character string of the identifier, character -- literal or operator symbol. See Namet for further details. Note that -- throughout the processing of the front end, this name is the simple @@ -557,19 +557,19 @@ package Einfo is -- entities will contain the encoded qualified names. -- Checks_May_Be_Suppressed (Flag31) --- Present in all entities. Set if a pragma Suppress or Unsuppress +-- Defined in all entities. Set if a pragma Suppress or Unsuppress -- mentions the entity specifically in the second argument. If this -- flag is set the Global_Entity_Suppress and Local_Entity_Suppress -- tables must be consulted to determine if there actually is an active -- Suppress or Unsuppress pragma that applies to the entity. -- Class_Wide_Type (Node9) --- Present in all type entities. For a tagged type or subtype, returns +-- Defined in all type entities. For a tagged type or subtype, returns -- the corresponding implicitly declared class-wide type. For a -- class-wide type, returns itself. Set to Empty for non-tagged types. -- Cloned_Subtype (Node16) --- Present in E_Record_Subtype and E_Class_Wide_Subtype entities. +-- Defined in E_Record_Subtype and E_Class_Wide_Subtype entities. -- Each such entity can either have a Discriminant_Constraint, in -- which case it represents a distinct type from the base type (and -- will have a list of components and discrimants in the list headed by @@ -588,7 +588,7 @@ package Einfo is -- -- For E_Class_Wide_Subtype, the presence of Equivalent_Type overrides -- this field. Note that this field ONLY appears in subtype entries, not --- in type entries, it is not present, and it is an error to reference +-- in type entries, it is not defined, and it is an error to reference -- Cloned_Subtype in an E_Record_Type or E_Class_Wide_Type entity. -- Comes_From_Source @@ -598,14 +598,14 @@ package Einfo is -- in the original source program. -- Component_Alignment (special field) [base type only] --- Present in array and record entities. Contains a value of type +-- Defined in array and record entities. Contains a value of type -- Component_Alignment_Kind indicating the alignment of components. -- Set to Calign_Default normally, but can be overridden by use of -- the Component_Alignment pragma. Note: this field is currently -- stored in a non-standard way, see body for details. -- Component_Bit_Offset (Uint11) --- Present in record components (E_Component, E_Discriminant) if a +-- Defined in record components (E_Component, E_Discriminant) if a -- component clause applies to the component. First bit position of -- given component, computed from the first bit and position values -- given in the component clause. A value of No_Uint means that the @@ -624,7 +624,7 @@ package Einfo is -- use in Gigi, to have this redundant field. -- Component_Clause (Node13) --- Present in record components and discriminants. If a record +-- Defined in record components and discriminants. If a record -- representation clause is present for the corresponding record type a -- that specifies a position for the component, then the Component_Clause -- field of the E_Component entity points to the N_Component_Clause node. @@ -632,7 +632,7 @@ package Einfo is -- there was no specification for this component. -- Component_Size (Uint22) [implementation base type only] --- Present in array types. It contains the component size value for +-- Defined in array types. It contains the component size value for -- the array. A value of No_Uint means that the value is not yet set. -- The value can be set by the use of a component size clause, or -- by the front end in package Layout, or by the backend. A negative @@ -642,55 +642,55 @@ package Einfo is -- for details of these values. -- Component_Type (Node20) [implementation base type only] --- Present in array types and string types. References component type. +-- Defined in array types and string types. References component type. -- Corresponding_Concurrent_Type (Node18) --- Present in record types that are constructed by the expander to +-- Defined in record types that are constructed by the expander to -- represent task and protected types (Is_Concurrent_Record_Type flag -- set True). Points to the entity for the corresponding task type or -- protected type. -- Corresponding_Discriminant (Node19) --- Present in discriminants of a derived type, when the discriminant is +-- Defined in discriminants of a derived type, when the discriminant is -- used to constrain a discriminant of the parent type. Points to the -- corresponding discriminant in the parent type. Otherwise it is Empty. -- Corresponding_Equality (Node13) --- Present in function entities for implicit inequality operators. +-- Defined in function entities for implicit inequality operators. -- Denotes the explicit or derived equality operation that creates -- the implicit inequality. Note that this field is not present in -- other function entities, only in implicit inequality routines, -- where Comes_From_Source is always False. -- Corresponding_Protected_Entry (Node18) --- Present in subprogram bodies. Set for subprogram bodies that implement +-- Defined in subprogram bodies. Set for subprogram bodies that implement -- a protected type entry to point to the entity for the entry. -- Corresponding_Record_Type (Node18) --- Present in protected and task types and subtypes. References the +-- Defined in protected and task types and subtypes. References the -- entity for the corresponding record type constructed by the expander -- (see Exp_Ch9). This type is used to represent values of the task type. -- Corresponding_Remote_Type (Node22) --- Present in record types that describe the fat pointer structure for +-- Defined in record types that describe the fat pointer structure for -- Remote_Access_To_Subprogram types. References the original access -- type. -- CR_Discriminant (Node23) --- Present in discriminants of concurrent types. Denotes the homologous +-- Defined in discriminants of concurrent types. Denotes the homologous -- discriminant of the corresponding record type. The CR_Discriminant is -- created at the same time as the discriminal, and used to replace -- occurrences of the discriminant within the type declaration. -- Current_Use_Clause (Node27) --- Present in packages and in types. For packages, denotes the use +-- Defined in packages and in types. For packages, denotes the use -- package clause currently in scope that makes the package use_visible. -- For types, it denotes the use_type clause that makes the operators of -- the type visible. Used for more precise warning messages on redundant -- use clauses. -- Current_Value (Node9) --- Present in all object entities. Set in E_Variable, E_Constant, formal +-- Defined in all object entities. Set in E_Variable, E_Constant, formal -- parameters and E_Loop_Parameter entities if we have trackable current -- values. Set non-Empty if the (constant) current value of the variable -- is known, This value is valid only for references from the same @@ -711,7 +711,7 @@ package Einfo is -- on this usage, see the procedure Exp_Util.Get_Current_Value_Condition. -- Debug_Info_Off (Flag166) --- Present in all entities. Set if a pragma Suppress_Debug_Info applies +-- Defined in all entities. Set if a pragma Suppress_Debug_Info applies -- to the entity, or if internal processing in the compiler determines -- that suppression of debug information is desirable. Note that this -- flag is only for use by the front end as part of the processing for @@ -735,15 +735,15 @@ package Einfo is -- the subprogram_declaration. -- Default_Aspect_Component_Value (Node19) --- Present in array types. Holds the static value specified in a +-- Defined in array types. Holds the static value specified in a -- default_component_value aspect specification for the array type. -- Default_Aspect_Value (Node19) --- Present in scalar types. Holds the static value specified in a +-- Defined in scalar types. Holds the static value specified in a -- default_value aspect specification for the type. -- Default_Expr_Function (Node21) --- Present in parameters. It holds the entity of the parameterless +-- Defined in parameters. It holds the entity of the parameterless -- function that is built to evaluate the default expression if it is -- more complex than a simple identifier or literal. For the latter -- simple cases or if there is no default value, this field is Empty. @@ -756,13 +756,13 @@ package Einfo is -- would not only waste time, but also generate false error messages. -- Default_Value (Node20) --- Present in formal parameters. Points to the node representing the +-- Defined in formal parameters. Points to the node representing the -- expression for the default value for the parameter. Empty if the -- parameter has no default value (which is always the case for OUT -- and IN OUT parameters in the absence of errors). -- Delay_Cleanups (Flag114) --- Present in entities that have finalization lists (subprograms +-- Defined in entities that have finalization lists (subprograms -- blocks, and tasks). Set if there are pending generic body -- instantiations for the corresponding entity. If this flag is -- set, then generation of cleanup actions for the corresponding @@ -770,9 +770,9 @@ package Einfo is -- may affect cleanup generation (see Inline for further details). -- Delay_Subprogram_Descriptors (Flag50) --- Present in entities for which exception subprogram descriptors +-- Defined in entities for which exception subprogram descriptors -- are generated (subprograms, package declarations and package --- bodies). Present if there are pending generic body instantiations +-- bodies). Defined if there are pending generic body instantiations -- for the corresponding entity. If this flag is set, then generation -- of the subprogram descriptor for the corresponding enities must -- be delayed, since the insertion of the generic body may add entries @@ -787,18 +787,18 @@ package Einfo is -- enclosing elaboration procedure). -- Delta_Value (Ureal18) --- Present in fixed and decimal types. Points to a universal real +-- Defined in fixed and decimal types. Points to a universal real -- that holds value of delta for the type, as given in the declaration -- or as inherited by a subtype or derived type. -- Dependent_Instances (Elist8) --- Present in packages that are instances. Holds list of instances +-- Defined in packages that are instances. Holds list of instances -- of inner generics. Used to place freeze nodes for those instances -- after that of the current one, i.e. after the corresponding generic -- bodies. -- Depends_On_Private (Flag14) --- Present in all type entities. Set if the type is private or if it +-- Defined in all type entities. Set if the type is private or if it -- depends on a private type. -- Designated_Type (synthesized) @@ -808,20 +808,20 @@ package Einfo is -- full type is returned instead of the incomplete type. -- Digits_Value (Uint17) --- Present in floating point types and subtypes and decimal types and +-- Defined in floating point types and subtypes and decimal types and -- subtypes. Contains the Digits value specified in the declaration. -- Direct_Primitive_Operations (Elist10) --- Present in tagged types and subtypes (including synchronized types), +-- Defined in tagged types and subtypes (including synchronized types), -- in tagged private types and in tagged incomplete types. Element list --- of entities for primitive operations of the tagged type. Not present +-- of entities for primitive operations of the tagged type. Not defined -- in untagged types. In order to follow the C++ ABI, entities of -- primitives that come from source must be stored in this list in the -- order of their occurrence in the sources. For incomplete types the -- list is always empty. -- Directly_Designated_Type (Node20) --- Present in access types. This field points to the type that is +-- Defined in access types. This field points to the type that is -- directly designated by the access type. In the case of an access -- type to an incomplete type, this field references the incomplete -- type. Directly_Designated_Type is typically used in implementing the @@ -831,7 +831,7 @@ package Einfo is -- incomplete type. -- Discard_Names (Flag88) --- Present in types and exception entities. Set if pragma Discard_Names +-- Defined in types and exception entities. Set if pragma Discard_Names -- applies to the entity. It is also set for declarative regions and -- package specs for which a Discard_Names pragma with zero arguments -- has been encountered. The purpose of setting this flag is to be able @@ -840,23 +840,23 @@ package Einfo is -- set to False if a Keep_Names pragma appears for an enumeration type. -- Discriminal (Node17) --- Present in discriminants (Discriminant formal: GNAT's first +-- Defined in discriminants (Discriminant formal: GNAT's first -- coinage). The entity used as a formal parameter that corresponds -- to a discriminant. See section "Handling of Discriminants" for -- full details of the use of discriminals. -- Discriminal_Link (Node10) --- Present in discriminals (which have an Ekind of E_In_Parameter, +-- Defined in discriminals (which have an Ekind of E_In_Parameter, -- or E_Constant), points back to corresponding discriminant. -- Discriminant_Checking_Func (Node20) --- Present in components. Points to the defining identifier of the +-- Defined in components. Points to the defining identifier of the -- function built by the expander returns a Boolean indicating whether -- the given record component exists for the current discriminant -- values. -- Discriminant_Constraint (Elist21) --- Present in entities whose Has_Discriminants flag is set (concurrent +-- Defined in entities whose Has_Discriminants flag is set (concurrent -- types, subtypes, record types and subtypes, private types and -- subtypes, limited private types and subtypes and incomplete types). -- It is an error to reference the Discriminant_Constraint field if @@ -883,24 +883,24 @@ package Einfo is -- Elist (ie it is initialized with a call to New_Elmt_List). -- Discriminant_Default_Value (Node20) --- Present in discriminants. Points to the node representing the +-- Defined in discriminants. Points to the node representing the -- expression for the default value of the discriminant. Set to -- Empty if the discriminant has no default value. -- Discriminant_Number (Uint15) --- Present in discriminants. Gives the ranking of a discriminant in +-- Defined in discriminants. Gives the ranking of a discriminant in -- the list of discriminants of the type, i.e. a sequential integer -- index starting at 1 and ranging up to number of discriminants. -- Dispatch_Table_Wrappers (Elist26) [implementation base type only] --- Present in E_Record_Type and E_Record_Subtype entities. Set in library +-- Defined in E_Record_Type and E_Record_Subtype entities. Set in library -- level tagged type entities if we are generating statically allocated -- dispatch tables. Points to the list of dispatch table wrappers -- associated with the tagged type. For a non-tagged record, contains -- No_Elist. -- DTC_Entity (Node16) --- Present in function and procedure entities. Set to Empty unless +-- Defined in function and procedure entities. Set to Empty unless -- the subprogram is dispatching in which case it references the -- Dispatch Table pointer Component. That is to say the component _tag -- for regular Ada tagged types, for CPP_Class types and their @@ -909,26 +909,26 @@ package Einfo is -- references the subprogram. -- DT_Entry_Count (Uint15) --- Present in E_Component entities. Only used for component marked +-- Defined in E_Component entities. Only used for component marked -- Is_Tag. Store the number of entries in the Vtable (or Dispatch Table) -- DT_Offset_To_Top_Func (Node25) --- Present in E_Component entities. Only used for component marked +-- Defined in E_Component entities. Only used for component marked -- Is_Tag. If present it stores the Offset_To_Top function used to -- provide this value in tagged types whose ancestor has discriminants. -- DT_Position (Uint15) --- Present in function and procedure entities which are dispatching +-- Defined in function and procedure entities which are dispatching -- (should not be referenced without first checking that flag -- Is_Dispatching_Operation is True). Contains the offset into -- the Vtable for the entry that references the subprogram. -- Ekind (Ekind) --- Present in all entities. Contains a value of the enumeration type +-- Defined in all entities. Contains a value of the enumeration type -- Entity_Kind declared in a subsequent section in this spec. -- Elaborate_Body_Desirable (Flag210) --- Present in package entities. Set if the elaboration circuitry detects +-- Defined in package entities. Set if the elaboration circuitry detects -- a case where there is a package body that modifies one or more visible -- entities in the package spec and there is no explicit Elaborate_Body -- pragma for the package. This information is passed on to the binder, @@ -936,7 +936,7 @@ package Einfo is -- to the spec as possible. -- Elaboration_Entity (Node13) --- Present in generic and non-generic package and subprogram entities. +-- Defined in generic and non-generic package and subprogram entities. -- This is a counter associated with the unit that is initially set to -- zero, is incremented when an elaboration request for the unit is -- made, and is decremented when a finalization request for the unit @@ -956,7 +956,7 @@ package Einfo is -- is elaboration code), but is simply not used for any purpose. -- Elaboration_Entity_Required (Flag174) --- Present in generic and non-generic package and subprogram entities. +-- Defined in generic and non-generic package and subprogram entities. -- Set only if Elaboration_Entity is non-Empty to indicate that the -- counter is required to be non-zero even if there is no other -- elaboration code. This occurs when the Elaboration_Entity counter @@ -966,25 +966,25 @@ package Einfo is -- need to set the flag. -- Enclosing_Scope (Node18) --- Present in labels. Denotes the innermost enclosing construct that +-- Defined in labels. Denotes the innermost enclosing construct that -- contains the label. Identical to the scope of the label, except for -- labels declared in the body of an accept statement, in which case the -- entry_name is the Enclosing_Scope. Used to validate goto's within -- accept statements. -- Entry_Accepted (Flag152) --- Present in E_Entry and E_Entry_Family entities. Set if there is +-- Defined in E_Entry and E_Entry_Family entities. Set if there is -- at least one accept for this entry in the task body. Used to -- generate warnings for missing accepts. -- Entry_Bodies_Array (Node15) --- Present in protected types for which Has_Entries is true. +-- Defined in protected types for which Has_Entries is true. -- This is the defining identifier for the array of entry body -- action procedures and barrier functions used by the runtime to -- execute the user code associated with each entry. -- Entry_Cancel_Parameter (Node23) --- Present in blocks. This only applies to a block statement for +-- Defined in blocks. This only applies to a block statement for -- which the Is_Asynchronous_Call_Block flag is set. It -- contains the defining identifier of an object that must be -- passed to the Cancel_Task_Entry_Call or Cancel_Protected_Entry_Call @@ -995,17 +995,17 @@ package Einfo is -- are declared in outer scopes to this block. -- Entry_Component (Node11) --- Present in formal parameters (in, in out and out parameters). Used +-- Defined in formal parameters (in, in out and out parameters). Used -- only for formals of entries. References the corresponding component -- of the entry parameter record for the entry. -- Entry_Formal (Node16) --- Present in components of the record built to correspond to entry +-- Defined in components of the record built to correspond to entry -- parameters. This field points from the component to the formal. It -- is the back pointer corresponding to Entry_Component. -- Entry_Index_Constant (Node18) --- Present in an entry index parameter. This is an identifier that +-- Defined in an entry index parameter. This is an identifier that -- eventually becomes the name of a constant representing the index -- of the entry family member whose entry body is being executed. Used -- to expand references to the entry index specification identifier. @@ -1017,12 +1017,12 @@ package Einfo is -- 'COUNT when it applies to a family member. -- Contract (Node24) --- Present in entries, and in subprogram and generic subprogram entities. +-- Defined in entries, and in subprogram and generic subprogram entities. -- Points to the contract of the entity, holding both pre- and -- postconditions as well as test-cases. -- Entry_Parameters_Type (Node15) --- Present in entries. Points to the access-to-record type that is +-- Defined in entries. Points to the access-to-record type that is -- constructed by the expander to hold a reference to the parameter -- values. This reference is manipulated (as an address) by the -- tasking runtime. The designated record represents a packaging @@ -1031,11 +1031,11 @@ package Einfo is -- has no parameters. -- Enumeration_Pos (Uint11) --- Present in enumeration literals. Contains the position number +-- Defined in enumeration literals. Contains the position number -- corresponding to the value of the enumeration literal. -- Enumeration_Rep (Uint12) --- Present in enumeration literals. Contains the representation that +-- Defined in enumeration literals. Contains the representation that -- corresponds to the value of the enumeration literal. Note that -- this is normally the same as Enumeration_Pos except in the presence -- of representation clauses, where Pos will still represent the @@ -1043,7 +1043,7 @@ package Einfo is -- value given in the representation clause. -- Enumeration_Rep_Expr (Node22) --- Present in enumeration literals. Points to the expression in an +-- Defined in enumeration literals. Points to the expression in an -- associated enumeration rep clause that provides the representation -- value for this literal. Empty if no enumeration rep clause for this -- literal (or if rep clause does not have an entry for this literal, @@ -1051,7 +1051,7 @@ package Einfo is -- for the same literal. -- Enum_Pos_To_Rep (Node23) --- Present in enumeration types (but not enumeration subtypes). Set to +-- Defined in enumeration types (but not enumeration subtypes). Set to -- Empty unless the enumeration type has a non-standard representation -- (i.e. at least one literal has a representation value different from -- its pos value). In this case, Enum_Pos_To_Rep is the entity for an @@ -1061,7 +1061,7 @@ package Einfo is -- full range of representation values. -- Equivalent_Type (Node18) --- Present in class wide types and subtypes, access to protected +-- Defined in class wide types and subtypes, access to protected -- subprogram types, and in exception types. For a classwide type, it -- is always Empty. For a class wide subtype, it points to an entity -- created by the expander which gives Gigi an easily understandable @@ -1075,7 +1075,7 @@ package Einfo is -- the record that is the fat pointer representation of an RAST. -- Esize (Uint12) --- Present in all types and subtypes, and also for components, constants, +-- Defined in all types and subtypes, and also for components, constants, -- and variables, including exceptions where it refers to the static data -- allocated for an exception. Contains the Object_Size of the type or of -- the object. A value of zero indicates that the value is not yet known. @@ -1084,14 +1084,14 @@ package Einfo is -- value is the value from the component clause, which must be non- -- negative (but may be zero, which is acceptable for the case of -- a type with only one possible value). It is also possible for Esize --- of a component to be set without a component clause present, which +-- of a component to be set without a component clause defined, which -- means that the component size is specified, but not the position. -- See also RM_Size and the section on "Handling of Type'Size Values". -- During gigi processing, the value is back annotated for all zero -- values, so that after the call to gigi, the value is properly set. -- Etype (Node5) --- Present in all entities. Represents the type of the entity, which +-- Defined in all entities. Represents the type of the entity, which -- is itself another entity. For a type entity, points to the parent -- type for a derived type, or if the type is not derived, points to -- itself. For a subtype entity, Etype points to the base type. For @@ -1103,14 +1103,14 @@ package Einfo is -- Etype of the N_Null node is Empty. -- Exception_Code (Uint22) --- Present in exception entities. Set to zero unless either an +-- Defined in exception entities. Set to zero unless either an -- Import_Exception or Export_Exception pragma applies to the -- pragma and specifies a Code value. See description of these -- pragmas for details. Note that this field is relevant only if -- Is_VMS_Exception is set. -- Extra_Formal (Node15) --- Present in formal parameters in the non-generic case. Certain +-- Defined in formal parameters in the non-generic case. Certain -- parameters require extra implicit information to be passed (e.g. the -- flag indicating if an unconstrained variant record argument is -- constrained, and the accessibility level for access parameters. See @@ -1128,19 +1128,19 @@ package Einfo is -- or entry. Returns Empty if there are no extra formals. -- Extra_Accessibility (Node13) --- Present in formal parameters in the non-generic case. Normally Empty, +-- Defined in formal parameters in the non-generic case. Normally Empty, -- but if expansion is active, and a parameter is one for which a -- dynamic accessibility check is required, then an extra formal of type -- Natural is created (see description of field Extra_Formal), and the -- Extra_Accessibility field of the formal parameter points to the entity --- for this extra formal. Also present in variables when compiling +-- for this extra formal. Also defined in variables when compiling -- receiving stubs. In this case, a non Empty value means that this -- variable's accessibility depth has been transmitted by the caller and -- must be retrieved through the entity designed by this field instead of -- being computed. -- Extra_Accessibility_Of_Result (Node19) --- Present in (non-generic) Function, Operator, and Subprogram_Type +-- Defined in (non-generic) Function, Operator, and Subprogram_Type -- entities. Normally Empty, but if expansion is active, and a function -- is one for which "the accessibility level of the result ... determined -- by the point of call" (AI05-0234) is needed, then an extra formal of @@ -1149,26 +1149,26 @@ package Einfo is -- the entity for this extra formal. -- Extra_Constrained (Node23) --- Present in formal parameters in the non-generic case. Normally Empty, +-- Defined in formal parameters in the non-generic case. Normally Empty, -- but if expansion is active and a parameter is one for which a dynamic -- indication of its constrained status is required, then an extra formal -- of type Boolean is created (see description of field Extra_Formal), -- and the Extra_Constrained field of the formal parameter points to the --- entity for this extra formal. Also present in variables when compiling +-- entity for this extra formal. Also defined in variables when compiling -- receiving stubs. In this case, a non empty value means that this -- variable's constrained status has been transmitted by the caller and -- must be retrieved through the entity designed by this field instead of -- being computed. -- Finalization_Master (Node23) [root type only] --- Present in access-to-controlled or access-to-class-wide types. The +-- Defined in access-to-controlled or access-to-class-wide types. The -- field contains the entity of the finalization master which handles -- dynamically allocated controlled objects referenced by the access -- type. Empty for access-to-subprogram types. Empty for access types -- whose designated type does not need finalization actions. -- Finalize_Storage_Only (Flag158) [base type only] --- Present in all types. Set on direct controlled types to which a +-- Defined in all types. Set on direct controlled types to which a -- valid Finalize_Storage_Only pragma applies. This flag is also set on -- composite types when they have at least one controlled component and -- all their controlled components are Finalize_Storage_Only. It is also @@ -1192,7 +1192,7 @@ package Einfo is -- find the first discriminant if discriminants are present. -- First_Entity (Node17) --- Present in all entities which act as scopes to which a list of +-- Defined in all entities which act as scopes to which a list of -- associated entities is attached (blocks, class subtypes and types, -- entries, functions, loops, packages, procedures, protected objects, -- record types and subtypes, private types, task types and subtypes). @@ -1200,7 +1200,7 @@ package Einfo is -- as a chain pointer with Empty marking the end of the list. -- First_Exit_Statement (Node8) --- Present in E_Loop entity. The exit statements for a loop are chained +-- Defined in E_Loop entity. The exit statements for a loop are chained -- (in reverse order of appearance) using this field to point to the -- first entry in the chain (last exit statement in the loop). The -- entries are chained through the Next_Exit_Statement field of the @@ -1220,17 +1220,17 @@ package Einfo is -- all the extra formals (see description of Extra_Formals field). -- First_Index (Node17) --- Present in array types and subtypes and in string types and subtypes. +-- Defined in array types and subtypes and in string types and subtypes. -- By introducing implicit subtypes for the index constraints, we have -- the same structure for constrained and unconstrained arrays, subtype -- marks and discrete ranges are both represented by a subtype. This -- function returns the tree node corresponding to an occurrence of the -- first index (NOT the entity for the type). Subsequent indexes are --- obtained using Next_Index. Note that this field is present for the +-- obtained using Next_Index. Note that this field is defined for the -- case of string literal subtypes, but is always Empty. -- First_Literal (Node17) --- Present in all enumeration types, including character and boolean +-- Defined in all enumeration types, including character and boolean -- types. This field points to the first enumeration literal entity -- for the type (i.e. it is set to First (Literals (N)) where N is -- the enumeration type definition node. A special case occurs with @@ -1240,14 +1240,14 @@ package Einfo is -- points to the first literal of the base type in this case. -- First_Optional_Parameter (Node14) --- Present in (non-generic) function and procedure entities. Set to a +-- Defined in (non-generic) function and procedure entities. Set to a -- non-null value only if a pragma Import_Function, Import_Procedure -- or Import_Valued_Procedure specifies a First_Optional_Parameter -- argument, in which case this field points to the parameter entity -- corresponding to the specified parameter. -- First_Private_Entity (Node16) --- Present in all entities containing private parts (packages, protected +-- Defined in all entities containing private parts (packages, protected -- types and subtypes, task types and subtypes). The entities on the -- entity chain are in order of declaration, so the entries for private -- entities are at the end of the chain. This field points to the first @@ -1255,7 +1255,7 @@ package Einfo is -- declared in the private part or if there is no private part. -- First_Rep_Item (Node6) --- Present in all entities. If non-empty, points to a linked list of +-- Defined in all entities. If non-empty, points to a linked list of -- representation pragmas nodes and representation clause nodes that -- apply to the entity, linked using Next_Rep_Item, with Empty marking -- the end of the list. In the case of derived types and subtypes, the @@ -1289,22 +1289,22 @@ package Einfo is -- -- Other representation items are included in the chain so that error -- messages can easily locate the relevant nodes for posting errors. --- Note in particular that size clauses are present only for this +-- Note in particular that size clauses are defined only for this -- purpose, and should only be accessed if Has_Size_Clause is set. -- Float_Rep (Uint10) --- Present in floating-point entities. Contains a value of type +-- Defined in floating-point entities. Contains a value of type -- Float_Rep_Kind. Together with the Digits_Value uniquely defines -- the floating-point representation to be used. -- Freeze_Node (Node7) --- Present in all entities. If there is an associated freeze node for the +-- Defined in all entities. If there is an associated freeze node for the -- entity, this field references this freeze node. If no freeze node is -- associated with the entity, then this field is Empty. See package -- Freeze for further details. -- From_With_Type (Flag159) --- Present in package and type entities. Indicates that the entity +-- Defined in package and type entities. Indicates that the entity -- appears in a With_Type clause in the context of some other unit, -- either as the prefix (which must be a package), or as a type name. -- The package can only be used to retrieve such a type, and the type @@ -1318,7 +1318,7 @@ package Einfo is -- GNAT with_type clause??? -- Full_View (Node11) --- Present in all type and subtype entities and in deferred constants. +-- Defined in all type and subtype entities and in deferred constants. -- References the entity for the corresponding full type declaration. -- For all types other than private and incomplete types, this field -- always contains Empty. If an incomplete type E1 is completed by a @@ -1327,27 +1327,27 @@ package Einfo is -- Underlying_Type. -- Generic_Homonym (Node11) --- Present in generic packages. The generic homonym is the entity of +-- Defined in generic packages. The generic homonym is the entity of -- a renaming declaration inserted in every generic unit. It is used -- to resolve the name of a local entity that is given by a qualified -- name, when the generic entity itself is hidden by a local name. -- Generic_Renamings (Elist23) --- Present in package and subprogram instances. Holds mapping that +-- Defined in package and subprogram instances. Holds mapping that -- associates generic parameters with the corresponding instances, in -- those cases where the instance is an entity. -- Handler_Records (List10) --- Present in subprogram and package entities. Points to a list of +-- Defined in subprogram and package entities. Points to a list of -- identifiers referencing the handler record entities for the -- corresponding unit. -- Has_Aliased_Components (Flag135) [implementation base type only] --- Present in array type entities. Indicates that the component type +-- Defined in array type entities. Indicates that the component type -- of the array is aliased. -- Has_Alignment_Clause (Flag46) --- Present in all type entities and objects. Indicates if an alignment +-- Defined in all type entities and objects. Indicates if an alignment -- clause has been given for the entity. If set, then Alignment_Clause -- returns the N_Attribute_Definition node for the alignment attribute -- definition clause. Note that it is possible for this flag to be False @@ -1355,20 +1355,20 @@ package Einfo is -- of derived type declarations). -- Has_All_Calls_Remote (Flag79) --- Present in all library unit entities. Set true if the library unit +-- Defined in all library unit entities. Set true if the library unit -- has an All_Calls_Remote pragma. Note that such entities must also -- be RCI entities, so the flag Is_Remote_Call_Interface will always -- be set if this flag is set. -- Has_Anonymous_Master (Flag253) --- Present in units (top-level functions and procedures, library-level +-- Defined in units (top-level functions and procedures, library-level -- packages). Set to True if the associated unit contains a heterogeneous -- finalization master. The master's name is of the form <unit>AM and it -- services anonymous access-to-controlled types with an undetermined -- lifetime. -- Has_Atomic_Components (Flag86) [implementation base type only] --- Present in all types and objects. Set only for an array type or +-- Defined in all types and objects. Set only for an array type or -- an array object if a valid pragma Atomic_Components applies to the -- type or object. Note that in the case of an object, this flag is -- only set on the object if there was an explicit pragma for the @@ -1384,7 +1384,7 @@ package Einfo is -- Attach_Handler pragma in the corresponding specification. -- Has_Biased_Representation (Flag139) --- Present in discrete types (where it applies to the type'size value), +-- Defined in discrete types (where it applies to the type'size value), -- and to objects (both stand-alone and components), where it applies to -- the size of the object from a size or record component clause. In -- all cases it indicates that the size in question is smaller than @@ -1400,27 +1400,27 @@ package Einfo is -- the subtype is still an unbiased type. -- Has_Completion (Flag26) --- Present in all entities that require a completion (functions, +-- Defined in all entities that require a completion (functions, -- procedures, private types, limited private types, incomplete types, -- constants and packages that require a body). The flag is set if the -- completion has been encountered and analyzed. -- Has_Completion_In_Body (Flag71) --- Present in all entities for types and subtypes. Set only in "Taft +-- Defined in all entities for types and subtypes. Set only in "Taft -- amendment types" (incomplete types whose full declaration appears in -- the package body). -- Has_Complex_Representation (Flag140) [implementation base type only] --- Present in all type entities. Set only for a record base type to +-- Defined in all type entities. Set only for a record base type to -- which a valid pragma Complex_Representation applies. -- Has_Component_Size_Clause (Flag68) [implementation base type only] --- Present in all type entities. Set if a component size clause is --- present for the given type. Note that this flag can be False even +-- Defined in all type entities. Set if a component size clause is +-- Defined for the given type. Note that this flag can be False even -- if Component_Size is non-zero (happens in the case of derived types). -- Has_Constrained_Partial_View (Flag187) --- Present in private type and their completions, when the private +-- Defined in private type and their completions, when the private -- type has no discriminants and the full view has discriminants with -- defaults. In Ada 2005 heap-allocated objects of such types are not -- constrained, and can change their discriminants with full assignment. @@ -1431,50 +1431,51 @@ package Einfo is -- [when in a generic body]. -- Has_Contiguous_Rep (Flag181) --- Present in enumeration types. True if the type as a representation +-- Defined in enumeration types. True if the type as a representation -- clause whose entries are successive integers. -- Has_Controlling_Result (Flag98) --- Present in E_Function entities. True if the function is a primitive +-- Defined in E_Function entities. True if the function is a primitive -- function of a tagged type which can dispatch on result. -- Has_Controlled_Component (Flag43) [base type only] --- Present in all type and subtype entities. Set only for composite type +-- Defined in all type and subtype entities. Set only for composite type -- entities which contain a component that either is a controlled type, -- or itself contains controlled component (i.e. either Is_Controlled or -- Has_Controlled_Component is set for at least one component). -- Has_Convention_Pragma (Flag119) --- Present in all entities. Set true for an entity for which a valid +-- Defined in all entities. Set true for an entity for which a valid -- Convention, Import, or Export pragma has been given. Used to prevent -- more than one such pragma appearing for a given entity (RM B.1(45)). --- Has_Delayed_Aspects (Flag200) Present in all entities. Set true if the --- Rep_Item chain for the entity has one or more N_Aspect_Definition --- nodes chained which are not to be evaluated till the freeze point. --- The aspect definition expression clause has been preanalyzed to get --- visibility at the point of use, but no other action has been taken. +-- Has_Delayed_Aspects (Flag200) +-- Defined in all entities. Set true if the Rep_Item chain for the entity +-- has one or more N_Aspect_Definition nodes chained which are not to be +-- evaluated till the freeze point. The aspect definition expression +-- clause has been preanalyzed to get visibility at the point of use, +-- but no other action has been taken. -- Has_Delayed_Freeze (Flag18) --- Present in all entities. Set to indicate that an explicit freeze +-- Defined in all entities. Set to indicate that an explicit freeze -- node must be generated for the entity at its freezing point. See -- separate section ("Delayed Freezing and Elaboration") for details. -- Has_Default_Aspect (Flag39) [base type only] --- Present in entities for types and subtypes, set for scalar types with +-- Defined in entities for types and subtypes, set for scalar types with -- a Default_Value aspect and array types with a Default_Component_Value -- apsect. If this flag is set, then a corresponding aspect specification -- node will be present on the rep item chain for the entity. -- Has_Discriminants (Flag5) --- Present in all types and subtypes. For types that are allowed to have +-- Defined in all types and subtypes. For types that are allowed to have -- discriminants (record types and subtypes, task types and subtypes, -- protected types and subtypes, private types, limited private types, -- and incomplete types), indicates if the corresponding type or subtype -- has a known discriminant part. Always false for all other types. -- Has_Dispatch_Table (Flag220) --- Present in E_Record_Types that are tagged. Set to indicate that the +-- Defined in E_Record_Types that are tagged. Set to indicate that the -- corresponding dispatch table is already built. This flag is used to -- avoid duplicate construction of library level dispatch tables (because -- the declaration of library level objects cause premature construction @@ -1486,19 +1487,19 @@ package Einfo is -- within the task or protected definition for the type. -- Has_Enumeration_Rep_Clause (Flag66) --- Present in enumeration types. Set if an enumeration representation +-- Defined in enumeration types. Set if an enumeration representation -- clause has been given for this enumeration type. Used to prevent more -- than one enumeration representation clause for a given type. Note -- that this does not imply a representation with holes, since the rep -- clause may merely confirm the default 0..N representation. -- Has_External_Tag_Rep_Clause (Flag110) --- Present in tagged types. Set if an external_tag rep. clause has been +-- Defined in tagged types. Set if an external_tag rep. clause has been -- given for this type. Use to avoid the generation of the default -- external_tag. -- Has_Exit (Flag47) --- Present in loop entities. Set if the loop contains an exit statement. +-- Defined in loop entities. Set if the loop contains an exit statement. -- Has_Foreign_Convention (synthesized) -- Applies to all entities. Determines if the Convention for the @@ -1506,7 +1507,7 @@ package Einfo is -- Convention_Intrinsic, Convention_Entry or Convention_Protected). -- Has_Forward_Instantiation (Flag175) --- Present in package entities. Set true for packages that contain +-- Defined in package entities. Set true for packages that contain -- instantiations of local generic entities, before the corresponding -- generic body has been seen. If a package has a forward instantiation, -- we cannot inline subprograms appearing in the same package because @@ -1514,13 +1515,13 @@ package Einfo is -- linear elaboration of front-end inlining. -- Has_Fully_Qualified_Name (Flag173) --- Present in all entities. Set True if the name in the Chars field has +-- Defined in all entities. Set True if the name in the Chars field has -- been replaced by the fully qualified name, as used for debug output. -- See Exp_Dbug for a full description of the use of this flag and also -- the related flag Has_Qualified_Name. -- Has_Gigi_Rep_Item (Flag82) --- Present in all entities. Set if the rep item chain (referenced by +-- Defined in all entities. Set if the rep item chain (referenced by -- First_Rep_Item and linked through the Next_Rep_Item chain) contains a -- representation item that needs to be specially processed by Gigi, i.e. -- one of the following items: @@ -1538,21 +1539,21 @@ package Einfo is -- be present. -- Has_Homonym (Flag56) --- Present in all entities. Set if an entity has a homonym in the same +-- Defined in all entities. Set if an entity has a homonym in the same -- scope. Used by Gigi to generate unique names for such entities. -- Has_Implicit_Dereference (Flag251) --- Present in types and discriminants. Set if the type has an aspect +-- Defined in types and discriminants. Set if the type has an aspect -- Implicit_Dereference. Set also on the discriminant named in the aspect -- clause, to simplify type resolution. -- Has_Initial_Value (Flag219) --- Present in entities for variables and out parameters. Set if there +-- Defined in entities for variables and out parameters. Set if there -- is an explicit initial value expression in the declaration of the -- variable. Note that this is set only if this initial value is -- explicit, it is not set for the case of implicit initialization -- of access types or controlled types. Always set to False for out --- parameters. Also present in entities for in and in-out parameters, +-- parameters. Also defined in entities for in and in-out parameters, -- but always false in these cases. -- Has_Interrupt_Handler (synthesized) @@ -1561,7 +1562,7 @@ package Einfo is -- Interrupt_Handler applies. -- Has_Invariants (Flag232) --- Present in all type entities and in subprogram entities. Set True in +-- Defined in all type entities and in subprogram entities. Set True in -- private types if an Invariant or Invariant'Class aspect applies to the -- type, or if the type inherits one or more Invariant'Class aspects. -- Also set in the corresponding full type. Note: if this flag is set @@ -1573,7 +1574,7 @@ package Einfo is -- Subprograms_For_Type. -- Has_Inheritable_Invariants (Flag248) --- Present in all type entities. Set True in private types from which one +-- Defined in all type entities. Set True in private types from which one -- or more Invariant'Class aspects will be inherited if a another type is -- derived from the type (i.e. those types which have an Invariant'Class -- aspect, or which inherit one or more Invariant'Class aspects). Also @@ -1582,30 +1583,30 @@ package Einfo is -- also be set in the private type. -- Has_Machine_Radix_Clause (Flag83) --- Present in decimal types and subtypes, set if a Machine_Radix +-- Defined in decimal types and subtypes, set if a Machine_Radix -- representation clause is present. This flag is used to detect -- the error of multiple machine radix clauses for a single type. -- Has_Master_Entity (Flag21) --- Present in entities that can appear in the scope stack (see spec +-- Defined in entities that can appear in the scope stack (see spec -- of Sem). It is set if a task master entity (_master) has been -- declared and initialized in the corresponding scope. -- Has_Missing_Return (Flag142) --- Present in functions and generic functions. Set if there is one or +-- Defined in functions and generic functions. Set if there is one or -- more missing return statements in the function. This is used to -- control wrapping of the body in Exp_Ch6 to ensure that the program -- error exception is correctly raised in this case at runtime. -- Has_Nested_Block_With_Handler (Flag101) --- Present in scope entities. Set if there is a nested block within the +-- Defined in scope entities. Set if there is a nested block within the -- scope that has an exception handler and the two scopes are in the -- same procedure. This is used by the backend for controlling certain -- optimizations to ensure that they are consistent with exceptions. -- See documentation in Gigi for further details. -- Has_Non_Standard_Rep (Flag75) [implementation base type only] --- Present in all type entities. Set when some representation clause +-- Defined in all type entities. Set when some representation clause -- or pragma causes the representation of the item to be significantly -- modified. In this category are changes of small or radix for a -- fixed-point type, change of component size for an array, and record @@ -1615,12 +1616,12 @@ package Einfo is -- stored bit patterns. -- Has_Object_Size_Clause (Flag172) --- Present in entities for types and subtypes. Set if an Object_Size +-- Defined in entities for types and subtypes. Set if an Object_Size -- clause has been processed for the type Used to prevent multiple -- Object_Size clauses for a given entity. -- Has_Per_Object_Constraint (Flag154) --- Present in E_Component entities, true if the subtype of the +-- Defined in E_Component entities, true if the subtype of the -- component has a per object constraint. Per object constraints result -- from the following situations: -- @@ -1636,19 +1637,19 @@ package Einfo is -- discriminant of the enclosing type. -- Has_Postconditions (Flag240) --- Present in subprogram entities. Set if postconditions are active for +-- Defined in subprogram entities. Set if postconditions are active for -- the procedure, and a _postconditions procedure has been generated. -- Has_Pragma_Controlled (Flag27) [implementation base type only] --- Present in access type entities. It is set if a pragma Controlled +-- Defined in access type entities. It is set if a pragma Controlled -- applies to the access type. -- Has_Pragma_Elaborate_Body (Flag150) --- Present in all entities. Set in compilation unit entities if a +-- Defined in all entities. Set in compilation unit entities if a -- pragma Elaborate_Body applies to the compilation unit. -- Has_Pragma_Inline (Flag157) --- Present in all entities. Set for functions and procedures for which a +-- Defined in all entities. Set for functions and procedures for which a -- pragma Inline or Inline_Always applies to the subprogram. Note that -- this flag can be set even if Is_Inlined is not set. This happens for -- pragma Inline (if Inline_Active is False). In other words, the flag @@ -1657,50 +1658,50 @@ package Einfo is -- whether inlining is actually active for the entity. -- Has_Pragma_Inline_Always (Flag230) --- Present in all entities. Set for functions and procedures for which a +-- Defined in all entities. Set for functions and procedures for which a -- pragma Inline_Always applies. Note that if this flag is set, the flag -- Has_Pragma_Inline is also set. -- Has_Pragma_Ordered (Flag198) [implementation base type only] --- Present in entities for enumeration types. If set indicates that a +-- Defined in entities for enumeration types. If set indicates that a -- valid pragma Ordered was given for the type. This flag is inherited -- by derived enumeration types. We don't need to distinguish the derived -- case since we allow multiple occurrences of this pragma anyway. -- Has_Pragma_Pack (Flag121) [implementation base type only] --- Present in array and record type entities. If set, indicates that a +-- Defined in array and record type entities. If set, indicates that a -- valid pragma Pack was given for the type. Note that this flag is not -- inherited by derived type. See also the Is_Packed flag. -- Has_Pragma_Pure (Flag203) --- Present in all entities. If set, indicates that a valid pragma Pure +-- Defined in all entities. If set, indicates that a valid pragma Pure -- was given for the entity. In some cases, we need to test whether -- Is_Pure was explicitly set using this pragma. -- Has_Pragma_Preelab_Init (Flag221) --- Present in type and subtype entities. If set indicates that a valid +-- Defined in type and subtype entities. If set indicates that a valid -- pragma Preelaborable_Initialization applies to the type. -- Has_Pragma_Pure_Function (Flag179) --- Present in all entities. If set, indicates that a valid pragma +-- Defined in all entities. If set, indicates that a valid pragma -- Pure_Function was given for the entity. In some cases, we need to -- know that Is_Pure was explicitly set using this pragma. We also set -- this flag for some internal entities that we know should be treated -- as pure for optimization purposes. -- Has_Pragma_Thread_Local_Storage (Flag169) --- Present in all entities. If set, indicates that a valid pragma +-- Defined in all entities. If set, indicates that a valid pragma -- Thread_Local_Storage was given for the entity. -- Has_Pragma_Unmodified (Flag233) --- Present in all entities. Can only be set for variables (E_Variable, +-- Defined in all entities. Can only be set for variables (E_Variable, -- E_Out_Parameter, E_In_Out_Parameter). Set if a valid pragma Unmodified -- applies to the variable, indicating that no warning should be given -- if the entity is never modified. Note that clients should generally -- not test this flag directly, but instead use function Has_Unmodified. -- Has_Pragma_Unreferenced (Flag180) --- Present in all entities. Set if a valid pragma Unreferenced applies +-- Defined in all entities. Set if a valid pragma Unreferenced applies -- to the entity, indicating that no warning should be given if the -- entity has no references, but a warning should be given if it is -- in fact referenced. For private types, this flag is set in both the @@ -1709,21 +1710,21 @@ package Einfo is -- use function Has_Unreferenced. -- Has_Pragma_Unreferenced_Objects (Flag212) --- Present in type and subtype entities. Set if a valid pragma +-- Defined in type and subtype entities. Set if a valid pragma -- Unreferenced_Objects applies to the type, indicating that no warning -- should be given for objects of such a type for being unreferenced -- (but unlike the case with pragma Unreferenced, it is ok to reference -- such an object and no warning is generated. -- Has_Predicates (Flag250) --- Present in all entities. Set in type and subtype entities if a pragma +-- Defined in all entities. Set in type and subtype entities if a pragma -- Predicate or Predicate aspect applies to the type, or if it inherits a -- Predicate aspect from its parent or progenitor types. Also set in the -- predicate function entity, to distinguish it among entries in the -- Subprograms_For_Type. -- Has_Primitive_Operations (Flag120) [base type only] --- Present in all type entities. Set if at least one primitive operation +-- Defined in all type entities. Set if at least one primitive operation -- is defined for the type. -- Has_Private_Ancestor (Flag151) @@ -1735,14 +1736,14 @@ package Einfo is -- This is part of AI05-0115. -- Has_Private_Declaration (Flag155) --- Present in all entities. Returns True if it is the defining entity +-- Defined in all entities. Returns True if it is the defining entity -- of a private type declaration or its corresponding full declaration. -- This flag is thus preserved when the full and the partial views are -- exchanged, to indicate if a full type declaration is a completion. -- Used for semantic checks in E.4(18) and elsewhere. -- Has_Qualified_Name (Flag161) --- Present in all entities. Set True if the name in the Chars field +-- Defined in all entities. Set True if the name in the Chars field -- has been replaced by its qualified name, as used for debug output. -- See Exp_Dbug for a full description of qualification requirements. -- For some entities, the name is the fully qualified name, but there @@ -1752,37 +1753,37 @@ package Einfo is -- indeed include the fully qualified name. -- Has_RACW (Flag214) --- Present in package spec entities. Set if the spec contains the --- declaration of a remote access-to-classwide type. +-- Defined in package spec entities. Set if the spec contains the +-- declaration of a remote access-to-classwide type. -- Has_Record_Rep_Clause (Flag65) [implementation base type only] --- Present in record types. Set if a record representation clause has +-- Defined in record types. Set if a record representation clause has -- been given for this record type. Used to prevent more than one such -- clause for a given record type. Note that this is initially cleared -- for a derived type, even though the representation is inherited. See -- also the flag Has_Specified_Layout. -- Has_Recursive_Call (Flag143) --- Present in procedures. Set if a direct parameterless recursive call +-- Defined in procedures. Set if a direct parameterless recursive call -- is detected while analyzing the body. Used to activate some error -- checks for infinite recursion. -- Has_Size_Clause (Flag29) --- Present in entities for types and objects. Set if a size clause is --- present for the entity. Used to prevent multiple Size clauses for a +-- Defined in entities for types and objects. Set if a size clause is +-- Defined for the entity. Used to prevent multiple Size clauses for a -- given entity. Note that it is always initially cleared for a derived -- type, even though the Size for such a type is inherited from a Size -- clause given for the parent type. -- Has_Small_Clause (Flag67) --- Present in ordinary fixed point types (but not subtypes). Indicates +-- Defined in ordinary fixed point types (but not subtypes). Indicates -- that a small clause has been given for the entity. Used to prevent -- multiple Small clauses for a given entity. Note that it is always -- initially cleared for a derived type, even though the Small for such -- a type is inherited from a Small clause given for the parent type. -- Has_Specified_Layout (Flag100) [implementation base type only] --- Present in all type entities. Set for a record type or subtype if +-- Defined in all type entities. Set for a record type or subtype if -- the record layout has been specified by a record representation -- clause. Note that this differs from the flag Has_Record_Rep_Clause -- in that it is inherited by a derived type. Has_Record_Rep_Clause is @@ -1794,35 +1795,35 @@ package Einfo is -- Has_Specified_Stream_Output (Flag191) -- Has_Specified_Stream_Read (Flag192) -- Has_Specified_Stream_Write (Flag193) --- Present in all type and subtype entities. Set for a given view if the +-- Defined in all type and subtype entities. Set for a given view if the -- corresponding stream-oriented attribute has been defined by an -- attribute definition clause. When such a clause occurs, a TSS is set -- on the underlying full view; the flags are used to track visibility of -- the attribute definition clause for partial or incomplete views. -- Has_Static_Discriminants (Flag211) --- Present in record subtypes constrained by discriminant values. Set if +-- Defined in record subtypes constrained by discriminant values. Set if -- all the discriminant values have static values, meaning that in the -- case of a variant record, the component list can be trimmed down to -- include only the components corresponding to these discriminants. -- Has_Storage_Size_Clause (Flag23) [implementation base type only] --- Present in task types and access types. It is set if a Storage_Size +-- Defined in task types and access types. It is set if a Storage_Size -- clause is present for the type. Used to prevent multiple clauses for -- one type. Note that this flag is initially cleared for a derived type -- even though the Storage_Size for such a type is inherited from a -- Storage_Size clause given for the parent type. Note that in the case --- of access types, this flag is present only in the root type, since a +-- of access types, this flag is defined only in the root type, since a -- storage size clause cannot be given to a derived type. -- Has_Stream_Size_Clause (Flag184) --- Present in all entities. It is set for types which have a Stream_Size +-- Defined in all entities. It is set for types which have a Stream_Size -- clause attribute. Used to prevent multiple Stream_Size clauses for a -- given entity, and also whether it is necessary to check for a stream -- size clause. -- Has_Task (Flag30) [base type only] --- Present in all type entities. Set on task types themselves, and also +-- Defined in all type entities. Set on task types themselves, and also -- (recursively) on any composite type which has a component for which -- Has_Task is set. The meaning is that an allocator or declaration of -- such an object must create the required tasks. Note: the flag is not @@ -1833,7 +1834,7 @@ package Einfo is -- referencing a dispatch table whose contents are pointers to thunks. -- Has_Unchecked_Union (Flag123) [base type only] --- Present in all type entities. Set on unchecked unions themselves +-- Defined in all type entities. Set on unchecked unions themselves -- and (recursively) on any composite type which has a component for -- which Has_Unchecked_Union is set. The meaning is that a comparison -- operation for the type is not permitted. Note that the flag is not @@ -1841,7 +1842,7 @@ package Einfo is -- the flag Has_Unchecked_Union set. -- Has_Unknown_Discriminants (Flag72) --- Present in all entities. Set for types with unknown discriminants. +-- Defined in all entities. Set for types with unknown discriminants. -- Types can have unknown discriminants either from their declaration or -- through type derivation. The use of this flag exactly meets the spec -- in RM 3.7(26). Note that all class-wide types are considered to have @@ -1854,14 +1855,14 @@ package Einfo is -- inherited in certain contexts. -- Has_Up_Level_Access (Flag215) --- Present in E_Variable and E_Constant entities. Set if the entity --- is a local variable declared in a subprogram p and is accessed in --- a subprogram nested inside p. Currently this flag is only set when --- VM_Target /= No_VM, for efficiency, since only the .NET back-end --- makes use of it to generate proper code for up-level references. +-- Defined in E_Variable and E_Constant entities. Set if the entity +-- is a local variable declared in a subprogram p and is accessed in +-- a subprogram nested inside p. Currently this flag is only set when +-- VM_Target /= No_VM, for efficiency, since only the .NET back-end +-- makes use of it to generate proper code for up-level references. -- Has_Volatile_Components (Flag87) [implementation base type only] --- Present in all types and objects. Set only for an array type or array +-- Defined in all types and objects. Set only for an array type or array -- object if a valid pragma Volatile_Components or a valid pragma -- Atomic_Components applies to the type or object. Note that in the case -- of an object, this flag is only set on the object if there was an @@ -1872,7 +1873,7 @@ package Einfo is -- subtype in the usual manner. -- Has_Xref_Entry (Flag182) --- Present in all entities. Set if an entity has an entry in the Xref +-- Defined in all entities. Set if an entity has an entry in the Xref -- information generated in ali files. This is true for all source -- entities in the extended main source file. It is also true of entities -- in other packages that are referenced directly or indirectly from the @@ -1881,7 +1882,7 @@ package Einfo is -- further details). -- Hiding_Loop_Variable (Node8) --- Present in variables. Set only if a variable of a discrete type is +-- Defined in variables. Set only if a variable of a discrete type is -- hidden by a loop variable in the same local scope, in which case -- the Hiding_Loop_Variable field of the hidden variable points to -- the E_Loop_Parameter entity doing the hiding. Used in processing @@ -1889,7 +1890,7 @@ package Einfo is -- or is referenced without being set. -- Homonym (Node4) --- Present in all entities. Link for list of entities that have the +-- Defined in all entities. Link for list of entities that have the -- same source name and that are declared in the same or enclosing -- scopes. Homonyms in the same scope are overloaded. Used for name -- resolution and for the generation of debugging information. @@ -1902,37 +1903,37 @@ package Einfo is -- returns the entity unchanged. -- Interface_Alias (Node25) --- Present in subprograms that cover a primitive operation of an abstract +-- Defined in subprograms that cover a primitive operation of an abstract -- interface type. Can be set only if the Is_Hidden flag is also set, -- since such entities are always hidden. Points to its associated -- interface subprogram. It is used to register the subprogram in -- secondary dispatch table of the interface (Ada 2005: AI-251). -- Interfaces (Elist25) --- Present in record types and subtypes. List of abstract interfaces +-- Defined in record types and subtypes. List of abstract interfaces -- implemented by a tagged type that are not already implemented by the -- ancestors (Ada 2005: AI-251). -- In_Package_Body (Flag48) --- Present in package entities. Set on the entity that denotes the +-- Defined in package entities. Set on the entity that denotes the -- package (the defining occurrence of the package declaration) while -- analyzing and expanding the package body. Reset on completion of -- analysis/expansion. -- In_Private_Part (Flag45) --- Present in all entities. Can be set only in package entities and +-- Defined in all entities. Can be set only in package entities and -- objects. For package entities, this flag is set to indicate that the -- private part of the package is being analyzed. The flag is reset at -- the end of the package declaration. For objects it indicates that the -- declaration of the object occurs in the private part of a package. -- Inner_Instances (Elist23) --- Present in generic units. Contains element list of units that are +-- Defined in generic units. Contains element list of units that are -- instantiated within the given generic. Used to diagnose circular -- instantiations. -- Interface_Name (Node21) --- Present in constants, variables, exceptions, functions, procedures, +-- Defined in constants, variables, exceptions, functions, procedures, -- packages, components (JGNAT only), discriminants (JGNAT only), and -- access to subprograms (JGNAT only). Set to Empty unless an export, -- import, or interface name pragma has explicitly specified an external @@ -1956,34 +1957,34 @@ package Einfo is -- because Java names are case sensitive). -- Invariant_Procedure (synthesized) --- Present in types and subtypes. Set for private types if one or more +-- Defined in types and subtypes. Set for private types if one or more -- Invariant, or Invariant'Class, or inherited Invariant'Class aspects -- apply to the type. Points to the entity for a procedure which checks -- the invariant. This invariant procedure takes a single argument of the -- given type, and returns if the invariant holds, or raises exception -- Assertion_Error with an appropriate message if it does not hold. This --- attribute is present but always empty for private subtypes. This +-- attribute is defined but always empty for private subtypes. This -- attribute is also set for the corresponding full type. -- -- Note: the reason this is marked as a synthesized attribute is that the -- way this is stored is as an element of the Subprograms_For_Type field. -- In_Use (Flag8) --- Present in packages and types. Set when analyzing a use clause for +-- Defined in packages and types. Set when analyzing a use clause for -- the corresponding entity. Reset at end of corresponding declarative -- part. The flag on a type is also used to determine the visibility of -- the primitive operators of the type. -- Is_Abstract_Subprogram (Flag19) --- Present in all subprograms and entries. Set for abstract subprograms. +-- Defined in all subprograms and entries. Set for abstract subprograms. -- Always False for enumeration literals and entries. See also -- Requires_Overriding. -- Is_Abstract_Type (Flag146) --- Present in all types. Set for abstract types. +-- Defined in all types. Set for abstract types. -- Is_Access_Constant (Flag69) --- Present in access types and subtypes. Indicates that the keyword +-- Defined in access types and subtypes. Indicates that the keyword -- constant was present in the access type definition. -- Is_Access_Protected_Subprogram_Type (synthesized) @@ -1994,33 +1995,33 @@ package Einfo is -- Applies to all entities, true for access types and subtypes -- Is_Ada_2005_Only (Flag185) --- Present in all entities, true if a valid pragma Ada_05 or Ada_2005 +-- Defined in all entities, true if a valid pragma Ada_05 or Ada_2005 -- applies to the entity which specifically names the entity, indicating -- that the entity is Ada 2005 only. Note that this flag is not set if -- the entity is part of a unit compiled with the normal no-argument form -- of pragma Ada_05 or Ada_2005. -- Is_Ada_2012_Only (Flag199) --- Present in all entities, true if a valid pragma Ada_12 or Ada_2012 +-- Defined in all entities, true if a valid pragma Ada_12 or Ada_2012 -- applies to the entity which specifically names the entity, indicating -- that the entity is Ada 2012 only. Note that this flag is not set if -- the entity is part of a unit compiled with the normal no-argument form -- of pragma Ada_12 or Ada_2012. -- Is_Aliased (Flag15) --- Present in all entities. Set for objects and types whose declarations +-- Defined in all entities. Set for objects and types whose declarations -- carry the keyword aliased, and on record components that have the -- keyword. For Ada 2012, also applies to formal parameters. -- Is_AST_Entry (Flag132) --- Present in entry entities. Set if a valid pragma AST_Entry applies +-- Defined in entry entities. Set if a valid pragma AST_Entry applies -- to the entry. This flag can only be set in OpenVMS versions of GNAT. -- Note: we also allow the flag to appear in entry families, but given -- the current implementation of the pragma AST_Entry, this flag will -- always be False in entry families. -- Is_Atomic (Flag85) --- Present in all type entities, and also in constants, components and +-- Defined in all type entities, and also in constants, components and -- variables. Set if a pragma Atomic or Shared applies to the entity. -- In the case of private and incomplete types, this flag is set in -- both the partial view and the full view. @@ -2029,14 +2030,14 @@ package Einfo is -- Applies to all entities, true for array types and subtypes -- Is_Asynchronous (Flag81) --- Present in all type entities and in procedure entities. Set +-- Defined in all type entities and in procedure entities. Set -- if a pragma Asynchronous applies to the entity. -- Is_Base_Type (synthesized) -- Applies to type and subtype entities. True if entity is a base type -- Is_Bit_Packed_Array (Flag122) [implementation base type only] --- Present in all entities. This flag is set for a packed array type that +-- Defined in all entities. This flag is set for a packed array type that -- is bit packed (i.e. the component size is known by the front end and -- is in the range 1-7, 9-15, 17-31, or 33-63). Is_Packed is always set -- if Is_Bit_Packed_Array is set, but it is possible for Is_Packed to be @@ -2049,34 +2050,34 @@ package Einfo is -- i.e. Standard.Boolean and all types ultimately derived from it. -- Is_Called (Flag102) --- Present in subprograms. Returns true if the subprogram is called +-- Defined in subprograms. Returns true if the subprogram is called -- in the unit being compiled or in a unit in the context. Used for -- inlining. -- Is_Character_Type (Flag63) --- Present in all entities. Set for character types and subtypes, +-- Defined in all entities. Set for character types and subtypes, -- i.e. enumeration types that have at least one character literal. -- Is_Child_Unit (Flag73) --- Present in all entities. Set only for defining entities of program +-- Defined in all entities. Set only for defining entities of program -- units that are child units (but False for subunits). -- Is_Class_Wide_Type (synthesized) -- Applies to all entities, true for class wide types and subtypes -- Is_Class_Wide_Equivalent_Type (Flag35) --- Present in record types and subtypes. Set to True, if the type acts +-- Defined in record types and subtypes. Set to True, if the type acts -- as a class-wide equivalent type, i.e. the Equivalent_Type field of -- some class-wide subtype entity references this record type. -- Is_Compilation_Unit (Flag149) --- Present in all entities. Set if the entity is a package or subprogram +-- Defined in all entities. Set if the entity is a package or subprogram -- entity for a compilation unit other than a subunit (since we treat -- subunits as part of the same compilation operation as the ultimate -- parent, we do not consider them to be separate units for this flag). -- Is_Completely_Hidden (Flag103) --- Present in all entities. This flag can be set only for E_Discriminant +-- Defined in all entities. This flag can be set only for E_Discriminant -- entities. This flag can be set only for girder discriminants of -- untagged types. When set, the entity is a girder discriminant of a -- derived untagged type which is not directly visible in the derived @@ -2090,7 +2091,7 @@ package Einfo is -- not both) is true of any type. -- Is_Concurrent_Record_Type (Flag20) --- Present in record types and subtypes. Set if the type was created +-- Defined in record types and subtypes. Set if the type was created -- by the expander to represent a task or protected type. For every -- concurrent type, such as record type is constructed, and task and -- protected objects are instances of this record type at runtime @@ -2107,37 +2108,37 @@ package Einfo is -- E_In_Parameter entities. -- Is_Constrained (Flag12) --- Present in types or subtypes which may have index, discriminant +-- Defined in types or subtypes which may have index, discriminant -- or range constraint (i.e. array types and subtypes, record types -- and subtypes, string types and subtypes, and all numeric types). -- Set if the type or subtype is constrained. -- Is_Constr_Subt_For_U_Nominal (Flag80) --- Present in all types and subtypes. Set true only for the constructed +-- Defined in all types and subtypes. Set true only for the constructed -- subtype of an object whose nominal subtype is unconstrained. Note -- that the constructed subtype itself will be constrained. -- Is_Constr_Subt_For_UN_Aliased (Flag141) --- Present in all types and subtypes. This flag can be set only if +-- Defined in all types and subtypes. This flag can be set only if -- Is_Constr_Subt_For_U_Nominal is also set. It indicates that in -- addition the object concerned is aliased. This flag is used by -- Gigi to determine whether a template must be constructed. -- Is_Constructor (Flag76) --- Present in function and procedure entities. Set if a pragma +-- Defined in function and procedure entities. Set if a pragma -- CPP_Constructor applies to the subprogram. -- Is_Controlled (Flag42) [base type only] --- Present in all type entities. Indicates that the type is controlled, +-- Defined in all type entities. Indicates that the type is controlled, -- i.e. is either a descendant of Ada.Finalization.Controlled or of -- Ada.Finalization.Limited_Controlled. -- Is_Controlling_Formal (Flag97) --- Present in all Formal_Kind entities. Marks the controlling parameters +-- Defined in all Formal_Kind entities. Marks the controlling parameters -- of dispatching operations. -- Is_CPP_Class (Flag74) --- Present in all type entities, set only for tagged types to which a +-- Defined in all type entities, set only for tagged types to which a -- valid pragma Import (CPP, ...) or pragma CPP_Class has been applied. -- Is_Decimal_Fixed_Point_Type (synthesized) @@ -2145,7 +2146,7 @@ package Einfo is -- types and subtypes. -- Is_Descendent_Of_Address (Flag223) --- Present in all type and subtype entities. Indicates that a type is an +-- Defined in all type and subtype entities. Indicates that a type is an -- address type that is visibly a numeric type. Used for semantic checks -- on VMS to remove ambiguities in universal integer expressions that may -- have an address interpretation @@ -2158,7 +2159,7 @@ package Einfo is -- and all fixed-point types and subtypes. -- Is_Discrim_SO_Function (Flag176) --- Present in all entities. Set only in E_Function entities that Layout +-- Defined in all entities. Set only in E_Function entities that Layout -- creates to compute discriminant-dependent dynamic size/offset values. -- Is_Discriminal (synthesized) @@ -2170,7 +2171,7 @@ package Einfo is -- entity is associated with a dispatch table. -- Is_Dispatching_Operation (Flag6) --- Present in all entities. Set true for procedures, functions, +-- Defined in all entities. Set true for procedures, functions, -- generic procedures and generic functions if the corresponding -- operation is dispatching. @@ -2185,25 +2186,25 @@ package Einfo is -- not both) is true of any type. -- Is_Eliminated (Flag124) --- Present in type entities, subprogram entities, and object entities. +-- Defined in type entities, subprogram entities, and object entities. -- Indicates that the corresponding entity has been eliminated by use -- of pragma Eliminate. Also used to mark subprogram entities whose -- declaration and body are within unreachable code that is removed. -- Is_Enumeration_Type (synthesized) --- Present in all entities, true for enumeration types and subtypes +-- Defined in all entities, true for enumeration types and subtypes -- Is_Entry (synthesized) -- Applies to all entities, True only for entry and entry family -- entities and False for all other entity kinds. -- Is_Entry_Formal (Flag52) --- Present in all entities. Set only for entry formals (which can +-- Defined in all entities. Set only for entry formals (which can -- only be in, in-out or out parameters). This flag is used to speed -- up the test for the need to replace references in Exp_Ch2. -- Is_Exported (Flag99) --- Present in all entities. Set if the entity is exported. For now we +-- Defined in all entities. Set if the entity is exported. For now we -- only allow the export of constants, exceptions, functions, procedures -- and variables, but that may well change later on. Exceptions can only -- be exported in the OpenVMS and Java VM implementations of GNAT. @@ -2213,7 +2214,7 @@ package Einfo is -- code to process local or library level objects. -- Is_First_Subtype (Flag70) --- Present in all entities. True for first subtypes (RM 3.2.1(6)), +-- Defined in all entities. True for first subtypes (RM 3.2.1(6)), -- i.e. the entity in the type declaration that introduced the type. -- This may be the base type itself (e.g. for record declarations and -- enumeration type declarations), or it may be the first subtype of @@ -2234,25 +2235,25 @@ package Einfo is -- Applies to all entities, true for generic IN and IN OUT parameters -- Is_Formal_Subprogram (Flag111) --- Present in all entities. Set for generic formal subprograms. +-- Defined in all entities. Set for generic formal subprograms. -- Is_For_Access_Subtype (Flag118) --- Present in E_Private_Subtype and E_Record_Subtype entities. Means the +-- Defined in E_Private_Subtype and E_Record_Subtype entities. Means the -- sole purpose of the type is to be designated by an Access_Subtype and -- hence should not be expanded into components because the type may not -- have been found or frozen yet. -- Is_Frozen (Flag4) --- Present in all type and subtype entities. Set if type or subtype has +-- Defined in all type and subtype entities. Set if type or subtype has -- been frozen. -- Is_Generic_Actual_Type (Flag94) --- Present in all type and subtype entities. Set in the subtype +-- Defined in all type and subtype entities. Set in the subtype -- declaration that renames the generic formal as a subtype of the -- actual. Guarantees that the subtype is not static within the instance. -- Is_Generic_Instance (Flag130) --- Present in all entities. Set to indicate that the entity is an +-- Defined in all entities. Set to indicate that the entity is an -- instance of a generic unit, or a formal package (which is an instance -- of the template). @@ -2261,7 +2262,7 @@ package Einfo is -- (generic function, generic subprogram), False for all other entities. -- Is_Generic_Type (Flag13) --- Present in all entities. Set for types which are generic formal types. +-- Defined in all entities. Set for types which are generic formal types. -- Such types have an Ekind that corresponds to their classification, so -- the Ekind cannot be used to identify generic formal types. @@ -2271,7 +2272,7 @@ package Einfo is -- other entities. -- Is_Hidden (Flag57) --- Present in all entities. Set true for all entities declared in the +-- Defined in all entities. Set true for all entities declared in the -- private part or body of a package. Also marks generic formals of a -- formal package declared without a box. For library level entities, -- this flag is set if the entity is not publicly visible. This flag @@ -2281,22 +2282,22 @@ package Einfo is -- Private_Declaration in sem_ch7). -- Is_Hidden_Open_Scope (Flag171) --- Present in all entities. Set true for a scope that contains the +-- Defined in all entities. Set true for a scope that contains the -- instantiation of a child unit, and whose entities are not visible -- during analysis of the instance. -- Is_Immediately_Visible (Flag7) --- Present in all entities. Set if entity is immediately visible, i.e. +-- Defined in all entities. Set if entity is immediately visible, i.e. -- is defined in some currently open scope (RM 8.3(4)). -- Is_Implementation_Defined (Flag254) --- Present in all entities. Set if a pragma Implementation_Defined is +-- Defined in all entities. Set if a pragma Implementation_Defined is -- applied to the pragma. Used to mark all implementation defined -- identifiers in standard library packages, and to implement the -- restriction No_Implementation_Identifiers. -- Is_Imported (Flag24) --- Present in all entities. Set if the entity is imported. For now we +-- Defined in all entities. Set if the entity is imported. For now we -- only allow the import of exceptions, functions, procedures, packages. -- and variables. Exceptions can only be imported in the OpenVMS and -- Java VM implementations of GNAT. Packages and types can only be @@ -2309,7 +2310,7 @@ package Einfo is -- Applies to all entities, true for incomplete types and subtypes -- Is_Inlined (Flag11) --- Present in all entities. Set for functions and procedures which are +-- Defined in all entities. Set for functions and procedures which are -- to be inlined. For subprograms created during expansion, this flag -- may be set directly by the expander to request inlining. Also set -- for packages that contain inlined subprograms, whose bodies must be @@ -2318,7 +2319,7 @@ package Einfo is -- of inlined subprograms. See also Has_Pragma_Inline. -- Is_Instantiated (Flag126) --- Present in generic packages and generic subprograms. Set if the unit +-- Defined in generic packages and generic subprograms. Set if the unit -- is instantiated from somewhere in the extended main source unit. This -- flag is used to control warnings about the unit being uninstantiated. -- Also set in a package that is used as an actual for a generic package @@ -2329,7 +2330,7 @@ package Einfo is -- Applies to all entities, true for integer types and subtypes -- Is_Interface (Flag186) --- Present in record types and subtypes. Set to indicate that the current +-- Defined in record types and subtypes. Set to indicate that the current -- entity corresponds with an abstract interface. Because abstract -- interfaces are conceptually a special kind of abstract tagged types -- we represent them by means of tagged record types and subtypes @@ -2338,7 +2339,7 @@ package Einfo is -- (Ada 2005: AI-251). -- Is_Internal (Flag17) --- Present in all entities. Set to indicate an entity created during +-- Defined in all entities. Set to indicate an entity created during -- semantic processing (e.g. an implicit type, or a temporary). The -- current uses of this flag are: -- @@ -2362,12 +2363,12 @@ package Einfo is -- also the attribute Interface_Alias. -- Is_Interrupt_Handler (Flag89) --- Present in procedures. Set if a pragma Interrupt_Handler applies +-- Defined in procedures. Set if a pragma Interrupt_Handler applies -- to the procedure. The procedure must be parameterless, and on all -- targets except AAMP it must be a protected procedure. -- Is_Intrinsic_Subprogram (Flag64) --- Present in functions and procedures. It is set if a valid pragma +-- Defined in functions and procedures. It is set if a valid pragma -- Interface or Import is present for this subprogram specifying pragma -- Intrinsic. Valid means that the name and profile of the subprogram -- match the requirements of one of the recognized intrinsic subprograms @@ -2377,7 +2378,7 @@ package Einfo is -- to intrinsic, which causes intrinsic code to be generated. -- Is_Itype (Flag91) --- Present in all entities. Set to indicate that a type is an Itype, +-- Defined in all entities. Set to indicate that a type is an Itype, -- which means that the declaration for the type does not appear -- explicitly in the tree. Instead gigi will elaborate the type when it -- is first used. Has_Delayed_Freeze can be set for Itypes, and the @@ -2387,7 +2388,7 @@ package Einfo is -- to be defined) must be in the same scope as the type. -- Is_Known_Non_Null (Flag37) --- Present in all entities. Relevant (and can be set True) only for +-- Defined in all entities. Relevant (and can be set True) only for -- objects of an access type. It is set if the object is currently -- known to have a non-null value (meaning that no access checks -- are needed). The indication can for example come from assignment @@ -2408,7 +2409,7 @@ package Einfo is -- Thus this flag has no meaning to the back end. -- Is_Known_Null (Flag204) --- Present in all entities. Relevant (and can be set True) only for +-- Defined in all entities. Relevant (and can be set True) only for -- objects of an access type. It is set if the object is currently known -- to have a null value (meaning that a dereference will surely raise -- constraint error exception). The indication can come from an @@ -2418,7 +2419,7 @@ package Einfo is -- the Is_Known_Non_Null flag apply equally to the Is_Known_Null flag. -- Is_Known_Valid (Flag170) --- Present in all entities. Relevant for types (and subtype) and +-- Defined in all entities. Relevant for types (and subtype) and -- for objects (and enumeration literals) of a discrete type. -- -- The purpose of this flag is to implement the requirement stated @@ -2452,24 +2453,24 @@ package Einfo is -- Thus this flag has no meaning to the back end. -- Is_Limited_Composite (Flag106) --- Present in all entities. Set for composite types that have a limited +-- Defined in all entities. Set for composite types that have a limited -- component. Used to enforce the rule that operations on the composite -- type that depend on the full view of the component do not become -- visible until the immediate scope of the composite type itself -- (RM 7.3.1 (5)). -- Is_Limited_Interface (Flag197) --- Present in record types and subtypes. True for interface types, if +-- Defined in record types and subtypes. True for interface types, if -- interface is declared limited, task, protected, or synchronized, or -- is derived from a limited interface. -- Is_Limited_Record (Flag25) --- Present in all entities. Set to true for record (sub)types if the +-- Defined in all entities. Set to true for record (sub)types if the -- record is declared to be limited. Note that this flag is not set -- simply because some components of the record are limited. -- Is_Local_Anonymous_Access (Flag194) --- Present in access types. Set for an anonymous access type to indicate +-- Defined in access types. Set for an anonymous access type to indicate -- that the type is created for a record component with an access -- definition, an array component, or (pre-Ada 2012) a standalone object. -- Such anonymous types have an accessibility level equal to that of the @@ -2478,7 +2479,7 @@ package Einfo is -- (as of Ada 2012) stand-alone objects. -- Is_Machine_Code_Subprogram (Flag137) --- Present in subprogram entities. Set to indicate that the subprogram +-- Defined in subprogram entities. Set to indicate that the subprogram -- is a machine code subprogram (i.e. its body includes at least one -- code statement). Also indicates that all necessary semantic checks -- as required by RM 13.8(3) have been performed. @@ -2487,7 +2488,7 @@ package Einfo is -- Applies to all entities. True if entity is a modular integer type -- Is_Non_Static_Subtype (Flag109) --- Present in all type and subtype entities. It is set in some (but not +-- Defined in all type and subtype entities. It is set in some (but not -- all) cases in which a subtype is known to be non-static. Before this -- flag was added, the computation of whether a subtype was static was -- entirely synthesized, by looking at the bounds, and the immediate @@ -2503,7 +2504,7 @@ package Einfo is -- tests for static subtypes greatly simplified. -- Is_Null_Init_Proc (Flag178) --- Present in procedure entities. Set for generated init proc procedures +-- Defined in procedure entities. Set for generated init proc procedures -- (used to initialize composite types), if the code for the procedure -- is null (i.e. is a return and nothing else). Such null initialization -- procedures are generated in case some client is compiled using the @@ -2520,17 +2521,17 @@ package Einfo is -- including generic formal parameters. -- Is_Obsolescent (Flag153) --- Present in all entities. Set for any entity for which a valid pragma +-- Defined in all entities. Set for any entity for which a valid pragma -- Obsolescent applies. -- Is_Only_Out_Parameter (Flag226) --- Present in formal parameter entities. Set if this parameter is the +-- Defined in formal parameter entities. Set if this parameter is the -- only OUT parameter for this formal part. If there is more than one -- out parameter, or if there is some other IN OUT parameter then this -- flag is not set in any of them. Used in generation of warnings. -- Is_Optional_Parameter (Flag134) --- Present in parameter entities. Set if the parameter is specified as +-- Defined in parameter entities. Set if the parameter is specified as -- optional by use of a First_Optional_Parameter argument to one of the -- extended Import pragmas. Can only be set for OpenVMS versions of GNAT. @@ -2543,11 +2544,11 @@ package Einfo is -- False for all other entities. -- Is_Package_Body_Entity (Flag160) --- Present in all entities. Set for entities defined at the top level +-- Defined in all entities. Set for entities defined at the top level -- of a package body. Used to control externally generated names. -- Is_Packed (Flag51) [implementation base type only] --- Present in all type entities. This flag is set only for record and +-- Defined in all type entities. This flag is set only for record and -- array types which have a packed representation. There are three -- cases which cause packing: -- @@ -2583,7 +2584,7 @@ package Einfo is -- Is_Packed flag gets turned off. -- Is_Packed_Array_Type (Flag138) --- Present in all entities. This flag is set on the entity for the type +-- Defined in all entities. This flag is set on the entity for the type -- used to implement a packed array (either a modular type, or a subtype -- of Packed_Bytes{1,2,4} as appropriate). The flag is set if and only -- if the type appears in the Packed_Array_Type field of some other type @@ -2594,26 +2595,26 @@ package Einfo is -- to the original array type for which this is the packed array type. -- Is_Potentially_Use_Visible (Flag9) --- Present in all entities. Set if entity is potentially use visible, +-- Defined in all entities. Set if entity is potentially use visible, -- i.e. it is defined in a package that appears in a currently active -- use clause (RM 8.4(8)). Note that potentially use visible entities -- are not necessarily use visible (RM 8.4(9-11)). -- Is_Preelaborated (Flag59) --- Present in all entities, set in E_Package and E_Generic_Package +-- Defined in all entities, set in E_Package and E_Generic_Package -- entities to which a pragma Preelaborate is applied, and also in -- all entities within such packages. Note that the fact that this -- flag is set does not necesarily mean that no elaboration code is -- generated for the package. -- Is_Primitive (Flag218) --- Present in overloadable entities and in generic subprograms. Set to +-- Defined in overloadable entities and in generic subprograms. Set to -- indicate that this is a primitive operation of some type, which may -- be a tagged type or a non-tagged type. Used to verify overriding -- indicators in bodies. -- Is_Primitive_Wrapper (Flag195) --- Present in functions and procedures created by the expander to serve +-- Defined in functions and procedures created by the expander to serve -- as an indirection mechanism to overriding primitives of concurrent -- types, entries and protected procedures. @@ -2622,19 +2623,19 @@ package Einfo is -- components. Such entities appear as constants or variables. -- Is_Private_Composite (Flag107) --- Present in composite types that have a private component. Used to +-- Defined in composite types that have a private component. Used to -- enforce the rule that operations on the composite type that depend -- on the full view of the component, do not become visible until the -- immediate scope of the composite type itself (7.3.1 (5)). Both this -- flag and Is_Limited_Composite are needed. -- Is_Private_Descendant (Flag53) --- Present in entities that can represent library units (packages, +-- Defined in entities that can represent library units (packages, -- functions, procedures). Set if the library unit is itself a private -- child unit, or if it is the descendent of a private child unit. -- Is_Private_Primitive (Flag245) --- Present in subprograms. Set if the operation is a primitive of a +-- Defined in subprograms. Set if the operation is a primitive of a -- tagged type (procedure or function dispatching on result) whose -- full view has not been seen. Used in particular for primitive -- subprograms of a synchronized type declared between the two views @@ -2646,24 +2647,24 @@ package Einfo is -- as well as for record with private types as subtypes -- Is_Processed_Transient (Flag252) --- Present in entities of variables and constants. Set when a transient --- object needs to be finalized and it has already been processed by the --- transient scope machinery. This flag signals the general finalization --- mechanism to ignore the transient object. +-- Defined in entities of variables and constants. Set when a transient +-- object needs to be finalized and it has already been processed by the +-- transient scope machinery. This flag signals the general finalization +-- mechanism to ignore the transient object. -- Is_Protected_Component (synthesized) -- Applicable to all entities, true if the entity denotes a private -- component of a protected type. -- Is_Protected_Interface (synthesized) --- Present in types that are interfaces. True if interface is declared +-- Defined in types that are interfaces. True if interface is declared -- protected, or is derived from protected interfaces. -- Is_Protected_Type (synthesized) -- Applies to all entities, true for protected types and subtypes -- Is_Public (Flag10) --- Present in all entities. Set to indicate that an entity defined in +-- Defined in all entities. Set to indicate that an entity defined in -- one compilation unit can be referenced from other compilation units. -- If this reference causes a reference in the generated variable, for -- example in the case of a variable name, then Gigi will generate an @@ -2674,7 +2675,7 @@ package Einfo is -- Corresponding_Concurrent_Type is a protected type. -- Is_Pure (Flag44) --- Present in all entities. Set in all entities of a unit to which a +-- Defined in all entities. Set in all entities of a unit to which a -- pragma Pure is applied, and also set for the entity of the unit -- itself. In addition, this flag may be set for any other functions -- or procedures that are known to be side effect free, so in the case @@ -2684,16 +2685,16 @@ package Einfo is -- by access parameters). -- Is_Pure_Unit_Access_Type (Flag189) --- Present in access type and subtype entities. Set if the type or +-- Defined in access type and subtype entities. Set if the type or -- subtype appears in a pure unit. Used to give an error message at -- freeze time if the access type has a storage pool. -- Is_RACW_Stub_Type (Flag244) --- Present in all types, true for the stub types generated for remote +-- Defined in all types, true for the stub types generated for remote -- access-to-class-wide types. -- Is_Raised (Flag224) --- Present in exception entities. Set if the entity is referenced by a +-- Defined in exception entities. Set if the entity is referenced by a -- a raise statement. -- Is_Real_Type (synthesized) @@ -2704,29 +2705,29 @@ package Einfo is -- includes class-wide types and subtypes (which are also records) -- Is_Remote_Call_Interface (Flag62) --- Present in all entities. Set in E_Package and E_Generic_Package +-- Defined in all entities. Set in E_Package and E_Generic_Package -- entities to which a pragma Remote_Call_Interface is applied, and -- also on entities declared in the visible part of such a package. -- Is_Remote_Types (Flag61) --- Present in all entities. Set in E_Package and E_Generic_Package +-- Defined in all entities. Set in E_Package and E_Generic_Package -- entities to which a pragma Remote_Types is applied, and also on -- entities declared in the visible part of the spec of such a package. -- Also set for types which are generic formal types to which the -- pragma Remote_Access_Type applies. -- Is_Renaming_Of_Object (Flag112) --- Present in all entities, set only for a variable or constant for +-- Defined in all entities, set only for a variable or constant for -- which the Renamed_Object field is non-empty and for which the -- renaming is handled by the front end, by macro substitution of -- a copy of the (evaluated) name tree whereever the variable is used. -- Is_Return_Object (Flag209) --- Present in all object entities. True if the object is the return +-- Defined in all object entities. True if the object is the return -- object of an extended_return_statement; False otherwise. -- Is_Safe_To_Reevaluate (Flag249) --- Present in all entities. Set in variables that are initialized by +-- Defined in all entities. Set in variables that are initialized by -- means of an assignment statement. When initialized their contents -- never change and hence they can be seen by the backend as constants. -- See also Is_True_Constant. @@ -2735,7 +2736,7 @@ package Einfo is -- Applies to all entities, true for scalar types and subtypes -- Is_Shared_Passive (Flag60) --- Present in all entities. Set in E_Package and E_Generic_Package +-- Defined in all entities. Set in E_Package and E_Generic_Package -- entities to which a pragma Shared_Passive is applied, and also in -- all entities within such packages. @@ -2745,7 +2746,7 @@ package Einfo is -- Wide_Wide_Character). -- Is_Statically_Allocated (Flag28) --- Present in all entities. This can only be set True for exception, +-- Defined in all entities. This can only be set True for exception, -- variable, constant, and type/subtype entities. If the flag is set, -- then the variable or constant must be allocated statically rather -- than on the local stack frame. For exceptions, the meaning is that @@ -2771,21 +2772,21 @@ package Einfo is -- entities. -- Is_Synchronized_Interface (synthesized) --- Present in types that are interfaces. True if interface is declared +-- Defined in types that are interfaces. True if interface is declared -- synchronized, task, or protected, or is derived from a synchronized -- interface. -- Is_Tag (Flag78) --- Present in E_Component and E_Constant entities. For regular tagged +-- Defined in E_Component and E_Constant entities. For regular tagged -- type this flag is set on the tag component (whose name is Name_uTag). -- For CPP_Class tagged types, this flag marks the pointer to the main -- vtable (i.e. the one to be extended by derivation). -- Is_Tagged_Type (Flag55) --- Present in all entities. Set for an entity for a tagged type. +-- Defined in all entities. Set for an entity for a tagged type. -- Is_Task_Interface (synthesized) --- Present in types that are interfaces. True if interface is declared as +-- Defined in types that are interfaces. True if interface is declared as -- a task interface, or if it is derived from task interfaces. -- Is_Task_Record_Type (synthesized) @@ -2796,7 +2797,7 @@ package Einfo is -- Applies to all entities. True for task types and subtypes -- Is_Thunk (Flag225) --- Present in all entities for subprograms (functions, procedures, and +-- Defined in all entities for subprograms (functions, procedures, and -- operators). True for subprograms that are thunks, that is small -- subprograms built by the expander for tagged types that cover -- interface types. At run-time thunks displace the pointer to the object @@ -2806,13 +2807,13 @@ package Einfo is -- handle extra actuals associated with accessibility level. -- Is_Trivial_Subprogram (Flag235) --- Present in all entities. Set in subprograms where either the body +-- Defined in all entities. Set in subprograms where either the body -- consists of a single null statement, or the first or only statement -- of the body raises an exception. This is used for suppressing certain -- warnings, see Sem_Ch6.Analyze_Subprogram_Body discussion for details. -- Is_True_Constant (Flag163) --- Present in all entities for constants and variables. Set in constants +-- Defined in all entities for constants and variables. Set in constants -- and variables which have an initial value specified but which are -- never assigned, partially or in the whole. For variables, it means -- that the variable was initialized but never modified, and hence can be @@ -2825,18 +2826,18 @@ package Einfo is -- Applies to all entities, true for a type entity -- Is_Unchecked_Union (Flag117) [implementation base type only] --- Present in all entities. Set only in record types to which the +-- Defined in all entities. Set only in record types to which the -- pragma Unchecked_Union has been validly applied. -- Is_Underlying_Record_View (Flag246) [base type only] --- Present in all entities. Set only in record types that represent the +-- Defined in all entities. Set only in record types that represent the -- underlying record view. This view is built for derivations of types -- with unknown discriminants; it is a record with the same structure -- as its corresponding record type, but whose parent is the full view -- of the parent in the original type extension. -- Is_Unsigned_Type (Flag144) --- Present in all types, but can be set only for discrete and fixed-point +-- Defined in all types, but can be set only for discrete and fixed-point -- type and subtype entities. This flag is only valid if the entity is -- frozen. If set it indicates that the representation is known to be -- unsigned (i.e. that no negative values appear in the range). This is @@ -2848,29 +2849,29 @@ package Einfo is -- at its bounds or the bounds of the corresponding base type. -- Is_Valued_Procedure (Flag127) --- Present in procedure entities. Set if an Import_Valued_Procedure +-- Defined in procedure entities. Set if an Import_Valued_Procedure -- or Export_Valued_Procedure pragma applies to the procedure entity. -- Is_Visible_Child_Unit (Flag116) --- Present in compilation units that are child units. Once compiled, +-- Defined in compilation units that are child units. Once compiled, -- child units remain chained to the entities in the parent unit, and -- a separate flag must be used to indicate whether the names are -- visible by selected notation, or not. -- Is_Visible_Formal (Flag206) --- Present in all entities. Set True for instances of the formals of a +-- Defined in all entities. Set True for instances of the formals of a -- formal package. Indicates that the entity must be made visible in the -- body of the instance, to reproduce the visibility of the generic. -- This simplifies visibility settings in instance bodies. -- Is_VMS_Exception (Flag133) --- Present in all entities. Set only for exception entities where the +-- Defined in all entities. Set only for exception entities where the -- exception was specified in an Import_Exception or Export_Exception -- pragma with the VMS option for Form. See description of these pragmas -- for details. This flag can only be set in OpenVMS versions of GNAT. -- Is_Volatile (Flag16) --- Present in all type entities, and also in constants, components and +-- Defined in all type entities, and also in constants, components and -- variables. Set if a pragma Volatile applies to the entity. Also set -- if pragma Shared or pragma Atomic applies to entity. In the case of -- private or incomplete types, this flag is set in both the private @@ -2884,30 +2885,30 @@ package Einfo is -- rather than testing this flag. -- Is_Wrapper_Package (synthesized) --- Present in package entities. Indicates that the package has been +-- Defined in package entities. Indicates that the package has been -- created as a wrapper for a subprogram instantiation. -- Itype_Printed (Flag202) --- Present in all type and subtype entities. Set in Itypes if the Itype +-- Defined in all type and subtype entities. Set in Itypes if the Itype -- has been printed by Sprint. This is used to avoid printing an Itype -- more than once. -- Kill_Elaboration_Checks (Flag32) --- Present in all entities. Set by the expander to kill elaboration +-- Defined in all entities. Set by the expander to kill elaboration -- checks which are known not to be needed. Equivalent in effect to -- the use of pragma Suppress (Elaboration_Checks) for that entity -- except that the effect is permanent and cannot be undone by a -- subsequent pragma Unsuppress. -- Kill_Range_Checks (Flag33) --- Present in all entities. Equivalent in effect to the use of pragma +-- Defined in all entities. Equivalent in effect to the use of pragma -- Suppress (Range_Checks) for that entity except that the result is -- permanent and cannot be undone by a subsequent pragma Unsuppress. -- This is currently only used in one odd situation in Sem_Ch3 for -- record types, and it would be good to get rid of it??? -- Known_To_Have_Preelab_Init (Flag207) --- Present in all type and subtype entities. If set, then the type is +-- Defined in all type and subtype entities. If set, then the type is -- known to have preelaborable initialization. In the case of a partial -- view of a private type, it is only possible for this to be set if a -- pragma Preelaborable_Initialization is given for the type. For other @@ -2916,14 +2917,14 @@ package Einfo is -- preelaborable initialization. -- Last_Assignment (Node26) --- Present in entities for variables, and OUT or IN OUT formals. Set for +-- Defined in entities for variables, and OUT or IN OUT formals. Set for -- a local variable or formal to point to the left side of an assignment -- statement assigning a value to the variable. Cleared if the value of -- the entity is referenced. Used to warn about dubious assignment -- statements whose value is not used. -- Last_Entity (Node20) --- Present in all entities which act as scopes to which a list of +-- Defined in all entities which act as scopes to which a list of -- associated entities is attached (blocks, class subtypes and types, -- entries, functions, loops, packages, procedures, protected objects, -- record types and subtypes, private types, task types and subtypes). @@ -2938,28 +2939,28 @@ package Einfo is -- definition) or in an entry. -- Limited_View (Node23) --- Present in non-generic package entities that are not instances. Bona +-- Defined in non-generic package entities that are not instances. Bona -- fide package with the limited-view list through the first_entity and -- first_private attributes. The elements of this list are the shadow -- entities created for the types and local packages that are declared -- in a package appearing in a limited_with clause (Ada 2005: AI-50217) -- Lit_Indexes (Node15) --- Present in enumeration types and subtypes. Non-empty only for the +-- Defined in enumeration types and subtypes. Non-empty only for the -- case of an enumeration root type, where it contains the entity for -- the generated indexes entity. See unit Exp_Imgv for full details of -- the nature and use of this entity for implementing the Image and -- Value attributes for the enumeration type in question. -- Lit_Strings (Node16) --- Present in enumeration types and subtypes. Non-empty only for the +-- Defined in enumeration types and subtypes. Non-empty only for the -- case of an enumeration root type, where it contains the entity for -- the literals string entity. See unit Exp_Imgv for full details of -- the nature and use of this entity for implementing the Image and -- Value attributes for the enumeration type in question. -- Low_Bound_Tested (Flag205) --- Present in all entities. Currently this can only be set True for +-- Defined in all entities. Currently this can only be set True for -- formal parameter entries of a standard unconstrained one-dimensional -- array or string type. Indicates that an explicit test of the low bound -- of the formal appeared in the code, e.g. in a pragma Assert. If this @@ -2967,14 +2968,14 @@ package Einfo is -- are suppressed. -- Machine_Radix_10 (Flag84) --- Present in decimal types and subtypes, set if the Machine_Radix is 10, +-- Defined in decimal types and subtypes, set if the Machine_Radix is 10, -- as the result of the specification of a machine radix representation -- clause. Note that it is possible for this flag to be set without -- having Has_Machine_Radix_Clause True. This happens when a type is -- derived from a type with a clause present. -- Master_Id (Node17) --- Present in access types and subtypes. Empty unless Has_Task is +-- Defined in access types and subtypes. Empty unless Has_Task is -- set for the designated type, in which case it points to the entity -- for the Master_Id for the access type master. Also set for access-to- -- limited-class-wide types whose root may be extended with task @@ -2982,25 +2983,25 @@ package Einfo is -- used to reference tasks implementing such interface. -- Materialize_Entity (Flag168) --- Present in all entities. Set only for renamed obects which should be +-- Defined in all entities. Set only for renamed obects which should be -- materialized for debugging purposes. This means that a memory location -- containing the renamed address should be allocated. This is needed so -- that the debugger can find the entity. -- Mechanism (Uint8) (returned as Mechanism_Type) --- Present in functions and non-generic formal parameters. Indicates +-- Defined in functions and non-generic formal parameters. Indicates -- the mechanism to be used for the function return or for the formal -- parameter. See separate section on passing mechanisms. This field -- is also set (to the default value of zero) in a subprogram body -- entity but not used in this context. -- Modulus (Uint17) [base type only] --- Present in modular types. Contains the modulus. For the binary case, +-- Defined in modular types. Contains the modulus. For the binary case, -- this will be a power of 2, but if Non_Binary_Modulus is set, then it -- will not be a power of 2. -- Must_Be_On_Byte_Boundary (Flag183) --- Present in entities for types and subtypes. Set if objects of the type +-- Defined in entities for types and subtypes. Set if objects of the type -- must always be allocated on a byte boundary (more accurately a storage -- unit boundary). The front end checks that component clauses respect -- this rule, and the back end ensures that record packing does not @@ -3008,14 +3009,14 @@ package Einfo is -- longer than 64 bits where the component size is not a power of 2. -- Must_Have_Preelab_Init (Flag208) --- Present in entities for types and subtypes. Set in the full type of a +-- Defined in entities for types and subtypes. Set in the full type of a -- private type or subtype if a pragma Has_Preelaborable_Initialization -- is present for the private type. Used to check that the full type has -- preelaborable initialization at freeze time (this has to be deferred -- to the freeze point because of the rule about overriding Initialize). -- Needs_Debug_Info (Flag147) --- Present in all entities. Set if the entity requires normal debugging +-- Defined in all entities. Set if the entity requires normal debugging -- information to be generated. This is true of all entities that have -- Comes_From_Source set, and also transitively for entities associated -- with such components (e.g. their types). It is true for all entities @@ -3026,7 +3027,7 @@ package Einfo is -- so that the flag is set properly on subsidiary entities. -- Needs_No_Actuals (Flag22) --- Present in callable entities (subprograms, entries, access to +-- Defined in callable entities (subprograms, entries, access to -- subprograms) which can be called without actuals because all of -- their formals (if any) have default values. This flag simplifies the -- resolution of the syntactic ambiguity involving a call to these @@ -3035,7 +3036,7 @@ package Einfo is -- used to resolve various cases of entry calls. -- Never_Set_In_Source (Flag115) --- Present in all entities, but can be set only for variables and +-- Defined in all entities, but can be set only for variables and -- parameters. This flag is set if the object is never assigned a value -- in user source code, either by assignment or by being used as an out -- or in out parameter. Note that this flag is not reset from using an @@ -3098,7 +3099,7 @@ package Einfo is -- Returns Empty if there are no more. -- Next_Entity (Node2) --- Present in all entities. The entities of a scope are chained, with +-- Defined in all entities. The entities of a scope are chained, with -- the head of the list being in the First_Entity field of the scope -- entity. All entities use the Next_Entity field as a forward pointer -- for this list, with Empty indicating the end of the list. Since this @@ -3126,7 +3127,7 @@ package Einfo is -- nodes for the indexes, not to entities. -- Next_Inlined_Subprogram (Node12) --- Present in subprograms. Used to chain inlined subprograms used in +-- Defined in subprograms. Used to chain inlined subprograms used in -- the current compilation, in the order in which they must be compiled -- by Gigi to insure that all inlinings are performed. @@ -3136,44 +3137,44 @@ package Einfo is -- for Next, but its use is preferred in this context. -- Non_Binary_Modulus (Flag58) [base type only] --- Present in all subtype and type entities. Set for modular integer +-- Defined in all subtype and type entities. Set for modular integer -- types if the modulus value is other than a power of 2. -- Non_Limited_View (Node17) --- Present in incomplete types that are the shadow entities created +-- Defined in incomplete types that are the shadow entities created -- when analyzing a limited_with_clause (Ada 2005: AI-50217). Points to -- the defining entity in the original declaration. -- Nonzero_Is_True (Flag162) [base type only] --- Present in enumeration types. True if any non-zero value is to be +-- Defined in enumeration types. True if any non-zero value is to be -- interpreted as true. Currently this is set true for derived Boolean -- types which have a convention of C, C++ or Fortran. -- No_Pool_Assigned (Flag131) [root type only] --- Present in access types. Set if a storage size clause applies to the +-- Defined in access types. Set if a storage size clause applies to the -- variable with a static expression value of zero. This flag is used to -- generate errors if any attempt is made to allocate or free an instance -- of such an access type. This is set only in the root type, since -- derived types must have the same pool. -- No_Return (Flag113) --- Present in all entities. Always false except in the case of procedures +-- Defined in all entities. Always false except in the case of procedures -- and generic procedures for which a pragma No_Return is given. -- Normalized_First_Bit (Uint8) --- Present in components and discriminants. Indicates the normalized +-- Defined in components and discriminants. Indicates the normalized -- value of First_Bit for the component, i.e. the offset within the -- lowest addressed storage unit containing part or all of the field. -- Set to No_Uint if no first bit position is assigned yet. -- Normalized_Position (Uint14) --- Present in components and discriminants. Indicates the normalized +-- Defined in components and discriminants. Indicates the normalized -- value of Position for the component, i.e. the offset in storage -- units from the start of the record to the lowest addressed storage -- unit containing part or all of the field. -- Normalized_Position_Max (Uint10) --- Present in components and discriminants. For almost all cases, this +-- Defined in components and discriminants. For almost all cases, this -- is the same as Normalized_Position. The one exception is for the case -- of a discriminated record containing one or more arrays whose length -- depends on discriminants. In this case, the Normalized_Position_Max @@ -3184,7 +3185,7 @@ package Einfo is -- there are default discriminants, and also for the 'Size value). -- No_Strict_Aliasing (Flag136) [base type only] --- Present in access types. Set to direct the back end to avoid any +-- Defined in access types. Set to direct the back end to avoid any -- optimizations based on an assumption about the aliasing status of -- objects designated by the access type. For the case of the gcc -- back end, the effect is as though all references to objects of @@ -3206,7 +3207,7 @@ package Einfo is -- formals as a value of type Pos. -- OK_To_Rename (Flag247) --- Present only in entities for variables. If this flag is set, it +-- Defined only in entities for variables. If this flag is set, it -- means that if the entity is used as the initial value of an object -- declaration, the object declaration can be safely converted into a -- renaming to avoid an extra copy. This is set for variables which are @@ -3217,13 +3218,13 @@ package Einfo is -- types, it is cheaper to do the copy. -- OK_To_Reorder_Components (Flag239) [base type only] --- Present in record types. Set if the back end is permitted to reorder +-- Defined in record types. Set if the back end is permitted to reorder -- the components. If not set, the record must be layed out in the order -- in which the components are declared textually. Currently this flag -- can only be set by debug switches. -- Optimize_Alignment_Space (Flag241) --- A flag present in type, subtype, variable, and constant entities. This +-- Defined in type, subtype, variable, and constant entities. This -- flag records that the type or object is to be layed out in a manner -- consistent with Optimize_Alignment (Space) mode. The compiler and -- binder ensure a consistent view of any given type or object. If pragma @@ -3231,7 +3232,7 @@ package Einfo is -- of the flags Optimize_Alignment_Space/Optimize_Alignment_Time is set. -- Optimize_Alignment_Time (Flag242) --- A flag present in type, subtype, variable, and constant entities. This +-- Defined in type, subtype, variable, and constant entities. This -- flag records that the type or object is to be layed out in a manner -- consistent with Optimize_Alignment (Time) mode. The compiler and -- binder ensure a consistent view of any given type or object. If pragma @@ -3239,20 +3240,20 @@ package Einfo is -- of the flags Optimize_Alignment_Space/Optimize_Alignment_Time is set. -- Original_Access_Type (Node26) --- Present in E_Access_Subprogram_Type entities. Set only if the access +-- Defined in E_Access_Subprogram_Type entities. Set only if the access -- type was generated by the expander as part of processing an access -- to protected subprogram type. Points to the access to protected -- subprogram type. -- Original_Array_Type (Node21) --- Present in modular types and array types and subtypes. Set only +-- Defined in modular types and array types and subtypes. Set only -- if the Is_Packed_Array_Type flag is set, indicating that the type -- is the implementation type for a packed array, and in this case it -- points to the original array type for which this is the packed -- array implementation type. -- Original_Record_Component (Node22) --- Present in components, including discriminants. The usage depends +-- Defined in components, including discriminants. The usage depends -- on whether the record is a base type and whether it is tagged. -- -- In base tagged types: @@ -3272,11 +3273,11 @@ package Einfo is -- Points to the component in the base type. -- Overlays_Constant (Flag243) --- Present in all entities. Set only for a variable for which there is +-- Defined in all entities. Set only for a variable for which there is -- an address clause which causes the variable to overlay a constant. -- Overridden_Operation (Node26) --- Present in subprograms. For overriding operations, points to the +-- Defined in subprograms. For overriding operations, points to the -- user-defined parent subprogram that is being overridden. Note: this -- attribute uses the same field as Static_Initialization. The latter -- is only defined for internal initialization procedures, for which @@ -3284,7 +3285,7 @@ package Einfo is -- set for init_procs. -- Package_Instantiation (Node26) --- Present in packages and generic packages. When present, this field +-- Defined in packages and generic packages. When defined, this field -- references an N_Generic_Instantiation node associated with an -- instantiated package. In the case where the referenced node has -- been rewritten to an N_Package_Specification, the instantiation @@ -3296,7 +3297,7 @@ package Einfo is -- with formal packages. ??? -- Packed_Array_Type (Node23) --- Present in array types and subtypes, including the string literal +-- Defined in array types and subtypes, including the string literal -- subtype case, if the corresponding type is packed (either bit packed -- or packed to eliminate holes in non-contiguous enumeration type index -- types). References the type used to represent the packed array, which @@ -3313,23 +3314,23 @@ package Einfo is -- is one of E_[In/Out/In_Out]_Parameter) -- Parent_Subtype (Node19) [base type only] --- Present in E_Record_Type. Set only for derived tagged types, in which +-- Defined in E_Record_Type. Set only for derived tagged types, in which -- case it points to the subtype of the parent type. This is the type -- that is used as the Etype of the _parent field. -- Postcondition_Proc (Node8) --- Present only in procedure entities, saves the entity of the generated +-- Defined only in procedure entities, saves the entity of the generated -- postcondition proc if one is present, otherwise is set to Empty. Used -- to generate the call to this procedure in case the expander inserts -- implicit return statements. -- PPC_Wrapper (Node25) --- Present in entries and entry families. Set only if pre- or post- +-- Defined in entries and entry families. Set only if pre- or post- -- conditions are present. The precondition_wrapper body is the original -- entry call, decorated with the given precondition for the entry. -- Predicate_Function (synthesized) --- Present in all types. Set for types for which (Has_Predicates is True) +-- Defined in all types. Set for types for which (Has_Predicates is True) -- and for which a predicate procedure has been built that tests that the -- specified predicates are True. Contains the entity for the function -- which takes a single argument of the given type, and returns True if @@ -3339,23 +3340,23 @@ package Einfo is -- way this is stored is as an element of the Subprograms_For_Type field. -- Primitive_Operations (synthesized) --- Present in concurrent types, tagged record types and subtypes, tagged +-- Defined in concurrent types, tagged record types and subtypes, tagged -- private types and tagged incomplete types. For concurrent types whose -- Corresponding_Record_Type (CRT) is available, returns the list of -- Direct_Primitive_Operations of its CRT; otherwise returns No_Elist. -- For all the other types returns the Direct_Primitive_Operations. -- Prival (Node17) --- Present in private components of protected types. Refers to the entity +-- Defined in private components of protected types. Refers to the entity -- of the component renaming declaration generated inside protected -- subprograms, entries or barrier functions. -- Prival_Link (Node20) --- Present in constants and variables which rename private components of +-- Defined in constants and variables which rename private components of -- protected types. Set to the original private component. -- Private_Dependents (Elist18) --- Present in private (sub)types. Records the subtypes of the private +-- Defined in private (sub)types. Records the subtypes of the private -- type, derivations from it, and records and arrays with components -- dependent on the type. -- @@ -3386,13 +3387,13 @@ package Einfo is -- restore the private view saved in the shadow. -- Protected_Formal (Node22) --- Present in formal parameters (in, in out and out parameters). Used +-- Defined in formal parameters (in, in out and out parameters). Used -- only for formals of protected operations. References corresponding -- formal parameter in the unprotected version of the operation that -- is created during expansion. -- Protected_Body_Subprogram (Node11) --- Present in protected operations. References the entity for the +-- Defined in protected operations. References the entity for the -- subprogram which implements the body of the operation. -- Protection_Object (Node23) @@ -3401,32 +3402,32 @@ package Einfo is -- types. -- Reachable (Flag49) --- Present in labels. The flag is set over the range of statements in +-- Defined in labels. The flag is set over the range of statements in -- which a goto to that label is legal. -- Referenced (Flag156) --- Present in all entities. Set if the entity is referenced, except for +-- Defined in all entities. Set if the entity is referenced, except for -- the case of an appearance of a simple variable that is not a renaming -- as the left side of an assignment in which case Referenced_As_LHS is -- set instead, or a similar appearance as an out parameter actual, in -- which case Referenced_As_Out_Parameter is set. -- Referenced_As_LHS (Flag36): --- Present in all entities. This flag is set instead of Referenced if a +-- Defined in all entities. This flag is set instead of Referenced if a -- simple variable that is not a renaming appears as the left side of an -- assignment. The reason we distinguish this kind of reference is that -- we have a separate warning for variables that are only assigned and -- never read. -- Referenced_As_Out_Parameter (Flag227): --- Present in all entities. This flag is set instead of Referenced if a +-- Defined in all entities. This flag is set instead of Referenced if a -- simple variable that is not a renaming appears as an actual for an out -- formal. The reason we distinguish this kind of reference is that -- we have a separate warning for variables that are only assigned and -- never read, and out parameters are a special case. -- Register_Exception_Call (Node20) --- Present in exception entities. When an exception is declared, +-- Defined in exception entities. When an exception is declared, -- a call is expanded to Register_Exception. This field points to -- the expanded N_Procedure_Call_Statement node for this call. It -- is used for Import/Export_Exception processing to modify the @@ -3434,13 +3435,13 @@ package Einfo is -- used for handling these pragmas at runtime. -- Related_Array_Object (Node25) --- Present in array types and subtypes. Used only for the base type +-- Defined in array types and subtypes. Used only for the base type -- and subtype created for an anonymous array object. Set to point -- to the entity of the corresponding array object. Currently used -- only for type-related error messages. -- Related_Expression (Node24) --- Present in variables and types. Set only for internally generated +-- Defined in variables and types. Set only for internally generated -- entities, where it may be used to denote the source expression whose -- elaboration created the variable declaration. If set, it is used -- for generating clearer messages from CodePeer. @@ -3449,40 +3450,40 @@ package Einfo is -- odd to have two mechanisms here??? -- Related_Instance (Node15) --- Present in the wrapper packages created for subprogram instances. +-- Defined in the wrapper packages created for subprogram instances. -- The internal subprogram that implements the instance is inside the -- wrapper package, but for debugging purposes its external symbol -- must correspond to the name and scope of the related instance. -- Related_Type (Node27) --- Present in components, constants and variables. Set when there is an +-- Defined in components, constants and variables. Set when there is an -- associated dispatch table to point to entities containing primary or -- secondary tags. Not set in the _tag component of record types. -- Relative_Deadline_Variable (Node26) [implementation base type only] --- Present in task type entities. This flag is set if a valid and +-- Defined in task type entities. This flag is set if a valid and -- effective pragma Relative_Deadline applies to the base type. Points -- to the entity for a variable that is created to hold the value given -- in a Relative_Deadline pragma for a task type. -- Renamed_Entity (Node18) --- Present in exceptions, packages, subprograms and generic units. Set +-- Defined in exceptions, packages, subprograms and generic units. Set -- for entities that are defined by a renaming declaration. Denotes the -- renamed entity, or transitively the ultimate renamed entity if -- there is a chain of renaming declarations. Empty if no renaming. -- Renamed_In_Spec (Flag231) --- Present in package entities. If a package renaming occurs within +-- Defined in package entities. If a package renaming occurs within -- a package spec, then this flag is set on the renamed package. The -- purpose is to prevent a warning about unused entities in the renamed -- package. Such a warning would be inappropriate since clients of the -- package can see the entities in the package via the renaming. -- Renamed_Object (Node18) --- Present in all objects (constants, variables, components, formal +-- Defined in all objects (constants, variables, components, formal -- parameters, generic formal parameters, and loop parameters). --- ??? Present in discriminants? +-- ??? Defined in discriminants? -- Set non-Empty if the object was declared by a renaming declaration, -- in which case it references the tree node for the name of the renamed -- object. This is only possible for the variable and constant cases. @@ -3493,8 +3494,8 @@ package Einfo is -- Empty otherwise (it is always empty for loop parameters). -- Renaming_Map (Uint9) --- Present in generic subprograms, generic packages, and their --- instances. Also present in the instances of the corresponding +-- Defined in generic subprograms, generic packages, and their +-- instances. Also defined in the instances of the corresponding -- bodies. Denotes the renaming map (generic entities => instance -- entities) used to construct the instance by givin an index into -- the tables used to represent these maps. See Sem_Ch12 for further @@ -3502,32 +3503,32 @@ package Einfo is -- instance is the actual corresponding to a formal package. -- Requires_Overriding (Flag213) --- Present in all subprograms and entries. Set for subprograms that +-- Defined in all subprograms and entries. Set for subprograms that -- require overriding as defined by RM-2005-3.9.3(6/2). Note that this -- is True only for implicitly declare subprograms; it is not set on the -- parent type's subprogram. See also Is_Abstract_Subprogram. -- Return_Present (Flag54) --- Present in function and generic function entities. Set if the +-- Defined in function and generic function entities. Set if the -- function contains a return statement (used for error checking). -- This flag can also be set in procedure and generic procedure -- entities (for convenience in setting it), but is only tested -- for the function case. -- Return_Applies_To (Node8) --- Present in E_Return_Statement. Points to the entity representing +-- Defined in E_Return_Statement. Points to the entity representing -- the construct to which the return statement applies, as defined in -- RM-6.5(4/2). Note that a (simple) return statement within an -- extended_return_statement applies to the extended_return_statement, -- even though it causes the whole function to return. -- Returns_By_Ref (Flag90) --- Present in function entities, to indicate that the function +-- Defined in function entities, to indicate that the function -- returns the result by reference, either because its return type is a -- by-reference-type or because it uses explicitly the secondary stack. -- Reverse_Bit_Order (Flag164) [base type only] --- Present in all record type entities. Set if entity has a Bit_Order +-- Defined in all record type entities. Set if entity has a Bit_Order -- aspect (set by an aspect clause or attribute definition clause) that -- has reversed the order of bits from the default value. When this flag -- is set, a component clause must specify a set of bits entirely within @@ -3535,7 +3536,7 @@ package Einfo is -- Ada 2005 AI-133), or must occupy an integral number of storage units. -- Reverse_Storage_Order (Flag93) [base type only] --- Present in all record and array type entities. Set if entity has a +-- Defined in all record and array type entities. Set if entity has a -- Scalar_Storage_Order aspect (set by an aspect clause or attribute -- definition clause) that has reversed the order of storage elements -- from the default value. When this flag is set for a record type, @@ -3543,7 +3544,7 @@ package Einfo is -- or as the target default value). -- RM_Size (Uint13) --- Present in all type and subtype entities. Contains the value of +-- Defined in all type and subtype entities. Contains the value of -- type'Size as defined in the RM. See also the Esize field and -- and the description on "Handling of Type'Size Values". A value -- of zero in this field for a non-discrete type means that @@ -3562,7 +3563,7 @@ package Einfo is -- in the RM root type applies to a class of types, not to a type. -- Scalar_Range (Node20) --- Present in all scalar types (including modular types, where the +-- Defined in all scalar types (including modular types, where the -- bounds are 0 .. modulus - 1). References a node in the tree that -- contains the bounds for the range. Note that this information -- could be obtained by rummaging around the tree, but it is more @@ -3572,12 +3573,12 @@ package Einfo is -- subtype reference (a subtype is converted into a range). -- Scale_Value (Uint15) --- Present in decimal fixed-point types and subtypes. Contains the scale +-- Defined in decimal fixed-point types and subtypes. Contains the scale -- for the type (i.e. the value of type'Scale = the number of decimal -- digits after the decimal point). -- Scope (Node3) --- Present in all entities. Points to the entity for the scope (block, +-- Defined in all entities. Points to the entity for the scope (block, -- loop, subprogram, package etc.) in which the entity is declared. -- Since this field is in the base part of the entity node, the access -- routines for this field are in Sinfo. Note that for a child package, @@ -3592,7 +3593,7 @@ package Einfo is -- is the Scope_Depth of the record scope. -- Scope_Depth_Value (Uint22) --- Present in program units, blocks, concurrent types, and entries. +-- Defined in program units, blocks, concurrent types, and entries. -- Indicates the number of scopes that statically enclose the declaration -- of the unit or type. Library units have a depth of zero. Note that -- record types can act as scopes but do NOT have this field set (see @@ -3604,13 +3605,13 @@ package Einfo is -- needed, since returns an invalid value in this case! -- Sec_Stack_Needed_For_Return (Flag167) --- Present in scope entities (blocks, functions, procedures, tasks, +-- Defined in scope entities (blocks, functions, procedures, tasks, -- entries). Set to True when secondary stack is used to hold the -- returned value of a function and thus should not be released on -- scope exit. -- Shadow_Entities (List14) --- Present in package and generic package entities. Points to a list +-- Defined in package and generic package entities. Points to a list -- of entities that correspond to private types. For each private type -- a shadow entity is created that holds a copy of the private view. -- In regions of the program where the full views of these private @@ -3622,12 +3623,12 @@ package Einfo is -- entry and subsequent entries are obtained using Next. -- Shared_Var_Procs_Instance (Node22) --- Present in variables. Set non-Empty only if Is_Shared_Passive is +-- Defined in variables. Set non-Empty only if Is_Shared_Passive is -- set, in which case this is the entity for the associated instance of -- System.Shared_Storage.Shared_Var_Procs. See Exp_Smem for full details. -- Size_Check_Code (Node19) --- Present in constants and variables. Normally Empty. Set if code is +-- Defined in constants and variables. Normally Empty. Set if code is -- generated to check the size of the object. This field is used to -- suppress this code if a subsequent address clause is encountered. @@ -3641,13 +3642,13 @@ package Einfo is -- is not applicable to the entity. -- Size_Depends_On_Discriminant (Flag177) --- Present in all entities for types and subtypes. Indicates that the +-- Defined in all entities for types and subtypes. Indicates that the -- size of the type depends on the value of one or more discriminants. -- Currently, this flag is only set for arrays which have one or more -- bounds depending on a discriminant value. -- Size_Known_At_Compile_Time (Flag92) --- Present in all entities for types and subtypes. Indicates that the +-- Defined in all entities for types and subtypes. Indicates that the -- size of objects of the type is known at compile time. This flag is -- used to optimize some generated code sequences, and also to enable -- some error checks (e.g. disallowing component clauses on variable @@ -3657,18 +3658,18 @@ package Einfo is -- assume that it is not known). -- Small_Value (Ureal21) --- Present in fixed point types. Points to the universal real for the +-- Defined in fixed point types. Points to the universal real for the -- Small of the type, either as given in a representation clause, or -- as computed (as a power of two) by the compiler. -- Spec_Entity (Node19) --- Present in package body entities. Points to corresponding package --- spec entity. Also present in subprogram body parameters in the +-- Defined in package body entities. Points to corresponding package +-- spec entity. Also defined in subprogram body parameters in the -- case where there is a separate spec, where this field references -- the corresponding parameter entities in the spec. -- Static_Predicate (List25) --- Present in discrete types/subtypes with predicates (Has_Predicates +-- Defined in discrete types/subtypes with predicates (Has_Predicates -- set True). Set if the type/subtype has a static predicate. Points to -- a list of expression and N_Range nodes that represent the predicate -- in canonical form. The canonical form has entries sorted in ascending @@ -3679,7 +3680,7 @@ package Einfo is -- within the subtype range. -- Status_Flag_Or_Transient_Decl (Node15) --- Present in variables and constants. Applies to objects that require +-- Defined in variables and constants. Applies to objects that require -- special treatment by the finalization machinery. Such examples are -- extended return results, if and case expression results and objects -- inside N_Expression_With_Actions nodes. The attribute contains the @@ -3687,22 +3688,22 @@ package Einfo is -- of code or the declaration of a "hook" object. -- Storage_Size_Variable (Node15) [implementation base type only] --- Present in access types and task type entities. This flag is set +-- Defined in access types and task type entities. This flag is set -- if a valid and effective pragma Storage_Size applies to the base -- type. Points to the entity for a variable that is created to -- hold the value given in a Storage_Size pragma for an access -- collection or a task type. Note that in the access type case, --- this field is present only in the root type (since derived types +-- this field is defined only in the root type (since derived types -- share the same storage pool). -- Static_Elaboration_Desired (Flag77) --- Present in library-level packages. Set by the pragma of the same +-- Defined in library-level packages. Set by the pragma of the same -- name, to indicate that static initialization must be attempted for -- all types declared in the package, and that a warning must be emitted -- for those types to which static initialization is not available. -- Static_Initialization (Node26) --- Present in initialization procedures for types whose objects can be +-- Defined in initialization procedures for types whose objects can be -- initialized statically. The value of this attribute is a positional -- aggregate whose components are compile-time static values. Used -- when available in object declarations to eliminate the call to the @@ -3711,31 +3712,31 @@ package Einfo is -- irrelevant in init_procs. -- Stored_Constraint (Elist23) --- Present in entities that can have discriminants (concurrent types +-- Defined in entities that can have discriminants (concurrent types -- subtypes, record types and subtypes, private types and subtypes, -- limited private types and subtypes and incomplete types). Points -- to an element list containing the expressions for each of the -- stored discriminants for the record (sub)type. -- Strict_Alignment (Flag145) [implementation base type only] --- Present in all type entities. Indicates that some containing part +-- Defined in all type entities. Indicates that some containing part -- is either aliased or tagged. This prohibits packing the object -- tighter than its natural size and alignment. -- String_Literal_Length (Uint16) --- Present in string literal subtypes (which are created to correspond +-- Defined in string literal subtypes (which are created to correspond -- to string literals in the program). Contains the length of the string -- literal. -- String_Literal_Low_Bound (Node15) --- Present in string literal subtypes (which are created to correspond +-- Defined in string literal subtypes (which are created to correspond -- to string literals in the program). Contains an expression whose -- value represents the low bound of the literal. This is a copy of -- the low bound of the applicable index constraint if there is one, -- or a copy of the low bound of the index base type if not. -- Subprograms_For_Type (Node29) --- Present in all type entities, and in subprogram entities. This is used +-- Defined in all type entities, and in subprogram entities. This is used -- to hold a list of subprogram entities for subprograms associated with -- the type, linked through the Subprogram_List field of the subprogram -- entity. Basically this is a way of multiplexing the single field to @@ -3745,7 +3746,7 @@ package Einfo is -- names to access entries in this list. -- Suppress_Elaboration_Warnings (Flag148) --- Present in all entities, can be set only for subprogram entities and +-- Defined in all entities, can be set only for subprogram entities and -- for variables. If this flag is set then Sem_Elab will not generate -- elaboration warnings for the subprogram or variable. Suppression of -- such warnings is automatic for subprograms for which elaboration @@ -3756,7 +3757,7 @@ package Einfo is -- avoid multiple elaboration warnings for the same variable. -- Suppress_Initialization (Flag105) --- Present in all type and subtype entities. If set for the base type, +-- Defined in all type and subtype entities. If set for the base type, -- then the generation of initialization procedures is suppressed for the -- type. Any other implicit initialiation (e.g. from the use of pragma -- Initialize_Scalars) is also suppressed if this flag is set either for @@ -3766,17 +3767,17 @@ package Einfo is -- table entities set it. -- Suppress_Style_Checks (Flag165) --- Present in all entities. Suppresses any style checks specifically +-- Defined in all entities. Suppresses any style checks specifically -- associated with the given entity if set. -- Suppress_Value_Tracking_On_Call (Flag217) --- Present in all entities. Set in a scope entity if value tracking is to +-- Defined in all entities. Set in a scope entity if value tracking is to -- be suppressed on any call within the scope. Used when an access to a -- local subprogram is computed, to deal with the possibility that this -- value may be passed around, and if used, may clobber a local variable. -- Task_Body_Procedure (Node25) --- Present in task types and subtypes. Points to the entity for the task +-- Defined in task types and subtypes. Points to the entity for the task -- task body procedure (as further described in Exp_Ch9, task bodies are -- expanded into procedures). A convenient function to retrieve this -- field is Sem_Util.Get_Task_Body_Procedure. @@ -3785,7 +3786,7 @@ package Einfo is -- Underlying_Type of the Root_Type??? -- Treat_As_Volatile (Flag41) --- Present in all type entities, and also in constants, components and +-- Defined in all type entities, and also in constants, components and -- variables. Set if this entity is to be treated as volatile for code -- generation purposes. Always set if Is_Volatile is set, but can also -- be set as a result of situations (such as address overlays) where @@ -3816,7 +3817,7 @@ package Einfo is -- bound is in units of small, and is an integer. -- Underlying_Full_View (Node19) --- Present in private subtypes that are the completion of other private +-- Defined in private subtypes that are the completion of other private -- types, or in private types that are derived from private subtypes. If -- the full view of a private type T is derived from another private type -- with discriminants Td, the full view of T is also private, and there @@ -3830,7 +3831,7 @@ package Einfo is -- can serve directly as the full view of T. -- Underlying_Record_View (Node28) --- Present in record types. Set for record types that are extensions of +-- Defined in record types. Set for record types that are extensions of -- types with unknown discriminants, and also set for internally built -- underlying record views to reference its original record type. Record -- types that are extensions of types with unknown discriminants do not @@ -3851,7 +3852,7 @@ package Einfo is -- type, its underlying type is taken. -- Universal_Aliasing (Flag216) [implementation base type only] --- Present in all type entities. Set to direct the back-end to avoid +-- Defined in all type entities. Set to direct the back-end to avoid -- any optimizations based on type-based alias analysis for this type. -- Indicates that objects of this type can alias objects of any other -- types, which guarantees that any objects can be referenced through @@ -3860,57 +3861,57 @@ package Einfo is -- types designating this type were subject to No_Strict_Aliasing. -- Unset_Reference (Node16) --- Present in variables and out parameters. This is normally Empty. It +-- Defined in variables and out parameters. This is normally Empty. It -- is set to point to an identifier that represents a reference to the -- entity before any value has been set. Only the first such reference -- is identified. This field is used to generate a warning message if -- necessary (see Sem_Warn.Check_Unset_Reference). -- Used_As_Generic_Actual (Flag222) --- Present in all entities, set if the entity is used as an argument to +-- Defined in all entities, set if the entity is used as an argument to -- a generic instantiation. Used to tune certain warning messages. -- Uses_Lock_Free (Flag188) --- Present in protected type entities. Set to True when the Lock Free +-- Defined in protected type entities. Set to True when the Lock Free -- implementation is used for the protected type. This implemenatation is -- based on atomic transactions and doesn't require anymore the use of -- Protection object (see System.Tasking.Protected_Objects). -- Uses_Sec_Stack (Flag95) --- Present in scope entities (blocks,functions, procedures, tasks, +-- Defined in scope entities (blocks,functions, procedures, tasks, -- entries). Set to True when secondary stack is used in this scope and -- must be released on exit unless Sec_Stack_Needed_For_Return is set. -- Warnings_Off (Flag96) --- Present in all entities. Set if a pragma Warnings (Off, entity-name) +-- Defined in all entities. Set if a pragma Warnings (Off, entity-name) -- is used to suppress warnings for a given entity. It is also used by -- the compiler in some situations to kill spurious warnings. Note that -- clients should generally not test this flag directly, but instead -- use function Has_Warnings_Off. -- Warnings_Off_Used (Flag236) --- Present in all entities. Can only be set if Warnings_Off is set. If +-- Defined in all entities. Can only be set if Warnings_Off is set. If -- set indicates that a warning was suppressed by the Warnings_Off flag, -- and Unmodified/Unreferenced would not have suppressed the warning. -- Warnings_Off_Used_Unmodified (Flag237) --- Present in all entities. Can only be set if Warnings_Off is set and +-- Defined in all entities. Can only be set if Warnings_Off is set and -- Has_Pragma_Unmodified is not set. If set indicates that a warning was -- suppressed by the Warnings_Off status but that pragma Unmodified -- would also have suppressed the warning. -- Warnings_Off_Used_Unreferenced (Flag238) --- Present in all entities. Can only be set if Warnings_Off is set and +-- Defined in all entities. Can only be set if Warnings_Off is set and -- Has_Pragma_Unreferenced is not set. If set indicates that a warning -- was suppressed by the Warnings_Off status but that pragma Unreferenced -- would also have suppressed the warning. -- Was_Hidden (Flag196) --- Present in all entities. Used to save the value of the Is_Hidden +-- Defined in all entities. Used to save the value of the Is_Hidden -- attribute when the limited-view is installed (Ada 2005: AI-217). -- Wrapped_Entity (Node27) --- Present in functions and procedures which have been classified as +-- Defined in functions and procedures which have been classified as -- Is_Primitive_Wrapper. Set to the entity being wrapper. -------------------------------------- diff --git a/gcc/ada/exp_attr.adb b/gcc/ada/exp_attr.adb index 04930a9bd7c..1b50d293f8c 100644 --- a/gcc/ada/exp_attr.adb +++ b/gcc/ada/exp_attr.adb @@ -5141,7 +5141,8 @@ package body Exp_Attr is begin Rewrite (N, Build_To_Any_Call - (Convert_To (P_Type, + (Loc, + Convert_To (P_Type, Relocate_Node (First (Exprs))), Decls)); Insert_Actions (N, Decls); Analyze_And_Resolve (N, RTE (RE_Any)); diff --git a/gcc/ada/exp_ch9.adb b/gcc/ada/exp_ch9.adb index 8a7089eff06..af2e3e7f370 100644 --- a/gcc/ada/exp_ch9.adb +++ b/gcc/ada/exp_ch9.adb @@ -4817,6 +4817,13 @@ package body Exp_Ch9 is P : Node_Id; begin + -- On restricted profile, all the tasks will be activated at the end + -- of the elaboration (Sequential elaboration policy). + + if Restricted_Profile then + return; + end if; + -- Get the activation chain entity. Except in the case of a package -- body, this is in the node that was passed. For a package body, we -- have to find the corresponding package declaration node. @@ -4835,11 +4842,7 @@ package body Exp_Ch9 is end if; if Present (Chain) then - if Restricted_Profile then - Name := New_Reference_To (RTE (RE_Activate_Restricted_Tasks), Loc); - else - Name := New_Reference_To (RTE (RE_Activate_Tasks), Loc); - end if; + Name := New_Reference_To (RTE (RE_Activate_Tasks), Loc); Call := Make_Procedure_Call_Statement (Loc, diff --git a/gcc/ada/exp_dist.adb b/gcc/ada/exp_dist.adb index 4a59b2a6343..cf8243e9ca7 100644 --- a/gcc/ada/exp_dist.adb +++ b/gcc/ada/exp_dist.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2011, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2012, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -803,12 +803,14 @@ package body Exp_Dist is -- the declaration and entity for the newly-created function. function Build_To_Any_Call - (N : Node_Id; + (Loc : Source_Ptr; + N : Node_Id; Decls : List_Id) return Node_Id; -- Build call to To_Any attribute function with expression as actual - -- parameter. Decls is the declarations list for an appropriate - -- enclosing scope of the point where the call will be inserted; if - -- the To_Any attribute for Typ needs to be generated at this point, + -- parameter. Loc is the reference location ofr generated nodes, + -- Decls is the declarations list for an appropriate enclosing scope + -- of the point where the call will be inserted; if the To_Any + -- attribute for the type of N needs to be generated at this point, -- its declaration is appended to Decls. procedure Build_To_Any_Function @@ -879,7 +881,8 @@ package body Exp_Dist is renames PolyORB_Support.Helpers.Build_From_Any_Call; function Build_To_Any_Call - (N : Node_Id; + (Loc : Source_Ptr; + N : Node_Id; Decls : List_Id) return Node_Id renames PolyORB_Support.Helpers.Build_To_Any_Call; @@ -6562,7 +6565,7 @@ package body Exp_Dist is Object_Definition => New_Occurrence_Of (RTE (RE_Any), Loc), Expression => PolyORB_Support.Helpers.Build_To_Any_Call - (RACW_Parameter, No_List))); + (Loc, RACW_Parameter, No_List))); Statements := New_List ( Make_Procedure_Call_Statement (Loc, @@ -7362,7 +7365,7 @@ package body Exp_Dist is -- the first one. Expr := PolyORB_Support.Helpers.Build_To_Any_Call - (Actual_Parameter, Decls); + (Loc, Actual_Parameter, Decls); else Expr := Make_Function_Call (Loc, @@ -7448,7 +7451,7 @@ package body Exp_Dist is New_Occurrence_Of (RTE (RE_Any), Loc), Expression => PolyORB_Support.Helpers.Build_To_Any_Call - (Parameter_Exp, Decls))); + (Loc, Parameter_Exp, Decls))); Append_To (Extra_Formal_Statements, Add_Parameter_To_NVList (Loc, @@ -7934,7 +7937,7 @@ package body Exp_Dist is Parameter_Associations => New_List ( New_Occurrence_Of (Any, Loc), PolyORB_Support.Helpers.Build_To_Any_Call - (New_Occurrence_Of (Object, Loc), Decls)))); + (Loc, New_Occurrence_Of (Object, Loc), Decls)))); end if; -- For RACW controlling formals, the Etyp of Object is always @@ -8094,7 +8097,7 @@ package body Exp_Dist is Parameter_Associations => New_List ( New_Occurrence_Of (Request_Parameter, Loc), PolyORB_Support.Helpers.Build_To_Any_Call - (New_Occurrence_Of (Result, Loc), Decls)))); + (Loc, New_Occurrence_Of (Result, Loc), Decls)))); -- A DSA function does not have out or inout arguments end; @@ -9219,11 +9222,10 @@ package body Exp_Dist is ----------------------- function Build_To_Any_Call - (N : Node_Id; + (Loc : Source_Ptr; + N : Node_Id; Decls : List_Id) return Node_Id is - Loc : constant Source_Ptr := Sloc (N); - Typ : Entity_Id := Etype (N); U_Type : Entity_Id; C_Type : Entity_Id; @@ -9463,7 +9465,8 @@ package body Exp_Dist is (Rt_Type, New_Occurrence_Of (Expr_Parameter, Loc)); begin - Set_Expression (Any_Decl, Build_To_Any_Call (Expr, Decls)); + Set_Expression (Any_Decl, + Build_To_Any_Call (Loc, Expr, Decls)); end; elsif Is_Record_Type (Typ) and then not Is_Tagged_Type (Typ) then @@ -9479,7 +9482,7 @@ package body Exp_Dist is begin Set_Expression - (Any_Decl, Build_To_Any_Call (Expr, Decls)); + (Any_Decl, Build_To_Any_Call (Loc, Expr, Decls)); end; -- Comment needed here (and label on declare block ???) @@ -9535,7 +9538,7 @@ package body Exp_Dist is RTE (RE_Add_Aggregate_Element), Loc), Parameter_Associations => New_List ( New_Occurrence_Of (Container, Loc), - Build_To_Any_Call (Field_Ref, Decls)))); + Build_To_Any_Call (Loc, Field_Ref, Decls)))); else -- A variant part @@ -9660,7 +9663,8 @@ package body Exp_Dist is Parameter_Associations => New_List ( New_Occurrence_Of (Union_Any, Loc), Build_To_Any_Call - (Make_Discriminant_Reference, + (Loc, + Make_Discriminant_Reference, Block_Decls)))); -- Populate inner struct aggregate @@ -9761,7 +9765,8 @@ package body Exp_Dist is Choices => New_List ( Make_Integer_Literal (Loc, Counter)), Expression => - Build_To_Any_Call (Discriminant, Decls))); + Build_To_Any_Call (Loc, + Discriminant, Decls))); end; Counter := Counter + 1; @@ -9850,7 +9855,7 @@ package body Exp_Dist is if Etype (Datum) = RTE (RE_Any) then Element_Any := Datum; else - Element_Any := Build_To_Any_Call (Datum, Decls); + Element_Any := Build_To_Any_Call (Loc, Datum, Decls); end if; Append_To (Stmts, @@ -9889,7 +9894,7 @@ package body Exp_Dist is RTE (RE_Add_Aggregate_Element), Loc), Parameter_Associations => New_List ( New_Occurrence_Of (Any, Loc), - Build_To_Any_Call ( + Build_To_Any_Call (Loc, OK_Convert_To (Etype (Index), Make_Attribute_Reference (Loc, Prefix => @@ -9910,7 +9915,7 @@ package body Exp_Dist is -- Integer types Set_Expression (Any_Decl, - Build_To_Any_Call ( + Build_To_Any_Call (Loc, OK_Convert_To ( Find_Numeric_Representation (Typ), New_Occurrence_Of (Expr_Parameter, Loc)), @@ -10454,7 +10459,7 @@ package body Exp_Dist is Set_Etype (Expr, Disc_Type); Append_To (Union_TC_Params, - Build_To_Any_Call (Expr, Decls)); + Build_To_Any_Call (Loc, Expr, Decls)); Add_Params_For_Variant_Components; J := J + Uint_1; @@ -10495,7 +10500,7 @@ package body Exp_Dist is begin Set_Etype (Exp, Disc_Type); Append_To (Union_TC_Params, - Build_To_Any_Call (Exp, Decls)); + Build_To_Any_Call (Loc, Exp, Decls)); end; Add_Params_For_Variant_Components; @@ -10509,7 +10514,7 @@ package body Exp_Dist is New_Copy_Tree (Choice); begin Append_To (Union_TC_Params, - Build_To_Any_Call (Exp, Decls)); + Build_To_Any_Call (Loc, Exp, Decls)); end; Add_Params_For_Variant_Components; @@ -10679,7 +10684,7 @@ package body Exp_Dist is if Constrained then Inner_TypeCode := Make_Constructed_TypeCode (RTE (RE_TC_Array), New_List ( - Build_To_Any_Call ( + Build_To_Any_Call (Loc, OK_Convert_To (RTE (RE_Unsigned_32), Make_Attribute_Reference (Loc, Prefix => New_Occurrence_Of (Typ, Loc), @@ -10688,7 +10693,7 @@ package body Exp_Dist is Make_Integer_Literal (Loc, Intval => Ndim - J + 1)))), Decls), - Build_To_Any_Call (Inner_TypeCode, Decls))); + Build_To_Any_Call (Loc, Inner_TypeCode, Decls))); else -- Unconstrained case: add low bound for each @@ -10705,11 +10710,11 @@ package body Exp_Dist is Inner_TypeCode := Make_Constructed_TypeCode (RTE (RE_TC_Sequence), New_List ( - Build_To_Any_Call ( + Build_To_Any_Call (Loc, OK_Convert_To (RTE (RE_Unsigned_32), Make_Integer_Literal (Loc, 0)), Decls), - Build_To_Any_Call (Inner_TypeCode, Decls))); + Build_To_Any_Call (Loc, Inner_TypeCode, Decls))); end if; end loop; diff --git a/gcc/ada/exp_dist.ads b/gcc/ada/exp_dist.ads index 49b96a8d03e..a0bb6c113db 100644 --- a/gcc/ada/exp_dist.ads +++ b/gcc/ada/exp_dist.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2011, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2012, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -144,13 +144,14 @@ package Exp_Dist is -- declaration is appended to Decls. function Build_To_Any_Call - (N : Node_Id; + (Loc : Source_Ptr; + N : Node_Id; Decls : List_Id) return Node_Id; -- Build call to To_Any attribute function with expression as actual - -- parameter. Decls is the declarations list for an appropriate - -- enclosing scope of the point where the call will be inserted; if - -- the To_Any attribute for Typ needs to be generated at this point, - -- its declaration is appended to Decls. + -- parameter. Loc is the reference location for generated nodes, Decls is + -- the declarations list for an appropriate enclosing scope of the point + -- where the call will be inserted; if the To_Any attribute for Typ needs + -- to be generated at this point, its declaration is appended to Decls. function Build_TypeCode_Call (Loc : Source_Ptr; diff --git a/gcc/ada/rtsfind.ads b/gcc/ada/rtsfind.ads index ee9919a5fd4..0ffaea3d9f8 100644 --- a/gcc/ada/rtsfind.ads +++ b/gcc/ada/rtsfind.ads @@ -1756,7 +1756,6 @@ package Rtsfind is RE_Timed_Task_Entry_Call, -- System.Tasking.Rendezvous RE_Timed_Selective_Wait, -- System.Tasking.Rendezvous - RE_Activate_Restricted_Tasks, -- System.Tasking.Restricted.Stages RE_Complete_Restricted_Activation, -- System.Tasking.Restricted.Stages RE_Create_Restricted_Task, -- System.Tasking.Restricted.Stages RE_Complete_Restricted_Task, -- System.Tasking.Restricted.Stages @@ -3042,7 +3041,6 @@ package Rtsfind is RE_Timed_Task_Entry_Call => System_Tasking_Rendezvous, RE_Timed_Selective_Wait => System_Tasking_Rendezvous, - RE_Activate_Restricted_Tasks => System_Tasking_Restricted_Stages, RE_Complete_Restricted_Activation => System_Tasking_Restricted_Stages, RE_Create_Restricted_Task => System_Tasking_Restricted_Stages, RE_Complete_Restricted_Task => System_Tasking_Restricted_Stages, diff --git a/gcc/ada/s-tarest.adb b/gcc/ada/s-tarest.adb index 9643a181b5b..1ff9b86ba07 100644 --- a/gcc/ada/s-tarest.adb +++ b/gcc/ada/s-tarest.adb @@ -70,6 +70,9 @@ package body System.Tasking.Restricted.Stages is use Task_Primitives.Operations; use Task_Info; + Tasks_Activation_Chain : Task_Id; + -- Chain of all the tasks to activate + Global_Task_Lock : aliased System.Task_Primitives.RTS_Lock; -- This is a global lock; it is used to execute in mutual exclusion -- from all other tasks. It is only used by Task_Lock and Task_Unlock. @@ -298,9 +301,9 @@ package body System.Tasking.Restricted.Stages is -- Restricted GNARLI -- ----------------------- - ------------------------------- - -- Activate_Restricted_Tasks -- - ------------------------------- + -------------------- + -- Activate_Tasks -- + -------------------- -- Note that locks of activator and activated task are both locked here. -- This is necessary because C.State and Self.Wait_Count have to be @@ -308,9 +311,7 @@ package body System.Tasking.Restricted.Stages is -- created before the activated task. That satisfies our -- in-order-of-creation ATCB locking policy. - procedure Activate_Restricted_Tasks - (Chain_Access : Activation_Chain_Access) - is + procedure Activate_Tasks is Self_ID : constant Task_Id := STPO.Self; C : Task_Id; Activate_Prio : System.Any_Priority; @@ -332,8 +333,7 @@ package body System.Tasking.Restricted.Stages is -- Activate all the tasks in the chain. Creation of the thread of -- control was deferred until activation. So create it now. - C := Chain_Access.T_ID; - + C := Tasks_Activation_Chain; while C /= null loop if C.Common.State /= Terminated then pragma Assert (C.Common.State = Unactivated); @@ -384,8 +384,8 @@ package body System.Tasking.Restricted.Stages is -- Remove the tasks from the chain - Chain_Access.T_ID := null; - end Activate_Restricted_Tasks; + Tasks_Activation_Chain := null; + end Activate_Tasks; ------------------------------------ -- Complete_Restricted_Activation -- @@ -466,6 +466,8 @@ package body System.Tasking.Restricted.Stages is Task_Image : String; Created_Task : Task_Id) is + pragma Unreferenced (Chain); + Self_ID : constant Task_Id := STPO.Self; Base_Priority : System.Any_Priority; Base_CPU : System.Multiprocessors.CPU_Range; @@ -558,8 +560,8 @@ package body System.Tasking.Restricted.Stages is -- may be used by the operation of Ada code within the task. SSL.Create_TSD (Created_Task.Common.Compiler_Data); - Created_Task.Common.Activation_Link := Chain.T_ID; - Chain.T_ID := Created_Task; + Created_Task.Common.Activation_Link := Tasks_Activation_Chain; + Tasks_Activation_Chain := Created_Task; end Create_Restricted_Task; --------------------------- diff --git a/gcc/ada/s-tarest.ads b/gcc/ada/s-tarest.ads index 7b853914bff..9b52b619f38 100644 --- a/gcc/ada/s-tarest.ads +++ b/gcc/ada/s-tarest.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2010, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2012, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -175,20 +175,11 @@ package System.Tasking.Restricted.Stages is -- -- This procedure can raise Storage_Error if the task creation fails - procedure Activate_Restricted_Tasks - (Chain_Access : Activation_Chain_Access); - -- Compiler interface only. Do not call from within the RTS. - -- This must be called by the creator of a chain of one or more new tasks, - -- to activate them. The chain is a linked list that up to this point is - -- only known to the task that created them, though the individual tasks - -- are already in the All_Tasks_List. - -- - -- The compiler builds the chain in LIFO order (as a stack). Another - -- version of this procedure had code to reverse the chain, so as to - -- activate the tasks in the order of declaration. This might be nice, but - -- it is not needed if priority-based scheduling is supported, since all - -- the activated tasks synchronize on the activators lock before they start - -- activating and so they should start activating in priority order. + procedure Activate_Tasks; + pragma Export (C, Activate_Tasks, "__gnat_activate_tasks"); + -- Binder interface only. Do not call from within the RTS. This must be + -- called an the end of the elaboration to activate all tasks, in order + -- to implement the sequential elaboration policy. procedure Complete_Restricted_Activation; -- Compiler interface only. Do not call from within the RTS. This should be @@ -217,7 +208,7 @@ package System.Tasking.Restricted.Stages is -- restricted_terminated (t1._task_id) procedure Finalize_Global_Tasks; - -- This is needed to support the compiler interface; it will only be called + -- This is needed to support the compiler interface. It will only be called -- by the Environment task in the binder generated file (by adafinal). -- Instead, it will cause the Environment to block forever, since none of -- the dependent tasks are expected to terminate diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb index e67026dcb63..6f2528e2a86 100644 --- a/gcc/ada/sem_ch13.adb +++ b/gcc/ada/sem_ch13.adb @@ -5032,7 +5032,8 @@ package body Sem_Ch13 is ---------------------------- procedure Replace_Type_Reference (N : Node_Id) is - -- Use the Sloc of the usage name below, not the defining name + -- See comments in Add_Predicates.Replace_Type_Reference regarding + -- Sloc and Comes_From_Source. begin -- Invariant'Class, replace with T'Class (obj) @@ -5055,6 +5056,8 @@ package body Sem_Ch13 is Set_Entity (N, Object_Entity); Set_Etype (N, Typ); end if; + + Set_Comes_From_Source (N, True); end Replace_Type_Reference; -- Start of processing for Add_Invariants @@ -5442,6 +5445,11 @@ package body Sem_Ch13 is Set_Entity (N, Object_Entity); Set_Etype (N, Typ); + + -- We want to treat the node as if it comes from source, so that + -- ASIS will not ignore it + + Set_Comes_From_Source (N, True); end Replace_Type_Reference; -- Start of processing for Add_Predicates diff --git a/gcc/ada/sem_ch5.adb b/gcc/ada/sem_ch5.adb index f756dbcaf5d..b062be948a1 100644 --- a/gcc/ada/sem_ch5.adb +++ b/gcc/ada/sem_ch5.adb @@ -2626,6 +2626,56 @@ package body Sem_Ch5 is Push_Scope (Ent); Analyze_Iteration_Scheme (Iter); + -- Check for following case which merits a warning if the type E of is + -- a multi-dimensional array (and no explicit subscript ranges present). + + -- for J in E'Range + -- for K in E'Range + + if Present (Iter) + and then Present (Loop_Parameter_Specification (Iter)) + then + declare + LPS : constant Node_Id := Loop_Parameter_Specification (Iter); + DSD : constant Node_Id := + Original_Node (Discrete_Subtype_Definition (LPS)); + begin + if Nkind (DSD) = N_Attribute_Reference + and then Attribute_Name (DSD) = Name_Range + and then No (Expressions (DSD)) + then + declare + Typ : constant Entity_Id := Etype (Prefix (DSD)); + begin + if Is_Array_Type (Typ) + and then Number_Dimensions (Typ) > 1 + and then Nkind (Parent (N)) = N_Loop_Statement + and then Present (Iteration_Scheme (Parent (N))) + then + declare + OIter : constant Node_Id := + Iteration_Scheme (Parent (N)); + OLPS : constant Node_Id := + Loop_Parameter_Specification (OIter); + ODSD : constant Node_Id := + Original_Node (Discrete_Subtype_Definition (OLPS)); + begin + if Nkind (ODSD) = N_Attribute_Reference + and then Attribute_Name (ODSD) = Name_Range + and then No (Expressions (ODSD)) + and then Etype (Prefix (ODSD)) = Typ + then + Error_Msg_Sloc := Sloc (ODSD); + Error_Msg_N + ("inner range same as outer range#?", DSD); + end if; + end; + end if; + end; + end if; + end; + end if; + -- Analyze the statements of the body except in the case of an Ada 2012 -- iterator with the expander active. In this case the expander will do -- a rewrite of the loop into a while loop. We will then analyze the diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb index 72c5725f44e..defe37f3d4c 100644 --- a/gcc/ada/sem_res.adb +++ b/gcc/ada/sem_res.adb @@ -7155,12 +7155,13 @@ package body Sem_Res is Resolve (Then_Expr, Typ); Then_Typ := Etype (Then_Expr); - -- When the "then" expression is of a scalar type different from the - -- result type, then insert a conversion to ensure the generation of - -- a constraint check. + -- When the "then" expression is of a scalar subtype different from the + -- result subtype, then insert a conversion to ensure the generation of + -- a constraint check. The same is done for the else part below, again + -- comparing subtypes rather than base types. if Is_Scalar_Type (Then_Typ) - and then Base_Type (Then_Typ) /= Base_Type (Typ) + and then Then_Typ /= Typ then Rewrite (Then_Expr, Convert_To (Typ, Then_Expr)); Analyze_And_Resolve (Then_Expr, Typ); |