aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/sem_ch6.adb
AgeCommit message (Collapse)AuthorFilesLines
2024-08-29ada: Missing legality check when type completedSteve Baird1-0/+26
Refine previous fix to better handle tagged cases. gcc/ada/ * sem_ch6.adb (Check_Discriminant_Conformance): Immediately after calling Is_Immutably_Limited_Type, perform an additional test that one might reasonably imagine would instead have been part of Is_Immutably_Limited_Type. The new test is a call to a new function Has_Tagged_Limited_Partial_View whose implementation includes a call to Incomplete_Or_Partial_View, which cannot be easily be called from Is_Immutably_Limited_Type (because sem_aux, which is in the closure of the binder, cannot easily "with" sem_util). * sem_aux.adb (Is_Immutably_Limited): Include N_Derived_Type_Definition case when testing Limited_Present flag.
2024-08-29ada: Avoid creating continuation messages without an intended parentViljar Indus1-3/+9
The messages modified in this patch do not have a clear intended parent. This causes a lot of issues when grouping continuation messages together with their parent. This can be confusing as it is not obvious what was the parent message that caused this problem or in worst case scenarios the message not being printed alltogether. These modified messages do not seem to be related to any concrete error message and thus should be treated as independent messages. gcc/ada/ * sem_ch12.adb (Abandon_Instantiation): Remove continuation characters from the error message. * sem_ch13.adb (Check_False_Aspect_For_Derived_Type): Remove continuation characters from the error message. * sem_ch6.adb (Assert_False): Avoid creating a continuation message without a parent. If no primary message is created then the message is considered as primary. gcc/testsuite/ChangeLog: * gnat.dg/interface6.adb: Adjust test.
2024-08-23ada: First controlling parameter aspectJavier Miranda1-2/+12
gcc/ada/ * sem_ch6.adb (Check_Private_Overriding): Improve code detecting error on private function with controlling result. Fixes the regression of ACATS bde0003.
2024-08-23ada: Fix style in lines starting with assignment operatorPiotr Trojanek1-2/+2
Style cleanup; semantics is unaffected. Offending occurrences found with grep "^ *:=" and fixed manually. gcc/ada/ * checks.ads, cstand.adb, exp_aggr.adb, exp_ch4.adb, exp_ch5.adb, exp_dbug.adb, exp_util.adb, gnatlink.adb, lib-util.adb, libgnat/a-except.adb, libgnat/a-exexpr.adb, libgnat/a-ngcoar.adb, libgnat/s-rannum.adb, libgnat/s-trasym__dwarf.adb, osint.adb, rtsfind.adb, sem_case.adb, sem_ch12.adb, sem_ch13.adb, sem_ch3.adb, sem_ch6.adb, sem_eval.adb, sem_prag.adb, sem_util.adb: Fix style.
2024-08-23ada: First controlling parameter aspectJavier Miranda1-14/+69
This patch adds support for a new GNAT aspect/pragma that modifies the semantics of dispatching primitives. When a tagged type has this aspect/pragma, only subprograms that have the first parameter of this type will be considered dispatching primitives; this new pragma/aspect is inherited by all descendant types. gcc/ada/ * aspects.ads (Aspect_First_Controlling_Parameter): New aspect. Defined as implementation defined aspect that has a static boolean value and it is converted to pragma when the value is True. * einfo.ads (Has_First_Controlling_Parameter): New attribute. * exp_ch9.adb (Build_Corresponding_Record): Propagate the aspect to the corresponding record type. (Expand_N_Protected_Type_Declaration): Analyze the inherited aspect to add the pragma. (Expand_N_Task_Type_Declaration): ditto. * freeze.adb (Warn_If_Implicitly_Inherited_Aspects): New subprogram. (Has_First_Ctrl_Param_Aspect): New subprogram. (Freeze_Record_Type): Call Warn_If_Implicitly_Inherited_Aspects. (Freeze_Subprogram): Check illegal subprograms of tagged types and interface types that have this new aspect. * gen_il-fields.ads (Has_First_Controlling_Parameter): New entity field. * gen_il-gen-gen_entities.adb (Has_First_Controlling_Parameter): The new field is a semantic flag. * gen_il-internals.adb (Image): Add Has_First_Controlling_Parameter. * par-prag.adb (Prag): No action for Pragma_First_Controlling_Parameter since processing is handled entirely in Sem_Prag. * sem_ch12.adb (Validate_Private_Type_Instance): When the generic formal has this new aspect, check that the actual type also has this aspect. * sem_ch13.adb (Analyze_One_Aspect): Check that the aspect is applied to a tagged type or a concurrent type. * sem_ch3.adb (Analyze_Full_Type_Declaration): Derived tagged types inherit this new aspect, and also from their implemented interface types. (Process_Full_View): Propagate the aspect to the full view. * sem_ch6.adb (Is_A_Primitive): New subprogram; used to factor code and also clarify detection of primitives. * sem_ch9.adb (Check_Interfaces): Propagate this new aspect to the type implementing interface types. * sem_disp.adb (Check_Controlling_Formals): Handle tagged type that has the aspect and has subprograms overriding primitives of tagged types that lack this aspect. (Check_Dispatching_Operation): Warn on dispatching primitives disallowed by this new aspect. (Has_Predefined_Dispatching_Operation_Name): New subprogram. (Find_Dispatching_Type): Handle dispatching functions of tagged types that have the new aspect. (Find_Primitive_Covering_Interface): For primitives of tagged types that have the aspect and override a primitive of a parent type that does not have the aspect, we must temporarily unset attribute First_Controlling_ Parameter to properly check conformance. * sem_prag.ads (Aspect_Specifying_Pragma): Add new pragma. * sem_prag.adb (Pragma_First_Controlling_Parameter): Handle new pragma. * snames.ads-tmpl (Name_First_Controlling_Parameter): New name. * warnsw.ads (Warn_On_Non_Dispatching_Primitives): New warning. * warnsw.adb (Warn_On_Non_Dispatching_Primitives): New warning; not set by default when GNAT_Mode warnings are enabled, nor when all warnings are enabled (-gnatwa).
2024-08-08ada: Missing legality check when type completedSteve Baird1-0/+14
An access discriminant is allowed to have a default value only if the discriminated type is immutably limited. In the case of a discriminated limited private type declaration, this rule needs to be checked when the completion of the type is seen. gcc/ada/ * sem_ch6.adb (Check_Discriminant_Conformance): Perform check for illegal access discriminant default values when the completion of a limited private type is analyzed. * sem_aux.adb (Is_Immutably_Limited): If passed the not-yet-analyzed entity for the full view of a record type, test the Limited_Present flag (which is set by the parser).
2024-08-06ada: Fix propagation of SPARK_Mode for renaming-as-bodyYannick Moy1-0/+9
The value of SPARK_Mode associated with a renaming-as-body might not be the correct one, when the private part of the package containing the declaration has SPARK_Mode Off while the public part has SPARK_Mode On. This may lead to analysis of code by GNATprove that should not be analyzed. gcc/ada/ * freeze.adb (Build_Renamed_Body): Propagate SPARK_Pragma to body build from renaming, so that locally relevant value is taken into account. * sem_ch6.adb (Analyze_Expression_Function): Propagate SPARK_Pragma to body built from expression function, so that locally relevant value is taken into account.
2024-08-01ada: Define No_Return flag only for subprogramsEric Botcazou1-2/+2
...instead of defining it for all entities. gcc/ada/ * einfo.ads (No_Return): Change description and adjust accordingly. * gen_il-gen-gen_entities.adb (Entity_Kind): Remove No_Return. (Subprogram_Kind): Add No_Return. (Generic_Subprogram_Kind): Likewise. * sem_ch6.adb (Analyze_Return_Statement): Adjust No_Return test.
2024-08-01ada: Implement full relaxed finalization semantics for controlled objectsEric Botcazou1-0/+4
These semantics state that the compiler is permitted to enforce none of the guarantees specified by the RM 7.6.1(14/1) and following subclauses, and to instead just let the exception be propagated upward. The guarantees impose a significant overhead in terms of complexity and run-time performance compared to similar constructs in other languages, and the goal is to reduce it significantly, if not eliminate it totally: for example, untagged record types declared with the Finalizable aspect, the relaxed finalization semantics and inline Initialize/Adjust/Finalize primitives, and used with abort disabled: pragma Restrictions (No_Abort_Statements); pragma Restrictions (Max_Asynchronous_Select_Nesting => 0); pragma Restrictions (No_Asynchronous_Control); should behave like simple C++ classes. The implementation morally boils down to undoing the changes made a few months ago to the support of finalization for controlled objects, i.e. to getting rid of the added linked list and the associated indirection for controlled objects with relaxed finalization semantics. But, in order to keep a unified processing for both kinds of controlled objects and not to bring back the issues addressed by the aforementioned changes, the work is split between the front-end and the code generator: the front-end drops the linked list and the code generator is in charge of eliminating the indirection with the help of the optimizer. gcc/ada/ * doc/gnat_rm/gnat_language_extensions.rst (Generalized Finalization): Update status. * einfo.ads (Has_Relaxed_Finalization): Add more details. * exp_ch4.adb (Process_Transients_In_Expression): Invoke Make_Finalize_Call_For_Node instead of building the call. * exp_ch5.adb (Expand_N_Assignment_Statement): Do not set up an exception handler around the assignment for a controlled type with relaxed finalization semantics. Streamline the code implementing the protection against aborts and do not use an At_End handler for a controlled type with relaxed finalization semantics. * exp_ch7.ads (Make_Finalize_Call_For_Node): New function. * exp_ch7.adb (Finalize_Address_For_Node): New function renaming. (Set_Finalize_Address_For_Node): New procedure renaming. (Attach_Object_To_Master_Node): Also attach the Finalize_Address primitive to the Master_Node statically. (Build_Finalizer): Add Has_Strict_Ctrl_Objs local variable. Insert back the body of the finalizer at the end of the statement list in the non-package case and restore the associated support code to that effect. When all the controlled objects have the relaxed finalization semantics, do not create a Finalization_Master and finalize the objects directly instead. (Processing_Actions): Add Strict parameter and use it to set the Has_Strict_Ctrl_Objs variable. (Process_Declarations): Make main loop more robust and adjust calls to Processing_Actions. (Make_Finalize_Address_Body): Mark the primitive as inlined if the type has relaxed finalization semantics. (Make_Finalize_Call_For_Node): New function. * sem_ch6.adb (Check_Statement_Sequence): Skip subprogram bodies. * libgnat/s-finpri.ads (Finalize_Object): Add Finalize_Address parameter. (Master_Node): Remove superfluous qualification. * libgnat/s-finpri.adb (Attach_Object_To_Node): Likewise. (Finalize_Master): Adjust calls to Finalize_Object. (Finalize_Object): Add Finalize_Address parameter and assert that it is equal to the component of the node. Use the Object_Address component as guard. (Suppress_Object_Finalize_At_End): Clear Object_Address component. * gnat_rm.texi: Regenerate. * gnat_ugn.texi: Regenerate.
2024-08-01ada: Remove support for bodies in -gnatcegArnaud Charlet1-82/+0
The support for generating C for Ada code is moved to GNAT LLVM. Keep support for generating header files from Ada spec files which is the remaining usage of -gnatceg. gcc/ada/ * bindgen.adb, bindusg.adb, debug.adb, einfo.ads, exp_aggr.adb, exp_attr.adb, exp_ch11.adb, exp_ch3.adb, exp_ch4.adb, exp_ch6.adb, exp_ch7.adb, exp_ch8.adb, exp_dbug.adb, exp_dbug.ads, exp_intr.adb, exp_unst.adb, exp_util.adb, exp_util.ads, freeze.adb, gen_il-fields.ads, gen_il-gen-gen_entities.adb, gnat1drv.adb, inline.adb, opt.ads, osint-c.adb, osint-c.ads, sem_attr.adb, sem_ch12.adb, sem_ch3.adb, sem_ch4.adb, sem_ch6.adb, sem_elab.adb, sem_res.adb, sinfo.ads, snames.ads-tmpl, switch-b.adb, switch-c.adb: Major clean up to remove C code generation for bodies.
2024-06-27ada: Overridden operation field not correctly set for controlling result ↵Martin Clochard1-47/+35
wrappers Implicit wrapper overridings generated for functions with controlling result when deriving with null extension may have field Overridden_Operation incorrectly set, when making several such derivations in succession. This happens because overridings were assumed to come from source, and entities generated by Derive_Subprograms were also assumed to be derived from source subprograms. Overridden_Operation could be set to the entity generated by Derive_Subprograms for the same type, resulting in a cycle between Overriden_Operation and Alias fields, causing non-termination in GNATprove. gcc/ada/ * sem_ch6.adb (Check_Overriding_Indicator) Remove Comes_From_Source filter. (New_Overloaded_Entity) Move up special case of LSP_Subprogram, and remove Comes_From_Source filter.
2024-06-14ada: Add prototype for mutably tagged typesJustin Squirek1-2/+8
This patch implements mutably tagged types via the new Size'Class aspect. gcc/ada/ * doc/gnat_rm/gnat_language_extensions.rst: Add documentation for mutably tagged type feature. * aspects.ads: Add registration for 'Size'Class. * einfo.ads: Add documentation for new components Class_Wide_Equivalent_Type and Is_Mutably_Tagged_Type. * exp_aggr.adb (Gen_Assign): Assume associated mutably tagged type when class-wide equivalent type is encountered. (Contains_Mutably_Tagged_Type): New subprogram. (Convert_To_Positional): Assume associated mutably tagged type when class-wide equivalent type is encountered. (Is_Static_Element): Assume associated mutably tagged type when class-wide equivalent type is encountered. (Expand_Array_Aggregate): Assume associated mutably tagged type when class-wide equivalent type is encountered. (Expand_Record_Aggregate): Force mutably tagged records to be expanded into assignments. * exp_ch3.adb (Build_Array_Init_Proc): Assume associated mutably tagged type when class-wide equivalent type is encountered. (Simple_Initialization_OK): Disallow simple initialization for class-wide equivalent types. (Build_Init_Statements): Assume associated mutably tagged type when class-wide equivalent type is encountered. (Expand_Freeze_Array_Type): Ignore building of record init procs for mutably tagged types. (Expand_N_Full_Type_Declaration): Replace mutably tagged type declarations with their associated class-wide equivalent types. (Default_Initialize_Object): Add special handling for mutably tagged types. * exp_ch4.adb (Expand_N_Allocator): Add initialization for mutably tagged types. (Expand_Record_Equality): Generate mutably tagged unchecked conversions. * exp_ch5.adb (Expand_N_Assignment_Statement): Generate a special assignment case for class-wide equivalent types which does tag assignments and ignores certain checks. * exp_ch6.adb (Expand_Call_Helper): Propagate constrained extra formal actuals for mutably tagged types. * exp_ch7.adb (Make_Init_Call): Handle mutably tagged type initialization. * exp_util.adb (Make_CW_Equivalent_Type): Modify to handle mutably tagged objects which contain no initialization expression. (Make_Subtype_From_Expr): Modify call to Make_CW_Equivalent_Type. * exp_util.ads (Make_CW_Equivalent_Type): Move declaration from body to spec. * freeze.adb (Size_Known): No longer return false automatically when a class-wide type is encountered. (Freeze_Entity): Ignore error messages about size not being known for mutably tagged types. * gen_il-fields.ads: Register new fields Class_Wide_Equivalent_Type and Is_Mutably_Tagged_Type. * gen_il-gen-gen_entities.adb: Register new fields Class_Wide_Equivalent_Type and Is_Mutably_Tagged_Type for type entities. * mutably_tagged.adb, mutably_tagged.ads (Corresponding_Mutably_Tagged_Type): New subprogram. (Depends_On_Mutably_Tagged_Ext_Comp): New subprogram. (Get_Corresponding_Mutably_Tagged_Type_If_Present): New subprogram. (Get_Corresponding_Tagged_Type_If_Present): New subprogram. (Is_Mutably_Tagged_Conversion): New subprogram. (Is_Mutably_Tagged_CW_Equivalent_Type): New subprogram. (Make_Mutably_Tagged_Conversion): New subprogram. (Make_CW_Size_Compile_Check): New subprogram. (Make_Mutably_Tagged_CW_Check): New subprogram. * sem_aggr.adb (Resolve_Array_Aggregate): Skip tag checks for class-wide equivalent types. (Resolve_Aggr_Expr): Assume associated mutably tagged type when class-wide equivalent type is encountered. * sem_attr.adb (Analyze_Attribute): Allow 'Tag on mutably tagged types. (Resolve_Attribute): Detect errors for dependence of mutably tagged extension type component. * sem_ch12.adb (Instantiate_Object): Detect errors for dependence of mutably tagged extension type component. * sem_ch13.adb (Analyze_One_Aspect): Propagate 'Size'Class to class-wide type. (Analyze_Attribute_Definition_Clause): Add handling of 'Size'Class by generating class-wide equivalent types and checking for illegal uses. * sem_ch2.adb (Analyze_Identifier): Generate unchecked conversion for class-wide equivalent types. * sem_ch3.adb (Analyze_Component_Declaration): Avoid unconstrained errors on mutably tagged types. (Analyze_Object_Declaration): Rewrite declarations of mutably tagged types to use class-wide equivalent types. (Array_Type_Declaration): Modify arrays of mutably tagged types to use their corresponding class-wide equivalent types. (Derived_Type_Declaration): Add various checks for mutably tagged derived types. * sem_ch4.adb (Analyze_Allocator): Replace reference to mutably tagged type with cooresponding tagged type. (Process_Indexed_Component): Generate unchecked conversion for class-wide equivalent type. (Analyze_One_Call): Generate unchecked conversion for class-wide equivalent types. (Analyze_Selected_Component): Assume reference to class-wide equivalent type is associated mutably tagged type. (Analyze_Type_Conversion): Generate unchecked conversion for class-wide equivalent type. * sem_ch5.adb (Analyze_Assignment): Assume associated mutably tagged type when class-wide equivalent type is encountered. (Analyze_Iterator_Specification): Detect errors for dependence of mutably tagged extension type component. * sem_ch6.adb (Create_Extra_Formals): Add code to generate extra formal for mutably tagged types to signal if they are constrained. * sem_ch8.adb (Analyze_Object_Renaming): Detect error on renaming of mutably tagged extension type component. (Analyze_Renaming_Primitive_Operation): Detect error on renaming of mutably tagged extension type component. * sem_res.adb (Resolve_Actuals): Allow class-wide arguments on class-wide equivalent types. (Valid_Conversion): Assume associated mutably tagged type when class-wide equivalent type is encountered. * sem_util.adb (Is_Fully_Initialized_Type): Flag mutably tagged types as fully initialized. (Needs_Simple_Initalization): Flag class-wide equivalent types as needing initialization. * gnat_rm.texi: Regenerate. * gcc-interface/Make-lang.in: Add entry for mutably_tagged.o.
2024-06-13ada: List subprogram body entities in scopesYannick Moy1-0/+9
Add entities of kind E_Subprogram_Body to the list of entities associated to a given scope. This ensures that representation information is correctly output for object and type declarations inside these subprogram bodies. This is useful for outputing that information fron the compiler with the switch -gnatR, as well as for getting precise representation information inside GNATprove. Remove ad-hoc code inside repinfo.adb that retrieved this information in only some cases. gcc/ada/ * exp_ch5.adb (Expand_Iterator_Loop_Over_Container): Skip entities of kind E_Subprogram_Body. * repinfo.adb (List_Entities): Remove special case for subprogram bodies. * sem_ch6.adb (Analyze_Subprogram_Body_Helper): List subprogram body entities in the enclosing scope.
2024-06-10ada: Storage_Error in indirect call to function returning limited typeJavier Miranda1-5/+7
At runtime the code generated by the compiler reports the exception Storage_Error in an indirect call through an access-to-subprogram variable that references a function returning a limited tagged type object. gcc/ada/ * sem_ch6.adb (Might_Need_BIP_Task_Actuals): Add support for access-to-subprogram parameter types. * exp_ch6.adb (Add_Task_Actuals_To_Build_In_Place_Call): Add dummy BIP parameters to access-to-subprogram types that may reference a function that has BIP parameters.
2024-05-16ada: Avoid checking parameters of protected proceduresViljar Indus1-2/+5
The compiler triggers warnings on generated protected procedures if the procedure does not have an explicit spec. Instead check if the body was created for a protected procedure if the spec is not present. gcc/ada/ * sem_ch6.adb (Analyze_Subprogram_Body_Helper): If the spec is not present for a subprogram body then check if the body definiton was created for a protected procedure.
2024-05-16ada: Fix bogus error on function returning noncontrolling result in private partEric Botcazou1-14/+9
This occurs in the additional case of RM 3.9.3(10) in Ada 2012, that is to say the access controlling result, because the implementation does not use the same (correct) conditions as in the original case. This factors out these conditions and uses them in both cases, as well as adjusts the wording of the message in the first case. gcc/ada/ * sem_ch6.adb (Check_Private_Overriding): Implement the second part of RM 3.9.3(10) consistently in both cases.
2024-05-14ada: Update of SPARK RM legality rules on ghost codeYannick Moy1-7/+7
Update checking of ghost code after a small change in SPARK RM rules 6.9(15) and 6.9(20), so that the Ghost assertion policy that matters when checking the validity of a reference to a ghost entity in an assertion expression is the Ghost assertion policy at the point of declaration of the entity. Also fix references to SPARK RM rules in comments, which were off by two in many cases after the insertion of rules 13 and 14 regarding generic instantiations. gcc/ada/ * contracts.adb: Fix references to SPARK RM rules. * freeze.adb: Same. * ghost.adb: Fix references to SPARK RM rules. (Check_Ghost_Context): Update checking of references to ghost entities in assertion expressions. * sem_ch6.adb: Fix references to SPARK RM rules. * sem_prag.adb: Same.
2024-05-13ada: Deconstruct flag Split_PPC since splitting now is done in expansionPiotr Trojanek1-3/+1
Remove flag Split_PPC and all its uses. gcc/ada/ * contracts.adb (Append_Enabled_Item): Remove use of Split_PPC; simplify. * gen_il-fields.ads (Opt_Field_Enum): Remove flag definition. * gen_il-gen-gen_nodes.adb (N_Aspect_Specification, N_Pragma): Remove Split_PPC flags. * gen_il-internals.adb (Image): Remove use of Split_PPC. * par_sco.adb (Traverse_Aspects): Likewise. * sem_ch13.adb (Make_Aitem_Pragma): Likewise. * sem_ch6.adb (List_Inherited_Pre_Post_Aspects): Likewise. * sem_prag.adb (Analyze_Pre_Post_Condition, Analyze_Pragma, Find_Related_Declaration_Or_Body): Likewise. * sem_util.adb (Applied_On_Conjunct): Likewise. * sinfo.ads: Remove flag documentation. * treepr.adb (Image): Remove use of Split_PPC.
2024-05-13ada: Replace finalization masters with finalization collectionsEric Botcazou1-6/+6
This change replaces finalization masters with finalization collections in most cases, that is to say, when they implement a list of objects created by allocators of a given access type; indeed the moniker is overloaded in the front-end, e.g. Sem_Util.Is_Master determines if a node "constitutes a finalization master" but is not affected by the change. This is mostly a renaming at this stage, toward something more in keeping with the terminology used in the RM 7.6.1 clause and no functional changes: although it gets rid of the rest of the System.Finalization_Masters unit, the functionalities are reimplemented in the System.Finalization_Primitives unit in terms of collections with only minor adjustments. gcc/ada/ * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Remove s-finmas$(objext). * einfo.ads (Anonymous_Masters): Rename into Anonymous_Collections. (Finalization_Master): Rename into Finalization_Collection. * gen_il-fields.ads (Opt_Field_Enum): Replace Anonymous_Masters with Anonymous_Collections; and Finalization_Master with Finalization_Collection. * gen_il-gen-gen_entities.adb (Access_Kind): Likewise. (E_Function): Likewise. (E_Procedure): Likewise. (E_Package): Likewise. (E_Subprogram_Body): Likewise. * exp_ch3.adb (Build_Heap_Or_Pool_Allocator): Adjust to renamings. (Freeze_Type): Likewise. (Stream_Operation_OK): Remove obsolete test. * exp_ch4.adb (Expand_Allocator_Expression): Adjust to renamings. (Expand_N_Allocator): Likewise. * exp_ch6.ads (BIP_Formal_Kind): Replace BIP_Finalization_Master with BIP_Collection. (Needs_BIP_Finalization_Master): Rename into... (Needs_BIP_Collection): ...this. * exp_ch6.adb (BIP_Finalization_Master_Suffix): Delete. (BIP_Collection_Suffix): New constant string. (Add_Finalization_Master_Actual_To_Build_In_Place_Call): Rename to (Add_Collection_Actual_To_Build_In_Place_Call): ...this and adjust. (BIP_Formal_Suffix): Replace BIP_Finalization_Master alternative with BIP_Collection alternative. (BIP_Suffix_Kind): Replace test on BIP_Finalization_Master_Suffix with test on BIP_Collection_Suffix. (Is_Build_In_Place_Entity): Likewise. (Make_Build_In_Place_Call_In_Allocator): Call Needs_BIP_Collection and Add_Collection_Actual_To_Build_In_Place_Call. (Make_Build_In_Place_Call_In_Anonymous_Context): Likewise. (Make_Build_In_Place_Call_In_Assignment): Likewise. (Make_Build_In_Place_Call_In_Object_Declaration): Likewise. (Needs_BIP_Finalization_Master): Rename into... (Needs_BIP_Collection): ...this. (Needs_BIP_Alloc_Form): Call Needs_BIP_Collection. * exp_ch7.ads (Build_Anonymous_Master): Rename into... (Build_Anonymous_Collection): ...this. (Build_Finalization_Master): Rename into... (Build_Finalization_Collection): ...this. * exp_ch7.adb (Allows_Finalization_Master): Rename into... (Allows_Finalization_Collection): ...this. (Build_BIP_Cleanup_Stmts): Adjust to renamings. (Build_Anonymous_Master): Rename into... (Build_Anonymous_Collection): ...this. Adjust to renamings. (Build_Finalization_Master): Rename into... (Build_Finalization_Collection): ...this. Adjust to renamings. (Build_Finalizer): Adjust comment to renamings. * exp_ch13.adb (Expand_N_Free_Statement): Adjust to renamings. * exp_util.adb (Build_Allocate_Deallocate_Proc): Likewise. (Requires_Cleanup_Actions): Adjust comment to renamings. * freeze.adb (Freeze_All): Likewise. * rtsfind.ads (RTU_Id): Remove System_Finalization_Masters. (RE_Id): Remove RE_Finalization_Master & RE_Finalization_Master_Ptr add RE_Finalization_Collection & RE_Finalization_Collection_Ptr. Adjust RE_Add_Offset_To_Address and RE_Finalization_Scope_Master. (RE_Unit_Table): Remove entries for RE_Finalization_Master & RE_Finalization_Master_Ptr, add ones for RE_Finalization_Collection & RE_Finalization_Collection_Ptr. Also adjust those of RE_Add_Offset_To_Address and RE_Finalization_Scope_Master. * sem_ch3.adb (Access_Type_Declaration): Adjust to renamings. * sem_ch6.adb (Create_Extra_Formals): Likewise. * sem_util.adb (Designated_Subtype_Mark): Likewise. * libgnat/s-finpri.ads: Add clauses for Ada.Finalization and System.Storage_Elements. (Finalization_Collection): New limited controlled type. (Finalization_Collection_Ptr): Likewise. (Initialize): New overriding procedure. (Finalize): Likewise. (Finalization_Started): Likewise. (Collection_Node): New type. (Collection_Node_Ptr): Likewise. (Attach_Node_To_Collection): New procedure. (Detach_Node_From_Collection): Likewise. (Header_Size): New function. (Add_Offset_To_Address): Likewise. * libgnat/s-finpri.adb (Add_Offset_To_Address): New function. (Attach_Node_To_Collection): New procedure. (Detach_Node_From_Collection): Likewise. (Finalization_Started): Likewise. (Finalize): New overriding procedure. (Header_Size): New function. (Initialize): New overriding procedure. * libgnat/s-spsufi.ads (Finalize_And_Deallocate): Adjust comment. * libgnat/s-spsufi.adb: Remove clause for Finalization_Masters and add clause for Finalization_Primitives. (Finalize_And_Deallocate): Finalize the Collection component. * libgnat/s-stposu.ads: Remove clause for Finalization_Masters and add clause for Finalization_Primitives. (Root_Subpool): Replace Master component with Collection. (Allocate_Any_Controlled): Replace Context_Master parameter with Context_Collection parameter. * libgnat/s-stposu.adb: Remove clauses for Finalization_Masters and add clauses for Finalization_Primitives. (Address_To_FM_Node_Ptr): Delete. (To_Collection_Node_Ptr): New instance of Ada.Unchecked_Conversion. (Adjust_Controlled_Dereference): Adjust comment to renamings. (Allocate_Any_Controlled): Replace Context_Master parameter with Context_Collection parameter. Adjust to renamings. (Deallocate_Any_Controlled): Adjust to renamings. (Print_Subpool): Likewise. * libgnat/s-finmas.ads: Delete. * libgnat/s-finmas.adb: Likewise.
2024-01-22Update copyright years.Marc Poulhiès1-1/+1
2024-01-09ada: Cannot requeue to a procedure implemented by an entryJavier Miranda1-0/+1
Add missing support for RM 9.5.4(5.6/4): the target of a requeue statement may be a procedure when its name denotes a renaming of an entry. gcc/ada/ * sem_ch6.adb (Analyze_Subprogram_Specification): Do not replace the type of the formals with its corresponding record in init-procs. * sem_ch9.adb (Analyze_Requeue): Add missing support to requeue to a procedure that denotes a renaming of an entry.
2024-01-09ada: More aggressive inlining of subprogram calls in GNATprove modePiotr Trojanek1-1/+4
Previously if a subprogram call could not be inlined in GNATprove mode, then all subsequent calls to the same subprogram were not inlined either (because a failed attempt to inline clears flag Is_Inlined_Always and we tested this flag when attempting to inline subsequent calls). Now a failure in inlining of a particular call does not prevent inlining of subsequent calls to the same subprogram, except when inlining failed because the subprogram was detected to be recursive (which clears the Is_Inlined flag that we now examine). This change allows more checks to be proved and reduces interactions between inlining and SPARK legality checks. gcc/ada/ * sem_ch6.adb (Analyze_Subprogram_Specification): Set Is_Inlined flag by default in GNATprove mode. * sem_res.adb (Resolve_Call): Only look at flag which is cleared when inlined subprogram is detected to be recursive.
2023-11-30ada: Remove SPARK legality checksYannick Moy1-2/+2
SPARK legality checks apply only to code with SPARK_Mode On, and are performed again in GNATprove for detecting SPARK-compatible declarations in code with SPARK_Mode Auto. Remove this duplication, to only perform SPARK legality checking in GNATprove. After this patch, only a few special SPARK legality checks are performed in the frontend, which could be moved to GNATprove later. gcc/ada/ * contracts.adb (Analyze_Entry_Or_Subprogram_Body_Contract): Remove checking on volatility. Remove handling of SPARK_Mode, not needed anymore. (Analyze_Entry_Or_Subprogram_Contract): Remove checking on volatility. (Check_Type_Or_Object_External_Properties): Same. (Analyze_Object_Contract): Same. * freeze.adb (Freeze_Record_Type): Same. Also remove checking on synchronized types and ghost types. * sem_ch12.adb (Instantiate_Object): Remove checking on volatility. (Instantiate_Type): Same. * sem_ch3.adb (Access_Type_Declaration): Same. (Derived_Type_Declaration): Remove checking related to untagged partial view. (Process_Discriminants): Remove checking on volatility. * sem_ch5.adb (Analyze_Loop_Parameter_Specification): Same. * sem_ch6.adb (Analyze_Procedure_Call): Fix use of SPARK_Mode where GNATprove_Mode was intended. * sem_disp.adb (Inherited_Subprograms): Protect against Empty node. * sem_prag.adb (Analyze_Global_In_Decl_Part): Remove checking on volatility. (Analyze_Pragma): Same. * sem_res.adb (Flag_Effectively_Volatile_Objects): Remove. (Resolve_Actuals): Remove checking on volatility. (Resolve_Entity_Name): Same. * sem_util.adb (Check_Nonvolatile_Function_Profile): Remove. (Check_Volatility_Compatibility): Remove. * sem_util.ads: Same.
2023-11-30ada: Fix spelling of functions with(out) "side effects"Yannick Moy1-2/+2
Correct spelling does not include an hyphen. Fix comments and one error message. Also fix other mispellings of "side-effect" or "side effect" depending on the case (adjective should have hyphen), and "side-effect-free" with double hyphen as an adjective. gcc/ada/ * checks.adb, exp_aggr.adb, exp_ch4.ads, exp_ch5.adb, exp_util.adb, exp_util.ads, inline.adb, sem_ch13.adb, sem_ch6.adb, sem_ch8.adb, sem_prag.adb, sem_util.ads: Fix comments and typos.
2023-11-07ada: Rename Is_Limited_View to reflect actual queryYannick Moy1-3/+3
Function Sem_Aux.Is_Limited_View returns whether the type is "inherently limited" in a slightly different way from the "immutably limited" definition in Ada 2012. Rename for clarity. gcc/ada/ * exp_aggr.adb: Apply the renaming. * exp_ch3.adb: Same. * exp_ch4.adb: Same. * exp_ch6.adb: Same. * exp_ch7.adb: Same. * exp_util.adb: Same. * freeze.adb: Same. * sem_aggr.adb: Same. * sem_attr.adb: Same. * sem_aux.adb: Alphabetize Is_Limited_Type. Rename. * sem_aux.ads: Same. * sem_ch3.adb: Apply the renaming. * sem_ch6.adb: Same. * sem_ch8.adb: Same. * sem_prag.adb: Same. * sem_res.adb: Same. * sem_util.adb: Same.
2023-11-07ada: Implement Aspects as fields under nodesViljar Indus1-26/+10
In the previous implementation Aspect Specifications were stored in a separate table and not directly under each node. This implementation included a lot of extra code that needed to be maintained manually. The new implementation stores Aspect_Specfications as a syntactic field under each node. This removes the extra code that was needed to store, traverse and clone aspects for nodes. gcc/ada/ * aspects.adb (Exchange_Aspects): Removed. This method was typically called after a Rewrite method. Now since the Rewrite switches the aspects between the new and the old node it is no longer needed. (Has_Aspects): Converted to a utility method that performs the same before as the previous Has_Aspects field did. Meaning it shows whether a node actually has aspects or not. (Copy_Aspects): New utility method that performs a deep copy of the From nodes aspects. (Aspect_Specfications): Removed. No longer needed. Replaced by the primitive operation for the Aspect_Specification fields. (Set_Aspect_Specifications): Likewise. (Aspect_Specifications_Hash_Table): Remove the table and all the utility methods for storing the old aspects. * aspects.ads: Likewise. * atree.adb (Copy_Separate_Tree): Remove custom code for aspects. (New_Copy): Likewise. (Replace): Likewise. (Rewrite): Likewise. * exp_ch3.adb (Expand_N_Object_Declaration): Keep the aspects from the old node. * exp_ch6.adb (Validate_Subprogram_Calls): Previously aspects were ignored because they were not on the tree. Explicitly ignore them here when traversing the tree. * exp_unst.adb (Build_Tables): Likewise * gen_il-fields.ads: Remove Has_Aspects and add Aspect_Specifications fields. * gen_il-gen-gen_nodes.adb: Add Aspect_Specification fields for all nodes that can have aspects. Additionally add Expression_Copy for Aspect_Speficiations to avoid reusing the Associated_Node for generic instantiation and aspect analysis. * ghost.adb (Remove_Ignored_Ghost_Node): Remove call to Remove_Aspects. The rewritten node is a Null_Statement that cannot have aspects and there is not anything to gain from removing them from the Orignal_Node of N since it technically is not part of the active tree. * inline.adb (Process_Formals_In_Aspects): Simplify code for node traversal. * par-ch13.adb: Avoid setting the parent explicitly for the Aspect_Specifications list. This is done explicitly in the setter. * par-ch6.adb: Likewise. * par_sco.adb (Traverse_Aspects): Handle early return. * sem_ch10.adb: Simplify code for Analyze_Aspect_Specifications. * sem_ch11.adb: Likewise. * sem_ch12.adb (Analyze_Formal_Derived_Interface_Type): Keep the aspects from the orignal node after rewrite. (Analyze_Formal_Derived_Type): Likewise. (Analyze_Formal_Interface_Type): Likewise. (Analyze_Formal_Object_Declaration): Simplify code for Analyze_Aspect_Specifications. (Analyze_Formal_Package_Declaration): Likewise. (Analyze_Formal_Subprogram_Declaration): Likewise. (Analyze_Formal_Type_Declaration): Likewise. (Analyze_Generic_Package_Declaration): Remove Exchange_Aspects. The new node already has the correct aspects after the rewrite. Also simplify code for Analyze_Aspect_Specifications. (Analyze_Generic_Subprogram_Declaration): Likewise. (Analyze_Package_Instantiation): Simplify code for Analyze_Aspect_Specifications. (Build_Instance_Compilation_Unit_Nodes): Remove explicit copy of aspects that is no longer needed. (Save_References): Update the traversal code to handle Aspect_Specifications in the tree. (Copy_Generic_Node): Remove explicit copy for aspects. New_Copy took care of that already. * sem_ch13.adb (Analyze_Aspect_Specifications): Add early return to simplify code for its calls. Avoid reusing the Entity(Associated_Node) field for storing the original expression. Instead use the new Expression_Copy field since Entity(Associated_Node) is also used in generic instantiation. (Analyze_Aspects_On_Subprogram_Body_Or_Stub): Simlify call to Analyze_Aspect_Specifications. (Check_Aspect_At_End_Of_Declarations): Use Expression_Copy instead of Entity. (Check_Aspect_At_Freeze_Point): Likewise. * sem_ch3.adb: Simplify calls to Analyze_Aspect_Specifications. * sem_ch6.adb (Analyze_Abstract_Subprogram_Declaration): Simplify call to Analyze_Aspect_Specifications. (Analyze_Expression_Function): Keep the aspects from the original node after a rewrite. (Analyze_Generic_Subprogram_Body): Remove Exchange aspects that is no longer needed. Simplify call to Analyze_Aspect_Specifications. (Analyze_Null_Procedure): Keep the aspects from the original node after a rewrite. (Analyze_Subprogram_Body_Helper): Simplify calls to Analyze_Aspect_Specifications. (Analyze_Subprogram_Declaration): Likewise. * sem_ch7.adb (Analyze_Package_Body_Helper): Remove Exchange aspects that is no longer needed. Simplify call to Analyze_Aspect_Specifications. (Analyze_Package_Declaration): Simplify call to Analyze_Aspect_Specifications. (Analyze_Private_Type_Declaration): Likewise. * sem_ch8.adb: Simplify calls to Analyze_Aspect_Specifications. * sem_ch9.adb (Analyze_Entry_Body): Simplify call to Analyze_Aspects_On_Subprogram_Body_Or_Stub. (Analyze_Entry_Declaration): Simplify call to Analyze_Aspect_Specifications. (Analyze_Protected_Body): Likewise. (Analyze_Protected_Type_Declaration): Likewise. (Analyze_Single_Protected_Declaration): Keep the aspects from the original node after a rewrite. Simplify call to Analyze_Aspect_Specifications. (Analyze_Single_Task_Declaration): Likewise. (Analyze_Task_Body): Simplify call to Analyze_Aspect_Specifications. (Analyze_Task_Type_Declaration): Simplify calls to Analyze_Aspect_Specifications. * sem_dim.adb: Remove explicitly setting the parents for the Aspect_Specification list. * sem_disp.adb: Remove the with that is no longer required since Aspect_Specifications is a node operation now. * sem_util.adb (Copy_Node_With_Replacement): Remove explicit code for aspects. * treepr.adb (Print_Field): Remove the version that was used for printing aspects. (Print_Node): Remove aspect specific code.
2023-11-07ada: New Local_Restrictions and User_Aspect aspects.Steve Baird1-0/+10
A GNAT-defined aspect, Local_Restrictions, is defined. This provides a way of enforcing a given restriction for an individual subprogram (and its call-closure) without requiring that the entire program satisfy the restriction. A GNAT-defined aspect, User_Aspect, is defined. This (along with the new User_Aspect_Definition configuration pragma) provides a way of naming a set of aspect specifications which can then be applied to multiple declarations without textual repetition of the set. gcc/ada/ * local_restrict.ads: A new package. Declares Local_Restriction enumeration type and provides operations to check for local restriction violations. * local_restrict.adb: Corresponding package body. Replace "not Present (X)" calls with "No (X)" calls. * aspects.ads: Add a new enumeration elements, Aspect_Local_Restrictions and Aspect_User_Aspect, to the Aspect_Id enumeration type. Update Aspect_Id-indexed aggregates. Add nested package User_Aspect_Support to manage two pieces of state. One is a map from identifiers to User_Aspect_Definition pragmas (updated when such a pragma is encountered). The other is an access-to-subprogram variable that is introduced in order to keep the bulk of semantics out of the closure of package Aspects while allowing a call from aspects.adb to the sem_ch13 procedure that analyzes a User_Aspect aspect specification. * aspects.adb (Find_Aspect): Cope with a case of a block statement with an empty parent. It is not clear whether this is papering over a compiler bug. Add indirect call through the aforementioned access-to-subprogram variable when Find_Aspect enounters an unanalyzed User_Aspect aspect specification. If Find_Aspect is called looking for aspect Foo, then a User_Aspect specification might generate (during analysis) a Foo aspect specification. So the Find_Aspect call needs to trigger that analysis if it has not already taken place. Provide a body for package User_Aspect_Support. Replace "not Present (X)" call with "No (X)" call. * freeze.adb (Freeze_Subprogram): Check local restriction compatibility when a dispatching operation is overridden. * par-prag.adb: Add support for parsing a User_Aspect_Definition pragma. * restrict.ads: We'd like to have the body of package Restrict include a call to a procedure declared in package Local_Restrict. Doing that in the obvious way pulls most of semantics into the closure of package Restrict, and that turns out to cause problems. So we introduce a level of indirection and instead call through an access-to-subprogram value. In this unit, we declare the access-to-subprogram type and object. * restrict.adb (Check Restriction): When a construct is encountered that could violate a global restriction (depending on whether the given restriction is in effect), Check_Restriction is called. At this point, we also check for a violation of any corresponding local restriction that is in effect. For reasons described above, this check is performed via an indirect call. * sem_ch13.ads (Parse_Aspect_Local_Restrictions): A new function, similar to the existing Parse_Aspect_Xxx subprograms. * sem_ch13.adb: Perform semantic analysis of Local_Restrictions and User_Aspect aspect specifications. Declare and call new Validate_Aspect_Local_Restrictions and Analyze_User_Aspect_Aspect_Specification procedures (a reference to the latter is registered during package elaboration). In Analyze_Aspect_Specifications, do not set the Analyzed flag of a User_Aspect aspect specification. Replace "not Present (X)" call with "No (X)" call. Replace 'Image with 'Img in a case where the prefix of the attribute reference is an object; this is done to accomodate older compilers. * sem_ch6.adb (Check_Subtype_Conformant): Include in subtype conformance check a check for overriding-related compatibility of local restrictions. * sem_ch8.adb (Analyze_Subprogram_Renaming): In the case of an instance of a generic that takes a formal subprogram, check that formal and actual are compatible with respect to local restrictions. * sem_prag.adb: Add support for User_Aspect_Definition pragma. * sem_res.adb (Resolve_Call): Check caller/callee compatibility with respect to local restrictions. * snames.ads-tmpl: Add Name_Local_Restrictions, Name_User_Aspect, and Name_User_Aspect_Definition constants. * doc/gnat_rm/implementation_defined_aspects.rst: Document new aspects. * doc/gnat_rm/implementation_defined_pragmas.rst: Document new pragma. * doc/gnat_ugn/the_gnat_compilation_model.rst: Add User_Aspect_Definition to list of GNAT pragmas. * gcc-interface/Make-lang.in: Add local_restrict.o. * gnat-style.texi: Regenerate. * gnat_rm.texi: Regenerate. * gnat_ugn.texi: Regenerate.
2023-10-19ada: Support new SPARK aspect Side_EffectsYannick Moy1-28/+75
SPARK RM 6.1.11 introduces a new aspect Side_Effects to denote those functions which may have output parameters, write global variables, raise exceptions and not terminate. This adds support for this aspect and the corresponding pragma in the frontend. Handling of this aspect in the frontend is very similar to the handling of aspect Extensions_Visible: both are Boolean aspects whose expression should be static, they can be specified on the same entities, with the same rule of inheritance from overridden to overriding primitives for tagged types. There is no impact on code generation. gcc/ada/ * aspects.ads: Add aspect Side_Effects. * contracts.adb (Add_Pre_Post_Condition) (Inherit_Subprogram_Contract): Add support for new contract. * contracts.ads: Update comments. * einfo-utils.adb (Get_Pragma): Add support. * einfo-utils.ads (Prag): Update comment. * errout.ads: Add explain codes. * par-prag.adb (Prag): Add support. * sem_ch13.adb (Analyze_Aspect_Specifications) (Check_Aspect_At_Freeze_Point): Add support. * sem_ch6.adb (Analyze_Subprogram_Body_Helper) (Analyze_Subprogram_Declaration): Call new analysis procedure to check SPARK legality rules. (Analyze_SPARK_Subprogram_Specification): New procedure to check SPARK legality rules. Use an explain code for the error. (Analyze_Subprogram_Specification): Move checks to new subprogram. This code was effectively dead, as the kind for parameters was set to E_Void at this point to detect early references. * sem_ch6.ads (Analyze_Subprogram_Specification): Add new procedure. * sem_prag.adb (Analyze_Depends_In_Decl_Part) (Analyze_Global_In_Decl_Part): Adapt legality check to apply only to functions without side-effects. (Analyze_If_Present): Extract functionality in new procedure Analyze_If_Present_Internal. (Analyze_If_Present_Internal): New procedure to analyze given pragma kind. (Analyze_Pragmas_If_Present): New procedure to analyze given pragma kind associated with a declaration. (Analyze_Pragma): Adapt support for Always_Terminates and Exceptional_Cases. Add support for Side_Effects. Make sure to call Analyze_If_Present to ensure pragma Side_Effects is analyzed prior to analyzing pragmas Global and Depends. Use explain codes for the errors. * sem_prag.ads (Analyze_Pragmas_If_Present): Add new procedure. * sem_util.adb (Is_Function_With_Side_Effects): New query function to determine if a function is a function with side-effects. * sem_util.ads (Is_Function_With_Side_Effects): Same. * snames.ads-tmpl: Declare new names for pragma and aspect. * doc/gnat_rm/implementation_defined_aspects.rst: Document new aspect. * doc/gnat_rm/implementation_defined_pragmas.rst: Document new pragma. * gnat_rm.texi: Regenerate.
2023-09-15ada: Crash on creation of extra formals on type extensionJavier Miranda1-5/+22
Revert previous patch and fix the pending issue. gcc/ada/ * accessibility.ads (Needs_Result_Accessibility_Extra_Formal): Removed. * accessibility.adb (Needs_Result_Accessibility_Level_Param): Removed. (Needs_Result_Accessibility_Extra_Formal): Removed. (Needs_Result_Accessibility_Level): Revert previous patch. * sem_ch6.adb (Parent_Subprogram): Handle function overriding an enumeration literal. (Create_Extra_Formals): Ensure that the parent subprogram has all its extra formals.
2023-09-14ada: Assertion failure adding extra formals to late overriding subp.Javier Miranda1-1/+2
gcc/ada/ * sem_ch6.adb (Parent_Subprogram): Complete assertion.
2023-09-05ada: Crash on creation of extra formals on type extensionJavier Miranda1-4/+4
The compiler blows up processing an overriding dispatching function of a derived tagged type that returns a private tagged type that has an access type discriminant. gcc/ada/ * accessibility.ads (Needs_Result_Accessibility_Extra_Formal): New subprogram. * accessibility.adb (Needs_Result_Accessibility_Level_Param): New subprogram. (Needs_Result_Accessibility_Extra_Formal): New subprogram, temporarily keep the previous behavior of the frontend. * sem_ch6.adb (Create_Extra_Formals): Replace occurrences of function Needs_Result_Accessibility_Level_Param by calls to function Needs_Result_Accessibility_Extra_Formal. (Extra_Formals_OK): Ditto.
2023-07-28ada: Fix unsupported dispatching constructor callJavier Miranda1-77/+108
Add dummy build-in-place parameters when a BIP function does not require the BIP parameters but it is a dispatching operation that inherited them. gcc/ada/ * einfo-utils.adb (Underlying_Type): Protect recursion call against non-available attribute Etype. * einfo.ads (Protected_Subprogram): Fix typo in documentation. * exp_ch3.adb (BIP_Function_Call_Id): New subprogram. (Expand_N_Object_Declaration): Improve code that evaluates if the object is initialized with a BIP function call. * exp_ch6.adb (Is_True_Build_In_Place_Function_Call): New subprogram. (Add_Task_Actuals_To_Build_In_Place_Call): Add dummy actuals if the function does not require the BIP task actuals but it is a dispatching operation that inherited them. (Build_In_Place_Formal): Improve code to avoid never-ending loop if the BIP formal is not found. (Add_Dummy_Build_In_Place_Actuals): New subprogram. (Expand_Call_Helper): Add calls to Add_Dummy_Build_In_Place_Actuals. (Expand_N_Extended_Return_Statement): Adjust assertion. (Expand_Simple_Function_Return): Adjust assertion. (Make_Build_In_Place_Call_In_Allocator): No action needed if the called function inherited the BIP extra formals but it is not a true BIP function. (Make_Build_In_Place_Call_In_Assignment): Ditto. * exp_intr.adb (Expand_Dispatching_Constructor_Call): Remove code reporting unsupported case (since this patch adds support for it). * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Adding assertion to ensure matching of BIP formals when setting the Protected_Formal field of a protected subprogram to reference the corresponding extra formal of the subprogram that implements it. (Might_Need_BIP_Task_Actuals): New subprogram. (Create_Extra_Formals): Improve code adding inherited extra formals.
2023-07-28ada: Leave detection of missing return in functions to GNATprovePiotr Trojanek1-9/+2
GNAT has a heuristic to warn about missing return statements in functions. This warning was escalated to errors when operating in GNATprove mode and SPARK_Mode was On. However, this heuristic was imprecise and caused spurious errors. Also, it was applied after the Push_Scope/End_Scope, so for functions acting as compilation units it was using the wrong SPARK_Mode. It is better to simply leave this detection to GNATprove. gcc/ada/ * sem_ch6.adb (Check_Statement_Sequence): Only warn about missing return statements and let GNATprove emit a check when needed.
2023-06-20ada: Further fixes to handling of private views in instancesEric Botcazou1-12/+5
This removes more bypasses for private views in instances that are present in type predicates (Conforming_Types, Covers, Specific_Type and Wrong_Type), which in exchange requires additional work in Sem_Ch12 to restore the proper view of types during the instantiation of generic bodies. The main mechanism for this is the Has_Private_View flag, but it comes with the limitations that 1) there must be a direct reference to the global type in the generic construct (either a reference to a global object of this type or the explicit declaration of a local object of this type), which is not always the case e.g. for loop parameters and 2) it can deal with a single type at a time, e.g. it cannot deal with an array type and its component type if their respective views are not the same in the instance. To overcome the second limitation, a new Has_Secondary_Private_View flag is introduced to deal with a secondary type, which as of this writing is either the component type of an array type or the designated type of an access type (together they make up the vast majority of the problematic cases for the Has_Private_View flag alone). This new mechanism subsumes a specific treatment for them that was added in Copy_Generic_Node a few years ago, although a specific treatment still needs to be preserved for comparison and equality operators in a narrower case. Additional handling is also introduced to overcome the first limitation for loop parameters in Copy_Generic_Node, and a relaxed condition is used in Exp_Ch7.Convert_View to generate an unchecked conversion between views. gcc/ada/ * exp_ch7.adb (Convert_View): Detect more cases of mismatches for private types and use Implementation_Base_Type as main criterion. * gen_il-fields.ads (Opt_Field_Enum): Add Has_Secondary_Private_View * gen_il-gen-gen_nodes.adb (N_Expanded_Name): Likewise. (N_Direct_Name): Likewise. (N_Op): Likewise. * sem_ch12.ads (Check_Private_View): Document the usage of second flag Has_Secondary_Private_View. * sem_ch12.adb (Get_Associated_Entity): New function to retrieve the ultimate associated entity, if any. (Check_Private_View): Implement Has_Secondary_Private_View support. (Copy_Generic_Node): Remove specific treatment for Component_Type of an array type and Designated_Type of an access type. Add specific treatment for comparison and equality operators, as well as iterator and loop parameter specifications. (Instantiate_Type): Implement Has_Secondary_Private_View support. (Requires_Delayed_Save): Call Get_Associated_Entity. (Set_Global_Type): Implement Has_Secondary_Private_View support. * sem_ch6.adb (Conforming_Types): Remove bypass for private views in instances. * sem_type.adb (Covers): Return true if Is_Subtype_Of does so. Remove bypass for private views in instances. (Specific_Type): Likewise. * sem_util.adb (Wrong_Type): Likewise. * sinfo.ads (Has_Secondary_Private_View): Document new flag.
2023-05-29ada: Cleanup detection of type support subprogram entitiesPiotr Trojanek1-42/+31
Avoid repeated calls to Get_TSS_Name. Code cleanup related to handling of dispatching operations in GNATprove; semantics is unaffected. gcc/ada/ * exp_aggr.adb (Convert_Aggr_In_Allocator): Replace Get_TSS_Name with a high-level Is_TSS. * sem_ch6.adb (Check_Conformance): Replace DECLARE block and nested IF with a call to Get_TSS_Name and a membership test. (Has_Reliable_Extra_Formals): Refactor repeated calls to Get_TSS_Name. * sem_disp.adb (Check_Dispatching_Operation): Replace repeated calls to Get_TSS_Name with a membership test.
2023-05-29ada: Fix wrong finalization for call to BIP function in conditional expressionEric Botcazou1-3/+9
This happens when the call is a dependent expression of the conditional expression, and the conditional expression is either the expression of a simple return statement or the return expression of an expression function. The reason is that the special processing of "tail calls" for BIP functions, i.e. calls that are the expression of simple return statements or the return expression of expression functions, is not applied. This change makes sure that it is applied by distributing the simple return statements enclosing conditional expressions into the dependent expressions of the conditional expressions in almost all cases. As a side effect, this elides a temporary in the nonlimited by-reference case, as well as a pair of calls to Adjust/Finalize in the nonlimited controlled case. gcc/ada/ * exp_ch4.adb (Expand_N_Case_Expression): Distribute simple return statements enclosing the conditional expression into the dependent expressions in almost all cases. (Expand_N_If_Expression): Likewise. (Process_Transient_In_Expression): Adjust to the above distribution. * exp_ch6.adb (Expand_Ctrl_Function_Call): Deal with calls in the dependent expressions of a conditional expression. * sem_ch6.adb (Analyze_Function_Return): Deal with the rewriting of a simple return statement during the resolution of its expression.
2023-05-26ada: Fix late extra formals creationRonan Desplanques1-0/+1
Before this patch, in some situations, a subprogram call could be expanded before the extra formals for the subprogram were created. This patch fixes the problem in those situations. gcc/ada/ * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Create extra formals in more situations.
2023-05-25ada: Fix crash during function return analysisMarc Poulhiès1-0/+1
The compiler would crash when checking type relation between the function's return type and the type of the expression used in the return statement. It would not work if the function's return type is an access type and the expression is not. gcc/ada/ * sem_ch6.adb (Analyze_Function_Return): Add missing Is_Access_Type check before accessing the Designated_Type field.
2023-05-25ada: Remove unused initial value of a local variablePiotr Trojanek1-1/+1
Cleanup related to improved handling of expression functions in GNATprove; semantics is unaffected. gcc/ada/ * sem_ch6.adb (Analyze_Return_Type): Remove unused initial value.
2023-05-25ada: Remove redundant guards from calls to Move_AspectsPiotr Trojanek1-6/+2
Routine Move_Aspects does nothing if its From parameter has no aspects. There is no need to check this at the call sites. Code cleanup related to changes in handling of expressions functions in GNATprove; semantics is unaffected. gcc/ada/ * par-ch7.adb (P_Package): Remove redundant guard from call to Move_Aspects. * par-ch9.adb (P_Task): Likewise. * sem_ch6.adb (Analyze_Expression_Function, Is_Inline_Pragma): Likewise.
2023-05-25ada: Fix SPARK context not restored when Load_Unit is failingMarc Poulhiès1-1/+1
When Load_Unit fails to find the unit or encounters an error, the Load_Fail procedure is called and an exception is raised, skipping the restoration of the SPARK/Ghost context stored on procedure entry. gcc/ada/ * rtsfind.adb (Load_RTU.Restore_SPARK_Context): New. (Load_RTU): Use Restore_SPARK_Context on all exit paths. * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Initialize local variable to Empty.
2023-05-23ada: Fix expression pretty-printer for SPARK counterexamplesPiotr Trojanek1-0/+7
The expression pretty-printer that is used for SPARK counterexamples was essentially duplicating the logic of First_Node/Last_Node and First_Sloc/Last_Sloc routines. Now it simply reuses those routines. gcc/ada/ * errout.adb (Paren_Required): New subsidiary routine for better handling of parentheses in First_Node/Last_Node. (First_Sloc, Last_Sloc): Use Get_Source_File_Index to correctly handle generic instances and inlined subprograms; tune handling of parentheses; improve handling of literals. * pprint.adb (Expression_Image): Simplify using First_Sloc/Last_Sloc. * sem_ch6.adb (Analyze_Expression_Function): Remove parenthesis when relocating expression from expression function to simple return statement.
2023-05-22ada: Rename Is_Past_Self_Hiding_Point flag to be Is_Not_Self_HiddenBob Duff1-2/+2
...which seems clearer. Still work in progress. gcc/ada/ * cstand.adb (Is_Past_Self_Hiding_Point): Rename to be Is_Not_Self_Hidden. * einfo.ads: Likewise. * exp_aggr.adb: Likewise. * gen_il-fields.ads: Likewise. * gen_il-gen-gen_entities.adb: Likewise. * sem.adb: Likewise. * sem_aggr.adb: Likewise. * sem_ch11.adb: Likewise. * sem_ch12.adb: Likewise. * sem_ch5.adb: Likewise. * sem_ch6.adb: Likewise. * sem_ch7.adb: Likewise. * sem_prag.adb: Likewise.
2023-05-22ada: Add Is_Past_Self_Hiding_Point flagBob Duff1-0/+8
This patch adds a flag Is_Past_Self_Hiding_Point. When False, this will replace E_Void as the indicator for a premature use of a declaration within itself -- for example, "X : T := X;". One might think this flag should be called something like Is_Hidden_From_All_Visibility, reversing the sense of Is_Past_Self_Hiding_Point. We don't do that because we want Is_Past_Self_Hiding_Point to be initially False by default (and we have no mechanism for defaulting to True), and because it doesn't exactly match the RM definition of "hidden from all visibility" (for example, for record components). This is work in progress; more changes are needed before we can remove all Mutate_Ekind(..., E_Void). gcc/ada/ * einfo.ads (Is_Past_Self_Hiding_Point): Document. * gen_il-fields.ads (Is_Past_Self_Hiding_Point): Add to list of fields. * gen_il-gen-gen_entities.adb (Is_Past_Self_Hiding_Point): Declare in all entities. * exp_aggr.adb: Set Is_Past_Self_Hiding_Point as appropriate. * sem.adb: Likewise. * sem_aggr.adb: Likewise. * sem_ch11.adb: Likewise. * sem_ch12.adb: Likewise. * sem_ch5.adb: Likewise. * sem_ch7.adb: Likewise. * sem_prag.adb: Likewise. * sem_ch6.adb: Likewise. (Set_Formal_Mode): Minor cleanup: Move from spec. * sem_ch6.ads: (Set_Formal_Mode): Minor cleanup: Move to body. * cstand.adb: Call Set_Is_Past_Self_Hiding_Point on all entities as soon as they are created. * comperr.adb (Compiler_Abort): Minor cleanup -- use 'in' instead of 'or else'. * debug.adb: Minor comment cleanups.
2023-05-22ada: Remove extra parenthesesArnaud Charlet1-5/+5
In preparation of enhancing -gnatyx to check for these automatically. gcc/ada/ * ali-util.adb, par-endh.adb, par-prag.adb, par-ch2.adb, checks.adb, fmap.adb, libgnat/a-nbnbig.ads, libgnat/g-dynhta.adb, libgnat/s-carun8.adb, libgnat/s-strcom.adb, libgnat/a-dhfina.adb, libgnat/a-direct.adb, libgnat/a-rbtgbo.adb, libgnat/a-strsea.adb, libgnat/a-ststio.adb, libgnat/a-suenco.adb, libgnat/a-costso.adb, libgnat/a-strmap.adb, libgnat/g-alleve.adb, libgnat/g-debpoo.adb, libgnat/g-sercom__linux.adb, libgnat/s-genbig.adb, libgnat/s-mmap.adb, libgnat/s-regpat.adb, par-ch5.adb, sem_case.adb, sem_ch12.adb, sem_ch13.adb, sem_ch8.adb, sem_eval.adb, sem_prag.adb, sem_type.adb, exp_ch11.adb, exp_ch2.adb, exp_ch3.adb, exp_ch4.adb, exp_ch5.adb, exp_ch6.adb, exp_ch9.adb, exp_put_image.adb, freeze.adb, live.adb, sem_aggr.adb, sem_cat.adb, sem_ch10.adb, sem_ch3.adb, sem_ch6.adb, sem_ch9.adb, sem_disp.adb, sem_elab.adb, sem_res.adb, sem_util.adb, sinput.adb, uintp.adb, bcheck.adb, binde.adb, binderr.adb, einfo-utils.adb, clean.adb, sem_ch4.adb, gnatls.adb, gprep.adb, sem_ch11.adb: Remove extra parentheses.
2023-05-15ada: Clean up vanishing entity fieldsBob Duff1-6/+14
Fix all the failures caused by enabling Check_Vanishing_Fields on entities in all cases except the case of converting to or from E_Void. But leave Check_Vanishing_Fields disabled by default (controlled by -gnatd_v flag), because it might be too slow even for assertions-on mode, and we should deal with the E_Void cases eventually. The failures are fixed either by adding calls to Reinit_Field_To_Zero, or by changing which entities have which fields. Note that in a series of Reinit_Field_To_Zero calls, the optional Old_Ekind parameter is only useful on the first such call. gcc/ada/ * atree.adb (Check_Vanishing_Fields): Disable the check for "root/base type only" fields. This is a bug fix -- if we're checking some subtype S, we don't want to reach over to the root or base type and Reinit_Field_To_Zero of that, thus modifying the field for lots of subtypes other than S. Disable in the to/from E_Void cases. Misc cleanup. * gen_il-gen-gen_entities.adb: Define First_Entity, Last_Entity, and Stored_Constraint for all type entities, because there are too many cases where Reinit_Field_To_Zero would otherwise be needed. In any case, it seems cleaner to have First_Entity and Last_Entity defined in the same entity kinds. * einfo.ads: (First_Entity, Last_Entity, Stored_Constraint): Update comments to reflect gen_il-gen-gen_entities.adb changes. (Lit_Hash): Add missing "[root type only]" comment. * exp_ch5.adb: Add Reinit_Field_To_Zero calls for vanishing fields. * sem_ch10.adb: Likewise. * sem_ch6.adb: Likewise. * sem_ch7.adb: Likewise. * sem_ch8.adb: Likewise. * sem_ch3.adb: Likewise. Also remove now-unnecessary Reinit_Field_To_Zero calls.
2023-03-06Fix assertion failure on VSS libraryJavier Miranda1-0/+15
gcc/ada/ PR ada/108858 * sem_ch6.adb (Analyze_Subprogram_Body_Helper): For functions with separate spec, if their return type was visible through a limited- with context clause, their extra formals were not added when the spec was analyzed. Now the full view must be available, and the extra formals can be created and Returns_By_Ref computed.
2023-01-09ada: Update copyright noticeArnaud Charlet1-1/+1
gcc/ada/ * accessibility.adb, accessibility.ads, ada_get_targ.adb: Update copyright year. * adabkend.adb, adabkend.ads, adadecode.c, adadecode.h, adaint.c: Likewise. * adaint.h, affinity.c, ali-util.adb, ali-util.ads, ali.adb: Likewise. * ali.ads, alloc.ads, argv-lynxos178-raven-cert.c, argv.c: Likewise. * aspects.adb, aspects.ads, atree.adb, atree.ads, atree.h: Likewise. * aux-io.c, back_end.adb, back_end.ads, backend_utils.adb: Likewise. * backend_utils.ads, bcheck.adb, bcheck.ads, binde.adb, binde.ads: Likewise. * binderr.adb, binderr.ads, bindgen.adb, bindgen.ads: Likewise. * bindo-augmentors.adb, bindo-augmentors.ads, bindo-builders.adb: Likewise. * bindo-builders.ads, bindo-diagnostics.adb: Likewise. * bindo-diagnostics.ads, bindo-elaborators.adb: Likewise. * bindo-elaborators.ads, bindo-graphs.adb, bindo-graphs.ads: Likewise. * bindo-units.adb, bindo-units.ads, bindo-validators.adb: Likewise. * bindo-validators.ads, bindo-writers.adb, bindo-writers.ads: Likewise. * bindo.adb, bindo.ads, bindusg.adb, bindusg.ads, butil.adb: Likewise. * butil.ads, cal.c, casing.adb, casing.ads, checks.adb: Likewise. * checks.ads, cio.c, clean.adb, clean.ads: Likewise. * comperr.adb, comperr.ads, contracts.adb, contracts.ads: Likewise. * csets.adb, csets.ads, cstand.adb: Likewise. * cstand.ads, cstreams.c, ctrl_c.c, debug.adb, debug.ads: Likewise. * debug_a.adb, debug_a.ads, einfo-utils.adb, einfo-utils.ads: Likewise. * einfo.adb, einfo.ads, elists.adb, elists.ads, elists.h, env.c: Likewise. * env.h, err_vars.ads, errno.c, errout.adb, errout.ads: Likewise. * erroutc.adb, erroutc.ads, errutil.adb, errutil.ads: Likewise. * eval_fat.adb, eval_fat.ads, exit.c, exp_aggr.adb, exp_aggr.ads: Likewise. * exp_atag.adb, exp_atag.ads, exp_attr.adb, exp_attr.ads: Likewise. * exp_cg.adb, exp_cg.ads, exp_ch10.ads, exp_ch11.adb: Likewise. * exp_ch11.ads, exp_ch12.adb, exp_ch12.ads, exp_ch13.adb: Likewise. * exp_ch13.ads, exp_ch2.adb, exp_ch2.ads, exp_ch3.adb: Likewise. * exp_ch3.ads, exp_ch4.adb, exp_ch4.ads, exp_ch5.adb, exp_ch5.ads: Likewise. * exp_ch6.adb, exp_ch6.ads, exp_ch7.adb, exp_ch7.ads, exp_ch8.adb: Likewise. * exp_ch8.ads, exp_ch9.adb, exp_ch9.ads, exp_code.adb: Likewise. * exp_code.ads, exp_dbug.adb, exp_dbug.ads, exp_disp.adb: Likewise. * exp_disp.ads, exp_dist.adb, exp_dist.ads, exp_fixd.adb: Likewise. * exp_fixd.ads, exp_imgv.adb, exp_imgv.ads, exp_intr.adb: Likewise. * exp_intr.ads, exp_pakd.adb, exp_pakd.ads, exp_prag.adb: Likewise. * exp_prag.ads, exp_put_image.adb, exp_put_image.ads, exp_sel.adb: Likewise. * exp_sel.ads, exp_smem.adb, exp_smem.ads, exp_spark.adb: Likewise. * exp_spark.ads, exp_strm.adb, exp_strm.ads, exp_tss.adb: Likewise. * exp_tss.ads, exp_unst.adb, exp_unst.ads, exp_util.adb: Likewise. * exp_util.ads, expander.adb, expander.ads, expect.c, fe.h: Likewise. * final.c, fmap.adb, fmap.ads, fname-sf.adb, fname-sf.ads: Likewise. * fname-uf.adb, fname-uf.ads, fname.adb, fname.ads, freeze.adb: Likewise. * freeze.ads, frontend.adb, frontend.ads, gen_il-fields.ads: Likewise. * gen_il-gen-gen_entities.adb, gen_il-gen-gen_nodes.adb: Likewise. * gen_il-gen.adb, gen_il-gen.ads, gen_il-internals.adb: Likewise. * gen_il-internals.ads, gen_il-main.adb, gen_il-types.ads: Likewise. * gen_il.adb, gen_il.ads, get_scos.adb, get_scos.ads: Likewise. * get_targ.adb, get_targ.ads, ghost.adb, ghost.ads, gnat1drv.adb: Likewise. * gnat1drv.ads, gnat_cuda.adb, gnat_cuda.ads: Likewise. * gnatbind.adb, gnatbind.ads, gnatchop.adb: Likewise. * gnatclean.adb, gnatcmd.adb, gnatcmd.ads, gnatdll.adb: Likewise. * gnatkr.adb, gnatkr.ads, gnatlink.adb, gnatlink.ads, gnatls.adb: Likewise. * gnatls.ads, gnatmake.adb, gnatmake.ads, gnatname.adb: Likewise. * gnatname.ads, gnatprep.adb, gnatprep.ads: Likewise. * gprep.adb, gprep.ads, gsocket.h: Likewise. * hostparm.ads: Likewise. * impunit.adb, impunit.ads, indepsw-aix.adb, indepsw-darwin.adb: Likewise. * indepsw-gnu.adb, indepsw.adb, indepsw.ads, init.c: Likewise. * initialize.c, inline.adb, inline.ads, itypes.adb, itypes.ads: Likewise. * krunch.adb, krunch.ads, layout.adb, layout.ads: Likewise. * lib-list.adb, lib-load.adb, lib-load.ads, lib-sort.adb: Likewise. * lib-util.adb, lib-util.ads, lib-writ.adb, lib-writ.ads: Likewise. * lib-xref-spark_specific.adb, lib-xref.adb, lib-xref.ads: Likewise. * lib.adb, lib.ads, libgnarl/a-astaco.adb, libgnarl/a-dispat.adb: Likewise. * libgnarl/a-dynpri.adb, libgnarl/a-etgrbu.ads: Likewise. * libgnarl/a-exetim__darwin.adb, libgnarl/a-exetim__default.ads: Likewise. * libgnarl/a-exetim__mingw.adb, libgnarl/a-exetim__mingw.ads: Likewise. * libgnarl/a-exetim__posix.adb, libgnarl/a-interr.adb: Likewise. * libgnarl/a-interr.ads, libgnarl/a-intnam.ads: Likewise. * libgnarl/a-intnam__aix.ads, libgnarl/a-intnam__darwin.ads: Likewise. * libgnarl/a-intnam__dragonfly.ads, libgnarl/a-intnam__dummy.ads: Likewise. * libgnarl/a-intnam__freebsd.ads, libgnarl/a-intnam__hpux.ads: Likewise. * libgnarl/a-intnam__linux.ads, libgnarl/a-intnam__lynxos.ads: Likewise. * libgnarl/a-intnam__mingw.ads, libgnarl/a-intnam__qnx.ads: Likewise. * libgnarl/a-intnam__rtems.ads, libgnarl/a-intnam__solaris.ads: Likewise. * libgnarl/a-intnam__vxworks.ads, libgnarl/a-reatim.adb: Likewise. * libgnarl/a-reatim.ads, libgnarl/a-retide.adb: Likewise. * libgnarl/a-retide.ads, libgnarl/a-rttiev.adb: Likewise. * libgnarl/a-rttiev.ads, libgnarl/a-synbar.adb: Likewise. * libgnarl/a-synbar.ads, libgnarl/a-synbar__posix.adb: Likewise. * libgnarl/a-synbar__posix.ads, libgnarl/a-sytaco.adb: Likewise. * libgnarl/a-sytaco.ads, libgnarl/a-tasatt.adb: Likewise. * libgnarl/a-tasatt.ads, libgnarl/a-taside.adb: Likewise. * libgnarl/a-taside.ads, libgnarl/a-tasini.adb: Likewise. * libgnarl/a-tasini.ads, libgnarl/a-taster.adb: Likewise. * libgnarl/g-boubuf.adb, libgnarl/g-boubuf.ads: Likewise. * libgnarl/g-boumai.ads, libgnarl/g-semaph.adb: Likewise. * libgnarl/g-semaph.ads, libgnarl/g-signal.adb: Likewise. * libgnarl/g-signal.ads, libgnarl/g-tastus.ads: Likewise. * libgnarl/g-thread.adb, libgnarl/g-thread.ads: Likewise. * libgnarl/i-vxinco.adb, libgnarl/i-vxinco.ads: Likewise. * libgnarl/s-inmaop.ads, libgnarl/s-inmaop__dummy.adb: Likewise. * libgnarl/s-inmaop__hwint.adb, libgnarl/s-inmaop__posix.adb: Likewise. * libgnarl/s-interr.adb, libgnarl/s-interr.ads: Likewise. * libgnarl/s-interr__dummy.adb, libgnarl/s-interr__hwint.adb: Likewise. * libgnarl/s-interr__sigaction.adb: Likewise. * libgnarl/s-interr__vxworks.adb, libgnarl/s-intman.ads: Likewise. * libgnarl/s-intman__android.adb, libgnarl/s-intman__dummy.adb: Likewise. * libgnarl/s-intman__lynxos.adb, libgnarl/s-intman__mingw.adb: Likewise. * libgnarl/s-intman__posix.adb, libgnarl/s-intman__qnx.adb: Likewise. * libgnarl/s-intman__rtems.adb, libgnarl/s-intman__rtems.ads: Likewise. * libgnarl/s-intman__solaris.adb, libgnarl/s-intman__susv3.adb: Likewise. * libgnarl/s-intman__vxworks.adb, libgnarl/s-intman__vxworks.ads: Likewise. * libgnarl/s-linux.ads, libgnarl/s-linux__alpha.ads: Likewise. * libgnarl/s-linux__android.ads, libgnarl/s-linux__hppa.ads: Likewise. * libgnarl/s-linux__mips.ads, libgnarl/s-linux__riscv.ads: Likewise. * libgnarl/s-linux__sparc.ads, libgnarl/s-linux__x32.ads: Likewise. * libgnarl/s-mudido.adb, libgnarl/s-mudido__affinity.adb: Likewise. * libgnarl/s-osinte__aix.adb, libgnarl/s-osinte__aix.ads: Likewise. * libgnarl/s-osinte__android.adb, libgnarl/s-osinte__android.ads: Likewise. * libgnarl/s-osinte__darwin.adb, libgnarl/s-osinte__darwin.ads: Likewise. * libgnarl/s-osinte__dragonfly.adb: Likewise. * libgnarl/s-osinte__dragonfly.ads, libgnarl/s-osinte__dummy.ads: Likewise. * libgnarl/s-osinte__freebsd.adb, libgnarl/s-osinte__freebsd.ads: Likewise. * libgnarl/s-osinte__gnu.adb, libgnarl/s-osinte__gnu.ads: Likewise. * libgnarl/s-osinte__hpux-dce.adb: Likewise. * libgnarl/s-osinte__hpux-dce.ads, libgnarl/s-osinte__hpux.ads: Likewise. * libgnarl/s-osinte__kfreebsd-gnu.ads: Likewise. * libgnarl/s-osinte__linux.ads, libgnarl/s-osinte__lynxos178.adb: Likewise. * libgnarl/s-osinte__lynxos178e.ads, libgnarl/s-osinte__mingw.ads: Likewise. * libgnarl/s-osinte__posix.adb, libgnarl/s-osinte__qnx.adb: Likewise. * libgnarl/s-osinte__qnx.ads, libgnarl/s-osinte__rtems.adb: Likewise. * libgnarl/s-osinte__rtems.ads, libgnarl/s-osinte__solaris.adb: Likewise. * libgnarl/s-osinte__solaris.ads, libgnarl/s-osinte__vxworks.adb: Likewise. * libgnarl/s-osinte__vxworks.ads, libgnarl/s-osinte__x32.adb: Likewise. * libgnarl/s-proinf.adb, libgnarl/s-proinf.ads: Likewise. * libgnarl/s-putaim.adb, libgnarl/s-putaim.ads: Likewise. * libgnarl/s-qnx.ads, libgnarl/s-solita.adb: Likewise. * libgnarl/s-solita.ads, libgnarl/s-stusta.adb: Likewise. * libgnarl/s-stusta.ads, libgnarl/s-taasde.adb: Likewise. * libgnarl/s-taasde.ads, libgnarl/s-tadeca.adb: Likewise. * libgnarl/s-tadeca.ads, libgnarl/s-tadert.adb: Likewise. * libgnarl/s-tadert.ads, libgnarl/s-taenca.adb: Likewise. * libgnarl/s-taenca.ads, libgnarl/s-taprob.adb: Likewise. * libgnarl/s-taprob.ads, libgnarl/s-taprop.ads: Likewise. * libgnarl/s-taprop__dummy.adb, libgnarl/s-taprop__hpux-dce.adb: Likewise. * libgnarl/s-taprop__linux.adb, libgnarl/s-taprop__mingw.adb: Likewise. * libgnarl/s-taprop__posix.adb, libgnarl/s-taprop__qnx.adb: Likewise. * libgnarl/s-taprop__rtems.adb, libgnarl/s-taprop__solaris.adb: Likewise. * libgnarl/s-taprop__vxworks.adb, libgnarl/s-tarest.adb: Likewise. * libgnarl/s-tarest.ads, libgnarl/s-tasdeb.adb: Likewise. * libgnarl/s-tasdeb.ads, libgnarl/s-tasinf.adb: Likewise. * libgnarl/s-tasinf.ads, libgnarl/s-tasinf__linux.adb: Likewise. * libgnarl/s-tasinf__linux.ads, libgnarl/s-tasinf__mingw.adb: Likewise. * libgnarl/s-tasinf__mingw.ads, libgnarl/s-tasinf__solaris.adb: Likewise. * libgnarl/s-tasinf__solaris.ads, libgnarl/s-tasinf__vxworks.ads: Likewise. * libgnarl/s-tasini.adb, libgnarl/s-tasini.ads: Likewise. * libgnarl/s-taskin.adb, libgnarl/s-taskin.ads: Likewise. * libgnarl/s-taspri__dummy.ads, libgnarl/s-taspri__hpux-dce.ads: Likewise. * libgnarl/s-taspri__lynxos.ads, libgnarl/s-taspri__mingw.ads: Likewise. * libgnarl/s-taspri__posix-noaltstack.ads: Likewise. * libgnarl/s-taspri__posix.ads, libgnarl/s-taspri__solaris.ads: Likewise. * libgnarl/s-taspri__vxworks.ads, libgnarl/s-tasque.adb: Likewise. * libgnarl/s-tasque.ads, libgnarl/s-tasren.adb: Likewise. * libgnarl/s-tasren.ads, libgnarl/s-tasres.ads: Likewise. * libgnarl/s-tassta.adb, libgnarl/s-tassta.ads: Likewise. * libgnarl/s-tasuti.adb, libgnarl/s-tasuti.ads: Likewise. * libgnarl/s-tataat.adb, libgnarl/s-tataat.ads: Likewise. * libgnarl/s-tpinop.adb, libgnarl/s-tpinop.ads: Likewise. * libgnarl/s-tpoaal.adb, libgnarl/s-tpoben.adb: Likewise. * libgnarl/s-tpoben.ads, libgnarl/s-tpobmu.adb: Likewise. * libgnarl/s-tpobmu.ads, libgnarl/s-tpobop.adb: Likewise. * libgnarl/s-tpobop.ads, libgnarl/s-tpopmo.adb: Likewise. * libgnarl/s-tpopsp__posix-foreign.adb: Likewise. * libgnarl/s-tpopsp__posix.adb, libgnarl/s-tpopsp__solaris.adb: Likewise. * libgnarl/s-tpopsp__tls.adb, libgnarl/s-tpopsp__vxworks-rtp.adb: Likewise. * libgnarl/s-tpopsp__vxworks-tls.adb: Likewise. * libgnarl/s-tpopsp__vxworks.adb, libgnarl/s-tporft.adb: Likewise. * libgnarl/s-tposen.adb, libgnarl/s-tposen.ads: Likewise. * libgnarl/s-vxwext.adb, libgnarl/s-vxwext.ads: Likewise. * libgnarl/s-vxwext__kernel-smp.adb: Likewise. * libgnarl/s-vxwext__kernel.adb, libgnarl/s-vxwext__kernel.ads: Likewise. * libgnarl/s-vxwext__rtp-smp.adb, libgnarl/s-vxwext__rtp.adb: Likewise. * libgnarl/s-vxwext__rtp.ads, libgnarl/s-vxwork__aarch64.ads: Likewise. * libgnarl/s-vxwork__arm.ads, libgnarl/s-vxwork__ppc.ads: Likewise. * libgnarl/s-vxwork__x86.ads, libgnarl/thread.c: Likewise. * libgnat/a-assert.adb, libgnat/a-assert.ads: Likewise. * libgnat/a-btgbso.adb, libgnat/a-btgbso.ads: Likewise. * libgnat/a-calari.adb, libgnat/a-calari.ads: Likewise. * libgnat/a-calcon.adb, libgnat/a-calcon.ads: Likewise. * libgnat/a-caldel.adb, libgnat/a-caldel.ads: Likewise. * libgnat/a-calend.adb, libgnat/a-calend.ads: Likewise. * libgnat/a-calfor.adb, libgnat/a-calfor.ads: Likewise. * libgnat/a-catizo.adb, libgnat/a-cbdlli.adb: Likewise. * libgnat/a-cbdlli.ads, libgnat/a-cbhama.adb: Likewise. * libgnat/a-cbhama.ads, libgnat/a-cbhase.adb: Likewise. * libgnat/a-cbhase.ads, libgnat/a-cbmutr.adb: Likewise. * libgnat/a-cbmutr.ads, libgnat/a-cborma.adb: Likewise. * libgnat/a-cborma.ads, libgnat/a-cborse.adb: Likewise. * libgnat/a-cborse.ads, libgnat/a-cbprqu.adb: Likewise. * libgnat/a-cbprqu.ads, libgnat/a-cbsyqu.adb: Likewise. * libgnat/a-cbsyqu.ads, libgnat/a-cdlili.adb: Likewise. * libgnat/a-cdlili.ads, libgnat/a-cfdlli.ads: Likewise. * libgnat/a-cfhama.ads, libgnat/a-cfhase.ads: Likewise. * libgnat/a-cfidll.ads, libgnat/a-cfinse.ads: Likewise. * libgnat/a-cfinve.ads, libgnat/a-cforma.ads: Likewise. * libgnat/a-cforse.ads, libgnat/a-cgaaso.adb: Likewise. * libgnat/a-cgaaso.ads, libgnat/a-cgarso.adb: Likewise. * libgnat/a-cgcaso.adb, libgnat/a-chacon.adb: Likewise. * libgnat/a-chacon.ads, libgnat/a-chahan.adb: Likewise. * libgnat/a-chahan.ads, libgnat/a-chlat9.ads: Likewise. * libgnat/a-chtgbk.adb, libgnat/a-chtgbk.ads: Likewise. * libgnat/a-chtgbo.adb, libgnat/a-chtgbo.ads: Likewise. * libgnat/a-chtgfk.adb, libgnat/a-chtgfk.ads: Likewise. * libgnat/a-chtgfo.adb, libgnat/a-chtgfo.ads: Likewise. * libgnat/a-chtgke.adb, libgnat/a-chtgke.ads: Likewise. * libgnat/a-chtgop.adb, libgnat/a-chtgop.ads: Likewise. * libgnat/a-chzla1.ads, libgnat/a-chzla9.ads: Likewise. * libgnat/a-cidlli.adb, libgnat/a-cidlli.ads: Likewise. * libgnat/a-cihama.adb, libgnat/a-cihama.ads: Likewise. * libgnat/a-cihase.adb, libgnat/a-cihase.ads: Likewise. * libgnat/a-cimutr.adb, libgnat/a-cimutr.ads: Likewise. * libgnat/a-ciorma.adb, libgnat/a-ciorma.ads: Likewise. * libgnat/a-ciormu.adb, libgnat/a-ciormu.ads: Likewise. * libgnat/a-ciorse.adb, libgnat/a-ciorse.ads: Likewise. * libgnat/a-clrefi.adb, libgnat/a-clrefi.ads: Likewise. * libgnat/a-coboho.adb, libgnat/a-coboho.ads: Likewise. * libgnat/a-cobove.adb, libgnat/a-cobove.ads: Likewise. * libgnat/a-cofove.ads, libgnat/a-cofuma.ads: Likewise. * libgnat/a-cofuse.ads, libgnat/a-cofuve.ads: Likewise. * libgnat/a-cogeso.adb, libgnat/a-cogeso.ads: Likewise. * libgnat/a-cohama.adb, libgnat/a-cohama.ads: Likewise. * libgnat/a-cohase.adb, libgnat/a-cohase.ads: Likewise. * libgnat/a-cohata.ads, libgnat/a-coinho.adb: Likewise. * libgnat/a-coinho.ads, libgnat/a-coinho__shared.adb: Likewise. * libgnat/a-coinho__shared.ads, libgnat/a-coinve.adb: Likewise. * libgnat/a-coinve.ads, libgnat/a-colien.adb: Likewise. * libgnat/a-colien.ads, libgnat/a-colire.adb: Likewise. * libgnat/a-colire.ads, libgnat/a-comlin.adb: Likewise. * libgnat/a-comlin.ads, libgnat/a-comutr.adb: Likewise. * libgnat/a-comutr.ads, libgnat/a-conhel.adb: Likewise. * libgnat/a-conhel.ads, libgnat/a-convec.adb: Likewise. * libgnat/a-convec.ads, libgnat/a-coorma.adb: Likewise. * libgnat/a-coorma.ads, libgnat/a-coormu.adb: Likewise. * libgnat/a-coormu.ads, libgnat/a-coorse.adb: Likewise. * libgnat/a-coorse.ads, libgnat/a-coprnu.adb: Likewise. * libgnat/a-coprnu.ads, libgnat/a-costso.adb: Likewise. * libgnat/a-costso.ads, libgnat/a-crbltr.ads: Likewise. * libgnat/a-crbtgk.adb, libgnat/a-crbtgk.ads: Likewise. * libgnat/a-crbtgo.adb, libgnat/a-crbtgo.ads: Likewise. * libgnat/a-crdlli.adb, libgnat/a-crdlli.ads: Likewise. * libgnat/a-csquin.ads, libgnat/a-cuprqu.adb: Likewise. * libgnat/a-cuprqu.ads, libgnat/a-cusyqu.adb: Likewise. * libgnat/a-cusyqu.ads, libgnat/a-cwila1.ads: Likewise. * libgnat/a-cwila9.ads, libgnat/a-decima.adb: Likewise. * libgnat/a-decima.ads, libgnat/a-decima__128.ads: Likewise. * libgnat/a-dhfina.adb, libgnat/a-dhfina.ads: Likewise. * libgnat/a-diocst.adb, libgnat/a-diocst.ads: Likewise. * libgnat/a-direct.adb, libgnat/a-direct.ads: Likewise. * libgnat/a-direio.adb, libgnat/a-direio.ads: Likewise. * libgnat/a-dirval.adb, libgnat/a-dirval.ads: Likewise. * libgnat/a-dirval__mingw.adb, libgnat/a-einuoc.adb: Likewise. * libgnat/a-einuoc.ads, libgnat/a-elchha.adb: Likewise. * libgnat/a-elchha.ads, libgnat/a-envvar.adb: Likewise. * libgnat/a-excach.adb, libgnat/a-except.adb: Likewise. * libgnat/a-except.ads, libgnat/a-exctra.adb: Likewise. * libgnat/a-exctra.ads, libgnat/a-exexda.adb: Likewise. * libgnat/a-exexpr.adb, libgnat/a-exextr.adb: Likewise. * libgnat/a-exstat.adb, libgnat/a-finali.adb: Likewise. * libgnat/a-finali.ads, libgnat/a-locale.adb: Likewise. * libgnat/a-locale.ads, libgnat/a-nagefl.ads: Likewise. * libgnat/a-naliop.ads, libgnat/a-naliop__nolibm.ads: Likewise. * libgnat/a-nallfl.ads, libgnat/a-nallfl__wraplf.ads: Likewise. * libgnat/a-nalofl.ads, libgnat/a-nalofl__simd.ads: Likewise. * libgnat/a-nashfl.ads, libgnat/a-nashfl__wraplf.ads: Likewise. * libgnat/a-nbnbig.adb, libgnat/a-nbnbin.adb: Likewise. * libgnat/a-nbnbin__gmp.adb, libgnat/a-nbnbre.adb: Likewise. * libgnat/a-ngcefu.adb, libgnat/a-ngcoar.adb: Likewise. * libgnat/a-ngcoty.adb, libgnat/a-ngcoty.ads: Likewise. * libgnat/a-ngelfu.adb, libgnat/a-ngelfu.ads: Likewise. * libgnat/a-ngrear.adb, libgnat/a-ngrear.ads: Likewise. * libgnat/a-nuauco.ads, libgnat/a-nuauco__x86.ads: Likewise. * libgnat/a-nuaufl.ads, libgnat/a-nuaufl__simd.ads: Likewise. * libgnat/a-nuaufl__wraplf.ads, libgnat/a-nudira.adb: Likewise. * libgnat/a-nudira.ads, libgnat/a-nuflra.adb: Likewise. * libgnat/a-nuflra.ads, libgnat/a-numaux.ads: Likewise. * libgnat/a-rbtgbk.adb, libgnat/a-rbtgbk.ads: Likewise. * libgnat/a-rbtgbo.adb, libgnat/a-rbtgbo.ads: Likewise. * libgnat/a-rbtgso.adb, libgnat/a-rbtgso.ads: Likewise. * libgnat/a-sbecin.adb, libgnat/a-sbecin.ads: Likewise. * libgnat/a-sbhcin.adb, libgnat/a-sbhcin.ads: Likewise. * libgnat/a-sblcin.adb, libgnat/a-sblcin.ads: Likewise. * libgnat/a-secain.adb, libgnat/a-secain.ads: Likewise. * libgnat/a-sequio.adb, libgnat/a-sequio.ads: Likewise. * libgnat/a-sfecin.ads, libgnat/a-sfhcin.ads: Likewise. * libgnat/a-sflcin.ads, libgnat/a-shcain.adb: Likewise. * libgnat/a-shcain.ads, libgnat/a-siocst.adb: Likewise. * libgnat/a-siocst.ads, libgnat/a-slcain.adb: Likewise. * libgnat/a-slcain.ads, libgnat/a-ssicst.adb: Likewise. * libgnat/a-ssicst.ads, libgnat/a-stboha.adb: Likewise. * libgnat/a-stbubo.adb, libgnat/a-stbubo.ads: Likewise. * libgnat/a-stbufi.adb, libgnat/a-stbufi.ads: Likewise. * libgnat/a-stbufo.adb, libgnat/a-stbufo.ads: Likewise. * libgnat/a-stbuun.adb, libgnat/a-stbuut.adb: Likewise. * libgnat/a-stbuut.ads, libgnat/a-stmaco.ads: Likewise. * libgnat/a-storio.adb, libgnat/a-strbou.adb: Likewise. * libgnat/a-strbou.ads, libgnat/a-stream.adb: Likewise. * libgnat/a-stream.ads, libgnat/a-strfix.adb: Likewise. * libgnat/a-strhas.adb, libgnat/a-strmap.adb: Likewise. * libgnat/a-strmap.ads, libgnat/a-strsea.adb: Likewise. * libgnat/a-strsea.ads, libgnat/a-strsto.ads: Likewise. * libgnat/a-strsup.adb, libgnat/a-strsup.ads: Likewise. * libgnat/a-strunb.adb, libgnat/a-strunb.ads: Likewise. * libgnat/a-strunb__shared.adb, libgnat/a-strunb__shared.ads: Likewise. * libgnat/a-ststbo.adb, libgnat/a-ststbo.ads: Likewise. * libgnat/a-ststio.adb, libgnat/a-ststio.ads: Likewise. * libgnat/a-ststun.adb, libgnat/a-ststun.ads: Likewise. * libgnat/a-sttebu.adb, libgnat/a-stunau.adb: Likewise. * libgnat/a-stunau.ads, libgnat/a-stunau__shared.adb: Likewise. * libgnat/a-stunha.adb, libgnat/a-stuten.adb: Likewise. * libgnat/a-stwibo.adb, libgnat/a-stwibo.ads: Likewise. * libgnat/a-stwifi.adb, libgnat/a-stwiha.adb: Likewise. * libgnat/a-stwima.adb, libgnat/a-stwima.ads: Likewise. * libgnat/a-stwise.adb, libgnat/a-stwise.ads: Likewise. * libgnat/a-stwisu.adb, libgnat/a-stwisu.ads: Likewise. * libgnat/a-stwiun.adb, libgnat/a-stwiun.ads: Likewise. * libgnat/a-stwiun__shared.adb, libgnat/a-stwiun__shared.ads: Likewise. * libgnat/a-stzbou.adb, libgnat/a-stzbou.ads: Likewise. * libgnat/a-stzfix.adb, libgnat/a-stzhas.adb: Likewise. * libgnat/a-stzmap.adb, libgnat/a-stzmap.ads: Likewise. * libgnat/a-stzsea.adb, libgnat/a-stzsea.ads: Likewise. * libgnat/a-stzsup.adb, libgnat/a-stzsup.ads: Likewise. * libgnat/a-stzunb.adb, libgnat/a-stzunb.ads: Likewise. * libgnat/a-stzunb__shared.adb, libgnat/a-stzunb__shared.ads: Likewise. * libgnat/a-suecin.adb, libgnat/a-suecin.ads: Likewise. * libgnat/a-suenco.adb, libgnat/a-suenst.adb: Likewise. * libgnat/a-suewst.adb, libgnat/a-suezst.adb: Likewise. * libgnat/a-suhcin.adb, libgnat/a-suhcin.ads: Likewise. * libgnat/a-sulcin.adb, libgnat/a-sulcin.ads: Likewise. * libgnat/a-suteio.adb, libgnat/a-suteio.ads: Likewise. * libgnat/a-suteio__shared.adb, libgnat/a-swbwha.adb: Likewise. * libgnat/a-swmwco.ads, libgnat/a-swunau.adb: Likewise. * libgnat/a-swunau.ads, libgnat/a-swunau__shared.adb: Likewise. * libgnat/a-swuwha.adb, libgnat/a-swuwti.adb: Likewise. * libgnat/a-swuwti.ads, libgnat/a-swuwti__shared.adb: Likewise. * libgnat/a-szbzha.adb, libgnat/a-szmzco.ads: Likewise. * libgnat/a-szunau.adb, libgnat/a-szunau.ads: Likewise. * libgnat/a-szunau__shared.adb, libgnat/a-szuzha.adb: Likewise. * libgnat/a-szuzti.adb, libgnat/a-szuzti.ads: Likewise. * libgnat/a-szuzti__shared.adb, libgnat/a-tags.adb: Likewise. * libgnat/a-tags.ads, libgnat/a-teioed.adb, libgnat/a-teioed.ads: Likewise. * libgnat/a-textio.adb, libgnat/a-textio.ads: Likewise. * libgnat/a-tiboio.adb, libgnat/a-ticoau.adb: Likewise. * libgnat/a-ticoau.ads, libgnat/a-ticoio.adb: Likewise. * libgnat/a-ticoio.ads, libgnat/a-tideau.adb: Likewise. * libgnat/a-tideau.ads, libgnat/a-tideio.adb: Likewise. * libgnat/a-tideio.ads, libgnat/a-tideio__128.adb: Likewise. * libgnat/a-tienau.adb, libgnat/a-tienau.ads: Likewise. * libgnat/a-tienio.adb, libgnat/a-tifiau.adb: Likewise. * libgnat/a-tifiau.ads, libgnat/a-tifiio.adb: Likewise. * libgnat/a-tifiio__128.adb, libgnat/a-tiflau.adb: Likewise. * libgnat/a-tiflau.ads, libgnat/a-tiflio.adb: Likewise. * libgnat/a-tiflio.ads, libgnat/a-tigeau.adb: Likewise. * libgnat/a-tigeau.ads, libgnat/a-tigeli.adb: Likewise. * libgnat/a-tiinau.adb, libgnat/a-tiinau.ads: Likewise. * libgnat/a-tiinio.adb, libgnat/a-tiinio.ads: Likewise. * libgnat/a-tiinio__128.adb, libgnat/a-timoio.adb: Likewise. * libgnat/a-timoio.ads, libgnat/a-timoio__128.adb: Likewise. * libgnat/a-tiocst.adb, libgnat/a-tiocst.ads: Likewise. * libgnat/a-tirsfi.adb, libgnat/a-tirsfi.ads: Likewise. * libgnat/a-titest.adb, libgnat/a-undesu.adb: Likewise. * libgnat/a-wichha.adb, libgnat/a-wichun.adb: Likewise. * libgnat/a-wichun.ads, libgnat/a-witeio.adb: Likewise. * libgnat/a-witeio.ads, libgnat/a-wrstfi.adb: Likewise. * libgnat/a-wrstfi.ads, libgnat/a-wtcoau.adb: Likewise. * libgnat/a-wtcoau.ads, libgnat/a-wtcoio.adb: Likewise. * libgnat/a-wtcstr.adb, libgnat/a-wtcstr.ads: Likewise. * libgnat/a-wtdeau.adb, libgnat/a-wtdeau.ads: Likewise. * libgnat/a-wtdeio.adb, libgnat/a-wtdeio__128.adb: Likewise. * libgnat/a-wtedit.adb, libgnat/a-wtedit.ads: Likewise. * libgnat/a-wtenau.adb, libgnat/a-wtenau.ads: Likewise. * libgnat/a-wtenio.adb, libgnat/a-wtfiau.adb: Likewise. * libgnat/a-wtfiau.ads, libgnat/a-wtfiio.adb: Likewise. * libgnat/a-wtfiio__128.adb, libgnat/a-wtflau.adb: Likewise. * libgnat/a-wtflau.ads, libgnat/a-wtflio.adb: Likewise. * libgnat/a-wtgeau.adb, libgnat/a-wtgeau.ads: Likewise. * libgnat/a-wtinau.adb, libgnat/a-wtinau.ads: Likewise. * libgnat/a-wtinio.adb, libgnat/a-wtinio__128.adb: Likewise. * libgnat/a-wtmoio.adb, libgnat/a-wtmoio.ads: Likewise. * libgnat/a-wtmoio__128.adb, libgnat/a-wttest.adb: Likewise. * libgnat/a-wwboio.adb, libgnat/a-zchhan.adb: Likewise. * libgnat/a-zchuni.adb, libgnat/a-zchuni.ads: Likewise. * libgnat/a-zrstfi.adb, libgnat/a-zrstfi.ads: Likewise. * libgnat/a-ztcoau.adb, libgnat/a-ztcoio.adb: Likewise. * libgnat/a-ztcstr.adb, libgnat/a-ztcstr.ads: Likewise. * libgnat/a-ztdeau.adb, libgnat/a-ztdeau.ads: Likewise. * libgnat/a-ztdeio.adb, libgnat/a-ztdeio__128.adb: Likewise. * libgnat/a-ztedit.adb, libgnat/a-ztedit.ads: Likewise. * libgnat/a-ztenau.adb, libgnat/a-ztenau.ads: Likewise. * libgnat/a-ztenio.adb, libgnat/a-ztexio.adb: Likewise. * libgnat/a-ztexio.ads, libgnat/a-ztfiau.adb: Likewise. * libgnat/a-ztfiau.ads, libgnat/a-ztfiio.adb: Likewise. * libgnat/a-ztfiio__128.adb, libgnat/a-ztflau.adb: Likewise. * libgnat/a-ztflau.ads, libgnat/a-ztflio.adb: Likewise. * libgnat/a-ztgeau.adb, libgnat/a-ztgeau.ads: Likewise. * libgnat/a-ztinau.adb, libgnat/a-ztinau.ads: Likewise. * libgnat/a-ztinio.adb, libgnat/a-ztinio__128.adb: Likewise. * libgnat/a-ztmoio.adb, libgnat/a-ztmoio__128.adb: Likewise. * libgnat/a-zttest.adb, libgnat/a-zzboio.adb: Likewise. * libgnat/g-allein.ads, libgnat/g-alleve.adb: Likewise. * libgnat/g-alleve.ads, libgnat/g-alleve__hard.adb: Likewise. * libgnat/g-alleve__hard.ads, libgnat/g-altcon.adb: Likewise. * libgnat/g-altcon.ads, libgnat/g-altive.ads: Likewise. * libgnat/g-alveop.adb, libgnat/g-alveop.ads: Likewise. * libgnat/g-alvety.ads, libgnat/g-alvevi.ads: Likewise. * libgnat/g-arrspl.adb, libgnat/g-arrspl.ads, libgnat/g-awk.adb: Likewise. * libgnat/g-awk.ads, libgnat/g-binenv.adb, libgnat/g-binenv.ads: Likewise. * libgnat/g-binsea.adb, libgnat/g-binsea.ads: Likewise. * libgnat/g-brapre.ads, libgnat/g-bubsor.adb: Likewise. * libgnat/g-bubsor.ads, libgnat/g-busora.adb: Likewise. * libgnat/g-busora.ads, libgnat/g-busorg.adb: Likewise. * libgnat/g-busorg.ads, libgnat/g-byorma.adb: Likewise. * libgnat/g-byorma.ads, libgnat/g-bytswa.adb: Likewise. * libgnat/g-bytswa.ads, libgnat/g-calend.adb: Likewise. * libgnat/g-calend.ads, libgnat/g-casuti.adb: Likewise. * libgnat/g-casuti.ads, libgnat/g-catiio.adb: Likewise. * libgnat/g-catiio.ads, libgnat/g-cgi.adb, libgnat/g-cgi.ads: Likewise. * libgnat/g-cgicoo.adb, libgnat/g-cgicoo.ads: Likewise. * libgnat/g-cgideb.adb, libgnat/g-cgideb.ads: Likewise. * libgnat/g-comlin.adb, libgnat/g-comlin.ads: Likewise. * libgnat/g-comver.adb, libgnat/g-comver.ads: Likewise. * libgnat/g-cppexc.adb, libgnat/g-cppexc.ads, libgnat/g-crc32.adb: Likewise. * libgnat/g-crc32.ads, libgnat/g-ctrl_c.adb, libgnat/g-ctrl_c.ads: Likewise. * libgnat/g-curexc.ads, libgnat/g-debpoo.adb: Likewise. * libgnat/g-debpoo.ads, libgnat/g-debuti.adb: Likewise. * libgnat/g-debuti.ads, libgnat/g-decstr.adb: Likewise. * libgnat/g-decstr.ads, libgnat/g-deutst.ads: Likewise. * libgnat/g-diopit.adb, libgnat/g-diopit.ads: Likewise. * libgnat/g-dirope.adb, libgnat/g-dirope.ads: Likewise. * libgnat/g-dynhta.adb, libgnat/g-dynhta.ads: Likewise. * libgnat/g-dyntab.adb, libgnat/g-dyntab.ads: Likewise. * libgnat/g-eacodu.adb, libgnat/g-encstr.adb: Likewise. * libgnat/g-encstr.ads, libgnat/g-enutst.ads: Likewise. * libgnat/g-excact.adb, libgnat/g-excact.ads: Likewise. * libgnat/g-except.ads, libgnat/g-exctra.adb: Likewise. * libgnat/g-exctra.ads, libgnat/g-expect.adb: Likewise. * libgnat/g-expect.ads, libgnat/g-exptty.adb: Likewise. * libgnat/g-exptty.ads, libgnat/g-flocon.ads: Likewise. * libgnat/g-forstr.adb, libgnat/g-forstr.ads: Likewise. * libgnat/g-gfmafu.ads, libgnat/g-graphs.adb: Likewise. * libgnat/g-graphs.ads, libgnat/g-heasor.adb: Likewise. * libgnat/g-heasor.ads, libgnat/g-hesora.adb: Likewise. * libgnat/g-hesora.ads, libgnat/g-hesorg.adb: Likewise. * libgnat/g-hesorg.ads, libgnat/g-htable.adb: Likewise. * libgnat/g-htable.ads, libgnat/g-io.adb, libgnat/g-io.ads: Likewise. * libgnat/g-io_aux.adb, libgnat/g-io_aux.ads, libgnat/g-lists.adb: Likewise. * libgnat/g-lists.ads, libgnat/g-locfil.adb, libgnat/g-locfil.ads: Likewise. * libgnat/g-mbdira.adb, libgnat/g-mbdira.ads: Likewise. * libgnat/g-mbflra.adb, libgnat/g-mbflra.ads, libgnat/g-md5.adb: Likewise. * libgnat/g-md5.ads, libgnat/g-memdum.adb, libgnat/g-memdum.ads: Likewise. * libgnat/g-moreex.adb, libgnat/g-moreex.ads: Likewise. * libgnat/g-os_lib.adb, libgnat/g-os_lib.ads: Likewise. * libgnat/g-pehage.adb, libgnat/g-pehage.ads: Likewise. * libgnat/g-rannum.adb, libgnat/g-rannum.ads: Likewise. * libgnat/g-regexp.adb, libgnat/g-regexp.ads: Likewise. * libgnat/g-regist.adb, libgnat/g-regist.ads: Likewise. * libgnat/g-regpat.adb, libgnat/g-regpat.ads: Likewise. * libgnat/g-rewdat.adb, libgnat/g-rewdat.ads: Likewise. * libgnat/g-sechas.adb, libgnat/g-sechas.ads: Likewise. * libgnat/g-sehamd.adb, libgnat/g-sehamd.ads: Likewise. * libgnat/g-sehash.adb, libgnat/g-sehash.ads: Likewise. * libgnat/g-sercom.adb, libgnat/g-sercom.ads: Likewise. * libgnat/g-sercom__linux.adb, libgnat/g-sercom__mingw.adb: Likewise. * libgnat/g-sestin.ads, libgnat/g-sets.adb, libgnat/g-sets.ads: Likewise. * libgnat/g-sha1.adb, libgnat/g-sha1.ads, libgnat/g-sha224.ads: Likewise. * libgnat/g-sha256.ads, libgnat/g-sha384.ads: Likewise. * libgnat/g-sha512.ads, libgnat/g-shsh32.adb: Likewise. * libgnat/g-shsh32.ads, libgnat/g-shsh64.adb: Likewise. * libgnat/g-shsh64.ads, libgnat/g-shshco.adb: Likewise. * libgnat/g-shshco.ads, libgnat/g-soccon.ads: Likewise. * libgnat/g-socket.adb, libgnat/g-socket.ads: Likewise. * libgnat/g-socket__dummy.adb, libgnat/g-socket__dummy.ads: Likewise. * libgnat/g-socpol.adb, libgnat/g-socpol.ads: Likewise. * libgnat/g-socpol__dummy.adb, libgnat/g-socpol__dummy.ads: Likewise. * libgnat/g-socthi.adb, libgnat/g-socthi.ads: Likewise. * libgnat/g-socthi__dummy.adb, libgnat/g-socthi__dummy.ads: Likewise. * libgnat/g-socthi__mingw.adb, libgnat/g-socthi__mingw.ads: Likewise. * libgnat/g-socthi__vxworks.adb, libgnat/g-socthi__vxworks.ads: Likewise. * libgnat/g-soliop.ads, libgnat/g-soliop__lynxos.ads: Likewise. * libgnat/g-soliop__mingw.ads, libgnat/g-soliop__qnx.ads: Likewise. * libgnat/g-soliop__solaris.ads, libgnat/g-sopowa.adb: Likewise. * libgnat/g-sopowa__mingw.adb, libgnat/g-sopowa__posix.adb: Likewise. * libgnat/g-sothco.adb, libgnat/g-sothco.ads: Likewise. * libgnat/g-sothco__dummy.adb, libgnat/g-sothco__dummy.ads: Likewise. * libgnat/g-souinf.ads, libgnat/g-spchge.adb: Likewise. * libgnat/g-spchge.ads, libgnat/g-speche.adb: Likewise. * libgnat/g-speche.ads, libgnat/g-spipat.adb: Likewise. * libgnat/g-spipat.ads, libgnat/g-spitbo.adb: Likewise. * libgnat/g-spitbo.ads, libgnat/g-spogwa.adb: Likewise. * libgnat/g-spogwa.ads, libgnat/g-sptabo.ads: Likewise. * libgnat/g-sptain.ads, libgnat/g-sptavs.ads, libgnat/g-sse.ads: Likewise. * libgnat/g-ssvety.ads, libgnat/g-sthcso.adb: Likewise. * libgnat/g-stheme.adb, libgnat/g-strhas.ads: Likewise. * libgnat/g-string.adb, libgnat/g-string.ads: Likewise. * libgnat/g-strspl.ads, libgnat/g-stseme.adb: Likewise. * libgnat/g-stsifd__sockets.adb, libgnat/g-table.adb: Likewise. * libgnat/g-table.ads, libgnat/g-tasloc.adb, libgnat/g-tasloc.ads: Likewise. * libgnat/g-timsta.adb, libgnat/g-timsta.ads: Likewise. * libgnat/g-traceb.adb, libgnat/g-traceb.ads: Likewise. * libgnat/g-trasym.adb, libgnat/g-trasym.ads, libgnat/g-tty.adb: Likewise. * libgnat/g-tty.ads, libgnat/g-u3spch.adb, libgnat/g-u3spch.ads: Likewise. * libgnat/g-utf_32.adb, libgnat/g-utf_32.ads: Likewise. * libgnat/g-wispch.adb, libgnat/g-wispch.ads: Likewise. * libgnat/g-wistsp.ads, libgnat/g-zspche.adb: Likewise. * libgnat/g-zspche.ads, libgnat/g-zstspl.ads, libgnat/gnat.ads: Likewise. * libgnat/i-c.adb, libgnat/i-cexten.ads: Likewise. * libgnat/i-cexten__128.ads, libgnat/i-cobol.adb: Likewise. * libgnat/i-cobol.ads, libgnat/i-cpoint.adb, libgnat/i-cpoint.ads: Likewise. * libgnat/i-cstrea.adb, libgnat/i-cstrea.ads: Likewise. * libgnat/i-cstrin.adb, libgnat/i-cstrin.ads: Likewise. * libgnat/i-fortra.adb, libgnat/i-pacdec.adb: Likewise. * libgnat/i-pacdec.ads, libgnat/i-vxwoio.adb: Likewise. * libgnat/i-vxwoio.ads, libgnat/i-vxwork.ads: Likewise. * libgnat/i-vxwork__x86.ads, libgnat/interfac.ads: Likewise. * libgnat/interfac__2020.ads, libgnat/memtrack.adb: Likewise. * libgnat/s-addima.adb, libgnat/s-addima.ads: Likewise. * libgnat/s-addope.adb, libgnat/s-addope.ads: Likewise. * libgnat/s-aoinar.adb, libgnat/s-aoinar.ads: Likewise. * libgnat/s-aomoar.adb, libgnat/s-aomoar.ads: Likewise. * libgnat/s-aotase.adb, libgnat/s-aotase.ads: Likewise. * libgnat/s-aridou.adb, libgnat/s-aridou.ads: Likewise. * libgnat/s-arit128.adb, libgnat/s-arit128.ads: Likewise. * libgnat/s-arit32.adb, libgnat/s-arit32.ads: Likewise. * libgnat/s-arit64.adb, libgnat/s-arit64.ads: Likewise. * libgnat/s-assert.adb, libgnat/s-assert.ads: Likewise. * libgnat/s-atacco.adb, libgnat/s-atacco.ads: Likewise. * libgnat/s-atocou.adb, libgnat/s-atocou.ads: Likewise. * libgnat/s-atocou__builtin.adb, libgnat/s-atoope.ads: Likewise. * libgnat/s-atopex.adb, libgnat/s-atopex.ads: Likewise. * libgnat/s-atopri.adb, libgnat/s-atopri.ads: Likewise. * libgnat/s-auxdec.adb, libgnat/s-auxdec.ads: Likewise. * libgnat/s-bignum.adb, libgnat/s-bignum.ads: Likewise. * libgnat/s-bitfie.ads, libgnat/s-bitops.adb: Likewise. * libgnat/s-bitops.ads, libgnat/s-bituti.adb: Likewise. * libgnat/s-bituti.ads, libgnat/s-boarop.ads: Likewise. * libgnat/s-boustr.adb, libgnat/s-boustr.ads: Likewise. * libgnat/s-bytswa.ads, libgnat/s-carsi8.adb: Likewise. * libgnat/s-carsi8.ads, libgnat/s-carun8.adb: Likewise. * libgnat/s-carun8.ads, libgnat/s-casi128.adb: Likewise. * libgnat/s-casi128.ads, libgnat/s-casi16.adb: Likewise. * libgnat/s-casi16.ads, libgnat/s-casi32.adb: Likewise. * libgnat/s-casi32.ads, libgnat/s-casi64.adb: Likewise. * libgnat/s-casi64.ads, libgnat/s-casuti.adb: Likewise. * libgnat/s-casuti.ads, libgnat/s-caun128.adb: Likewise. * libgnat/s-caun128.ads, libgnat/s-caun16.adb: Likewise. * libgnat/s-caun16.ads, libgnat/s-caun32.adb: Likewise. * libgnat/s-caun32.ads, libgnat/s-caun64.adb: Likewise. * libgnat/s-caun64.ads, libgnat/s-chepoo.ads: Likewise. * libgnat/s-commun.adb, libgnat/s-commun.ads: Likewise. * libgnat/s-conca2.adb, libgnat/s-conca2.ads: Likewise. * libgnat/s-conca3.adb, libgnat/s-conca3.ads: Likewise. * libgnat/s-conca4.adb, libgnat/s-conca4.ads: Likewise. * libgnat/s-conca5.adb, libgnat/s-conca5.ads: Likewise. * libgnat/s-conca6.adb, libgnat/s-conca6.ads: Likewise. * libgnat/s-conca7.adb, libgnat/s-conca7.ads: Likewise. * libgnat/s-conca8.adb, libgnat/s-conca8.ads: Likewise. * libgnat/s-conca9.adb, libgnat/s-conca9.ads, libgnat/s-crc32.adb: Likewise. * libgnat/s-crc32.ads, libgnat/s-crtl.ads, libgnat/s-dfmkio.ads: Likewise. * libgnat/s-dfmopr.ads, libgnat/s-dgmgop.ads: Likewise. * libgnat/s-diflio.adb, libgnat/s-diflio.ads: Likewise. * libgnat/s-diflmk.ads, libgnat/s-digemk.ads: Likewise. * libgnat/s-diinio.adb, libgnat/s-diinio.ads: Likewise. * libgnat/s-dilomk.ads, libgnat/s-dim.ads, libgnat/s-dimkio.ads: Likewise. * libgnat/s-dimmks.ads, libgnat/s-direio.adb: Likewise. * libgnat/s-direio.ads, libgnat/s-dlmkio.ads: Likewise. * libgnat/s-dlmopr.ads, libgnat/s-dmotpr.ads: Likewise. * libgnat/s-dorepr.adb, libgnat/s-dorepr__fma.adb: Likewise. * libgnat/s-dourea.adb, libgnat/s-dourea.ads: Likewise. * libgnat/s-dsaser.ads, libgnat/s-dwalin.adb: Likewise. * libgnat/s-dwalin.ads, libgnat/s-elaall.adb: Likewise. * libgnat/s-elaall.ads, libgnat/s-excdeb.adb: Likewise. * libgnat/s-excdeb.ads, libgnat/s-except.adb: Likewise. * libgnat/s-except.ads, libgnat/s-excmac__arm.adb: Likewise. * libgnat/s-excmac__arm.ads, libgnat/s-excmac__gcc.adb: Likewise. * libgnat/s-excmac__gcc.ads, libgnat/s-exctab.adb: Likewise. * libgnat/s-exctab.ads, libgnat/s-exctra.adb: Likewise. * libgnat/s-exctra.ads, libgnat/s-exnflt.ads: Likewise. * libgnat/s-exnint.adb, libgnat/s-exnint.ads: Likewise. * libgnat/s-exnlfl.ads, libgnat/s-exnllf.adb: Likewise. * libgnat/s-exnllf.ads, libgnat/s-exnlli.adb: Likewise. * libgnat/s-exnlli.ads, libgnat/s-exnllli.ads: Likewise. * libgnat/s-expint.adb, libgnat/s-expint.ads: Likewise. * libgnat/s-explli.adb, libgnat/s-explli.ads: Likewise. * libgnat/s-expllli.ads, libgnat/s-explllu.ads: Likewise. * libgnat/s-expllu.adb, libgnat/s-expllu.ads: Likewise. * libgnat/s-expmod.adb, libgnat/s-expmod.ads: Likewise. * libgnat/s-exponn.adb, libgnat/s-exponn.ads: Likewise. * libgnat/s-exponr.adb, libgnat/s-exponr.ads: Likewise. * libgnat/s-expont.adb, libgnat/s-expont.ads: Likewise. * libgnat/s-exponu.adb, libgnat/s-exponu.ads: Likewise. * libgnat/s-expuns.adb, libgnat/s-expuns.ads: Likewise. * libgnat/s-fatflt.ads, libgnat/s-fatgen.adb: Likewise. * libgnat/s-fatgen.ads, libgnat/s-fatlfl.ads: Likewise. * libgnat/s-fatllf.ads, libgnat/s-ficobl.ads: Likewise. * libgnat/s-filatt.ads, libgnat/s-fileio.adb: Likewise. * libgnat/s-fileio.ads, libgnat/s-finmas.adb: Likewise. * libgnat/s-finmas.ads, libgnat/s-finroo.adb: Likewise. * libgnat/s-finroo.ads, libgnat/s-flocon.adb: Likewise. * libgnat/s-flocon.ads, libgnat/s-flocon__none.adb: Likewise. * libgnat/s-fode128.ads, libgnat/s-fode32.ads: Likewise. * libgnat/s-fode64.ads, libgnat/s-fofi128.ads: Likewise. * libgnat/s-fofi32.ads, libgnat/s-fofi64.ads: Likewise. * libgnat/s-fore_d.adb, libgnat/s-fore_d.ads: Likewise. * libgnat/s-fore_f.adb, libgnat/s-fore_f.ads: Likewise. * libgnat/s-forrea.adb, libgnat/s-forrea.ads: Likewise. * libgnat/s-gearop.adb, libgnat/s-gearop.ads: Likewise. * libgnat/s-genbig.adb, libgnat/s-genbig.ads: Likewise. * libgnat/s-geveop.adb, libgnat/s-geveop.ads: Likewise. * libgnat/s-gloloc.adb, libgnat/s-gloloc.ads: Likewise. * libgnat/s-gloloc__mingw.adb, libgnat/s-htable.adb: Likewise. * libgnat/s-htable.ads, libgnat/s-imageb.adb: Likewise. * libgnat/s-imageb.ads, libgnat/s-imaged.adb: Likewise. * libgnat/s-imaged.ads, libgnat/s-imagef.adb: Likewise. * libgnat/s-imagef.ads, libgnat/s-imagei.adb: Likewise. * libgnat/s-imagei.ads, libgnat/s-imagen.adb: Likewise. * libgnat/s-imagen.ads, libgnat/s-imager.adb: Likewise. * libgnat/s-imager.ads, libgnat/s-imageu.adb: Likewise. * libgnat/s-imageu.ads, libgnat/s-imagew.adb: Likewise. * libgnat/s-imagew.ads, libgnat/s-imde128.ads: Likewise. * libgnat/s-imde32.ads, libgnat/s-imde64.ads: Likewise. * libgnat/s-imen16.ads, libgnat/s-imen32.ads: Likewise. * libgnat/s-imenu8.ads, libgnat/s-imfi128.ads: Likewise. * libgnat/s-imfi32.ads, libgnat/s-imfi64.ads: Likewise. * libgnat/s-imgbiu.adb, libgnat/s-imgbiu.ads: Likewise. * libgnat/s-imgboo.adb, libgnat/s-imgboo.ads: Likewise. * libgnat/s-imgcha.adb, libgnat/s-imgcha.ads: Likewise. * libgnat/s-imgflt.ads, libgnat/s-imgint.adb: Likewise. * libgnat/s-imgint.ads, libgnat/s-imglfl.ads: Likewise. * libgnat/s-imgllb.adb, libgnat/s-imgllb.ads: Likewise. * libgnat/s-imgllf.ads, libgnat/s-imglli.adb: Likewise. * libgnat/s-imglli.ads, libgnat/s-imglllb.ads: Likewise. * libgnat/s-imgllli.ads, libgnat/s-imglllu.ads: Likewise. * libgnat/s-imglllw.ads, libgnat/s-imgllu.adb: Likewise. * libgnat/s-imgllu.ads, libgnat/s-imgllw.adb: Likewise. * libgnat/s-imgllw.ads, libgnat/s-imgrea.adb: Likewise. * libgnat/s-imgrea.ads, libgnat/s-imguns.adb: Likewise. * libgnat/s-imguns.ads, libgnat/s-imguti.adb: Likewise. * libgnat/s-imguti.ads, libgnat/s-imgwch.adb: Likewise. * libgnat/s-imgwch.ads, libgnat/s-imgwiu.adb: Likewise. * libgnat/s-imgwiu.ads, libgnat/s-io.adb, libgnat/s-io.ads: Likewise. * libgnat/s-llflex.ads, libgnat/s-maccod.ads: Likewise. * libgnat/s-mantis.adb, libgnat/s-mantis.ads: Likewise. * libgnat/s-mastop.adb, libgnat/s-mastop.ads: Likewise. * libgnat/s-memcop.ads, libgnat/s-memory.adb: Likewise. * libgnat/s-memory.ads, libgnat/s-mmap.adb, libgnat/s-mmap.ads: Likewise. * libgnat/s-mmauni__long.ads, libgnat/s-mmosin__mingw.adb: Likewise. * libgnat/s-mmosin__mingw.ads, libgnat/s-mmosin__unix.adb: Likewise. * libgnat/s-mmosin__unix.ads, libgnat/s-multip.adb: Likewise. * libgnat/s-objrea.adb, libgnat/s-objrea.ads: Likewise. * libgnat/s-optide.adb, libgnat/s-os_lib.adb: Likewise. * libgnat/s-os_lib.ads, libgnat/s-osprim.ads: Likewise. * libgnat/s-osprim__darwin.adb, libgnat/s-osprim__lynxos.ads: Likewise. * libgnat/s-osprim__mingw.adb, libgnat/s-osprim__posix.adb: Likewise. * libgnat/s-osprim__posix2008.adb, libgnat/s-osprim__rtems.adb: Likewise. * libgnat/s-osprim__solaris.adb, libgnat/s-osprim__unix.adb: Likewise. * libgnat/s-osprim__x32.adb, libgnat/s-pack03.adb: Likewise. * libgnat/s-pack03.ads, libgnat/s-pack05.adb: Likewise. * libgnat/s-pack05.ads, libgnat/s-pack06.adb: Likewise. * libgnat/s-pack06.ads, libgnat/s-pack07.adb: Likewise. * libgnat/s-pack07.ads, libgnat/s-pack09.adb: Likewise. * libgnat/s-pack09.ads, libgnat/s-pack10.adb: Likewise. * libgnat/s-pack10.ads, libgnat/s-pack100.adb: Likewise. * libgnat/s-pack100.ads, libgnat/s-pack101.adb: Likewise. * libgnat/s-pack101.ads, libgnat/s-pack102.adb: Likewise. * libgnat/s-pack102.ads, libgnat/s-pack103.adb: Likewise. * libgnat/s-pack103.ads, libgnat/s-pack104.adb: Likewise. * libgnat/s-pack104.ads, libgnat/s-pack105.adb: Likewise. * libgnat/s-pack105.ads, libgnat/s-pack106.adb: Likewise. * libgnat/s-pack106.ads, libgnat/s-pack107.adb: Likewise. * libgnat/s-pack107.ads, libgnat/s-pack108.adb: Likewise. * libgnat/s-pack108.ads, libgnat/s-pack109.adb: Likewise. * libgnat/s-pack109.ads, libgnat/s-pack11.adb: Likewise. * libgnat/s-pack11.ads, libgnat/s-pack110.adb: Likewise. * libgnat/s-pack110.ads, libgnat/s-pack111.adb: Likewise. * libgnat/s-pack111.ads, libgnat/s-pack112.adb: Likewise. * libgnat/s-pack112.ads, libgnat/s-pack113.adb: Likewise. * libgnat/s-pack113.ads, libgnat/s-pack114.adb: Likewise. * libgnat/s-pack114.ads, libgnat/s-pack115.adb: Likewise. * libgnat/s-pack115.ads, libgnat/s-pack116.adb: Likewise. * libgnat/s-pack116.ads, libgnat/s-pack117.adb: Likewise. * libgnat/s-pack117.ads, libgnat/s-pack118.adb: Likewise. * libgnat/s-pack118.ads, libgnat/s-pack119.adb: Likewise. * libgnat/s-pack119.ads, libgnat/s-pack12.adb: Likewise. * libgnat/s-pack12.ads, libgnat/s-pack120.adb: Likewise. * libgnat/s-pack120.ads, libgnat/s-pack121.adb: Likewise. * libgnat/s-pack121.ads, libgnat/s-pack122.adb: Likewise. * libgnat/s-pack122.ads, libgnat/s-pack123.adb: Likewise. * libgnat/s-pack123.ads, libgnat/s-pack124.adb: Likewise. * libgnat/s-pack124.ads, libgnat/s-pack125.adb: Likewise. * libgnat/s-pack125.ads, libgnat/s-pack126.adb: Likewise. * libgnat/s-pack126.ads, libgnat/s-pack127.adb: Likewise. * libgnat/s-pack127.ads, libgnat/s-pack13.adb: Likewise. * libgnat/s-pack13.ads, libgnat/s-pack14.adb: Likewise. * libgnat/s-pack14.ads, libgnat/s-pack15.adb: Likewise. * libgnat/s-pack15.ads, libgnat/s-pack17.adb: Likewise. * libgnat/s-pack17.ads, libgnat/s-pack18.adb: Likewise. * libgnat/s-pack18.ads, libgnat/s-pack19.adb: Likewise. * libgnat/s-pack19.ads, libgnat/s-pack20.adb: Likewise. * libgnat/s-pack20.ads, libgnat/s-pack21.adb: Likewise. * libgnat/s-pack21.ads, libgnat/s-pack22.adb: Likewise. * libgnat/s-pack22.ads, libgnat/s-pack23.adb: Likewise. * libgnat/s-pack23.ads, libgnat/s-pack24.adb: Likewise. * libgnat/s-pack24.ads, libgnat/s-pack25.adb: Likewise. * libgnat/s-pack25.ads, libgnat/s-pack26.adb: Likewise. * libgnat/s-pack26.ads, libgnat/s-pack27.adb: Likewise. * libgnat/s-pack27.ads, libgnat/s-pack28.adb: Likewise. * libgnat/s-pack28.ads, libgnat/s-pack29.adb: Likewise. * libgnat/s-pack29.ads, libgnat/s-pack30.adb: Likewise. * libgnat/s-pack30.ads, libgnat/s-pack31.adb: Likewise. * libgnat/s-pack31.ads, libgnat/s-pack33.adb: Likewise. * libgnat/s-pack33.ads, libgnat/s-pack34.adb: Likewise. * libgnat/s-pack34.ads, libgnat/s-pack35.adb: Likewise. * libgnat/s-pack35.ads, libgnat/s-pack36.adb: Likewise. * libgnat/s-pack36.ads, libgnat/s-pack37.adb: Likewise. * libgnat/s-pack37.ads, libgnat/s-pack38.adb: Likewise. * libgnat/s-pack38.ads, libgnat/s-pack39.adb: Likewise. * libgnat/s-pack39.ads, libgnat/s-pack40.adb: Likewise. * libgnat/s-pack40.ads, libgnat/s-pack41.adb: Likewise. * libgnat/s-pack41.ads, libgnat/s-pack42.adb: Likewise. * libgnat/s-pack42.ads, libgnat/s-pack43.adb: Likewise. * libgnat/s-pack43.ads, libgnat/s-pack44.adb: Likewise. * libgnat/s-pack44.ads, libgnat/s-pack45.adb: Likewise. * libgnat/s-pack45.ads, libgnat/s-pack46.adb: Likewise. * libgnat/s-pack46.ads, libgnat/s-pack47.adb: Likewise. * libgnat/s-pack47.ads, libgnat/s-pack48.adb: Likewise. * libgnat/s-pack48.ads, libgnat/s-pack49.adb: Likewise. * libgnat/s-pack49.ads, libgnat/s-pack50.adb: Likewise. * libgnat/s-pack50.ads, libgnat/s-pack51.adb: Likewise. * libgnat/s-pack51.ads, libgnat/s-pack52.adb: Likewise. * libgnat/s-pack52.ads, libgnat/s-pack53.adb: Likewise. * libgnat/s-pack53.ads, libgnat/s-pack54.adb: Likewise. * libgnat/s-pack54.ads, libgnat/s-pack55.adb: Likewise. * libgnat/s-pack55.ads, libgnat/s-pack56.adb: Likewise. * libgnat/s-pack56.ads, libgnat/s-pack57.adb: Likewise. * libgnat/s-pack57.ads, libgnat/s-pack58.adb: Likewise. * libgnat/s-pack58.ads, libgnat/s-pack59.adb: Likewise. * libgnat/s-pack59.ads, libgnat/s-pack60.adb: Likewise. * libgnat/s-pack60.ads, libgnat/s-pack61.adb: Likewise. * libgnat/s-pack61.ads, libgnat/s-pack62.adb: Likewise. * libgnat/s-pack62.ads, libgnat/s-pack63.adb: Likewise. * libgnat/s-pack63.ads, libgnat/s-pack65.adb: Likewise. * libgnat/s-pack65.ads, libgnat/s-pack66.adb: Likewise. * libgnat/s-pack66.ads, libgnat/s-pack67.adb: Likewise. * libgnat/s-pack67.ads, libgnat/s-pack68.adb: Likewise. * libgnat/s-pack68.ads, libgnat/s-pack69.adb: Likewise. * libgnat/s-pack69.ads, libgnat/s-pack70.adb: Likewise. * libgnat/s-pack70.ads, libgnat/s-pack71.adb: Likewise. * libgnat/s-pack71.ads, libgnat/s-pack72.adb: Likewise. * libgnat/s-pack72.ads, libgnat/s-pack73.adb: Likewise. * libgnat/s-pack73.ads, libgnat/s-pack74.adb: Likewise. * libgnat/s-pack74.ads, libgnat/s-pack75.adb: Likewise. * libgnat/s-pack75.ads, libgnat/s-pack76.adb: Likewise. * libgnat/s-pack76.ads, libgnat/s-pack77.adb: Likewise. * libgnat/s-pack77.ads, libgnat/s-pack78.adb: Likewise. * libgnat/s-pack78.ads, libgnat/s-pack79.adb: Likewise. * libgnat/s-pack79.ads, libgnat/s-pack80.adb: Likewise. * libgnat/s-pack80.ads, libgnat/s-pack81.adb: Likewise. * libgnat/s-pack81.ads, libgnat/s-pack82.adb: Likewise. * libgnat/s-pack82.ads, libgnat/s-pack83.adb: Likewise. * libgnat/s-pack83.ads, libgnat/s-pack84.adb: Likewise. * libgnat/s-pack84.ads, libgnat/s-pack85.adb: Likewise. * libgnat/s-pack85.ads, libgnat/s-pack86.adb: Likewise. * libgnat/s-pack86.ads, libgnat/s-pack87.adb: Likewise. * libgnat/s-pack87.ads, libgnat/s-pack88.adb: Likewise. * libgnat/s-pack88.ads, libgnat/s-pack89.adb: Likewise. * libgnat/s-pack89.ads, libgnat/s-pack90.adb: Likewise. * libgnat/s-pack90.ads, libgnat/s-pack91.adb: Likewise. * libgnat/s-pack91.ads, libgnat/s-pack92.adb: Likewise. * libgnat/s-pack92.ads, libgnat/s-pack93.adb: Likewise. * libgnat/s-pack93.ads, libgnat/s-pack94.adb: Likewise. * libgnat/s-pack94.ads, libgnat/s-pack95.adb: Likewise. * libgnat/s-pack95.ads, libgnat/s-pack96.adb: Likewise. * libgnat/s-pack96.ads, libgnat/s-pack97.adb: Likewise. * libgnat/s-pack97.ads, libgnat/s-pack98.adb: Likewise. * libgnat/s-pack98.ads, libgnat/s-pack99.adb: Likewise. * libgnat/s-pack99.ads, libgnat/s-parame.adb: Likewise. * libgnat/s-parame.ads, libgnat/s-parame__hpux.ads: Likewise. * libgnat/s-parame__posix2008.ads, libgnat/s-parame__rtems.adb: Likewise. * libgnat/s-parame__vxworks.adb, libgnat/s-parame__vxworks.ads: Likewise. * libgnat/s-parint.adb, libgnat/s-parint.ads: Likewise. * libgnat/s-pehage.adb, libgnat/s-pehage.ads: Likewise. * libgnat/s-pooglo.adb, libgnat/s-pooglo.ads: Likewise. * libgnat/s-pooloc.adb, libgnat/s-pooloc.ads: Likewise. * libgnat/s-poosiz.adb, libgnat/s-poosiz.ads: Likewise. * libgnat/s-powflt.ads, libgnat/s-powlfl.ads: Likewise. * libgnat/s-powllf.ads, libgnat/s-purexc.ads: Likewise. * libgnat/s-putima.adb, libgnat/s-putima.ads: Likewise. * libgnat/s-rannum.adb, libgnat/s-rannum.ads: Likewise. * libgnat/s-ransee.adb, libgnat/s-ransee.ads: Likewise. * libgnat/s-regexp.adb, libgnat/s-regexp.ads: Likewise. * libgnat/s-regpat.adb, libgnat/s-regpat.ads: Likewise. * libgnat/s-resfil.adb, libgnat/s-resfil.ads: Likewise. * libgnat/s-restri.adb, libgnat/s-restri.ads: Likewise. * libgnat/s-retsta.ads, libgnat/s-rident.ads, libgnat/s-rpc.adb: Likewise. * libgnat/s-rpc.ads, libgnat/s-scaval.adb, libgnat/s-scaval.ads: Likewise. * libgnat/s-scaval__128.adb, libgnat/s-scaval__128.ads: Likewise. * libgnat/s-secsta.adb, libgnat/s-secsta.ads: Likewise. * libgnat/s-sequio.adb, libgnat/s-sequio.ads: Likewise. * libgnat/s-shabig.ads, libgnat/s-shasto.adb: Likewise. * libgnat/s-shasto.ads, libgnat/s-soflin.adb: Likewise. * libgnat/s-soflin.ads, libgnat/s-soliin.adb: Likewise. * libgnat/s-soliin.ads, libgnat/s-spark.ads, libgnat/s-spcuop.adb: Likewise. * libgnat/s-spcuop.ads, libgnat/s-spsufi.adb: Likewise. * libgnat/s-spsufi.ads, libgnat/s-stache.adb: Likewise. * libgnat/s-stache.ads, libgnat/s-stalib.adb: Likewise. * libgnat/s-stalib.ads, libgnat/s-statxd.adb: Likewise. * libgnat/s-statxd.ads, libgnat/s-stausa.adb: Likewise. * libgnat/s-stausa.ads, libgnat/s-stchop.adb: Likewise. * libgnat/s-stchop.ads, libgnat/s-stchop__limit.ads: Likewise. * libgnat/s-stchop__vxworks.adb, libgnat/s-stoele.adb: Likewise. * libgnat/s-stoele.ads, libgnat/s-stopoo.adb: Likewise. * libgnat/s-stopoo.ads, libgnat/s-stposu.adb: Likewise. * libgnat/s-stposu.ads, libgnat/s-stratt.adb: Likewise. * libgnat/s-stratt.ads, libgnat/s-strcom.adb: Likewise. * libgnat/s-strcom.ads, libgnat/s-strhas.adb: Likewise. * libgnat/s-strhas.ads, libgnat/s-string.adb: Likewise. * libgnat/s-string.ads, libgnat/s-ststop.adb: Likewise. * libgnat/s-ststop.ads, libgnat/s-tasloc.adb: Likewise. * libgnat/s-tasloc.ads, libgnat/s-traceb.adb: Likewise. * libgnat/s-traceb.ads, libgnat/s-traceb__hpux.adb: Likewise. * libgnat/s-traceb__mastop.adb, libgnat/s-traent.adb: Likewise. * libgnat/s-traent.ads, libgnat/s-trasym.adb: Likewise. * libgnat/s-trasym.ads, libgnat/s-trasym__dwarf.adb: Likewise. * libgnat/s-tsmona.adb, libgnat/s-tsmona__linux.adb: Likewise. * libgnat/s-tsmona__mingw.adb, libgnat/s-unstyp.ads: Likewise. * libgnat/s-utf_32.adb, libgnat/s-utf_32.ads: Likewise. * libgnat/s-vade128.ads, libgnat/s-vade32.ads: Likewise. * libgnat/s-vade64.ads, libgnat/s-vaen16.ads: Likewise. * libgnat/s-vaen32.ads, libgnat/s-vaenu8.ads: Likewise. * libgnat/s-vafi128.ads, libgnat/s-vafi32.ads: Likewise. * libgnat/s-vafi64.ads, libgnat/s-vaispe.adb: Likewise. * libgnat/s-vaispe.ads, libgnat/s-valboo.adb: Likewise. * libgnat/s-valboo.ads, libgnat/s-valcha.adb: Likewise. * libgnat/s-valcha.ads, libgnat/s-valflt.ads: Likewise. * libgnat/s-valint.adb, libgnat/s-valint.ads: Likewise. * libgnat/s-vallfl.ads, libgnat/s-valllf.ads: Likewise. * libgnat/s-vallli.adb, libgnat/s-vallli.ads: Likewise. * libgnat/s-valllli.ads, libgnat/s-vallllu.ads: Likewise. * libgnat/s-valllu.adb, libgnat/s-valllu.ads: Likewise. * libgnat/s-valrea.adb, libgnat/s-valrea.ads: Likewise. * libgnat/s-valued.adb, libgnat/s-valued.ads: Likewise. * libgnat/s-valuef.adb, libgnat/s-valuef.ads: Likewise. * libgnat/s-valuei.adb, libgnat/s-valuei.ads: Likewise. * libgnat/s-valuen.adb, libgnat/s-valuen.ads: Likewise. * libgnat/s-valuer.adb, libgnat/s-valuer.ads: Likewise. * libgnat/s-valueu.adb, libgnat/s-valueu.ads: Likewise. * libgnat/s-valuns.adb, libgnat/s-valuns.ads: Likewise. * libgnat/s-valuti.adb, libgnat/s-valuti.ads: Likewise. * libgnat/s-valwch.adb, libgnat/s-valwch.ads: Likewise. * libgnat/s-vauspe.adb, libgnat/s-vauspe.ads: Likewise. * libgnat/s-veboop.adb, libgnat/s-veboop.ads: Likewise. * libgnat/s-vector.ads, libgnat/s-vercon.adb: Likewise. * libgnat/s-vercon.ads, libgnat/s-wchcnv.adb: Likewise. * libgnat/s-wchcnv.ads, libgnat/s-wchcon.adb: Likewise. * libgnat/s-wchcon.ads, libgnat/s-wchjis.adb: Likewise. * libgnat/s-wchjis.ads, libgnat/s-wchstw.adb: Likewise. * libgnat/s-wchstw.ads, libgnat/s-wchwts.adb: Likewise. * libgnat/s-wchwts.ads, libgnat/s-widboo.adb: Likewise. * libgnat/s-widboo.ads, libgnat/s-widcha.adb: Likewise. * libgnat/s-widcha.ads, libgnat/s-widenu.adb: Likewise. * libgnat/s-widenu.ads, libgnat/s-widint.ads: Likewise. * libgnat/s-widlli.adb, libgnat/s-widlli.ads: Likewise. * libgnat/s-widllli.ads, libgnat/s-widlllu.ads: Likewise. * libgnat/s-widllu.adb, libgnat/s-widllu.ads: Likewise. * libgnat/s-widthi.adb, libgnat/s-widthi.ads: Likewise. * libgnat/s-widthu.adb, libgnat/s-widthu.ads: Likewise. * libgnat/s-widuns.ads, libgnat/s-widwch.adb: Likewise. * libgnat/s-widwch.ads, libgnat/s-win32.ads, libgnat/s-winext.ads: Likewise. * libgnat/s-wwdcha.adb, libgnat/s-wwdcha.ads: Likewise. * libgnat/s-wwdenu.adb, libgnat/s-wwdenu.ads: Likewise. * libgnat/s-wwdwch.adb, libgnat/s-wwdwch.ads: Likewise. * libgnat/system-aix.ads, libgnat/system-darwin-arm.ads: Likewise. * libgnat/system-darwin-ppc.ads, libgnat/system-darwin-x86.ads: Likewise. * libgnat/system-djgpp.ads, libgnat/system-dragonfly-x86_64.ads: Likewise. * libgnat/system-freebsd.ads, libgnat/system-hpux-ia64.ads: Likewise. * libgnat/system-hpux.ads, libgnat/system-linux-alpha.ads: Likewise. * libgnat/system-linux-arm.ads, libgnat/system-linux-hppa.ads: Likewise. * libgnat/system-linux-ia64.ads, libgnat/system-linux-m68k.ads: Likewise. * libgnat/system-linux-mips.ads, libgnat/system-linux-ppc.ads: Likewise. * libgnat/system-linux-riscv.ads, libgnat/system-linux-s390.ads: Likewise. * libgnat/system-linux-sh4.ads, libgnat/system-linux-sparc.ads: Likewise. * libgnat/system-linux-x86.ads, libgnat/system-lynxos178-ppc.ads: Likewise. * libgnat/system-lynxos178-x86.ads, libgnat/system-mingw.ads: Likewise. * libgnat/system-qnx-arm.ads, libgnat/system-rtems.ads: Likewise. * libgnat/system-solaris-sparc.ads: Likewise. * libgnat/system-solaris-x86.ads: Likewise. * libgnat/system-vxworks-ppc-kernel.ads: Likewise. * libgnat/system-vxworks-ppc-rtp-smp.ads: Likewise. * libgnat/system-vxworks-ppc-rtp.ads: Likewise. * libgnat/system-vxworks7-aarch64-rtp-smp.ads: Likewise. * libgnat/system-vxworks7-aarch64.ads: Likewise. * libgnat/system-vxworks7-arm-rtp-smp.ads: Likewise. * libgnat/system-vxworks7-arm.ads: Likewise. * libgnat/system-vxworks7-ppc-kernel.ads: Likewise. * libgnat/system-vxworks7-ppc-rtp-smp.ads: Likewise. * libgnat/system-vxworks7-ppc64-kernel.ads: Likewise. * libgnat/system-vxworks7-ppc64-rtp-smp.ads: Likewise. * libgnat/system-vxworks7-x86-kernel.ads: Likewise. * libgnat/system-vxworks7-x86-rtp-smp.ads: Likewise. * libgnat/system-vxworks7-x86_64-kernel.ads: Likewise. * libgnat/system-vxworks7-x86_64-rtp-smp.ads, link.c, live.adb: Likewise. * live.ads, locales.c, make.adb, make.ads, make_util.adb: Likewise. * make_util.ads, makeusg.adb, makeusg.ads, mdll-fil.adb: Likewise. * mdll-fil.ads, mdll-utl.adb, mdll-utl.ads, mdll.adb, mdll.ads: Likewise. * mingw32.h, mkdir.c, namet-sp.adb, namet-sp.ads, namet.adb: Likewise. * namet.ads, namet.h, nlists.adb, nlists.ads, nlists.h, opt.adb: Likewise. * opt.ads, osint-b.adb, osint-b.ads, osint-c.adb, osint-c.ads: Likewise. * osint-l.adb, osint-l.ads, osint-m.adb, osint-m.ads, osint.adb: Likewise. * osint.ads, output.adb, output.ads, par-ch10.adb, par-ch11.adb: Likewise. * par-ch12.adb, par-ch13.adb, par-ch2.adb, par-ch3.adb: Likewise. * par-ch4.adb, par-ch5.adb, par-ch6.adb, par-ch7.adb, par-ch8.adb: Likewise. * par-ch9.adb, par-endh.adb, par-labl.adb, par-load.adb: Likewise. * par-prag.adb, par-sync.adb, par-tchk.adb, par-util.adb, par.adb: Likewise. * par.ads, par_sco.adb, par_sco.ads: Likewise. * pprint.adb, pprint.ads, prep.adb, prep.ads: Likewise. * prepcomp.adb, prepcomp.ads, put_scos.adb, put_scos.ads: Likewise. * raise-gcc.c, raise.c, raise.h, repinfo-input.adb: Likewise. * repinfo-input.ads, repinfo.adb, repinfo.ads, repinfo.h: Likewise. * restrict.adb, restrict.ads, rident.ads, rtfinal.c, rtinit.c: Likewise. * rtsfind.adb, rtsfind.ads, runtime.h, s-oscons-tmplt.c: Likewise. * scans.adb, scans.ads, scil_ll.adb, scil_ll.ads, scn.adb: Likewise. * scn.ads, scng.adb, scng.ads, scos.adb, scos.ads: Likewise. * scos.h, sdefault.ads, seh_init.c, sem.adb, sem.ads: Likewise. * sem_aggr.adb, sem_aggr.ads, sem_attr.adb, sem_attr.ads: Likewise. * sem_aux.adb, sem_aux.ads, sem_case.adb, sem_case.ads: Likewise. * sem_cat.adb, sem_cat.ads, sem_ch10.adb, sem_ch10.ads: Likewise. * sem_ch11.adb, sem_ch11.ads, sem_ch12.adb, sem_ch12.ads: Likewise. * sem_ch13.adb, sem_ch13.ads, sem_ch2.adb, sem_ch2.ads: Likewise. * sem_ch3.adb, sem_ch3.ads, sem_ch4.adb, sem_ch4.ads, sem_ch5.adb: Likewise. * sem_ch5.ads, sem_ch6.adb, sem_ch6.ads, sem_ch7.adb, sem_ch7.ads: Likewise. * sem_ch8.adb, sem_ch8.ads, sem_ch9.adb, sem_ch9.ads, sem_dim.adb: Likewise. * sem_dim.ads, sem_disp.adb, sem_disp.ads, sem_dist.adb: Likewise. * sem_dist.ads, sem_elab.adb, sem_elab.ads, sem_elim.adb: Likewise. * sem_elim.ads, sem_eval.adb, sem_eval.ads, sem_intr.adb: Likewise. * sem_intr.ads, sem_mech.adb, sem_mech.ads, sem_prag.adb: Likewise. * sem_prag.ads, sem_res.adb, sem_res.ads, sem_scil.adb: Likewise. * sem_scil.ads, sem_smem.adb, sem_smem.ads, sem_type.adb: Likewise. * sem_type.ads, sem_util.adb, sem_util.ads, sem_warn.adb: Likewise. * sem_warn.ads, set_targ.adb, set_targ.ads, sfn_scan.adb: Likewise. * sfn_scan.ads, sigtramp-arm-qnx.c, sigtramp-armdroid.c: Likewise. * sigtramp-ios.c, sigtramp-qnx.c: Likewise. * sigtramp-vxworks-target.h, sigtramp-vxworks.c, sigtramp.h: Likewise. * sinfo-cn.adb, sinfo-cn.ads, sinfo-utils.adb, sinfo-utils.ads: Likewise. * sinfo.adb, sinfo.ads, sinput-c.adb, sinput-c.ads, sinput-d.adb: Likewise. * sinput-d.ads, sinput-l.adb, sinput-l.ads, sinput.adb: Likewise. * sinput.ads, socket.c, spark_xrefs.adb, spark_xrefs.ads: Likewise. * sprint.adb, sprint.ads, stand.ads: Likewise. * stringt.adb, stringt.ads, stringt.h, strub.adb, strub.ads: Likewise. * style.adb, style.ads, styleg.adb, styleg.ads, stylesw.adb: Likewise. * stylesw.ads, switch-b.adb, switch-b.ads, switch-c.adb: Likewise. * switch-c.ads, switch-m.adb, switch-m.ads, switch.adb: Likewise. * switch.ads, sysdep.c, table.adb: Likewise. * table.ads, targext.c, targparm.adb, targparm.ads, tbuild.adb: Likewise. * tbuild.ads, tempdir.adb, tempdir.ads, terminals.c, tracebak.c: Likewise. * treepr.adb, treepr.ads, ttypes.ads, types.adb, types.ads: Likewise. * types.h, uintp.adb, uintp.ads, uintp.h, uname.adb, uname.ads: Likewise. * urealp.adb, urealp.ads, urealp.h, usage.adb, usage.ads: Likewise. * validsw.adb, validsw.ads, vast.adb, vast.ads, warnsw.adb: Likewise. * warnsw.ads, widechar.adb, widechar.ads, xoscons.adb: Likewise. * xsnamest.adb, xutil.adb, xutil.ads, gnatvsn.adb: Likewise. * gnatvsn.ads (Current_Year): Likewise and bump to 2023.
2022-12-06ada: Elide the copy in extended returns for nonlimited by-reference typesEric Botcazou1-135/+0
This implements elision of the copy operation for extended return statements in the case of nonlimited by-reference types (the copy operation is already elided for limited types by the front-end and nonlimited non-by-reference types by the code generator), which comprise controlled and tagged types. The implementation partly reuses the machinery implemented for limited types (the build-in-place machinery) to allocate the return object directly on the primary or the secondary stack, depending on whether the result type of the function is constrained or not. This requires further special-casing for the allocators generated by this machinery as well as an adjustment to the implementation of a specific case of string concatenation. gcc/ada/ * einfo.ads (Actual_Subtype): Document additional usage. * exp_aggr.adb (Expand_Array_Aggregate): Replace test on Is_Build_In_Place_Return_Object with Is_Special_Return_Object. * exp_ch3.adb (Expand_N_Object_Declaration): Factor out parts of the processing done for build-in-place return objects and reuse them to implement a similar processing for specific return objects. * exp_ch4.adb (Expand_Allocator_Expression): Do not generate a tag assignment or an adjustment if the allocator was made for a special return object. (Expand_Concatenate): If the result is allocated on the secondary stack, use an unconstrained allocation. * exp_ch6.ads (Apply_CW_Accessibility_Check): New declaration. (Is_By_Reference_Return_Object): Likewise. (Is_Secondary_Stack_Return_Object): Likewise. (Is_Special_Return_Object): Likewise. * exp_ch6.adb (Expand_Ctrl_Function_Call): Do not bail out for the expression in the declaration of a special return object. (Expand_N_Extended_Return_Statement): Add missing guard and move the class-wide accessibility check to Expand_N_Object_Declaration. (Expand_Simple_Function_Return): Delete obsolete commentary. Skip the special processing for types that require finalization or are returned on the secondary stack if the return originally comes from an extended return statement. Add missing Constant_Present. (Is_By_Reference_Return_Object): New predicate. (Is_Secondary_Stack_Return_Object): Likewise. (Is_Special_Return_Object): Likewise. * exp_util.adb (Is_Related_To_Func_Return): Also return true if the parent of the expression is the renaming declaration generated for the expansion of a return object. * gen_il-fields.ads (Opt_Field_Enum): Replace Alloc_For_BIP_Return with For_Special_Return_Object. * gen_il-gen-gen_nodes.adb (N_Allocator): Likewise. * gen_il-internals.adb (Image): Remove Alloc_For_BIP_Return. * sem_ch3.adb (Check_Return_Subtype_Indication): New procedure moved from sem_ch6.adb. (Analyze_Object_Declaration): Call it on a return object. * sem_ch4.adb: Add with and use clauses for Rtsfind. (Analyze_Allocator): Test For_Special_Return_Object to skip checks for allocators made for special return objects. Do not report restriction violations for the return stack pool. * sem_ch5.adb (Analyze_Assignment.Set_Assignment_Type): Return the Actual_Subtype for return objects that live on the secondary stack. * sem_ch6.adb (Check_Return_Subtype_Indication): Move procedure to sem_ch3.adb. (Analyze_Function_Return): Do not call above procedure. * sem_res.adb (Resolve_Allocator): Replace Alloc_For_BIP_Return with For_Special_Return_Object. * sinfo.ads: Likewise. * treepr.adb (Image): Remove Alloc_For_BIP_Return. * gcc-interface/trans.cc (gnat_to_gnu): Do not convert to the result type in the unconstrained array type case if the parent is a simple return statement.
2022-12-06ada: Accessibility code reorganization and bug fixesJustin Squirek1-516/+3
This patch performs a large reorganization of accessibility related sources, and also corrects some latent issues with accessibility checks - namely the calculation of accessibility levels for expanded iterators and type conversions. gcc/ada/ * accessibility.adb, accessibility.ads (Accessibility_Message): Moved from sem_attr. (Apply_Accessibility_Check): Moved from checks. (Apply_Accessibility_Check_For_Allocator): Moved from exp_ch4 and renamed (Check_Return_Construct_Accessibility): Moved from sem_ch6. (Innermost_Master_Scope_Depth): Moved from sem_util. Add condition to detect expanded iterators. (Prefix_With_Safe_Accessibility_Level): Moved from sem_attr. (Static_Accessibility_Level): Moved from sem_util. (Has_Unconstrained_Access_Discriminants): Likewise. (Has_Anonymous_Access_Discriminant): Likewise. (Is_Anonymous_Access_Actual): Likewise. (Is_Special_Aliased_Formal_Access): Likewise. (Needs_Result_Accessibility_Level): Likewise. (Subprogram_Access_Level): Likewise. (Type_Access_Level): Likewise. (Deepest_Type_Access_Level): Likewise. (Effective_Extra_Accessibility): Likewise. (Get_Dynamic_Accessibility): Likewise. (Has_Access_Values): Likewise. (Accessibility_Level): Likewise. * exp_attr.adb (Access_Cases): Obtain the proper enclosing object which applies to a given 'Access by looking through type conversions. * exp_ch4.adb (Apply_Accessibility_Check): Moved to accessibility. * exp_ch5.adb: Likewise. * exp_ch6.adb: Likewise. * exp_ch9.adb: Likewise. * exp_disp.adb: Likewise. * gen_il-fields.ads: Add new flag Comes_From_Iterator. * gen_il-gen-gen_nodes.adb: Add new flag Comes_From_Iterator for N_Object_Renaming_Declaration. * sem_ch5.adb (Analyze_Iterator_Specification): Mark object renamings resulting from iterator expansion with the new flag Comes_From_Iterator. * sem_aggr.adb (Resolve_Container_Aggregate): Refine test. * sem_ch13.adb: Add dependence on the accessibility package. * sem_ch3.adb: Likewise. * sem_ch4.adb: Likewise. * sem_ch9.adb: Likewise. * sem_res.adb: Likewise. * sem_warn.adb: Likewise. * exp_ch3.adb: Likewise. * sem_attr.adb (Accessibility_Message): Moved to accessibility. (Prefix_With_Safe_Accessibility_Level): Likewise. * checks.adb, checks.ads (Apply_Accessibility_Check): Likewise. * sem_ch6.adb (Check_Return_Construct_Accessibility): Likewise. * sem_util.adb, sem_util.ads (Accessibility_Level): Likewise. (Deepest_Type_Access_Level): Likewise. (Effective_Extra_Accessibility): Likewise. (Get_Dynamic_Accessibility): Likewise. (Has_Access_Values): Likewise. (Has_Anonymous_Access_Discriminant): Likewise. (Static_Accessibility_Level): Likewise. (Has_Unconstrained_Access_Discriminants): Likewise. (Is_Anonymous_Access_Actual): Likewise. (Is_Special_Aliased_Formal_Access): Likewise. (Needs_Result_Accessibility_Level): Likewise. (Subprogram_Access_Level): Likewise. (Type_Access_Level): Likewise. * sinfo.ads: Document new flag Comes_From_Iterator. * gcc-interface/Make-lang.in: Add entry for new Accessibility package.