2024-06-14 Eric Botcazou * gcc-interface/Makefile.in (tmake_file): Remove all references. 2024-06-14 Eric Botcazou * gcc-interface/decl.cc: Include function.h. (gnat_to_gnu_param): Minor comment tweaks. (gnat_to_gnu_subprog_type): Take into account the default for the computation of the return mechanism. Give a warning if a by-copy specified mechanism cannot be honored. 2024-06-14 Yannick Moy * gcc-interface/trans.cc (elaborate_all_entities_for_package) (process_freeze_entity): Skip entities of kind E_Subprogram_Body. 2024-06-14 Eric Botcazou PR ada/109817 * gcc-interface/trans.cc (maybe_make_gnu_thunk): Create an alias instead of a null thunk. 2024-06-14 Marc Poulhiès * gcc-interface/decl.cc (gnat_to_gnu_entity): Typo fix. (gnat_to_gnu_component_type): Indent fix. * gcc-interface/gigi.h (build_call_alloc_dealloc): Typo fix. * gcc-interface/utils.cc (make_dummy_type): Typo fix. * gcc-interface/utils2.cc (gnat_protect_expr): Indent fix. 2024-06-14 Eric Botcazou * aspects.ads (Aspect_Id): Alphabetize, remove the GNAT tag from Default_Initial_Condition and Object_Size, move No_Controlled_Parts and No_Task_Parts to boolean subclass. (Nonoverridable_Aspect_Id): Add missing Ada 2022 aspects. (Implementation_Defined_Aspect): Add all missing aspects, remove Max_Entry_Queue_Length and Object_Size (Aspect_Argument): Remove specific entries for No_Controlled_Parts and No_Task_Parts, list boolean aspects last. (Is_Representation_Aspect ): Move boolean aspects last. (Aspect_Names): Alphabetize. * sem_ch13.adb (Analyze_Aspect_Disable_Controlled): Adjust. (Analyze_Aspect_Specifications): Move around processing for No_Controlled_Parts and No_Task_Parts. (Check_Aspect_At_Freeze_Point): Remove specific entries for No_Controlled_Parts and No_Task_Parts 2024-06-14 Steve Baird * exp_attr.adb (Expand_Loop_Entry_Attribute): Ensure that Etype of the saved expression is set correctly. 2024-06-14 Jerome Guitton * sysdep.c (S_dosFsLib_FILE_NOT_FOUND, S_nfsLib_NFSERR_NOENT): New macros, falback to ENOENT when not already defined. (__gnat_is_file_not_found_error): Use these new macros to remove tests against VxWorks flavors. 2024-06-14 Eric Botcazou * snames.ads-tmpl (Name_Present): Move to Repinfo section. 2024-06-14 Justin Squirek * 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-14 Justin Squirek * accessibility.adb: (Accessibility_Level): Replace call Get_Full_View with call to Full_View since Get_Full_View only works with incomplete types. 2024-06-14 Eric Botcazou * aspects.ads (Operational_Aspect): Alphabetize. * sem_ch13.ads (Analyze_Aspects_At_Freeze_Point): Fix description. * sem_ch13.adb (Analyze_Aspects_At_Freeze_Point) : Give the error for array types here instead of... (Analyze_Aspect_Specifications) : Adjust comment. (Check_Aspect_At_Freeze_Point) : ...here. 2024-06-14 Javier Miranda * exp_aggr.adb (Must_Slide): Add missing support for multidimensional arrays. 2024-06-14 Eric Botcazou * freeze.adb (Freeze_All): Call Check_Aspects_At_End_Of_Declarations to perform the visibility check for aspects. * sem_ch13.ads (Check_Aspects_At_End_Of_Declarations): Declare. (Check_Aspect_At_Freeze_Point): Move to... (Check_Aspect_At_End_Of_Declarations): Move to... * sem_ch13.adb (Check_Aspect_At_Freeze_Point): ...here. (Check_Aspect_At_End_Of_Declarations): ...here. (Analyze_Aspect_Specifications): Remove peculiar processing for Stable_Properties, Designated_Storage_Model, Storage_Model_Type and Aggregate. Move that of Local_Restrictions around. Reset Aitem at the beginning of the loop for each aspect. (Check_Aspects_At_End_Of_Declarations): New procedure. 2024-06-14 Justin Squirek * sem_attr.adb: (Analyze_Attribute): Add check for dereference. 2024-06-14 Eric Botcazou * snames.ads-tmpl (Name_Storage_Model): Delete. 2024-06-14 Alexandre Oliva Revert: 2024-06-12 Alexandre Oliva * gcc-interface/decl.cc (gnat_to_gnu_field): Use unpacked type as the debug type for packed fields. 2024-06-13 Steve Baird * exp_util.adb (Insert_Actions): Code was relying on an incorrect assumption that an N_Itype_Reference cannot occur in declaration list or a statement list. Fix the code to handle this case. 2024-06-13 Viljar Indus * debug.adb: Remove mentions of -gnatdJ. * errout.adb: Remove printing subprogram names to JSON. * erroutc.adb: Remove printing subprogram names in messages. * erroutc.ads: Remove Node and Subprogram_Name_Ptr used for -gnatdJ. * errutil.adb: Remove Node used for -gnatdJ * gnat1drv.adb: Remove references of -gnatdJ and Include_Subprgram_In_Messages. * opt.ads: Remove Include_Subprgram_In_Messages * par-util.adb: Remove behavior related to Include_Subprgram_In_Messages. * sem_util.adb: Remove Subprogram_Name used for -gnatdJ 2024-06-13 Eric Botcazou * exp_ch7.adb (Attach_Object_To_Master_Node): Fix formatting. (Build_Finalizer.Process_Object_Declaration): Synthesize a local Finalize_Address primitive if the object's subtype is an array that has a constrained first subtype and is not this first subtype. * exp_util.adb (Find_Last_Init): Get again to the base type in the indirect case. 2024-06-13 Eric Botcazou * doc/gnat_rm/implementation_defined_attributes.rst (Iterable): Delete entry. * gnat_rm.texi: Regenerate. * gnat_ugn.texi: Regenerate. 2024-06-13 Yannick Moy * sem_util.adb (Check_Ambiguous_Aggregate): Fix test. 2024-06-13 Javier Miranda * freeze.ads (Check_Condition_Entities): Complete documentation. * freeze.adb (Check_Inherited_Conditions): Extend its functionality to build two kind of wrappers: the existing LSP wrappers, and wrappers required to handle postconditions of interface primitives implemented by inherited primitives. (Build_Inherited_Condition_Pragmas): Rename formal. (Freeze_Record_Type): For derived tagged types, move call to Check_Inherited_Conditions to subprogram Freeze_Entity_Checks; done to improve the performance of Check_Inherited_Conditions since it can rely on the internal entities that link interface primitives with tagged type primitives that implement them. (Check_Interface_Primitives_Strub_Mode): New subprogram. * sem_ch13.adb (Freeze_Entity_Checks): Call Check_Inherited_Conditions. Call Check_Inherited_Conditions with derived interface types to check strub mode compatibility of their primitives. * sem_disp.adb (Check_Dispatching_Operation): Adjust assertion to accept wrappers of interface primitives that have classwide postconditions. * exp_disp.adb (Write_DT): Adding text to identify wrappers. 2024-06-13 Viljar Indus * sem_res.adb (Resolve_Call): add warning insertion character into the info message. 2024-06-13 Steve Baird * sem_util.adb (New_Copy_Tree.Visit_Entity): Delete code that prevented copying some entities. 2024-06-13 Bob Duff * sem_ch12.adb (Check_Fixed_Point_Actual): Minor rewording; it seems more proper to say "operator" rather than "operation". (Matching_Actual): Give an error for <> in positional notation. This is a syntax error. Disable this for now. (Analyze_Associations): Copy the use clause in all cases. The "mustn't recopy" comment seems wrong, because New_Copy_Tree preserves Slocs. * libgnat/a-ticoau.ads: Fix violation of new postion-box error. * libgnat/a-wtcoau.ads: Likewise. * libgnat/a-ztcoau.ads: Likewise. 2024-06-13 Viljar Indus * par-labl.adb (Rewrite_As_Loop): Remove info message 2024-06-13 Viljar Indus * par-ch7.adb: Remove warning characters from info message * par-endh.adb: Remove warning characters from info message * sem_res.adb: Remove warning characters from info message 2024-06-13 Viljar Indus * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): change the info message to a continuation message. 2024-06-13 Viljar Indus * inline.adb (Cannot_Inline): Simplify string handling logic. 2024-06-13 Yannick Moy * 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-13 Javier Miranda * sem_ch4.adb (Traverse_Interfaces): Add missing support for climbing to parents of interface types. 2024-06-13 Steve Baird * doc/gnat_rm/implementation_defined_attributes.rst: Update Super attribute documentation. * gnat_rm.texi: Regenerate. * gnat_ugn.texi: Regenerate. 2024-06-13 Ronan Desplanques * exp_ch7.adb (Build_Cleanup_Statements): Adapt to changes made to Build_Protected_Subprogram_Call_Cleanup. * exp_ch9.adb (Make_Unlock_Statement, Wrap_Unprotected_Call): New functions. (Build_Protected_Subprogram_Body): Fix resource management in generated code. (Build_Protected_Subprogram_Call_Cleanup): Make use of newly introduced Make_Unlock_Statement. 2024-06-13 Eric Botcazou PR ada/114710 * exp_util.adb (Find_Renamed_Object): Recurse for any renaming. 2024-06-13 Piotr Trojanek * sem_prag.adb (Check_Mode_Restriction_In_Enclosing_Context): Iterate over encapsulating abstract states. 2024-06-13 Eric Botcazou * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add s-imad32$(objext), s-imad64$(objext) and s-imagea$(objext). * exp_atag.ads (Build_Set_Size_Function): Replace Tag_Node parameter with Typ parameter. * exp_atag.adb: Add clauses for Sinfo.Utils. (Build_Set_Size_Function): Retrieve the TSD object statically. * exp_disp.adb: Add clauses for Ttypes. (Make_DT): Call Address_Image{32,64] instead of Address_Image. (Register_Primitive): Pass Tag_Typ to Build_Set_Size_Function. * rtsfind.ads (RTU_Id): Remove System_Address_Image and add System_Img_Address_{32;64}. (RE_Id): Remove entry for RE_Address_Image and add entries for RE_Address_Image{32,64}. * rtsfind.adb (System_Descendant): Adjust to above changes. * libgnat/a-tags.ads (Address_Array): Suppress initialization. * libgnat/s-addima.adb (System.Address_Image): Call the appropriate routine based on the address size. * libgnat/s-imad32.ads: New file. * libgnat/s-imad64.ads: Likewise. * libgnat/s-imagea.ads: Likewise. * libgnat/s-imagea.adb: Likewise. * gcc-interface/Make-lang.in (GNAT_ADA_OBJS) [$(STAGE1)=False]: Add ada/libgnat/s-imad32.o and ada/libgnat/s-imad64.o. 2024-06-13 Yannick Moy * inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Do not inline when constant with address clause is found. 2024-06-13 Ronan Desplanques * gnatlink.adb (Gnatlink): Fix incorrect lower bound assumption. (Is_Prefix): New function. 2024-06-13 Steve Baird * sem_ch7.adb (Requires_Completion_In_Body): Modify the Comes_From_Source test so that the implicit declaration of an inherited subprogram does not cause an incorrect result of True. 2024-06-13 Richard Kenner * exp_ch6.adb (Expand_Ctrl_Function_Call): Inline if -gnatn in CCG mode even if -O0. 2024-06-13 Eric Botcazou PR ada/114710 * exp_util.adb (Find_Renamed_Object): Recurse if the renamed object is itself a renaming. 2024-06-13 Javier Miranda * sem_attr.adb (Analyze_Attribute): Enhance support for using 'Old with a prefix that references an overloaded function that has no parameters; add missing support for the use of 'Old within qualified expressions. * sem_util.ads (Preanalyze_And_Resolve_Without_Errors): New subprogram. * sem_util.adb (Preanalyze_And_Resolve_Without_Errors): New subprogram. 2024-06-13 Piotr Trojanek * layout.adb (Layout_Type): Use high-level wrapper routine. * sem_ch13.adb (Inherit_Delayed_Rep_Aspects): Likewise. * sem_ch3.adb (Analyze_Object_Declaration): Likewise. 2024-06-13 Eric Botcazou * libgnat/s-tsmona__linux.adb (Get): Move down descriptive comment. * libgnat/s-tsmona__mingw.adb: Add with clause and use clause for System.Storage_Elements. (Get): Pass GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT in the call to GetModuleHandleEx and remove the subsequent call to FreeLibrary. Upon success, set Load_Addr to the base address of the module. * libgnat/s-win32.ads (GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS): Use shorter literal. (GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT): New constant. 2024-06-13 Eric Botcazou PR ada/114710 * exp_ch7.adb (Build_Finalizer.Process_Declarations): Remove dead code dealing with renamings. * exp_util.ads (Is_Finalizable_Transient): Rename Rel_Node to N. * exp_util.adb (Is_Finalizable_Transient): Likewise. (Is_Aliased): Remove obsolete code dealing wih EWA nodes and only consider renamings present in N itself. (Requires_Cleanup_Actions): Remove dead code dealing with renamings. 2024-06-13 Javier Miranda * sem_ch13.adb (Analyze_One_Aspect): Set the applicable policy of a type declaration when its aspect Dynamic_Predicate is analyzed. * sem_prag.adb (Handle_Dynamic_Predicate_Check): New subprogram that enables or ignores dynamic predicate checks depending on whether dynamic checks are enabled in the context where the associated type declaration is defined; used in the analysis of pragma check. In addition, for pragma Predicate, do not disable it when the aspect was internally build as part of processing a dynamic predicate aspect. 2024-06-12 Alexandre Oliva * gcc-interface/decl.cc (gnat_to_gnu_field): Use unpacked type as the debug type for packed fields. 2024-06-10 Eric Botcazou * exp_ch4.adb (Expand_Nonbinary_Modular_Op): Create an explicit Mod for additive operations if No_Implicit_Conditionals is in effect. (Expand_Modular_Addition): Likewise. (Expand_Modular_Subtraction): Likewise. (Expand_Modular_Op): Always use an unsigned type obtained by calling Small_Integer_Type_For on the required size. 2024-06-10 Javier Miranda * 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-06-10 Gary Dismukes * sem_prag.adb (Set_Convention_From_Pragma): If the specified convention on a record type is not C_Pass_By_Copy, then force the C_Pass_By_Copy flag to False, to ensure that it's overridden. 2024-06-10 Gary Dismukes * sem_aggr.adb (Resolve_Iterated_Association): Change "not Present" to "No" in test of Add_Named_Subp. 2024-06-10 Steve Baird * freeze.adb (Should_Freeze_Type.Is_Dispatching_Call_Or_Aggregate): Treat an extension aggregate or a delta aggregate like a regular aggregate. 2024-06-10 Gary Dismukes * sem_aggr.adb (Resolve_Iterated_Association): In the case of N_Iterated_Element_Associations that have a key expression, issue an error if the aggregate type does not have an Add_Named operation, and include a reference to RM22 4.3.5(24) in the error message. In the case of an N_Component_Association with a Defining_Identifer where the "choice" is given by a function call, in the creation of the iterator_specification associate a copy of Choice as its Name, and remove the call to Analyze_Iterator_Specification, which was causing problems with the reanalysis of function calls originally given in prefixed form that were transformed into function calls in normal (infix) form. The iterator_specification will be analyzed later in any case, so that call should not be done here. Remove the with and use of Sem_Ch5. 2024-06-10 Justin Squirek * ali.adb (Get_Nat): Remove unnecessary parentheses. * exp_ch11.adb (Expand_Local_Exception_Handlers): Remove unnecessary parentheses. * freeze.adb (Freeze_Entity): Remove unnecessary parentheses. * lib-list.adb (List): Remove unnecessary parentheses. * par-ch5.adb (P_Condition): Add extra parentheses checks on condition operands. * sem_ch3.adb (Add_Interface_Tag_Components): Remove unnecessary parentheses. (Check_Delta_Expression): Remove unnecessary parenthesis. (Check_Digits_Expression): Remove unnecessary parentheses. * sem_ch12.adb (Validate_Array_Type_Instance): Remove unnecessary parentheses. 2024-06-10 Justin Squirek * exp_ch5.adb (Expand_Formal_Container_Element_Loop): Add expansion of filter condition. (Expand_Formal_Container_Loop): Add expansion of filter condition. 2024-06-10 Justin Squirek * accessibility.adb (Accessibility_Level): Use Get_Full_View to avoid crashes when calculating scope. 2024-06-10 Justin Squirek * sem_warn.adb (Warn_On_Unreferenced_Entity): Add a condition to ignore warnings on unreferenced abstract subprogram. 2024-06-10 Justin Squirek * sem_attr.adb (Analyze_Attribute): Add check for interface parent types. 2024-06-10 Piotr Trojanek * einfo.ads, exp_attr.adb, exp_ch4.adb, exp_ch7.adb, lib-writ.adb, libgnat/a-stbuut.ads, sem_ch13.adb, sem_ch3.adb, sem_ch7.adb: Use "RM" in comments. 2024-06-10 Piotr Trojanek * sem_util.adb (Immediate_Context_Implies_Is_Potentially_Unevaluated): Use collective subtypes in membership tests. (Is_Known_On_Entry): Require all alternatives in a case statement to return; this change could prevent a recently fixed glitch, where one of the alternatives relied on the return statement afterwards (also, the new code is shorter). * sem_util.ads (Is_Potentially_Unevaluated): Clarify that this routine applies to Ada 2012. 2024-06-10 Yannick Moy * libgnat/a-chtgfo.adb (Generic_Read, Generic_Write): Remove. * libgnat/a-chtgfo.ads: Same. Remove dependency on Ada.Streams. 2024-06-10 Ronan Desplanques * libgnarl/s-taprop__mingw.adb (Set_Task_Affinity): Fix usage of SetThreadAffinityMask. * libgnat/s-winext.ads (SetThreadAffinityMask): Fix binding signature. 2024-06-10 Ronan Desplanques * libgnarl/s-taprop__mingw.adb (Set_Task_Affinity): Fix usage of SetThreadIdealProcessor. 2024-06-10 Ronan Desplanques * libgnat/s-os_lib.adb (Normalize_Pathname): Remove incorrect assert statement. (Missed_Drive_Letter): Rename into... (Drive_Letter_Omitted): This. 2024-06-10 Ronan Desplanques * gnatlink.adb (Check_File_Name): Fix incorrect assumption. 2024-06-10 Piotr Trojanek * exp_attr.adb (Expand_N_Attribute_Reference): Use constants declared at the beginning of subprogram; tune layout. * exp_ch3.adb (Predefined_Primitive_Bodies): Tune layout. 2024-06-10 Piotr Trojanek * doc/gnat_rm/implementation_defined_pragmas.rst (No_Tagged_Streams): Move documentation. * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst (No_Streams): Likewise. * exp_disp.adb (Make_DT): Extend comment. * gnat_rm.texi: Regenerate. * gnat_ugn.texi: Regenerate. 2024-06-10 Piotr Trojanek * sem_attr.adb (Analyze_Attribute): Use fully qualified name without a NUL, so that it doesn't need to be skipped afterwards. 2024-06-10 Piotr Trojanek * exp_ch3.adb (Stream_Operation_OK): Check restriction No_Default_Stream_Attributes before call to Type_Without_Stream_Operation. * sem_util.adb (Type_Without_Stream_Operation): Remove static condition from recursive routine 2024-06-10 Piotr Trojanek * inline.adb (Has_Single_Return_In_GNATprove_Mode): Remove. (Process_Formals): When rewriting an occurrence of a formal parameter, use location of the occurrence, not of the inlined call. 2024-06-10 Piotr Trojanek * debug.adb (d_k): Use first available debug switch. * gnat1drv.adb (Adjust_Global_Switches): If new debug switch is active then don't expand assertion expressions by default. 2024-06-10 Piotr Trojanek * exp_ch6.adb (Install_Class_Preconditions_Check): Refactor common code for checking if precondition fails, since the difference is only in raising an exception or calling the Raise_Assert_Failure procedure. 2024-06-10 Piotr Trojanek * exp_ch6.adb (Build_Dynamic_Check_Helper_Call): Remove unused iteration over formal parameters. 2024-06-10 Piotr Trojanek * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): Make discriminants visible when analyzing aspect Interrupt_Priority. (Freeze_Entity_Checks): Likewise. (Resolve_Aspect_Expressions): Likewise for both aspects CPU and Interrupt_Priority. 2024-06-10 Piotr Trojanek * sem_prag.adb (Report_Extra_Clauses): Remove redundant check for empty list, because First works also for No_List. 2024-06-10 Piotr Trojanek * sem_prag.adb (Check_Dependency_Clause, Check_Output_States, Report_Extra_Clauses): Remove multiple checks for being inside an instance. (Analyze_Refined_Depends_In_Decl_Part): Add single check for being inside an instance. 2024-06-10 Piotr Trojanek * sem_prag.adb (Check_In_Out_States, Check_Input_States, Check_Output_States, Check_Proof_In_States, Check_Refined_Global_List, Report_Extra_Constituents, Report_Missing_Items): Remove multiple checks for being inside an instance. (Analyze_Refined_Global_In_Decl_Part): Add single check for being inside an instance. 2024-06-05 Kewen Lin * gcc-interface/decl.cc (gnat_to_gnu_entity): Use TYPE_PRECISION of long_double_type_node to replace LONG_DOUBLE_TYPE_SIZE. 2024-05-29 Eric Botcazou PR ada/115270 * Makefile.rtl (PowerPC/Linux): Use libgnat/s-atopri__32.ads for the 32-bit library. (SPARC/Linux): Likewise. 2024-05-21 Eric Botcazou PR ada/115168 * libgnarl/s-taprop__solaris.adb (Initialize): Fix pasto. * libgnat/s-oslock__solaris.ads (Owner_Int): Delete. (Owner_ID): Change the designated type to Integer. 2024-05-21 Eric Botcazou * gcc-interface/utils2.cc (nonbinary_modular_operation): Rewrite. Do not create signed types for subtraction, do not create types with partial precision, call fold_convert instead of convert throughout. 2024-05-21 Eric Botcazou * gcc-interface/decl.cc (gnat_to_gnu_entity): Use the Is_Base_Type predicate and remove superfluous calls to Base_Type. 2024-05-21 Eric Botcazou * gcc-interface/utils2.cc (gnat_protect_expr): Deal specifically with atomic loads. Document the relationship with gnat_save_expr. 2024-05-21 Eric Botcazou * gcc-interface/decl.cc (gnat_to_gnu_entity) : For a packed type implemented specially, temporarily save the XUA type as equivalent to the entity before processing the implementation type. For this implementation type, if its component type is the same as that of the original type, copy the alias set from the latter. : Resort to universal aliasing for all interface types. * gcc-interface/trans.cc (Call_to_gnu): Add GNU_ACTUAL_TYPE local variable and rename existing one to GNU_UNPADDED_ACTUAL_TYPE. If the formal is passed by reference and the actual is a conversion, call aliasable_p to detect aliasing violations, issue a warning upon finding one and create the temporary in the target type. Add an assertion that no such violation has been missed above. (addressable_p): Revert latest changes. (aliasable_p): New predicate. * gcc-interface/utils2.cc (build_binary_op) : When creating a new array type on the fly, preserve the alias set of the operation type. 2024-05-21 Eric Botcazou * gcc-interface/trans.cc (gnat_to_gnu) : In the return-by-invisible-reference case, remove conversions before looking for a dereference in the return values and building the test protecting against a useless copy operation. 2024-05-21 Eric Botcazou * gcc-interface/decl.cc (gnat_to_gnu_entity) : Set TYPE_TYPELESS_STORAGE on the array types if Universal_Aliasing is set on the type or its component type. : Likewise. For other aggregate types, set TYPE_TYPELESS_STORAGE in this case. (set_typeless_storage_on_aggregate_type): New function. (set_universal_aliasing_on_type): Likewise. * gcc-interface/trans.cc (Call_to_gnu): Add const to local variable. Adjust comment. Pass GNAT_NAME in the call to addressable_p and add a bypass for atomic types in case it returns false. (addressable_p): Add GNAT_EXPR third parameter with default value and add a default value to the existing second parameter. : Return false if the expression comes from a function call and if the alias sets of source and target types are both distinct from zero and each other. 2024-05-21 Ronan Desplanques * gcc-interface/utils2.cc (build_cond_expr): Also apply an indirection when the result type is variable-sized. 2024-05-21 Marc Poulhiès * gcc-interface/decl.cc: Fix typo in comment. 2024-05-21 Eric Botcazou * gcc-interface/utils2.cc (build_call_alloc_dealloc_proc): Add an assertion that this is not a deallocation of the return or secondary stack and remove subsequent unreachable code. 2024-05-21 Eric Botcazou * gcc-interface/utils2.cc (build_cond_expr): Use the indirect path for all types containing a placeholder. 2024-05-21 Piotr Trojanek * gcc-interface/Make-lang.in (GNATBIND_OBJS): Remove unused dependencies. 2024-05-21 Eric Botcazou * gcc-interface/decl.cc (gnat_to_gnu_entity) : Give a warning for a statically allocated object whose size is constant, valid but too large. (allocatable_size_p): In the static case, return false for a size that is constant, valid but too large. 2024-05-21 Eric Botcazou * gcc-interface/decl.cc (gnat_to_gnu_entity) : For an array allocated with its bounds, make sure to have an array type to build the template. 2024-05-21 Eric Botcazou * gcc-interface/trans.cc (access_attribute_p): New predicate. (lvalue_required_for_attribute_p): Return again 1 for Size and add the missing terminating call to gcc_unreachable. (gnat_to_gnu): Return the result unmodified for a reference to an unconstrained array only if it is the prefix of an access attribute. 2024-05-21 Eric Botcazou * gcc-interface/utils.cc (relate_alias_sets): Restore previous code when the type uses structural equality. 2024-05-21 Steve Baird * exp_util.adb (Remove_Side_Effects): Make_Reference assumes that the referenced object satisfies the constraints of the designated subtype of the access type. Ensure that this assumption holds by introducing a qualified expression if needed (and then ensuring that checking associated with evaluation of the qualified expression is not suppressed). 2024-05-21 Piotr Trojanek * aspects.ads (Nonoverridable_Aspect_Id): Fix layout. 2024-05-21 Ronan Desplanques * frontend.adb (Frontend): Remove duplicate statement. 2024-05-21 Eric Botcazou * sem_ch13.adb (Validate_Unchecked_Conversion): Restrict forcing the Can_Use_Internal_Rep flag to platforms that require unnesting. 2024-05-21 Viljar Indus * sem_elab.adb: Add missing elaboration insertion characters to info messages. 2024-05-21 Piotr Trojanek * inline.adb (Add_Scope_To_Clean): Use Append_Unique_Elmt. (Analyze_Inlined_Bodies): Refine type of a local counter; remove extra whitespace. 2024-05-21 Ronan Desplanques * libgnarl/s-taenca.adb (Wait_For_Completion): Remove call to Yield. * libgnarl/s-tasren.adb (Timed_Selective_Wait, Wait_For_Call): Remove calls to Yield. 2024-05-21 Piotr Trojanek * doc/gnat_rm/implementation_of_ada_2012_features.rst: Fix formatting. * gnat_rm.texi: Regenerate. 2024-05-21 Piotr Trojanek * doc/gnat_rm/implementation_of_ada_2012_features.rst: Order list by AI number. * gnat_rm.texi: Regenerate. 2024-05-21 Piotr Trojanek * doc/gnat_rm/implementation_of_ada_2012_features.rst (AI-0216): Fix index reference. * gnat_rm.texi: Regenerate. 2024-05-21 Viljar Indus * doc/gnat_ugn/building_executable_programs_with_gnat.rst: Update the documentation of -gnatw.n and -gnatw.l * gnat_ugn.texi: Regenerate. 2024-05-21 Piotr Trojanek * doc/gnat_rm/implementation_defined_pragmas.rst (No_Tagged_Streams): Document how to avoid exposing entity names for the entire partition. * exp_disp.adb (Make_DT): Make use of restriction No_Streams. * exp_put_image.adb (Build_Record_Put_Image_Procedure): Respect Discard_Names in the generated Put_Image procedure. * gnat_rm.texi: Regenerate. 2024-05-21 Piotr Trojanek * exp_put_image.adb (Build_Record_Put_Image_Procedure): Remove useless conversions. 2024-05-21 Piotr Trojanek * exp_put_image.adb (Build_Record_Put_Image_Procedure): Remove trailing NUL from the fully qualified type name. 2024-05-21 Eric Botcazou * err_vars.ads (Error_Msg_Sloc): Initialize to No_Location. 2024-05-21 Justin Squirek * doc/gnat_ugn/platform_specific_information.rst: Add note about different priority level granularities under different policies in Windows and move POSIX related info into new section. * libgnarl/s-taprop.ads: Add note about Task_Dispatching_Policy. * libgnarl/s-taprop__mingw.adb: (Set_Priority): Add use of Non_FIFO_Underlying_Priorities. * libgnat/system-mingw.ads: Add documentation for modifying priority mappings and add alternative mapping Non_FIFO_Underlying_Priorities. * gnat_ugn.texi: Regenerate. 2024-05-20 Bob Duff * sem_ch12.adb: Misc cleanups and comment fixes. (Check_Overloaded_Formal_Subprogram): Remove the Others_Choice error message. (Others_Choice): Remove this variable; no longer needed. * types.ads (Text_Ptr): Add a range constraint limiting the subtype to values that are actually used. This has the advantage that when the compiler is compiled with validity checks, uninitialized values of subtypes Text_Ptr and Source_Ptr will be caught. * sinput.ads (Sloc_Adjust): Use the base subtype; this is used as an offset, so we need to allow arbitrary negative values. 2024-05-20 Eric Botcazou * exp_ch7.ads (Preload_Finalization_Collection): Delete. * exp_ch7.adb (Allows_Finalization_Collection): Revert change. (Preload_Finalization_Collection): Delete. * opt.ads (Interface_Seen): Likewise. * scng.adb (Scan): Revert latest change. * sem_ch10.adb: Remove clause for Exp_Ch7. (Analyze_Compilation_Unit): Revert latest change. * libgnat/i-c.ads: Use a fully qualified name for the standard "+" operator in the preconditons/postconditions of subprograms. 2024-05-20 Eric Botcazou * exp_aggr.adb (Expand_Record_Aggregate.Component_OK_For_Backend): Also return False for a delayed conditional expression. 2024-05-20 Eric Botcazou * freeze.ads (Check_Compile_Time_Size): Remove obsolete description of usage for the Size_Known_At_Compile_Time flag. * freeze.adb (Check_Compile_Time_Size.Size_Known): In the case where a variant part is present, do not return False if Esize is known. * sem_util.adb (Needs_Secondary_Stack.Caller_Known_Size_Record): Add missing "Start of processing" comment. Return true if either a size clause or an object size clause has been given for the first subtype of the type. 2024-05-20 Bob Duff * sinfo.ads: Misc comment corrections and clarifications. The syntax for GENERIC_ASSOCIATION and FORMAL_PACKAGE_ACTUAL_PART was wrong. Emphasize that "others => <>" is not represented as an N_Generic_Association (with or without Box_Present set), and give examples illustrating the various possibilities. 2024-05-20 Eric Botcazou * einfo-utils.ads (Is_Base_Type): Move to Miscellaneous Subprograms section and add description. * fe.h (Is_Base_Type): Declare. 2024-05-20 Gary Dismukes * sem_aggr.adb (Resolve_Aggregate): Move condition and call for Resolve_Record_Aggregate in front of code related to calling Resolve_Container_Aggregate (and add test that the aggregate is not homogeneous), and remove special-case testing and call to Resolve_Container_Aggregate for empty aggregates. Also, add error check for an attempt to use "[]" for an aggregate of a record type that does not specify an Aggregate aspect. (Resolve_Record_Aggregate): Remove error check for record aggregates with "[]" (now done by Resolve_Aggregate). 2024-05-20 Gary Dismukes * sem_aggr.adb (Resolve_Aggregate): Move condition and call for Resolve_Record_Aggregate in front of code related to calling Resolve_Container_Aggregate (and add test that the aggregate is not homogeneous), and remove special-case testing and call to Resolve_Container_Aggregate for empty aggregates. 2024-05-20 Justin Squirek * accessibility.adb (Accessibility_Level): Add cases for 'First and 'Last. 2024-05-20 Justin Squirek * sem_attr.adb (Analyze_Attribute): Remove restriction on 'Super for abstract types. 2024-05-20 Piotr Trojanek * sem_attr.ads (Attribute_Impl_Def): Fix list of implementation-defined attributes. 2024-05-20 Piotr Trojanek * sem_attr.adb (Attribute_12): Add attributes Old, Overlaps_Storage and Result. 2024-05-20 Piotr Trojanek * sem_attr.adb (Analyze_Attribute): Move IF statement that checks restriction No_Implementation_Attributes for Ada 2005, 2012 and Ada 2022 attributes inside Comes_From_Source condition that checks the same restriction for Ada 83 attributes. 2024-05-20 Piotr Trojanek * sem_attr.adb (Analyze_Attribute): Remove condition that is already checked by an enclosing IF statement. 2024-05-20 Piotr Trojanek * sem_attr.ads (Universal_Type_Attribute): Simplify using array aggregate syntax with discrete choice list. 2024-05-20 Piotr Trojanek * sem_attr.ads (Attribute_Impl_Def): Fix style in comment. 2024-05-20 Ronan Desplanques * libgnarl/s-taprop__linux.adb (Enter_Task): Move setting of thread ID out of Enter_Task. (Initialize): Set thread ID for the environment task. (Create_Task): Remove now unnecessary Unrestricted_Access attribute and add justification for a memory write. * libgnarl/s-taprop__posix.adb: Likewise. * libgnarl/s-taprop__qnx.adb: Likewise. * libgnarl/s-taprop__rtems.adb: Likewise. * libgnarl/s-taprop__solaris.adb: Likewise. * libgnarl/s-taspri__posix.ads: Remove pragma Atomic for Private_Data.Thread, and update documentation comment. * libgnarl/s-taspri__lynxos.ads: Likewise. * libgnarl/s-taspri__posix-noaltstack.ads: Likewise. * libgnarl/s-taspri__solaris.ads: Likewise. * libgnarl/s-tporft.adb (Register_Foreign_Thread): Adapt to Enter_Task not setting the thread ID anymore. * libgnarl/s-tassta.adb (Task_Wrapper): Update comment. 2024-05-20 Eric Botcazou * exp_aggr.ads (Is_Delayed_Conditional_Expression): New predicate. * exp_aggr.adb (Convert_To_Assignments.Known_Size): Likewise. (Convert_To_Assignments): Climb the parent chain, looking through qualified expressions and dependent expressions of conditional expressions, to find out whether the expansion may be delayed. Call Known_Size for this in the case of an object declaration. If so, set Expansion_Delayed on the aggregate as well as all the intermediate conditional expressions. (Initialize_Component): Reset the Analyzed flag on an initialization expression that is a conditional expression whose expansion has been delayed. (Is_Delayed_Conditional_Expression): New predicate. * exp_ch3.adb (Expand_N_Object_Declaration): Handle initialization expressions that are conditional expressions whose expansion has been delayed. * exp_ch4.adb (Build_Explicit_Assignment): New procedure. (Expand_Allocator_Expression): Handle initialization expressions that are conditional expressions whose expansion has been delayed. (Expand_N_Case_Expression): Deal with expressions whose expansion has been delayed by waiting for the rewriting of their parent as an assignment statement and then optimizing the assignment. (Expand_N_If_Expression): Likewise. (Expand_N_Qualified_Expression): Do not apply a predicate check to an operand that is a delayed aggregate or conditional expression. * gen_il-gen-gen_nodes.adb (N_If_Expression): Add Expansion_Delayed semantic flag. (N_Case_Expression): Likewise. * sinfo.ads (Expansion_Delayed): Document extended usage. 2024-05-20 Gary Dismukes * exp_aggr.adb (Expand_Container_Aggregate): Add top-level variables Choice_{Lo|Hi} and Int_Choice_{Lo|Hi} used for determining the low and high bounds of component association choices. Replace code for determining whether we have an indexed aggregate with call to new function Sem_Aggr.Is_Indexed_Aggregate. Remove test of whether Empty_Subp is a function, since it must be a function. Move Default and Count_Type to be locals of a new block enclosing the code that creates the object to hold the aggregate length, and set them according to the default and type of the Empty function's parameter when present (and to Empty and Standard_Natural otherwise). Use Siz_Exp for the aggregate length when set, and use Empty's default length when available, and use zero for the length otherwise. In generating the call to the New_Indexed function, use the determined lower and upper bounds if determined earlier by Aggregate_Size, and otherwise compute those from the index type's lower bound and the determined aggregate length. In the case where a call to Empty is generated and the function has a formal parameter, pass the value saved in Siz_Decl (otherwise the parameter list is empty). Remove code specific to making a parameterless call to the Empty function. Extend the code for handling positional container aggregates to account for types that define Assign_Indexed, rather than just Add_Unnamed, and in the case of indexed aggregates, create a temporary object to hold values of the aggregate's key index, and initialize and increment that temporary for each call generated to the Assign_Indexed procedure. For named container aggregates that have key choices given by ranges, call Expand_Range_Component to generate a loop that will call the appropriate insertion procedure for each value of the range. For indexed aggregates with a Component_Associations list, set and use the Assign_Indexed procedure for each component association, whether or not there's an iterator specification. (Add_Range_Size): Add code to determine the low and high bounds of the range and capture those in up-level variables when their value is less than or greater than (respectively) the current minimum and maximum bounds values. (Aggregate_Size): Separately handle the case where a single choice is of a discrete type, and call Add_Range_Size to take its value into consideration for determination of min and max bounds of the aggregate. Add comments in a couple of places. (Build_Siz_Exp): Remove the last sentence and "???" from the comment that talks about accumulating nonstatic sizes, since that sentence seems to be obsolete. Record the low and high bound values in Choice_Lo and Choice_Hi in the case of a nonstatic range. (Expand_Iterated_Component): Set the Defining_Identifier of the iterator specification to the Loop_Id in the N_Iterated_Component_Association case. (Expand_Range_Component): Procedure unnested from the block handling indexed aggregates in Expand_Container_Aggregate, and moved to top level of that procedure so it can also be called for Add_Named cases. A formal parameter Insert_Op is added, and existing calls to this procedure are changed to pass the appropriate insertion procedure's Entity. * sem_aggr.ads: Add with_clause for Sinfo.Nodes. (Is_Indexed_Aggregate): New function for use by Resolve_Container_Aggregate and Expand_Container_Aggregate. * sem_aggr.adb: Add with_clause for Sem_Ch5. Move with_clause for Sinfo.Nodes to sem_aggr.ads. (Is_Indexed_Aggregate): New function to determine whether a container aggregate is a container aggregate (replacing local variable of the same name in Resolve_Container_Aggregate). (Resolve_Iterated_Association): Remove part of comment saying that a Key_Expression is always present. Set Parent field of the copy of a component association with a loop parameter specification. On the setting of Loop_Param_Id, account for a Loop_Parameter_Specification being changed into an Iterator_Specification as a result of being analyzed. Only call Preanalyze_And_Resolve on Key_Expr when a key expression is actually present. Remove loop for handling choices for the case of an N_Component_Association with a Defining_Identifier (there shouldn't be more than one choice in this case, and add an assertion to ensure that). Also add code here to handle the case where the choice is a function call, creating an iterator_specification analyzing it, and call Resolve_Iterated_Association recursively to process it. Add error check to enforce RM22 4.3.5(27), which requires that the type of the loop parameter must be the same as the key type when there is no key expression and the aggregate is an indexed aggregate or has an Add_Named op. (Resolve_Container_Aggregate): In the Add_Unnamed case, call Resolve_Iterated_Association for both N_Iterated_Element_Association and N_Component_Association (rather than just the latter). Remove error check for nonstatic choices in component associations in Add_Named cases (multiple named nonstatic associations are fine except in indexed aggregates). Remove local variable Is_Indexed_Aggregate, replaced with new library-level function of the same name, and add test of Is_Indexed_Aggregate in the case where the aggregate type has an Assign_Indexed operation, as a guard for doing error checks for indexed aggregates. For indexed aggregate resolution, do not call Analyze_And_Resolve on the expression of an N_Component_Association in the "box association" case. Move error checks for indexed aggregates with iterated associations that flag cases where an association is a loop_parameter_specification with an iterator filter or a key expression (violation of RM22 4.3.5(28/5)), from the loop that checks for contiguous and nonoverlapping choices and into the preceding association loop after the call to Resolve_Iterated_Association. The RM reference is added to the error-message strings. 2024-05-20 Ronan Desplanques * libgnarl/s-taprop__linux.adb (Set_Task_Affinity): Fix decision about whether to call CPU_FREE. 2024-05-20 Eric Botcazou * exp_aggr.ads (Convert_Aggr_In_Allocator): Remove Aggr parameter and adjust description. (Convert_Aggr_In_Object_Decl): Adjust description. * exp_aggr.adb (Convert_Aggr_In_Allocator): Remove Aggr parameter and add local variable of the same name instead. Adjust call to Convert_Array_Aggr_In_Allocator. (Convert_Aggr_In_Object_Decl): Add comment for early return and remove useless inner block statement. (Convert_Array_Aggr_In_Allocator): Remove Aggr parameter and add local variable of the same name instead. (In_Place_Assign_OK): Move down declarations of local variables. (Convert_To_Assignments): Put all declarations of local variables in the same place. Fix typo in comment. Replace T with Full_Typ. * exp_ch4.adb (Expand_Allocator_Expression): Call Unqualify instead of Expression on the qualified expression of the allocator for the sake of consistency. Adjust call to Convert_Aggr_In_Allocator. 2024-05-20 Piotr Trojanek * sem_attr.adb (Eval_Attribute): Handle enumeration type with Discard_Names. 2024-05-20 Piotr Trojanek * exp_imgv.adb (Expand_Width_Attribute): Fix for 'Width that is computed at run time. * sem_attr.adb (Eval_Attribute): Fix for 'Width that is computed at compilation time. 2024-05-20 Sebastian Poeplau * libgnat/s-pooglo.adb (Allocate): Use arithmetic on System.Address to compute the aligned address. 2024-05-20 Steve Baird * freeze.adb (Adjust_Esize_For_Alignment): Assert that a valid Alignment specification cannot result in adjusting the given type's Esize to be larger than System_Max_Integer_Size. * sem_ch13.adb (Analyze_Attribute_Definition_Clause): In analyzing an Alignment specification, enforce the rule that a specified Alignment value for a discrete or fixed-point type shall not be larger than System_Max_Integer_Size / 8 . 2024-05-20 Eric Botcazou * libgnat/g-sothco.ads (In_Addr): Add aspect Universal_Aliasing. 2024-05-20 Jose Ruiz * sem_prag.adb (Analyze_Pragma): Exclude detection of duplicates because they are detected elsewhere. 2024-05-20 Jose Ruiz * exp_ch9.adb (Expand_N_Protected_Type_Declaration): Clarify comments. * sem_prag.adb (Analyze_Pragma): Check for duplicates Max_Entry_Queue_Length, Max_Entry_Queue_Depth and Max_Queue_Length for the same protected entry. * sem_util.adb (Get_Max_Queue_Length): Take into account all three representation aspects that can be used to set this restriction. (Has_Max_Queue_Length): Likewise. * doc/gnat_rm/implementation_defined_pragmas.rst: (pragma Max_Queue_Length): Fix pragma in example. * gnat_rm.texi: Regenerate. 2024-05-20 Eric Botcazou * libgnat/s-finpri.ads (Collection_Node): Move to private part. (Collection_Node_Ptr): Likewise. (Header_Alignment): Change to declaration and move completion to private part. (Header_Size): Likewise. (Lock_Type): Delete. (Finalization_Collection): Move Lock component and remove default value for Finalization_Started component. * libgnat/s-finpri.adb (Initialize): Reorder statements. 2024-05-20 Eric Botcazou * doc/gnat_rm/implementation_defined_pragmas.rst (Universal_Aliasing): Remove reference to No_Strict_Aliasing. * doc/gnat_ugn/gnat_and_program_execution.rst (Optimization and Strict Aliasinng): Simplify first example and make it more consistent with the second. Add description of the effects of pragma Universal_Aliasing and document new warning issued for unchecked conversions. Remove obsolete stuff. * gnat_rm.texi: Regenerate. * gnat_ugn.texi: Regenerate. 2024-05-17 Eric Botcazou PR ada/115133 * libgnarl/s-osinte__solaris.ads (mutex_t): Fix typo. * libgnarl/s-taprop__solaris.adb (Record_Lock): Add conversion. (Check_Sleep): Likewise. (Record_Wakeup): Likewise. (Check_Unlock): Likewise. * libgnarl/s-tasini.adb (Initialize_RTS_Lock): Add pragma Import on the overlaid variable. (Finalize_RTS_Lock): Likewise. (Acquire_RTS_Lock): Likewise. (Release_RTS_Lock): Likewise. * libgnarl/s-taspri__solaris.ads (To_RTS_Lock_Ptr): New instance of Ada.Unchecked_Conversion. * libgnat/s-oslock__solaris.ads: Add with clause for Ada.Unchecked_Conversion. (array_type_9): Add missing name qualification. (record_type_3): Likewise. (mutex_t): Fix formatting. 2024-05-17 Viljar Indus * exp_aggr.adb (Expand_Container_Aggregate): Derive the size for iterable aggregates in the case of one-dimensional array objects. 2024-05-17 Ronan Desplanques * exp_aggr.adb (Aggr_Size_OK): Remove workaround and extend comment. 2024-05-17 Eric Botcazou * bindgen.adb (Gen_Adainit): Generate declaration and call to the imported procedure __gnat_tasking_runtime_initialize if need be. * libgnat/s-soflin.ads (Locking Soft-Links): Add commentary. * libgnarl/s-tasini.adb (Tasking_Runtime_Initialize): New procedure exported as __gnat_tasking_runtime_initialize. Initialize RTS_Lock manipulation routines here instead of... (Init_RTS): ...here. 2024-05-17 Steve Baird * scng.adb (scan): When checking for an unprocessed preprocessor directive, take into account the preprocessor's rules about case insensitivity and about white space between the '#' and the keyword. 2024-05-17 Eric Botcazou * libgnarl/s-taspri__mingw.ads: Add clause for System.OS_Interface. (Private_Data): Change type of Thread component. 2024-05-17 Eric Botcazou * libgnat/g-alvevi.ads: Add pragma Universal_Aliasing for all the view types. * libgnat/s-stratt.ads: Likewise for Fat_Pointer type. 2024-05-17 Eric Botcazou * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add s-oslock$(objext). (LIBGNAT_TARGET_PAIRS): Use s-oslock__dummy.ads by default. Set specific s-oslock.ads source file for all the platforms. * exp_ch7.ads (Preload_Finalization_Collection): New procedure. * exp_ch7.adb (Allows_Finalization_Collection): Return False if System.Finalization_Primitives has not been preloaded. (Preload_Finalization_Collection): New procedure. * opt.ads (Interface_Seen): New boolean variable. * s-oscons-tmplt.c: Use "N" string for pragma Style_Checks. * scng.adb (Scan): Set Interface_Seen upon seeing "interface". * sem_ch10.adb: Add clause for Exp_Ch7. (Analyze_Compilation_Unit): Call Preload_Finalization_Collection after the context of the unit is analyzed. * libgnarl/a-rttiev.adb: Add with clause for System.OS_Locks and alphabetize others. (Event_Queue_Lock): Adjust qualified name of subtype. * libgnarl/s-osinte__aix.ads: Add with clause for System.OS_Locks and change pthread_mutex_t into a local subtype. * libgnarl/s-osinte__android.ads: Likewise. * libgnarl/s-osinte__darwin.ads: Likewise. * libgnarl/s-osinte__dragonfly.ads: Likewise. * libgnarl/s-osinte__freebsd.ads: Likewise. * libgnarl/s-osinte__gnu.ads: Likewise. * libgnarl/s-osinte__hpux-dce.ads: Likewise. * libgnarl/s-osinte__hpux.ads: Add Likewise. * libgnarl/s-osinte__kfreebsd-gnu.ads: Likewise. * libgnarl/s-osinte__linux.ads: Likewise. * libgnarl/s-osinte__lynxos178e.ads: Likewise. * libgnarl/s-osinte__qnx.ads: Likewise. * libgnarl/s-osinte__rtems.ads: Likewise. * libgnarl/s-osinte__mingw.ads: Add with clause for System.OS_Locks and change CRITICAL_SECTION into a local subtype. Add declarations for imported procedures dealing with CRITICAL_SECTION. * libgnarl/s-osinte__solaris.ads: Add with clause for System.OS_Locks and change mutex_t into a local subtype. * libgnarl/s-osinte__vxworks.ads: Add missing blank line. * libgnarl/s-taprop.ads: Alphabetize clauses and package renamings. Use qualified name for RTS_Lock throughout. * libgnarl/s-taprop__dummy.adb: Add use clause for System.OS_Locks and alphabetize others. * libgnarl/s-taprop__hpux-dce.adb: Likewise. * libgnarl/s-taprop__linux.adb: Likewise. * libgnarl/s-taprop__posix.adb: Likewise. * libgnarl/s-taprop__qnx.adb: Likewise. * libgnarl/s-taprop__rtems.adb: Likewise. * libgnarl/s-taprop__solaris.adb: Likewise. * libgnarl/s-taprop__vxworks.adb: Likewise. * libgnarl/s-taprop__mingw.adb: Likewise. Remove declarations for imported procedures dealing with CRITICAL_SECTION. * libgnarl/s-tarest.adb: Add with clause for System.OS_Locks and alphabetize others. (Global_Task_Lock): Adjust qualified name of subtype. * libgnarl/s-tasini.adb: Add clause for System.OS_Locks. (Initialize_RTS_Lock): New procedure. (Finalize_RTS_Lock): Likewise. (Acquire_RTS_Lock): Likewise. (Release_RTS_Lock): Likewise. (Init_RTS): Add compile-time assertions for RTS_Lock types. Set the soft links for the RTS lock manipulation routines. * libgnarl/s-taspri__dummy.ads: Add with clause for System.OS_Locks. (RTS_Lock): Delete and adjust throughout accordingly. * libgnarl/s-taspri__hpux-dce.ads: Likewise. * libgnarl/s-taspri__lynxos.ads: Likewise. * libgnarl/s-taspri__mingw.ads: Likewise. * libgnarl/s-taspri__posix-noaltstack.ads: Likewise. * libgnarl/s-taspri__posix.ads: Likewise. * libgnarl/s-taspri__solaris.ads: Likewise. * libgnarl/s-taspri__vxworks.ads: Likewise. * libgnat/s-finpri.ads: Add clause for System.OS_Locks. (Finalization_Collection): Change type of Lock. * libgnat/s-finpri.adb (Initialize): Call Initialize_RTS_Lock. (Lock_Collection): Call Acquire_RTS_Lock. (Unlock_Collection): Call Release_RTS_Lock. * libgnat/s-oslock__dummy.ads: New file. * libgnat/s-oslock__hpux-dce.ads: Likewise. * libgnat/s-oslock__mingw.ads: Likewise. * libgnat/s-oslock__posix.ads: Likewise. * libgnat/s-oslock__solaris.ads: Likewise. * libgnat/s-oslock__vxworks.ads: Likewise. * libgnat/s-soflin.ads (Null_Set_Address): New null procedure. (Initialize_RTS_Lock): New soft link. (Finalize_RTS_Lock): Likewise. (Acquire_RTS_Lock): Likewise. (Release_RTS_Lock): Likewise. * exp_ch4.adb (Expand_N_Allocator): In the subtype indication case, call Apply_Predicate_Check on the resulting access value if need be. 2024-05-17 Eric Botcazou * einfo.ads (Materialize_Entity): Document secondary usage. 2024-05-17 Steve Baird * local_restrict.adb (Active_Restriction): When traversing scopes, do not skip over a subprogram body. 2024-05-17 Eric Botcazou * libgnarl/s-taprop__dummy.adb (Initialize_Lock): Fix formatting. * libgnarl/s-taprop__linux.adb (RTS_Lock_Ptr): Delete. (Init_Mutex): Rename into... (Initialize_Lock): ...this. (Initialize_Lock [Lock]): Call above procedure. (Initialize_Lock [RTS_Lock]): Likewise. (Initialize_TCB): Likewise. * libgnarl/s-taprop__posix.adb (Initialize_Lock): New procedure factored out from the other two homonyms. (Initialize_Lock [Lock]): Call above procedure. (Initialize_Lock [RTS_Lock]): Likewise. * libgnarl/s-taprop__qnx.adb (RTS_Lock_Ptr): Delete. (Init_Mutex): Rename into... (Initialize_Lock): ...this. (Initialize_Lock [Lock]): Call above procedure. (Initialize_Lock [RTS_Lock]): Likewise. (Initialize_TCB): Likewise. * libgnarl/s-taprop__rtems.adb (Initialize_Lock): New procedure factored out from the other two homonyms. (Initialize_Lock [Lock]): Call above procedure. (Initialize_Lock [RTS_Lock]): Likewise. 2024-05-17 Piotr Trojanek * sem_util.adb (Is_Known_On_Entry): Handle constants introduced by validity checks. 2024-05-17 Steve Baird * libgnat/a-direct.adb (Start_Search_Internal): Do not call Modification_Time for a special file; declare a Calendar.Time constant No_Time and use that instead. 2024-05-17 Steve Baird * exp_ch3.adb (Build_Equivalent_Record_Aggregate): Add Has_Predicates test for a scalar component to match what is already done for other kinds of components. 2024-05-17 Ronan Desplanques * sem_aggr.adb (Resolve_Array_Aggregate): Improve comments and condition. 2024-05-17 Ronan Desplanques * sem_aggr.adb (Resolve_Array_Aggregate): Fix location of error message. 2024-05-17 Piotr Trojanek * sem_prag.adb (Is_Unconstrained_Or_Tagged_Item): Move to Sem_Util, so it can be used from GNATprove. * sem_util.ads (Is_Unconstrained_Or_Tagged_Item): Move from Sem_Prag; spec. * sem_util.adb (Is_Unconstrained_Or_Tagged_Item): Move from Sem_Prag; body. 2024-05-17 Eric Botcazou * exp_pakd.adb (Create_Packed_Array_Impl_Type): For non-bit-packed array types, propagate the aliased property of the component. (Install_PAT): Set fields on the implicit base type of an array. * libgnat/a-stream.ads (private part): Add pragma Universal_Aliasing for Stream_Element. * libgnat/g-alleve.ads: Add pragma Universal_Aliasing for all the vector types. * libgnat/g-alleve__hard.ads: Likewise. 2024-05-17 Bob Duff * bcheck.adb (Check_Consistency_Of_Sdep): Split out new procedure. Add check for special case of subprogram spec that no longer exists. (Check_Consistency): Call Check_Consistency_Of_Sdep, except when Reified_Child_Spec is True. No need for "goto Continue" or "exit Sdep_Loop". * ali.ads (Subunit_Name, Unit_Name): Change the type to Unit_Name_Type. Add a comment pointing to the ALI file documentation, because it's in a somewhat-surprising place. * ali.adb (Scan_ALI): Subunit_Name and Unit_Name are now Unit_Name_Type. Remove comment explaining why Name_Find is used; Name_Find is the usual case. Do not remove the "%s" or "%b" from the Unit_Name. We need to be able to distinguish specs and bodies. This is also necessary to obey the invariant of Unit_Name_Type. * binde.adb (Write_Closure): Subunit_Name is now Unit_Name_Type. * clean.adb (Clean_Executables): Likewise. 2024-05-17 Ronan Desplanques * sem_aggr.adb (Resolve_Null_Array_Aggregate): Update documentation comments. 2024-05-17 Steve Baird * sem_util.adb (Has_Some_Controlled_Component): Fix a bug which causes (in some cases involving a Disable_Controlled aspect specification) Needs_Finalization to return different answers for one type depending on whether the function is called before or after the type is frozen. * libgnat/a-coorse.ads: Type Control_Reference_Type gets an Adjust procedure. * libgnat/a-cborse.ads: Likewise. * libgnat/a-ciorse.ads: Likewise * libgnat/a-coorse.adb: (Finalize): Reclaim allocated Key_Type object. (Adjust): New procedure; prevent sharing of non-null Key_Access values by allocating a copy. * libgnat/a-cborse.adb: Likewise. * libgnat/a-ciorse.adb: Likewise. 2024-05-17 Bob Duff * uname.adb (Get_Unit_Name_String): Move Asserts after Buf is initialized. 2024-05-17 Bob Duff * ali-util.adb (Read_Withed_ALIs): Minor reformatting. * bindo-units.adb (Corresponding_Body): Add assert. (Corresponding_Spec): Likewise. * uname.adb: Clean up assertions, use available functions. Get_Spec_Name/Get_Body_Name can assert that N obeys the conventions for Unit_Name_Type (end in "%s" or "%b"). 2024-05-17 Sebastian Poeplau * raise-gcc.c: Work around __builtin_code_address_from_pointer if it is unavailable. 2024-05-17 Marc Poulhiès * exp_aggr.adb (Build_Array_Aggr_Code) : Copy the initialization expression when unrolling the loop. 2024-05-17 Bob Duff * sem_disp.adb (Check_Dispatching_Operation): Call Create_Extra_Formals, so that the caller will have an extra "constrained" parameter, which will be checked on assignment in the callee, and will be passed in by the caller. 2024-05-17 Piotr Trojanek * sem_prag.adb (Is_Unconstrained_Or_Tagged_Item): Remove call to Has_Discriminants; combine ELSIF branches. 2024-05-17 Piotr Trojanek * sem_ch7.adb (New_Private_Type): Simplify setting of Is_Constrained flag. * sem_prag.adb (Is_Unconstrained_Or_Tagged_Item): Simplify detection of private types with no discriminant. 2024-05-17 Piotr Trojanek * sem_prag.adb (Is_Unconstrained_Or_Tagged_Item): Allow objects of private types with unknown discriminants. 2024-05-17 Piotr Trojanek * sem_prag.adb (Is_Unconstrained_Or_Tagged_Item): Tune repeated testing of type kinds. 2024-05-17 Marc Poulhiès * doc/gnat_rm/implementation_defined_attributes.rst: Fix copy/paste. * gnat_rm.texi: Regenerate. * gnat_ugn.texi: Regenerate. 2024-05-17 Viljar Indus * sem_ch3.adb (Analyze_Component_Declaration): Apply range checks only for Scalar_Types to ensure that they have the Scalar_Range attribute. 2024-05-17 Viljar Indus * sem_ch3.adb (Analyze_Component_Declaration): Add Range_Checks for Subtype_Indications 2024-05-17 Ronan Desplanques * exp_ch4.adb (Expand_N_Case_Expression): Remove call to Relocate_Node. * sem_attr.adb (Analyze_Attribute): Likewise. 2024-05-17 Ronan Desplanques * exp_aggr.adb (Flatten): Small cleanup. 2024-05-17 Eric Botcazou * sem_attr.adb (Analyze_Attribute) : Remove special processing for pragma Compile_Time_{Warning,Error}. (Eval_Attribute.Compile_Time_Known_Attribute): Set Is_Static on the resulting value if In_Compile_Time_Warning_Or_Error is set. (Eval_Attribute.Full_Type): New helper function. (Eval_Attribute): Call Full_Type for type attributes. Add handling of Object_Size and adjust that of Max_Size_In_Storage_Elements in the non-static case. 2024-05-16 Eric Botcazou * exp_ch7.adb (Attach_Object_To_Master_Node): Remove reference to a transient object in comment. 2024-05-16 Marc Poulhiès * exp_ch7.adb (Reset_Scopes_To_Block_Elab_Proc): also reset scope for object declarations. 2024-05-16 Steve Baird * checks.adb (Expr_Known_Valid): Return True for a static expression. * exp_util.adb (Adjust_Condition): No validity check needed for a condition if it is an expression for which a validity check has already been generated. 2024-05-16 Gary Dismukes * libgnat/a-coinve.ads (type Vector): In the Aggregate aspect for this type, the Empty operation is changed to denote the Empty function, rather than the Empty_Vector constant. * exp_aggr.adb (Expand_Container_Aggregate): Remove code for handling the case where the Empty_Subp denotes a constant object, which should never happen (and add an assertion that Empty_Subp must denote a function). * sem_ch13.adb (Valid_Empty): No longer allow the entity to be an E_Constant, and require the (optional) parameter of an Empty function to be of a signed integer type (rather than any integer type). 2024-05-16 Justin Squirek * doc/gnat_rm/implementation_defined_attributes.rst: Add entry for Super attribute. * accessibility.adb (Accessibility_Level): Add handling for Super. * exp_attr.adb (Expand_N_Attribute_Reference): Add entry for Super. * sem_attr.adb (Analyze_Attribute): Create a case to handle the semantic checking and expansion for Super. (Eval_Attribute): Add entry for Super. * sem_attr.ads: Add entry for Super. * sem_util.adb (Is_Aliased_View, Is_Variable): Add case to handle references to 'Super. * snames.ads-tmpl: Register Name_Super and Attribute_Super. * gnat_rm.texi: Regenerate. 2024-05-16 Ronan Desplanques * sem_util.ads (Check_Function_Writable_Actuals): Fix comment. 2024-05-16 Ronan Desplanques * sem_res.adb (Resolve_Case_Expression): Add length check insertion. * exp_ch4.adb (Expand_N_Case_Expression): Add handling of nodes known to raise Constraint_Error. 2024-05-16 Sebastian Poeplau * adaint.c: New defines for STANDALONE mode. 2024-05-16 Viljar Indus * 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-16 Piotr Trojanek * exp_cg.adb (Generate_CG_Output): Remove code for ignored ghost entities that applied to subprogram calls. (Register_CG_Node): Skip ignored ghost entities, both calls and tagged types, when they are registered. 2024-05-16 Ronan Desplanques * checks.adb (Apply_Selected_Length_Checks): Fix reason code. 2024-05-16 Eric Botcazou * libgnat/s-finpri.adb (Raise_From_Controlled_Operation): New declaration of imported procedure moved from... (Finalize_Master): ...there. (Finalize): Call Raise_From_Controlled_Operation instead of Reraise_Occurrence to propagate the exception, if any. 2024-05-16 Piotr Trojanek * sem_ch4.adb (Analyze_If_Expression): Add guard for if_expression without an ELSE part. 2024-05-16 Piotr Trojanek * exp_ch13.adb (Expand_N_Free_Statement): After analysis, the new temporary has the type of its Object_Definition and the new occurrence of this temporary has this type as well; simplify. * sem_util.adb (Indirect_Temp_Value): Remove redundant call to Set_Etype; simplify. (Is_Access_Type_For_Indirect_Temp): Add missing body header. 2024-05-16 Piotr Trojanek * sem_util.adb (Is_Known_On_Entry): Check whether condition and dependent expressions of an if_expression are known on entry. 2024-05-16 Ronan Desplanques * checks.ads: Fix comments. * checks.adb: Likewise. 2024-05-16 Eric Botcazou * libgnat/s-finpri.ads: Add use type clause for Storage_Offset. (Header_Alignment): Turn into an expression function. (Header_Size): Likewise. * libgnat/s-finpri.adb: Remove use type clause for Storage_Offset. (Header_Alignment): Delete. (Header_Size): Likewise. 2024-05-16 Marc Poulhiès * exp_ch7.adb (Unnest_Loop::Fixup_Inner_Scopes): detect a new problematic pattern and fixup the scope accordingly. 2024-05-16 Piotr Trojanek * gnat_cuda.adb (Remove_CUDA_Device_Entities): Fix typo. 2024-05-16 Eric Botcazou * libgnat/s-finpri.ads (Header_Alignment): New function. (Header_Size): Adjust description. (Master_Node): Put Finalize_Address as first component. (Collection_Node): Likewise. * libgnat/s-finpri.adb (Header_Alignment): New function. (Header_Size): Return the object size in storage units. * libgnat/s-stposu.ads (Adjust_Controlled_Dereference): Replace collection node with header in description. * libgnat/s-stposu.adb (Adjust_Controlled_Dereference): Likewise. (Allocate_Any_Controlled): Likewise. Pass the maximum of the specified alignment and that of the header to the allocator. (Deallocate_Any_Controlled): Likewise to the deallocator. 2024-05-16 Viljar Indus * exp_aggr.adb (Two_Pass_Aggregate_Expansion): Explicitly create new Defining_Iterators for both of the loops. 2024-05-16 Eric Botcazou * sem_ch6.adb (Check_Private_Overriding): Implement the second part of RM 3.9.3(10) consistently in both cases. 2024-05-16 Piotr Trojanek * erroutc.adb (Set_Msg_Insertion_Reserved_Word): Fix casing for CUDA appearing in error message strings. (Set_Msg_Str): Likewise for CUDA being a part of a Name_Id. 2024-05-16 Ronan Desplanques * exp_ch4.adb (Expand_Composite_Equality): Call Error_Msg_N instead of Error_Msg. 2024-05-16 Steve Baird * exp_attr.adb (Build_And_Insert_Type_Attr_Subp): Further tweaking of the point where a compiler-generated Put_Image or streaming subprogram is to be inserted in the tree. If one such subprogram calls another (as is often the case with, for example, Put_Image procedures for composite type and for a component type thereof), then we want to avoid use-before-definition problems that can result from inserting the caller ahead of the callee. 2024-05-16 Eric Botcazou * libgnat/s-finpri.ads (Lock_Type): New modular type. (Collection_Node): Add Enclosing_Collection component. (Finalization_Collection): Add Lock component. * libgnat/s-finpri.adb: Add clauses for System.Atomic_Primitives. (Attach_Object_To_Collection): Lock and unlock the collection. Save a pointer to the enclosing collection in the node. (Detach_Object_From_Collection): Lock and unlock the collection. (Finalize): Likewise. (Initialize): Initialize the lock. (Lock_Collection): New procedure. (Unlock_Collection): Likewise. 2024-05-16 Steve Baird * sem_attr.adb (Eval_Attribute): Expand existing checks for generic formal types for which Is_Generic_Type returns False. In that case, mark the attribute reference as nonstatic. 2024-05-16 Steve Baird * sem_util.adb (Copy_Node_With_Replacement): Add call to Copy_Dimensions so that any dimension information associated with the copied node is also associated with the resulting copy. 2024-05-16 Piotr Trojanek * gen_il-gen-gen_nodes.adb (N_Procedure_Specification): Remove Aspect_Specifications field. 2024-05-16 Piotr Trojanek * sem_ch13.adb (Analyze_Aspect_Specification): Consistently reuse existing constant where possible. 2024-05-16 Piotr Trojanek * sem_ch13.adb (Analyze_Aspect_Specification): Consistently reuse existing constant where possible. 2024-05-16 Piotr Trojanek * aspects.ads (Aspect_Id): Fix ordering. 2024-05-16 Piotr Trojanek * sem_prag.adb (Analyze_Pragma): Move case alternative to match to alphabetic order. 2024-05-16 Piotr Trojanek * gnat_cuda.adb (Remove_CUDA_Device_Entities): Fix casing (this primarily fixes a style, because the capitalization will not be preserved by the error-reporting machinery anyway). * sem_ch13.adb (Analyze_User_Aspect_Aspect_Specification): Fix casing in error message. 2024-05-16 Piotr Trojanek * doc/gnat_rm/implementation_defined_pragmas.rst: Fix documentation. * sem_prag.adb: Fix comments. * gnat_rm.texi: Regenerate. 2024-05-14 Piotr Trojanek * aspects.ads (Aspect_Id, Boolean_Aspect): Change categorization of Boolean-valued SPARK aspects. * sem_ch13.adb (Analyze_Aspect_Specification): Adapt CASE statements to new classification of Boolean-valued SPARK aspects. 2024-05-14 Ronan Desplanques * sem_ch13.adb (Validate_Unchecked_Conversions): Add node parameters to Error_Msg calls. 2024-05-14 Marc Poulhiès * sem_util.adb: Typo fix in comment. * exp_aggr.adb: Likewise. 2024-05-14 Eric Botcazou * exp_ch7.adb (Finalization Management): Add a short description of the implementation of finalization chains. 2024-05-14 Eric Botcazou * exp_ch4.adb (Expand_Allocator_Expression): Move the first call to Build_Allocate_Deallocate_Proc up to before the accessibility check. 2024-05-14 Ronan Desplanques * errout.adb (Validate_Specific_Warnings): Adapt to record definition change. * erroutc.adb (Set_Specific_Warning_On, Set_Specific_Warning_Off, Warning_Specifically_Suppressed): Likewise. * erroutc.ads: Change record definition. 2024-05-14 Eric Botcazou * exp_ch3.adb (Build_Default_Initialization): Do not generate the protection for finalization collections. (Build_Heap_Or_Pool_Allocator): Set the No_Initialization flag on the declaration of the temporary. * exp_ch4.adb (Build_Aggregate_In_Place): Do not build an allocation procedure here. (Expand_Allocator_Expression): Build an allocation procedure, if it is required, only just before rewriting the allocator. (Expand_N_Allocator): Do not build an allocation procedure if the No_Initialization flag is set on the allocator, except for those generated for special return objects. In other cases, build an allocation procedure, if it is required, only before rewriting the allocator. * exp_ch7.ads (Make_Address_For_Finalize): New function declaration. * exp_ch7.adb (Finalization Management): Update description for dynamically allocated objects. (Make_Address_For_Finalize): Remove declaration. (Find_Last_Init): Change to function and move to... (Process_Object_Declaration): Adjust to above change. * exp_util.ads (Build_Allocate_Deallocate_Proc): Add Mark parameter with Empty default and document it. (Find_Last_Init): New function declaration. * exp_util.adb (Build_Allocate_Deallocate_Proc): Add Mark parameter with Empty default and pass it in recursive call. Deal with type conversions created for interface types. Adjust call sequence to Allocate_Any_Controlled by changing Collection to In/Out parameter and removing Finalize_Address parameter. For a controlled object, generate a conditional call to Attach_Object_To_Collection for an allocation and to Detach_Object_From_Collection for a deallocation. (Find_Last_Init): ...here. Compute the initialization type for an allocator whose designating type is class wide specifically and also handle concurrent types. * rtsfind.ads (RE_Id): Add RE_Attach_Object_To_Collection and RE_Detach_Object_From_Collection. (RE_Unit_Table): Add entries for RE_Attach_Object_To_Collection and RE_Detach_Object_From_Collection. * libgnat/s-finpri.ads (Finalization_Started): Delete. (Attach_Node_To_Collection): Likewise. (Detach_Node_From_Collection): Move to... (Attach_Object_To_Collection): New procedure declaration. (Detach_Object_From_Collection): Likewise. (Finalization_Collection): Remove Atomic for Finalization_Started. Add pragma Inline for Initialize. * libgnat/s-finpri.adb: Add clause for Ada.Unchecked_Conversion. (To_Collection_Node_Ptr): New instance of Ada.Unchecked_Conversion. (Detach_Node_From_Collection): ...here. (Attach_Object_To_Collection): New procedure. (Detach_Object_From_Collection): Likewise. (Finalization_Started): Delete. (Finalize): Replace allocation with attachment in comments. * libgnat/s-stposu.ads (Allocate_Any_Controlled): Rename parameter Context_Subpool into Named_Subpool, parameter Context_Collection into Collection and change it to In/Out, and remove Fin_Address. * libgnat/s-stposu.adb: Remove clause for Ada.Unchecked_Conversion and Finalization_Primitives. (To_Collection_Node_Ptr): Delete. (Allocate_Any_Controlled): Rename parameter Context_Subpool into Named_Subpool, parameter Context_Collection into Collection and change it to In/Out, and remove Fin_Address. Do not lock/unlock and do not attach the object, instead only displace its address. (Deallocate_Any_Controlled): Do not lock/unlock and do not detach the object. (Header_Size_With_Padding): Use qualified name for Header_Size. 2024-05-14 Steve Baird * exp_attr.adb (Build_And_Insert_Type_Attr_Subp): If a subprogram associated with a (library-level) type declared in another unit is to be inserted somewhere in a list, then insert it at the head of the list. * sem_ch5.adb (Analyze_Assignment): Normally a limited-type assignment is illegal. Relax this rule if Comes_From_Source is False and the type is not immutably limited. 2024-05-14 Ronan Desplanques * errout.ads (Error_Msg): Add node parameter. * errout.adb (Error_Msg): Add parameter and pass it to the underlying call. * sem_prag.adb (Validate_Compile_Time_Warning_Or_Error): Pass pragma node when emitting errors. 2024-05-14 Ronan Desplanques * styleg.ads (Check_Xtra_Parens_Precedence): Moved ... * style.ads (Check_Xtra_Parens_Precedence): ... here. Also replace corresponding renaming. * styleg.adb (Check_Xtra_Parens_Precedence): Moved ... * style.adb (Check_Xtra_Parens_Precedence): here. Also use Errout.Error_Msg and pass it a node parameter. 2024-05-14 Eric Botcazou * exp_aggr.ads (Convert_Aggr_In_Allocator): Rename Alloc into N, replace Decl with Temp and adjust description. (Convert_Aggr_In_Object_Decl): Alphabetize. (Is_Delayed_Aggregate): Likewise. * exp_aggr.adb (Convert_Aggr_In_Allocator): Rename Alloc into N and replace Decl with Temp. Allocate a list only when neeeded. (Convert_Array_Aggr_In_Allocator): Replace N with Decl and insert new code before it. * exp_ch4.adb (Build_Aggregate_In_Place): New procedure nested in Expand_Allocator_Expression. (Expand_Allocator_Expression): Call it to build aggregates in place. Remove second parameter in calls to Build_Allocate_Deallocate_Proc. (Expand_N_Allocator): Likewise. * exp_ch13.adb (Expand_N_Free_Statement): Likewise. * exp_util.ads (Build_Allocate_Deallocate_Proc): Remove Is_Allocate parameter. * exp_util.adb (Build_Allocate_Deallocate_Proc): Remove Is_Allocate parameter and replace it with local variable of same name. Delete useless pattern matching. 2024-05-14 Ronan Desplanques * usage.adb (Usage): Fix enabled-by-default indicators. 2024-05-14 Philippe Gil * libgnat/s-win32.ads (LocalFileTimeToFileTime): Swap parameters. 2024-05-14 Ronan Desplanques * restrict.adb (Violation_Of_No_Dependence): Tweak error reporting calls. 2024-05-14 Ronan Desplanques * sem_prag.adb (Analyze_Pragma): Adapt call to new signature. * erroutc.ads (Set_Specific_Warning_Off): change signature and update documentation. (Validate_Specific_Warnings): Move ... * errout.adb: ... here and change signature. Also move body of Validate_Specific_Warnings from erroutc.adb. (Finalize): Adapt call. * errout.ads (Set_Specific_Warning_Off): Adapt signature of renaming. * erroutc.adb (Set_Specific_Warning_Off): Adapt signature and body. (Validate_Specific_Warnings): Move to the body of Errout. (Warning_Specifically_Suppressed): Adapt body. 2024-05-14 Eric Botcazou * exp_aggr.adb (Build_Array_Aggr_Code): Pass N in the call to Build_Initialization_Call. (Build_Record_Aggr_Code): Likewise. (Convert_Aggr_In_Object_Decl): Likewise. (Initialize_Discriminants): Likewise. * exp_ch3.ads (Build_Initialization_Call): Replace Loc witn N. * exp_ch3.adb (Build_Array_Init_Proc): Pass N in the call to Build_Initialization_Call. (Build_Default_Initialization): Likewise. (Expand_N_Object_Declaration): Likewise. (Build_Initialization_Call): Replace Loc witn N parameter and add Loc local variable. Build a default subtype for an allocator of a discriminated type with defaulted discriminants. (Build_Record_Init_Proc): Pass the declaration of components in the call to Build_Initialization_Call. * exp_ch6.adb (Make_CPP_Constructor_Call_In_Allocator): Pass the allocator in the call to Build_Initialization_Call. 2024-05-14 Ronan Desplanques * sem_warn.adb (Warn_On_Overlapping_Actuals): Fix typo. 2024-05-14 Gary Dismukes * exp_util.adb (Find_Hook_Context): Exclude N_*Aggregate Nkinds of Parent (Par) from the early return in the second loop of the In_Cond_Expr case, to prevent returning an aggregate from this function rather than the enclosing declaration or statement. 2024-05-14 Steve Baird * exp_attr.adb: Replace 6 "not Present" tests with equivalent calls to "No". 2024-05-14 Eric Botcazou * exp_ch3.adb (Expand_N_Object_Declaration): Examine the Expression field after the call to Default_Initialize_Object in order to set Is_Known_Null, as well as Is_Known_Non_Null, on an access object. 2024-05-14 Steve Baird * exp_attr.adb: Change name of package Cached_Streaming_Ops to reflect the fact that it is now also used for Put_Image procedures. Similarly change other "Streaming_Op" names therein. Add Validate_Cached_Candidate procedure to detect case where a subprogram found in the cache cannot be reused. Add new generic procedure Build_And_Insert_Type_Attr_Subp; the "Build" part is handled by just calling a formal procedure; the bulk of this (generic) procedure's code has to with deciding where in the tree to insert the newly-constructed subprogram. Replace each later "Build" call (and the following Insert_Action or Compile_Stream_Body_In_Scope call) with a declare block that instantiates and then calls this generic procedure. Delete the now-unused procedure Compile_Stream_Body_In_Scope. A constructed subprogram is entered in the appropriate cache if the corresponding type is untagged; this replaces more complex tests. A new function Interunit_Ref_OK is added to determine whether an attribute reference occuring in one unit can safely refer to a cached subprogram declared in another unit. * exp_ch3.adb (Build_Predefined_Primitive_Bodies): A formal parameter was deleted, so delete the corresponding actual in a call. * exp_put_image.adb (Build_Array_Put_Image_Procedure): Because the procedure being built may be referenced more than once, the generated procedure takes its source position info from the type declaration instead of the (first) attribute reference. (Build_Record_Put_Image_Procedure): Likewise. * exp_put_image.ads (Build_Array_Put_Image_Procedure): Eliminate now-unused Nod parameter. (Build_Record_Put_Image_Procedure): Eliminate now-unused Loc parameter. * sem_ch3.adb (Constrain_Discriminated_Type): For declaring a subtype with a discriminant constraint, ignore privacy if Comes_From_Source is false (as is already done if Is_Instance is true). * sem_res.adb (Resolve): When passed two type entities that have the same underlying base type, Sem_Type.Covers may return False in some cases because of privacy. [This can happen even if Is_Private_Type returns False both for Etype (N) and for Typ; Covers calls Base_Type, which can take a non-private argument and yield a private result.] If Comes_From_Source (N) is False (e.g., for a compiler-generated Put_Image or streaming subprogram), then avoid that scenario by not calling Covers. Covers already has tests for doing this sort of thing (see the calls therein to Full_View_Covers), but the Comes_From_Source test is too coarse to apply there. So instead we handle the problem here at the call site. (Original_Implementation_Base_Type): A new function. Same as Implementation_Base_Type except if the Original_Node attribute of a non-derived type declaration indicates that it once was a derived type declaration. Needed for looking through privacy. (Valid Conversion): Ignore privacy when converting between different views of the same type if Comes_From_Source is False for the conversion. (Valid_Tagged_Conversion): An ancestor-to-descendant conversion is not an illegal downward conversion if there is no type extension involved (because the derivation was from an untagged view of the parent type). 2024-05-14 Steve Baird * sem_ch5.adb (Analyze_Case_Statement): Emit a message and return early in the case where general case statements are allowed but the selector expression is of a private type. This is done to avoid a bugbox. 2024-05-14 Justin Squirek * sem_util.adb (Set_Referenced_Modified): Use Original_Node to avoid recursive calls on expanded / internal objects such that source nodes get appropriately marked as referenced. 2024-05-14 Ronan Desplanques * sem_warn.adb (Warn_On_Overlapping_Actuals): Stop ignoring warning suppression settings. 2024-05-14 Eric Botcazou * exp_util.adb (Build_Allocate_Deallocate_Proc): Pass the alignment parameter in the inner call for a secondary stack allocation too. 2024-05-14 Javier Miranda * sem_ch10.adb (Install_Inherited_Policy_Pragmas): New subprogram. (Remove_Inherited_Policy_Pragmas): New subprogram. (Analyze_Compilation_Unit): Call the new subprograms to install and remove inherited assertion policy pragmas. 2024-05-14 Eric Botcazou * exp_ch4.adb (Expand_N_If_Expression): Set No_Initialization on the declaration of the temporary in the by-reference case. * exp_util.adb (Initialized_By_Access): Delete. (Is_Allocated): Likewise. (Initialized_By_Reference): New predicate. (Is_Finalizable_Transient): If the transient object is of an access type, do not return true unless it is initialized by a reference. 2024-05-14 Steve Baird * exp_attr.adb: Move computation of Accum_Typ entirely into the function Build_Stat. 2024-05-14 Steve Baird * sem_ch12.ads: Declare new Instance_Context package, which declares a private type Context with operations Save_And_Reset and Restore. * sem_ch12.adb: Provide body for new Instance_Context package. * rtsfind.adb (Load_RTU): Wrap an Instance_Context Save/Restore call pair around the call to Semantics. * table.ads: Add initial value for Last_Val (because Save_And_Reset expects Last_Val to be initialized). 2024-05-14 Eric Botcazou * exp_aggr.adb (Build_Record_Aggr_Code): Replace reference to Build_Task_Allocate_Block_With_Init_Stmts in comment with reference to Build_Task_Allocate_Block. (Convert_Aggr_In_Allocator): Likewise for the call in the code. * exp_ch6.adb (Make_Build_In_Place_Call_In_Allocator): Likewise. * exp_ch3.ads: Alphabetize clauses. (Build_Default_Initialization): New function declaration. (Build_Default_Simple_Initialization): Likewise. (Build_Initialization_Call): Add Target_Ref parameter with default. * exp_ch3.adb (Build_Default_Initialization): New function extracted from... (Build_Default_Simple_Initialization): Likewise. (Build_Initialization_Call): Add Target_Ref parameter with default. (Expand_N_Object_Declaration): ...here. (Default_Initialize_Object): Call Build_Default_Initialization and Build_Default_Simple_Initialization. * exp_ch4.adb (Expand_Allocator_Expression): Minor comment tweaks. (Expand_N_Allocator): Call Build_Default_Initialization and Build_Default_Simple_Initialization to implement the default initialization of the allocated object. * exp_ch9.ads (Build_Task_Allocate_Block): Delete. (Build_Task_Allocate_Block_With_Init_Stmts): Rename into... (Build_Task_Allocate_Block): ...this. * exp_ch9.adb: Remove clauses for Exp_Tss. (Build_Task_Allocate_Block): Delete. (Build_Task_Allocate_Block_With_Init_Stmts): Rename into... (Build_Task_Allocate_Block): ...this. * exp_util.adb (Build_Allocate_Deallocate_Proc): Remove unnecessary initialization expression, adjust commentary and replace early exit with assertion. * sem_ch4.adb (Analyze_Allocator): In the null-exclusion case, call Apply_Compile_Time_Constraint_Error to insert the raise. 2024-05-14 Ronan Desplanques * styleg.ads (Check_Boolean_Operator): Moved ... * style.ads (Check_Boolean_Operator): ... here. * styleg.adb (Check_Boolean_Operator): Moved ... * style.adb (Check_Boolean_Operator): ... here. Also add node parameter to call to Errout.Error_Msg. 2024-05-14 Eric Botcazou * sprint.adb (Sprint_Node_Actual) : Be prepared for an empty Name. : Likewise. 2024-05-14 Yannick Moy * 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-14 Yannick Moy * ghost.adb (Mark_And_Set_Ghost_Instantiation): Fix the current Ghost policy for the instantiation. 2024-05-14 Eric Botcazou * exp_ch3.adb (Default_Initialize_Object): Return immediately when either Has_Init_Expression or No_Initialization is set on the node. Tidy up the rest of the code accordingly. (Simple_Initialization_OK): Do not test Has_Init_Expression here. 2024-05-13 Eric Botcazou * accessibility.adb: Remove clauses for Exp_Ch3. * exp_ch3.ads (Init_Proc_Level_Formal): Move declaration to... * exp_ch3.adb (Init_Proc_Level_Formal): Move body to... * exp_util.ads (Init_Proc_Level_Formal): ...here. (Inside_Init_Proc): Alphabetize. * exp_util.adb (Init_Proc_Level_Formal): ...here. 2024-05-13 Piotr Trojanek * sem_util.adb (Is_Potentially_Unevaluated): Remove code for recovering the original structure of expressions with AND THEN. 2024-05-13 Piotr Trojanek * sem_attr.adb (Attribute_22): Remove Put_Image and Object_Size. * sem_attr.ads (Attribute_Imp_Def): Restore Object_Size. 2024-05-13 Eric Botcazou * exp_ch7.adb: Adjust the description of finalization management. (Build_Finalizer): Rename scope master into master throughout. * rtsfind.ads (RE_Id): Replace RE_Finalization_Scope_Master with RE_Finalization_Master. (RE_Unit_Table): Replace entry for RE_Finalization_Scope_Master with entry for RE_Finalization_Master. * libgnat/s-finpri.ads (Finalization_Scope_Master): Rename into... (Finalization_Master): ...this. (Attach_Object_To_Master): Adjust to above renaming. (Chain_Node_To_Master): Likewise. (Finalize_Master): Likewise. * libgnat/s-finpri.adb (Attach_Object_To_Master): Likewise. (Chain_Node_To_Master): Likewise. (Finalize_Master): Likewise. 2024-05-13 Eric Botcazou * libgnat/s-imaged.ads (System.Image_D): Add Uns formal parameter. * libgnat/s-imaged.adb: Add with clauses for System.Image_I, System.Value_I_Spec and System.Value_U_Spec. (Uns_Spec): New instance of System.Value_U_Spec. (Int_Spec): New instance of System.Value_I_Spec. (Image_I): New instance of System.Image_I. (Set_Image_Integer): New renaming. (Set_Image_Decimal): Replace 'Image with call to Set_Image_Integer. * libgnat/s-imde32.ads (Uns32): New subtype. (Impl): Pass Uns32 as second actual paramter to Image_D. * libgnat/s-imde64.ads (Uns64): New subtype. (Impl): Pass Uns64 as second actual paramter to Image_D. * libgnat/s-imde128.ads (Uns128): New subtype. (Impl): Pass Uns128 as second actual paramter to Image_D. * libgnat/s-imagef.adb (Set_Image_Fixed): Document bounds for the A, D and AF local constants. 2024-05-13 Piotr Trojanek * sem_attr.adb (Attribute_22): Add Put_Image and Object_Size. * sem_attr.ads (Attribute_Imp_Def): Remove Object_Size. 2024-05-13 Piotr Trojanek * aspects.adb (Copy_Aspects): Style fix. * contracts.adb (Analyze_Contracts): Style fix. (Save_Global_References_In_Contract): Remove extra guards. * par_sco.adb (Traverse_Aspects): Move guard to the caller and make it consistent with Save_Global_References_In_Contract. * sem_ch12.adb (Has_Contracts): Remove extra guards. * sem_ch3.adb (Delayed_Aspect_Present, Get_Partial_View_Aspect, Check_Duplicate_Aspects): Likewise. * sem_disp.adb (Check_Dispatching_Operation): Likewise. 2024-05-13 Bob Duff * errout.adb (Output_Messages): Protect against the total going negative. 2024-05-13 Piotr Trojanek * 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-13 Piotr Trojanek * exp_ch6.adb (Append_Message): Build the location string from scratch and not rely on the one produced while splitting the aspect into pragmas. * exp_prag.adb (Expand_Pragma_Check): Split pre/post checks in expansion. * sem_ch13.adb (Analyze_Aspect_Specification): Don't split pre/post expressions into conjuncts; don't add message with location to the corresponding pragma. * sem_prag.adb (Build_Pragma_Check_Equivalent): Inherited pragmas no longer have messages that would need to be updated. * sinput.adb (Build_Location_String): Adjust to keep previous messages while using with inherited pragmas. 2024-05-13 Piotr Trojanek * contracts.adb (Inherit_Subprogram_Contract): Fix style. * sem_ch5.adb (Analyze_Iterator_Specification): Likewise. 2024-05-13 Piotr Trojanek * sem_util.adb (Has_No_Output): Iteration with First_Formal/Next_Formal involves Entity_Ids. 2024-05-13 Piotr Trojanek * sem_prag.adb (Analyze_Pragma): When processing pragma Lock_Free, check if restriction No_Implementation_Pragmas is enabled. 2024-05-13 Piotr Trojanek * gen_il-fields.ads (Opt_Field_Enum): Remove Is_Expanded_Contract from the list of flags. * gen_il-gen-gen_nodes.adb (N_Contract): Remove Is_Expanded_Contract from the list of N_Contract fields. * sinfo.ads (Is_Expanded_Contract): Remove comments for the flag and its single occurrence in N_Contract. 2024-05-13 Piotr Trojanek * exp_ch9.adb (Build_Protected_Subprogram_Body, Build_Protected_Subprogram_Call_Cleanup): Reuse refactored routine. * sem_util.adb (Has_Enabled_Aspect): Refactored repeated code. (Is_Static_Function): Reuse refactored routine. * sem_util.ads (Has_Enabled_Aspect): New query routine refactored from repeated code. 2024-05-13 Piotr Trojanek * exp_ch9.adb (Build_Protected_Subprogram_Call_Cleanup): If aspect Exclusive_Functions is present then the cleanup of a protected function now services queued entries, just like the cleanup of a protected procedure. 2024-05-13 Bob Duff * sem_util.ads (Append_Entity_Name): Fix comment to reflect new semantics. The comment said, "The qualification stops at an enclosing scope has no source name (block or loop)." There seems to be no reason for stopping; instead, we should SKIP things with no source name. And the "loop" part was wrong. * sem_util.adb (Append_Entity_Name): Do not stop the recursion; skip to next-outer scope instead. Misc cleanup/simplification. 2024-05-13 Eric Botcazou * libgnat/s-finpri.adb (Finalize): Replace "master" by "collection" in comments and add a comment about the form of the loop. * libgnat/s-stposu.adb (Allocate_Any_Controlled): Tweak comment. 2024-05-13 Eric Botcazou * 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-05-13 Ashley Gay * Makefile.rtl: remove i-vxinco.* from the build * doc/gnat_rm/the_gnat_library.rst: Remove i-vxinco.ads from the units documentation. * impunit.adb: Remove i-vxinco from the list of available units in GNATstudio. * libgnarl/i-vxinco.adb: Remove. * libgnarl/i-vxinco.ads: Ditto. * libgnarl/s-interr__vxworks.adb: enrich comment * libgnarl/s-vxwext__kernel.ads: fix comment * libgnat/i-vxwork.ads: Remove deprecated interrupt connections API, as well as an example. * libgnat/i-vxwork__x86.ads: Ditto and add the paragma Obscolescent to Attach_Handler * gnat_rm.texi: Regenerate. 2024-05-13 Eric Botcazou * exp_ch3.adb (Build_Heap_Or_Pool_Allocator): Use the BIPstoragepool formal parameter to retrieve the pool in the presence of a master. * exp_ch6.adb (Make_Build_In_Place_Call_In_Allocator): Always pass a pool reference along with the master reference. (Make_Build_In_Place_Call_In_Object_Declaration): Likewise. * exp_ch7.adb (Build_BIP_Cleanup_Stmts): Use the BIPstoragepool formal parameter to retrieve the pool in the presence of a master. (Create_Anonymous_Master): Do not call Set_Base_Pool. (Build_Finalization_Master): Likewise. * rtsfind.ads (RE_Id): Remove RE_Base_Pool and RE_Set_Base_Pool. (RE_Unit_Table): Remove associated entries. * libgnat/s-finmas.ads: Remove clause for System.Storage_Pools. (Any_Storage_Pool_Ptr): Delete. (Finalization_Master): Remove Base_Pool component. (Base_Pool): Delete. (Set_Base_Pool): Likewise. * libgnat/s-finmas.adb (Base_Pool): Likewise. (Set_Base_Pool): Likewise. (Print_Master): Do not print Base_Pool. 2024-05-13 Eric Botcazou * exp_ch6.adb (Add_Unconstrained_Actuals_To_Build_In_Place_Call): Rename Pool_Actual into Pool_Exp and use Empty as default value. (Add_Finalization_Master_Actual_To_Build_In_Place_Call): Change the names of the first two parameters and use a simpler code structure. (Make_Build_In_Place_Call_In_Allocator): Rename the local variable for the pool actual and set it to Empty if it is not used. (Make_Build_In_Place_Call_In_Object_Declaration): Rename the local variable for the master actual. 2024-05-13 Eric Botcazou * exp_ch3.adb (Expand_N_Object_Declaration): In the case of a return object of a BIP function that needs finalization, save the assignment statement made to initialize it, if any. * exp_ch6.ads (BIP_Formal_Kind): Adjust description. * exp_ch6.adb (Make_Build_In_Place_Call_In_Allocator): Make a couple of adjustments to the commentary. (Needs_BIP_Alloc_Form): Also return true if the function needs a BIP_Finalization_Master parameter. * exp_ch7.adb (Build_BIP_Cleanup_Stmts): Remove now always true test on Needs_BIP_Alloc_Form. (Attach_Object_To_Master_Node): Remove duplication in comment. 2024-05-13 Piotr Trojanek * sem_util.adb (Get_Index_Bounds): Guard against missing Entity, which happens on illegal constrained type declaration. 2024-05-13 Eric Botcazou * sem_attr.adb (Eval_Attribute): Treat Alignment like Component_Size for array types. 2024-05-13 Steve Baird * sem_case.adb: Replace all tests of Core_Extensions_Allowed with corresponding tests of All_Extensions_Allowed. * sem_ch5.adb: Likewise. * doc/gnat_rm/gnat_language_extensions.rst: update documentation. * gnat_rm.texi: Regenerate. 2024-05-13 Eric Botcazou * sem_ch13.adb (New_Put_Image_Subprogram): In the nondeferred case coming from an aspect and for a type with delaying freezing, also freeze the subprogram immediately. 2024-05-13 Piotr Trojanek * libgnat/a-direct.adb (Start_Search_Internal): Combine subtype and object declaration. * libgnat/g-dirope.adb (Read): Replace convoluted unchecked conversion with an overlay. 2024-05-13 Piotr Trojanek * libgnat/g-dirope.adb (Read): Use null-excluding, access-to-constant type; replace element-by-element copy with array assignments. 2024-05-13 Gary Dismukes * exp_aggr.adb (Expand_Container_Aggregate): Move determination of whether the aggregate is an indexed aggregate earlier in the procedure. Test Is_Indexed_Aggregate as a criterion for generating a call to the container type's New_Indexed function, add proper computation of bounds to pass in to the function, and remove later code for generating such a call. Add and improve comments. (Aggregate_Size): Remove special treatment of case where there is exactly one component association, and instead loop over all component associations to determine whether any of them have a nonstatic length. If there is at least one such nonstatic association, return -1. (Build_Siz_Exp): Accumulate a sum of the sizes of each of the component associations in Siz_Exp (which will only be used if there any associations that are of Nkind N_Iterated_Component_Association with a nonstatic range). (Expand_Range_Component): Fix typos in the procedure's spec comment and block comment. 2024-05-07 Piotr Trojanek * sem_util.adb (Number_Of_Elements_In_Array): Fix counting of elements in null arrays; remove redundant parenthesis; avoid run-time conversion of 1 to universal integer. 2024-05-07 Piotr Trojanek * lib.ads, lib.adb (Primary_Stack_Count, Sec_Stack_Count, Increment_Primary_Stack_Count, Increment_Sec_Stack_Count, Unit_Record): Stack counts are never negative. * ali.ads (Unit_Record): Likewise. * bindgen.adb (Num_Primary_Stacks, Num_Sec_Stacks): Likewise. * exp_ch3.adb (Count_Default_Sized_Task_Stacks): Likewise. * sem_util.ads, sem_util.adb (Number_Of_Elements_In_Array): Likewise. 2024-05-07 Piotr Trojanek * exp_ch3.adb (Count_Default_Sized_Task_Stacks): Do not look for tasks inside record discriminants; remove avoid repeated call to Has_Task that happened for record components. (Expand_N_Object_Declaration): Use high-level routine to detect array types and subtypes; remove unused initial values. 2024-05-07 Piotr Trojanek * exp_aggr.ads (Static_Array_Aggregate): Fix typo in comment. 2024-05-07 Piotr Trojanek * inline.adb (Has_Single_Return): Remove redundant check for empty list, because First works also for empty list. 2024-05-07 Piotr Trojanek * exp_ch4.adb (Useful): Remove redundant check for empty list, because iteration with First works also for empty list; rename local variable from L to Action. 2024-05-07 Piotr Trojanek * inline.adb (Has_Formal_With_Per_Object_Constrained_Component): Use flag Has_Per_Object_Constraint which is set by analysis; rename for consistency. 2024-05-07 Piotr Trojanek * sem_attr.adb (Analyze_Access_Attribute): Replace loop with Current_Scope_No_Loops. 2024-05-07 Piotr Trojanek * sem_attr.adb (Analyze_Access_Attribute): Move code to IF branch where its result is used. 2024-05-07 Piotr Trojanek * sem_attr.adb (Analyze_Access_Attribute): Prevent search from going too far. * sem_ch3.adb (Analyze_Component_Declaration): Remove Contains_POC; reuse Has_Discriminant_Dependent_Constraint. 2024-05-07 Eric Botcazou * einfo.ads (Pending_Access_Types): Delete. * exp_ch3.adb (Freeze_Type.Process_Pending_Access_Types): Likewise. (Freeze_Type): Do not call Process_Pending_Access_Types. * exp_ch7.ads (Make_Set_Finalize_Address_Call): Delete. * exp_ch7.adb (Build_Finalization_Master.Add_Pending_Access_Type): Delete. (Build_Finalization_Master): Do not set Finalize_Address on the master or call Add_Pending_Access_Type. (Make_Set_Finalize_Address_Call): Delete. * gen_il-fields.ads (Opt_Field_Enum): Remove Pending_Access_Types. * gen_il-gen-gen_entities.adb (Type_Kind): Likewise. * rtsfind.ads (RE_Id): Remove RE_Set_Finalize_Address. (RE_Unit_Table): Likewise. * sem_ch3.adb (Analyze_Full_Type_Declaration): Do not deal with pending access types. * libgnat/s-finmas.ads (Attach_Unprotected): Add Finalize_Address second parameter. (Delete_Finalize_Address_Unprotected): Delete. (Finalize_Address): Likewise. (Finalize_Address_Unprotected): Likewise. (Is_Homogeneous): Likewise. (Set_Finalize_Address): Likewise. (Set_Finalize_Address_Unprotected): Likewise. (Set_Heterogeneous_Finalize_Address_Unprotected): Likewise. (Set_Is_Heterogeneous): Likewise. (FM_Node): Add Finalize_Address component. (Finalization_Master): Remove Is_Homogeneous and Finalize_Address components. * libgnat/s-finmas.adb: Remove with & use clauses for System.HTable. (Finalize_Address_Table): Delete. (Attach_Unprotected): Add Finalize_Address second parameter and save its value in the Finalize_Address field of the node. (Delete_Finalize_Address_Unprotected): Delete. (Finalize): Call Finalize_Address saved in the nodes. (Finalize_Address): Delete. (Finalize_Address_Unprotected): Likewise. (Hash): Likewise. (Is_Homogeneous): Likewise. (Print_Master): Adjust. (Set_Finalize_Address): Delete. (Set_Finalize_Address_Unprotected): Likewise. (Set_Heterogeneous_Finalize_Address_Unprotected): Likewise. (Set_Is_Heterogeneous): Likewise. * libgnat/s-stposu.adb (Finalize_Address_Table_In_Use): Likewise. (Allocate_Any_Controlled): Pass Fin_Address to Attach_Unprotected and remove obsolete processing. (Deallocate_Any_Controlled): Remove obsolete processing. (Set_Pool_Of_Subpool): Do not call Set_Is_Heterogeneous. 2024-05-07 Joffrey Huguet * libgnat/a-ngelfu.ads (Sqrt): Add Global contracts. (Log): Likewise. (Exp): Likewise. ("**"): Likewise. (Sin): Likewise. (Cos): Likewise. (Tan): Likewise. (Cot): Likewise. (Arcsin): Likewise. (Arccos): Likewise. (Arctan): Likewise. (Arccot): Likewise. (Sinh): Likewise. (Cosh): Likewise. (Tanh): Likewise. (Coth): Likewise. (Arcsinh): Likewise. (Arccosh): Likewise. (Arctanh): Likewise. (Arccoth): Likewise. 2024-05-07 Eric Botcazou * einfo.ads (Postconditions_Proc): Delete. * gen_il-fields.ads (Opt_Field_Enum): Remove Postconditions_Proc. * gen_il-gen-gen_entities.adb (E_Function): Likewise. (E_Procedure): Likewise. (E_Entry): Likewise. (E_Entry_Family): Likewise. 2024-05-07 Ronan Desplanques * sinfo.ads: Fix typo. 2024-05-07 Bob Duff * exp_attr.adb (Attribute_Old): The 'Old attribute we are processing here is in a postcondition, which cannot be inside the "Wrapped_Statements" of the subprogram with that postcondition. So remove the loop labeled "Climb the parent chain looking for subprogram _Wrapped_Statements". The only way this loop could find a Subp is if we are nested inside a subprogram that also has a postcondition, and in that case we would find the wrong (outer) one. In any case, Subp is set to Empty after the loop, so all subsequent tests for Present (Subp) are necessarily False; remove them and the corresponding code. Set Ins_Node unconditionally (to the right thing). Remove obsolete comments. * sem_util.adb (Determining_Expressions): Fix assertion; Pragma_Test_Case was missing. (Eligible_For_Conditional_Evaluation): Fix assert that could fail in case of errors. * libgnat/s-valspe.ads: Remove pragma Unevaluated_Use_Of_Old; there are no uses of 'Old in this package. 2024-05-07 Yannick Moy * libgnat/a-strsea.adb (Index): Add assertions. * libgnat/a-strsup.ads ("="): Remove useless precondition. * libgnat/s-aridou.adb (Prove_Rounding_Case): Add assertions. (Lemma_Shift_Right): Add call to lemma. * libgnat/s-arit32.adb (Prove_Rounding_Case): Add assertion. (Prove_ Signs): Add assertions. (Scaled_Divide32): Add assertions. 2024-05-07 Steve Baird * sem_prag.adb (Analyze_Pragma): Restructure the loop over possible resolutions of a No_Return pragma's argument so that functions (and generic functions) are not processed until after it is known whether there is a non-function candidate resolution. For a pre-2022 Ada version, terminate the iteration before processing functions if a non-function resolution is found. 2024-05-07 Eric Botcazou * libgnat/g-socthi.ads (C_Bind): Turn into inline function. (C_Getpeername): Likewise. (C_Getsockname): Likewise. (C_Getsockopt): Likewise. (C_Setsockopt): Likewise. (Nonreentrant_Gethostbyaddr): Likewise. * libgnat/g-socthi.adb (Syscall_Accept): Adjust profile. (Syscall_Connect): Likewise. (Syscall_Recvfrom): Likewise. (Syscall_Sendto): Likewise. (C_Bind): New function. (C_Accept): Adjust to above change for profiles. (C_Connect): Likewise. (C_Getpeername): New function. (C_Getsockname): Likewise. (C_Getsockopt): Likewise. (C_Recvfrom): Adjust to above change for profiles. (C_Setsockopt): New function. (Nonreentrant_Gethostbyaddr): Likewise. 2024-05-07 Bob Duff * par-ch3.adb (P_Component_Items): Move P_Aspect_Specifications into the loop, so aspects can be attached to multiple component declarations. (P_Type_Declaration, P_Subtype_Declaration) (P_Known_Discriminant_Part_Opt): Remove default for Semicolon in calls to P_Aspect_Specifications. * gen_il-gen-gen_nodes.adb (N_Discriminant_Specification): Add Aspect_Specifications field to N_Discriminant_Specification, which was missing. * aspects.adb (Has_Aspect_Specifications_Flag): Make it True for N_Discriminant_Specification. * par-ch13.adb: Remove default for Semicolon in calls to P_Aspect_Specifications. (Get_Aspect_Specifications): Misc cleanup. (P_Aspect_Specifications): Remove comment. It's not clear what "the flag" is referring to, but anyway the first part of the comment is obvious, and the second part is apparently obsolete. Misc cleanup. * par.adb (P_Aspect_Specifications, Get_Aspect_Specifications): Remove default for Semicolon; calls are more readable that way. Improve comments. * par-ch12.adb: Remove default for Semicolon in calls to P_Aspect_Specifications. * par-ch6.adb: Likewise. * par-ch7.adb: Likewise. * par-ch9.adb: Likewise. * par-endh.adb: Likewise. 2024-05-07 Justin Squirek * sem_prag.adb (Defer_Compile_Time_Warning_Error_To_BE): Better handle itypes such that the tree copy required for the expansion of the pragma doesn't cause ordering problems with internal names. 2024-05-07 Yannick Moy * sem_res.adb (Resolve_Actuals): Add range check flag. 2024-05-07 Yannick Moy * sem_util.adb (Find_Placement_In_State_Space): Stop search for placement when reaching the public state of a generic package. 2024-05-07 Javier Miranda * sem_ch3.adb (Check_Return_Subtype_Indication): Add missing check on statically compatible subtypes. * sem_eval.adb (Subtypes_Statically_Compatible): Ensure that both types are either scalar types or access types to evaluate this predicate. 2024-05-07 Bob Duff * sem_ch13.adb (Resolve_Name): Clarify comment. 2024-05-07 Bob Duff * sem_ch13.adb (Resolve_Name): This is called only for names in aspect_specifications. If the name is an overloaded selected_component, reset the Entity. Note that this was already done for N_Identifier in the code just below. 2024-05-07 Eric Botcazou * repinfo.adb (List_Record_Info.List_Structural_Record_Layout): Add another guard for private types after retrieving the parent in the extension case. 2024-05-07 Yannick Moy * sem_util.adb (Is_Volatile_Function): Return True on functions with side effects. 2024-05-07 Piotr Trojanek * sem_prag.adb (Analyze_Global_Item): Handle side-effect functions like procedures. 2024-05-07 Piotr Trojanek * sem_prag.adb (Collect_Global_Item): Update comment. 2024-05-06 Piotr Trojanek * sem_prag.adb (Collect_Global_Item): Handle functions with side-effects. 2024-05-06 Piotr Trojanek * sem_prag.adb (Collect_Global_Item): Move code. 2024-05-06 Piotr Trojanek * sem_prag.adb (Find_Role): Handle functions with side-effects like procedures. 2024-05-06 Gary Dismukes * exp_ch6.adb (Make_Build_In_Place_Iface_Call_In_Object_Declaration): Set the Is_Return_Object flag on the entity of the temp object created to hold the BIP call result, from the flag on the passed-in object declaration's entity. Update copyright notice to 2024. 2024-05-06 Bob Duff * sem_ch10.adb (Expand_With_Clause): Misc cleanup. (Install_Private_With_Clauses): Avoid installing a private with_clause that comes from an instantiated generic (it is marked as Implicit_With, but doesn't come from a parent with). Fix typo in comment, and other minor cleanups. 2024-05-06 Ronan Desplanques * sem_util.adb (Build_Default_Subtype): Tweak source location information. 2024-05-06 Eric Botcazou * exp_ch7.adb (Build_Finalizer.Process_Declarations): Do not call Processing_Actions for simple protected objects if the profile is restricted. * exp_util.adb (Requires_Cleanup_Actions): Do not return True for simple protected objects if the profile is restricted. 2024-05-06 Eric Botcazou * fe.h: Remove unused declarations and add 'extern' to others. 2024-05-06 Piotr Trojanek * einfo-utils.adb (Is_Relaxed_Initialization_State): Remove. * einfo-utils.ads (Is_Relaxed_Initialization_State): Remove. * einfo.ads: Remove description of removed aspect. * fe.h (Is_Relaxed_Initialization_State): Remove. * sem_prag.adb (Analyze_Abstract_State): Remove support for Relaxed_Initialization. * sem_util.adb (Has_Relaxed_Initialization): Likewise. * sem_util.ads (Has_Relaxed_Initialization): Likewise. 2024-05-06 Justin Squirek * sem_warn.adb (Within_Postcondition): Add coverage for Preconditions 2024-05-06 Justin Squirek * sem_warn.adb (Within_Postcondition): Add/modify comments to document various cases. 2024-05-06 Justin Squirek * sem_warn.adb (Within_Postcondition): Renamed to Within_Contract_Or_Predicate. 2024-05-06 Justin Squirek * sem_warn.adb (Within_Postcondition): Add case to ignore references within generated predicate function calls. 2024-05-06 Ronan Desplanques * hostparm.ads: Fix reference to RM clause. 2024-05-06 Eric Botcazou * libgnat/s-finpri.ads (Finalize_Master): Remove obsolete reference in the description. (Finalize_Object): Document the effects of repeated calls. 2024-05-06 Eric Botcazou * einfo.ads (Finalization_Master_Node_Or_Object): Rename into... (Finalization_Master_Node): ...this and adjust description. * exp_ch4.adb (Process_Transient_In_Expression): Attach the object to its master node here. * exp_ch7.ads (Attach_Object_To_Master_Node): New declaration. * exp_ch7.adb (Attach_Object_To_Master_Node): New procedure. (Build_Finalizer.Process_Declarations): Examine the type of a variable to spot master nodes. (Build_Finalizer.Process_Object_Declaration): Look only at the object and deal specifically with the case of a master node. (Build_Finalizer.Build_BIP_Cleanup_Stmts): Move to child function of Attach_Object_To_Master_Node. (Build_Finalizer.Make_Address_For_Finalize): Move to... (Insert_Actions_In_Scope_Around.Process_Transient_In_Scope): Attach the object to its master node here. (Make_Address_For_Finalize): ...here. (Make_Master_Node_Declaration): Adjust to above renaming and set Finalization_Master_Node only on the object. (Make_Suppress_Object_Finalize_Call): Adjust to above renaming and attach the object to its master node here. * exp_util.adb (Requires_Cleanup_Actions): Examine the type of a variable to spot master nodes. * gen_il-fields.ads (Opt_Field_Enum): Adjust to above renaming. * gen_il-gen-gen_entities.adb (Allocatable_Kind): Likewise. * rtsfind.ads (RE_Id): Add RE_Chain_Node_To_Master. (RE_Unit_Table): Add entry for RE_Chain_Node_To_Master. * libgnat/s-finpri.ads (Chain_Node_To_Master): New declaration. * libgnat/s-finpri.adb (Chain_Node_To_Master): New procedure. (Attach_Object_To_Master): Call it. (Finalize_Master): Do not raise Program_Error on null addresses. (Finalize_Object): Add assertion that the address is not null. 2024-05-06 Eric Botcazou * libgnarl/s-taprob.ads (Protection): Add cross-reference to the counterpart in System.Tasking.Protected_Objects.Entries. * libgnarl/s-taskin.ads (Locking Rules): Replace PO_Simple by Protected_Objects. * libgnarl/s-tpoben.ads (Protection_Entries): Likewise. 2024-05-06 Eric Botcazou * exp_attr.adb (Expand_N_Attribute_Reference) : Return 0 if the prefix is a dereference of an access value subject to the No_Heap_Finalization pragma. 2024-05-06 Ronan Desplanques * exp_imgv.adb (Append_Table_To): Remove reference to removed field. * gen_il-fields.ads: Remove Is_Enum_Array_Aggregate field. * gen_il-gen-gen_nodes.adb: Likewise. * sem_aggr.adb: Tweak warning emission condition. * sinfo.ads: Remove documentation for Is_Enum_Array_Aggregate. 2024-05-06 Piotr Trojanek * make.adb (Scan_Make_Arg): Remove redundant condition. * switch-b.adb (Scan_Debug_Switches): Likewise. * switch-c.adb (Scan_Front_End_Switches): Likewise. 2024-05-06 Yannick Moy * inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Add guard. 2024-05-06 Piotr Trojanek * exp_pakd.adb (Create_Packed_Array_Impl_Type): Set associated node for the packed array itype. * exp_util.adb (Possible_Side_Effect_In_SPARK): Remove workaround for a missing associated node. 2024-05-06 Richard Kenner * freeze.adb (Freeze_Entity): When changing the convention of primitive to match that of the type, only do this for user-specified primitives. 2024-05-06 Bob Duff * exp_put_image.adb (Build_Image_Call): Call Set_Uses_Sec_Stack on the current scope. We don't do this at all call sites, because there are three; better to do it here. 2024-05-06 Eric Botcazou * sem_attr.adb (Analyze_Attribute) : Also accept it for ordinary fixed point types. * doc/gnat_rm/implementation_defined_attributes.rst (Round): New. * gnat_rm.texi: Regenerate. 2024-05-06 Eric Botcazou * exp_ch3.adb (Expand_Freeze_Class_Wide_Type): Use No instead of not Present. 2024-05-06 Eric Botcazou * exp_ch7.adb (Build_Finalizer.Process_Object_Declaration): Adjust the Sloc of the master node declaration in the degenerate case. 2024-05-06 Yannick Moy * inline.adb (Call_Can_Be_Inlined_In_GNATprove_Mode): Add case to prevent inlining of call. * inline.ads: Likewise. * sem_res.adb (Resolve_Call): Update comment and message. 2024-05-06 Eric Botcazou * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add s-finpri$(objext). * contracts.adb (Add_Call_Helper): Append freeze actions to the class-wide type rather than the specific tagged type. * einfo.ads (Finalization_Master_Node_Or_Node): Document. (Status_Flag_Or_Transient_Decl): Remove. * exp_attr.adb (Expand_N_Attribute_Reference)
: Do not adjust a return object of a class-wide interface type. * exp_ch3.adb (Expand_Freeze_Class_Wide_Type): Add test that Finalize_Address is not already present as a condition for calling Make_Finalize_Address_Body. (Expand_Freeze_Record_Type): Call Make_Finalize_Address_Body for class-wide types of both regular tagged types and interface types. * exp_ch4.adb (Process_Transients_In_Expression): Replace the use of hooks with the use of master nodes. * exp_ch6.adb (Build_Flag_For_Function): Delete. (Expand_N_Extended_Return_Statement): Create a master node for the return object if it does not exist. At the end of the statement, generate a call to Suppress_Object_Finalize. (Expand_Non_Function_Return): Likewise just before the return. * exp_ch7.ads (Make_Master_Node_Declaration): Declare. (Make_Suppress_Object_Finalize_Call): Likewise. * exp_ch7.adb (Build_Finalization_Master): Defer generating the call to Set_Finalize_Address until freezing if the Finalize_Address procedure has not been analyzed yet. (Build_Finalizer): Reimplement the expansion using a finalization scope master per finalizer. (Insert_Actions_In_Scope_Around): Replace finalization hooks by master nodes and calls to the Finalize_Object. (Make_Master_Node_Declaration): New procedure. (Make_Suppress_Object_Finalize_Call): Likewise. * exp_util.ads (Build_Transient_Object_Statements): Delete. * exp_util.adb (Build_Transient_Object_Statements): Likewise. (Requires_Cleanup_Actions): Remove obsolete code and return true for master nodes. * gen_il-fields.ads (Opt_Field_Enum): Add Finalization_Master_Node_Or_Object and remove Status_Flag_Or_Transient_Decl. * gen_il-gen-gen_entities.adb (Allocatable_Kind): Likewise. * rtsfind.ads (RTU_Id): Add System_Finalization_Primitives. (RE_Id): Add entities of System_Finalization_Primitives. (RE_Unit_Table): Add entries for them. * sem_ch3.adb (Analyze_Object_Declaration): For an array whose type has an unconstrained first subtype and a controlled component, set the Is_Constr_Array_Subt_With_Bounds flag. * libgnat/s-finpri.ads: New file. * libgnat/s-finpri.adb: Likewise. 2024-05-06 Yannick Moy * inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Adapt checking. 2024-04-26 Jakub Jelinek * gnatvsn.ads: Bump Library_Version to 15. 2024-04-15 Piotr Trojanek * doc/gnat_rm/implementation_defined_aspects.rst (Exceptional_Cases): Add description for aspect. * doc/gnat_rm/implementation_defined_pragmas.rst (Exceptional_Cases): Add description for pragma. * gnat_rm.texi: Regenerate. * gnat_ugn.texi: Regenerate. 2024-03-07 Eric Botcazou PR ada/113979 * exp_ch4.adb (Expand_N_Allocator): In the subtype indication case, call Apply_Predicate_Check on the resulting access value if needed. 2024-02-26 Eric Botcazou PR ada/113893 * exp_ch7.adb (Build_Anonymous_Master): Do not build the master for a local designated type. * exp_util.adb (Build_Allocate_Deallocate_Proc): Force Needs_Fin to false if no finalization master is attached to an access type and assert that it is anonymous in this case. * sem_res.adb (Resolve_Allocator): Mention that the object might not be finalized at all in the warning given when the type is an anonymous access-to-controlled type. 2024-01-23 Ronan Desplanques * gnatvsn.ads: Update year. 2024-01-09 Eric Botcazou * gcc-interface/decl.cc (gnat_to_gnu_entity) : Use the TYPE_CANONICAL of types when it comes to aliasing. * gcc-interface/utils.cc (relate_alias_sets): Likewise. 2024-01-09 Eric Botcazou * gcc-interface/decl.cc (gnat_to_gnu_entity) : Use a separate FLD local variable to hold the first field of the fat pointer type being built. * gcc-interface/gigi.h (relate_alias_sets): Remove GNU_ prefix on the first two parameters. * gcc-interface/utils.cc (relate_alias_sets): Likewise and adjust. 2024-01-09 Viljar Indus * sem_attr.adb: avoid marking a use of the Address attribute as a modification of its prefix. 2024-01-09 Gary Dismukes * exp_aggr.adb (Expand_Container_Aggregate): Change "not Present" tests to tests using "No" (in two places). 2024-01-09 Bob Duff * sem_ch12.adb (Instantiate_Type): Make the relevant error message conditional upon "Ekind (A_Gen_T) /= E_Incomplete_Type". Misc cleanup. 2024-01-09 Gary Dismukes * exp_aggr.adb (Expand_Container_Aggregate): Add code to determine whether the aggregate is an indexed aggregate, setting a flag (Is_Indexed_Aggregate), which is tested to have proper separation of treatment for the Add_Unnamed (for positional aggregates) and New_Indexed (for indexed aggregates) cases. In the code generating associations for indexed aggregates, remove the code for Expressions cases entirely, since the code for indexed aggregates is governed by the presence of Component_Associations, and add an assertion that Expressions must be Empty. Also, exclude empty aggregates from entering that code. 2024-01-09 Eric Botcazou * rtsfind.ads (RE_Id): Remove RE_Attach. (RE_Unit_Table): Likewise. * libgnat/s-finmas.ads (Attach): Delete. * libgnat/s-finmas.adb (Attach): Likewise. 2024-01-09 Tucker Taft * pprint.adb (List_Name): Check for "Box_Present" when displaying a list, and emit "<>" if returns True. * sem_scil.adb (Check_SCIL_Node): Handle case when the type of a parameter is from a package that was mentioned in a limited with clause, and make no further checks, since this check routine does not have all the logic to check such a usage. 2024-01-09 Eric Botcazou * freeze.adb (Freeze_Expression.Has_Decl_In_List): Deal specifically with itypes that are class-wide subtypes. 2024-01-09 Eric Botcazou * libgnat/s-atopri.ads (Atomic_Store): New generic procedure. (Atomic_Store_8): New instantiated procedure. (Atomic_Store_16): Likewise. (Atomic_Store_32): Likewise. (Atomic_Store_64): Likewise. * libgnat/s-atopri__32.ads (Atomic_Store): New generic procedure. (Atomic_Store_8): New instantiated procedure. (Atomic_Store_16): Likewise. (Atomic_Store_32): Likewise. * gcc-interface/decl.cc (gnat_to_gnu_subprog_type): Implement the support for __atomic_store_n and __sync_bool_compare_and_swap_n. * gcc-interface/gigi.h (list_second): New inline function. 2024-01-09 Javier Miranda * 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-09 Piotr Trojanek * exp_util.adb (Possible_Side_Effect_In_SPARK): Refine handling of itype declarations. 2024-01-09 Piotr Trojanek * 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. 2024-01-09 Piotr Trojanek * inline.adb (Establish_Actual_Mapping_For_Inlined_Call): Remove detection of recursive calls. 2024-01-09 Piotr Trojanek * inline.adb (Cannot_Inline): Cleanup use of 'Length; remove dead code. 2024-01-09 Piotr Trojanek * sem_aggr.adb (Resolve_Container_Aggregate): Use "No". * sem_ch8.adb (Find_Direct_Name): Likewise. 2024-01-09 Steve Baird * sem_util.adb (Enclosing_Declaration): Instead of returning a subprogram specification node, return its parent (which is presumably a subprogram declaration). * contracts.adb (Insert_Stable_Property_Check): Remove code formerly needed to compensate for incorrect behavior of Sem_Util.Enclosing_Declaration. * exp_attr.adb (In_Available_Context): Remove code formerly needed to compensate for incorrect behavior of Sem_Util.Enclosing_Declaration. * sem_ch8.adb (Is_Actual_Subp_Of_Inst): Remove code formerly needed to compensate for incorrect behavior of Sem_Util.Enclosing_Declaration. 2024-01-09 Steve Baird * sem_ch8.adb (Check_Constrained_Object): Before updating the subtype mark of an object renaming declaration by calling Rewrite, first check whether the destination of the Rewrite call exists. * atree.adb (Copy_Slots): Return without performing any updates if Destination equals Empty or Error, or if Source equals Empty. Any of those conditions indicates an error case. * sem_ch12.adb (Analyze_Formal_Derived_Type): Avoid cascading errors. * sem_ch3.adb (Analyze_Number_Declaration): In an error case, do not pass Error as destination in a call to Rewrite. (Find_Type_Of_Subtype_Indic): In an error case, do not pass Error or Empty as destination in a call to Rewrite. 2024-01-09 Joffrey Huguet * libgnat/i-cstrin.ads (Update): Fix precondition. 2024-01-09 Eric Botcazou * sem_aggr.adb (Resolve_Extension_Aggregate): Remove the unreachable call to Transform_BIP_Assignment as well as the procedure. 2024-01-09 Bob Duff * lib-xref.adb (Generate_Reference): Do not count it as a read reference if we're calling a TSS. 2024-01-09 Piotr Trojanek * doc/gnat_rm/implementation_defined_aspects.rst, doc/gnat_rm/implementation_defined_pragmas.rst: Add sections for Always_Terminates. * gnat-style.texi: Regenerate. * gnat_rm.texi: Regenerate. * gnat_ugn.texi: Regenerate. 2024-01-09 Eric Botcazou PR ada/78207 * libgnat/g-regexp.ads: Fix outdated comment. 2024-01-09 Eric Botcazou PR ada/112781 * exp_ch6.ads (Is_Build_In_Place_Function): Adjust description. * exp_ch6.adb (Is_True_Build_In_Place_Function_Call): Delete. (Is_Function_Call_With_BIP_Formals): New predicate. (Is_Build_In_Place_Function_Call): Restore original semantics. (Expand_Call_Helper): Adjust conditions guarding the calls to Add_Dummy_Build_In_Place_Actuals to above renaming. (Expand_N_Extended_Return_Statement): Adjust to above renaming. (Expand_Simple_Function_Return): Likewise. Move the assertion to after the transformation into an extended return statement. (Make_Build_In_Place_Call_In_Allocator): Remove unreachable code. (Make_Build_In_Place_Call_In_Assignment): Likewise. 2024-01-09 Eric Botcazou PR ada/112781 * sem_ch12.adb (Instantiate_Type): Use Etype instead of Base_Type consistently to retrieve the ancestor for a derived type. * sem_ch4.adb (Analyze_Explicit_Dereference): Test Is_Access_Type consistently before accessing Designated_Type. 2024-01-09 Eric Botcazou * gcc-interface/utils2.cc (build_binary_op) : Relax assertion for regular pointer types. 2024-01-04 David Malcolm * gcc-interface/lang.opt.urls: New file, autogenerated by regenerate-opt-urls.py. 2024-01-03 Jakub Jelinek * gnat_ugn.texi: Bump @copying's copyright year. * gnat_rm.texi: Likewise. Copyright (C) 2024 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved.