2025-01-03  Piotr Trojanek  <trojanek@adacore.com>

	* exp_ch3.adb, exp_ch4.adb, exp_disp.adb, inline.adb: Remove explicit
	actual parameter Null_Exclusion_Present equal False.

2025-01-03  Piotr Trojanek  <trojanek@adacore.com>

	* exp_ch3.adb, exp_disp.adb: Remove explicit actual parameter
	Constant_Present equal False; tune comments.

2025-01-03  Piotr Trojanek  <trojanek@adacore.com>

	* exp_ch3.adb, exp_ch9.adb, exp_dist.adb, exp_imgv.adb, exp_util.adb,
	sem_dist.adb: Remove explicit actual parameter Aliased_Present equal
	False; tune comments and whitespace.

2025-01-03  Piotr Trojanek  <trojanek@adacore.com>

	* sem_ch5.adb (Check_Call): Reuse Get_Called_Entity.

2025-01-03  Piotr Trojanek  <trojanek@adacore.com>

	* sem_attr.adb (Check_Array_Type): Remove extra call.
	* sem_util.adb (Static_Boolean): Likewise.

2025-01-03  Piotr Trojanek  <trojanek@adacore.com>

	* exp_aggr.adb (Others_Check): Reuse List_Length; tune whitespace.
	* exp_ch3.adb (Constrain_Array): Remove counting of constraints.
	* exp_disp.adb (Make_DT): Use Elist utility routines; tune whitespace.
	* sem_ch12.adb (Formal_Dimensions): Reuse List_Length.
	(Valid_Default_Attribute): Reuse Number_Formals.
	* sem_prag.adb (Process_Convention): Likewise.
	* sem_util.adb (Normalize_Actuals): Likewise.
	(Check_Function_Writable_Actuals): Reuse List_Length.

2025-01-03  Piotr Trojanek  <trojanek@adacore.com>

	* contracts.adb (Create_Generic_Contract): Remove calls to Present.
	* sem_util.adb (Normalize_Actuals): Likewise.

2025-01-03  Bob Duff  <duff@adacore.com>

	* sem_util.adb (Append_Entity_Name): Do not skip the
	simple name for a compilation unit (which includes
	the case of specless subprogram bodies).

2025-01-03  Tucker Taft  <taft@adacore.com>

	* pprint.adb (Expression_Image): Adjust and improve comments
	to match style recommendations, and change name of subtype
	from Not_Associative to Non_Associative, in response to
	code review.

2025-01-03  Tucker Taft  <taft@adacore.com>

	* pprint.adb (Expression_Image): In local function Expr_Name
	add a No_Parens flag and define a subtype Not_Associative
	to represent the short-circuit operations and And/Or/Xor.
	Insert parentheses to separate the subexpressions when
	different "Not_Associative" operations occur in a
	sequence.

2025-01-03  Eric Botcazou  <ebotcazou@adacore.com>

	* einfo.ads (BIP_Initialization_Call): Adjust description.
	* exp_ch4.adb (Expand_N_Case_Expression): Adjust commentary.
	(Expand_N_If_Expression): Likewise.
	* exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration):
	Set BIP_Initialization_Call unconditionally in the definite case.

2025-01-03  Piotr Trojanek  <trojanek@adacore.com>

	* uintp.adb (N_Digits): Refine return subtype, since this routine
	always returns a positive number of digits.

2025-01-03  Piotr Trojanek  <trojanek@adacore.com>

	* checks.adb (Generate_Index_Checks): Reuse existing utility routine.
	* sem_ch4.adb (Analyze_Indexed_Component_Form): Likewise.
	* sem_prag.adb (Analyze_Pragma): Likewise.

2025-01-03  Piotr Trojanek  <trojanek@adacore.com>

	* exp_dist.adb (Assign_Subprogram_Identifier,
	Reserve_NamingContext_Methods): Simplify.
	* osint.adb (Append_Suffix_To_File_Name, Find_File, Get_Directory,
	Object_File_Name, Strip_Directory): Likewise.

2025-01-03  Piotr Trojanek  <trojanek@adacore.com>

	* sem_res.adb (Resolve_Alocator): Move unrelated code out of a declare
	block.

2025-01-03  Piotr Trojanek  <trojanek@adacore.com>

	* exp_ch3.adb (Search_Access_Discriminant, Search_Current_Instance,
	Search_Internal_Call): Use traversal function instead of traversal
	procedure and remove associated global variables.
	* exp_util.adb (Search_Calls): Likewise.
	* sem_prag.adb (Contains_Loop_Entry): Likewise.
	* sem_util.adb (Mentions_Post_State): Likewise.

2025-01-03  Piotr Trojanek  <trojanek@adacore.com>

	* sem_attr.adb (Eval_Attribute): Fix comment for attribute Image.
	* tbuild.adb (Make_SC): Remove extra whitespace.

2025-01-03  Alexandre Oliva  <oliva@adacore.com>

	* Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add g-cpp, g-cppstd,
	and g-cstyin.
	* doc/gnat_rm/interfacing_to_other_languages.rst (Interfacing to C++):
	Document class-wide matching and new interfaces.
	* exp_prag.adb (Expand_Pragma_Import_Or_Interface): Add class-wide
	exception matching support with 'B' as language identifier.
	* libgnat/a-exexpr.adb (Setup_Current_Excep): Add Id formal.
	(Set_Foreign_Occurrence): Likewise.
	(Propagate_GCC_Exception): Adjust.
	(Set_Exception_Parameter): Likewise.
	(Unhandled_Except_Handler): Likewise.
	* libgnat/g-cpp.ads: New.
	* libgnat/g-cppexc.adb (Raise_Cpp_Exception): Match 'B' lang id.
	(Get_Object_Address): New.
	(Get_Object): Rewrite.
	(Get_Access_To_Object): New.
	(Get_Access_To_Tagged_Object): New.
	(Get_Type_Info): New.
	(Convert_Caught_Object): New.
	* libgnat/g-cppexc.ads (Get_Object_Address): New.
	(Get_Object): Note the Cpp Convention requirement.
	(Get_Access_To_Object): New.
	(Get_Access_To_Tagged_Object): New.
	(Get_Type_Info): New.
	* libgnat/g-cppstd.adb: New.
	* libgnat/g-cppstd.ads: New.
	* libgnat/g-csclex.ads: New, unused.
	* libgnat/g-cstyin.adb: New.
	* libgnat/g-cstyin.ads: New.
	* libgnat/g-excact.adb (Exception_Language): New.
	(Is_Foreign_Exception): Rewrite.
	* libgnat/g-excact.ads (Exception_Languages): New.
	(Exception_Language): New.
	* libgnat/s-stalib.ads (Lang): Document 'B'.
	* raise-gcc.c (__gnat_setup_current_excep): Add Exception_Id formal.
	(CXX_DEPENDENT_EXCEPTION_CLASS): New.
	(cxx_type_info): New.
	(__cxa_exception): Rename exceptionType to encompass PrimaryException.
	(_GNAT_Exception): Drop wrapper.
	(EID_For): Adjust.
	(exception_class_eq): Likewise.
	(__gnat_exception_language_is_cplusplus): New.
	(__gnat_exception_language_is_ada): New.
	(__gnat_convert_caught_object): Declare.
	(__gnat_get_cxx_dependent_exception): New.
	(__gnat_maybe_get_cxx_dependent_exception): New.
	(__gnat_get_cxx_exception_type_info): New.
	(__gnat_obtain_caught_object): New.
	(is_handled_by): Adjust.   [!CERT] Add eid formal, handle dependent
	exceptions and base-type matches.
	(get_action_description_for) [!CERT]: Add eid formal.  Adjust.
	(personality_body): Adjust.
	* gcc-interface/Make-lang.in (GNAT_ADA_OBJS, GNATBIND_OBJS) [!STAGE1]:
	Add new g-cpp, g-cppstd, g-cstyin + preexisting g-cppexc
	and i-cstrin.
	* gnat-style.texi: Regenerate.
	* gnat_rm.texi: Regenerate.

2025-01-03  Gary Dismukes  <dismukes@adacore.com>

	* diagnostics-constructors.adb (Make_Default_Iterator_Not_Primitive_Error):
	Revise message to match message change made in sem_ch13.adb.
	* freeze.adb (Freeze_Record_Type): Output appropriate aspect name in
	error message, using Get_Name_String.
	(Freeze_Entity): For derived types, call Analyze_Aspects_At_Freeze_Point
	on the parent type, and call Inherit_Nonoverridable_Aspects on the type
	(for both parent type and any progenitor types). Add with_clause for
	System.Case_Util.
	* gen_il-fields.ads: Add Aspect_Subprograms to type Opt_Field_Enum.
	* gen_il-gen-gen_nodes.adb: Add field Aspect_Subprograms to
	N_Aspect_Specification nodes.
	* sem_ch4.adb (Try_Container_Indexing): Remove Find_Indexing_Operations
	and the code calling it. Add new function Indexing_Interpretations for
	retrieving the eligible indexing functions from the appropriate aspect's
	Aspect_Subprograms list and call that instead of Find_Value_Of_Aspect.
	* sem_ch7.adb (Analyze_Package_Specification): In loop over entities,
	call Analyze_Aspects_At_Freeze_Point for types that have delayed
	aspects.
	* sem_ch13.ads (Analyze_Aspects_At_Freeze_Point): Add Nonoverridable_Only
	formal to restrict processing to nonoverridable aspects.
	(Check_Function_For_Indexing_Aspect): New exported procedure renamed
	from Check_One_Function and moved to library level.
	* sem_ch13.adb (Analyze_Aspects_At_Freeze_Point): Test new formal
	Nonoverridable_Only formal to skip processing of aspects that are not
	nonoverridable when the formal is True. Skip the processing for
	Aspect_Full_Access_Only when Nonoverridable_Only is True. Call
	Check_Indexing_Functions in the case of indexing aspects (procedure
	moved from Analyze_Attribute_Definition_Clause to top level).
	(Analyze_Aspect_Specifications): Locate closest ancestor type with an
	explicit matching aspect to determine the aspect spec to reference in
	the error about a nonoverridable aspect not confirming an inherited
	aspect (skipping intermediate derived parents). Ensures that we retain
	existing errors flagged on explicit ancestor aspects rather than
	implicit inherited ones. Change names of variables Parent_Type and
	Inherited_Aspect to Ancestor_Type and Ancestor_Aspect respectively
	for clarity.
	(Analyze_Attribute_Definition_Clause): Move nested subprograms
	Check_Iterator_Functions and Check_Primitive_Function to top level
	of package. Move Check_Indexing_Functions (and its nested subprograms)
	from here to within Analyze_Aspects_At_Freeze_Point (adding some
	formal parameters and adjusting the code appropriately, and no longer
	call it from this procedure).
	(Is_CW_Or_Access_To_CW): Add test for the parent type having the
	indexing aspect for proper setting of Aspect_Specification_Is_Inherited.
	Delete "???" comment.
	(Look_Through_Anon_Access): Remove unneeded tests of Is_Access_Constant
	and Name_Constant_Indexing, which lead to wrong messages in some cases.
	(Check_Function_For_Indexing_Aspect): Procedure renamed from
	Check_One_Function and moved to library level (was nested within
	Check_Indexing_Functions), plus added formals (including Valid, to
	check result). Move scope test to beginning, to immediately exclude
	subprograms not declared immediately within the same scope as the type.
	Improve several error messages. Add error checking for Constant_Indexing
	functions. Append the function entity to the Aspect_Subprograms list of
	the aspect specification. Move code for checking for nonconfirming
	index aspects and for checking for illegal indexing aspects on full
	views to Check_Indexing_Functions.
	(Check_Indexing_Functions): Move procedure Illegal_Indexing from
	here to within Check_Function_For_Indexing_Aspect. Add a comment
	to the loop over interpretations about the checking being done as
	legality rules rather than resolution rules, plus a note referencing
	AI22-0084. Check for nonconfirming indexing aspects and illegal
	indexing aspects on full views here rather than in Check_One_Function
	(now named Check_Function_For_Indexing_Aspect). Remove function
	Check_One_Function (moved to library level and renamed), and call
	Check_Function_For_Indexing_Aspect instead.
	(Check_Inherited_Indexing): Improve spec comment. Remove nested function
	Same_Chars, and replace call Same_Chars with call to Sem_Util.Same_Name.
	Replace call to Illegal_Indexing with call to Error_Msg_NE.
	(Check_One_Function): Unnested from Check_Indexing_Functions, rename
	to Check_Function_For_Indexing_Aspect, move body to library level,
	and move declaration to Sem_Ch13 spec.
	(Analyze_Attribute_Definition_Clause, case Attribute_Default_Iterator):
	Improve error message related to tagged-type requirement. Suppress call
	to Check_Iterator_Functions for attribute definition clauses associated
	with inherited aspects. Remove error checking that is redundant with
	checking done in Check_Iterator_Functions.
	(Check_Aspect_At_Freeze_Point, case Attribute_Default_Iterator): Call
	Check_Iterator_Functions (only if the aspect is not Comes_From_Source).
	(Check_Iterator_Functions): Procedure unnested from
	Analyze_Attribute_Definition_Clause. Add formals Typ and Expr.
	Error messages corrected to say "aspect Default_Iterator" instead of
	"aspect Iterator".
	(Valid_Default_Iterator): Improve error message to say "must be
	a local primitive or class-wide function" instead of "must be
	a primitive function".
	(Check_Primitive_Function): Unnested from Analyze_Attribute_Definition_Clause.
	Add formal Ent.
	(Rep_Item_Too_Late): Return False when an attribute_definition_clause
	is not Comes_From_Source, since it was generated by the compiler (such
	as for an inherited aspect).
	(Resolve_Aspect_Aggregate): Capture implementation base type.
	(Valid_Empty): Use implementation base types for result type comparison.
	(Valid_Add_Named): Use impl base types for comparison of formal's type.
	(Valid_Add_Unnamed): Use impl base types for comparison of formal's type.
	(Valid_New_Indexed): Use impl base types for result type comparison.
	(Validate_Literal_Aspect): Return immediately when aspect does not have
	Comes_From_Source True (no point in validating inherited aspects).
	* sem_res.adb (Has_Applicable_User_Defined_Literal): Remove Base_Type
	comparison and always call Corresponding_Op_Of_Derived_Type for derived
	types. Add "???" comment about issue with wrapper functions (and
	indicate that it would be nice to eliminate the call to
	Corresponding_Primitive_Op).
	* sem_util.ads (Inherit_Nonoverridable_Aspects): New procedure.
	(Corresponding_Op_Of_Derived_Type): Update spec comment to indicate
	return of Ancestor_Op and name changed from Corresponding_Primitive_Op.
	* sem_util.adb (Check_Inherited_Nonoverridable_Aspects): Fix name in
	header comment.
	(Corresponding_Op_Of_Derived_Type): Move declaration of Typ down with
	other local variables. Remove Assert that doesn't apply in some cases.
	Simply return Ancestor_Op when it isn't a primitive (it can be a
	class-wide op). Function name changed from Corresponding_Primitive_Op.
	(Find_Untagged_Type_Of): Add test of Is_Type (E) as a guard for checking
	Direct_Primitive_Operations. Remove Assert (False), and return Empty
	when the primitive is not found.
	(Profile_Matches_Ancestor): Change comparisons to use implementation
	base types of the operations' formal and result types. Add tests for
	interface ancestors. Revise "???" comment.
	(Is_Confirming): Simplify name-matching test to use the names associated
	with the aspects rather than going to the N_Attribute_Definition_Clause
	nodes (may facilitate elimination of those clauses at some point).
	(Inherit_Nonoverridable_Aspects): New procedure to traverse the
	aspects of a derived type's parent type and create inherited versions
	of the parent type's nonoverridable aspects, identifying the appropriate
	subprograms for each such inherited aspect.
	(Inherit_Nonoverridable_Aspect): New procedure nested in
	Inherit_Nonoverridable_Aspects to inherit individual nonoverridable
	aspects. Identifies the corresponding subprogram(s) associated with
	an inherited nonoverridable aspect. In the case of indexing aspects,
	new eligible indexing functions of the type are also identified here,
	and the entities of all of the identified subprograms are appended to
	the aspect's Aspect_Subprograms Elist. Add a "???" comment about this.
	* sinfo.ads: Add documentation for the new Aspect_Subprograms field.

2025-01-03  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch4.adb (Insert_Conditional_Object_Declaration): Create the
	Master_Node even if the declaration is turned into a renaming.

2025-01-03  Piotr Trojanek  <trojanek@adacore.com>

	* sem_ch3.adb (Array_Type_Declaration): Don't copy parent for an itype
	created by an array component declaration.

2025-01-03  Douglas B Rupp  <rupp@adacore.com>

	* socket.c [__vxworks]: Change vxw_h_addr type to long from
	int, and cast the conversion of char* to vxw_h_addr to avoid
	warning/error.

2025-01-03  Tonu Naks  <naks@adacore.com>

	* adaint.c: change default behaviour of __gnat_locate_exec_on_path
	* adaint.h: change prototype of __gnat_locate_exec_on_path
	* libgnat/s-os_lib.adb: pass optional argument in Locate_Exec_On_Path
	* libgnat/s-os_lib.ads: change spec of Locate_Exec_On_Path
	* libgnat/s-trasym__dwarf.adb: update import of __gnat_locate_exec_on_path

2025-01-03  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch4.adb (Expand_Allocator_Expression): Put back the call to
	Remove_Side_Effects in the case of a function call, a class-wide
	designated type and a regular storage pool.

2025-01-03  Bob Duff  <duff@adacore.com>

	* sem_ch6.adb (Analyze_Expression_Function): Mark the implicit
	spec for an expression function as Comes_From_Source.
	(Analyze_Null_Procedure): Minor cleanup.
	* sem_warn.adb (Source_E1): New function to compute whether
	to give warnings. In particular, return True for [in] out
	parameters of expression functions.

2025-01-03  Steve Baird  <baird@adacore.com>

	* exp_aggr.adb (Check_Bounds): Remove calls that were setting the
	Analyzed flag to False for two aggregate bound expressions.

2025-01-03  Eric Botcazou  <ebotcazou@adacore.com>

	* einfo.ads (Is_Independent): Document usage on Master_Node objects.
	* exp_aggr.adb (In_Place_Assign_OK): Remove Parent_Kind variable.
	(Convert_To_Assignments): Call Unconditional_Parent and remove the
	restriction on the known size for the in-place expansion of the
	aggregate in the context of an object declaration.
	(Expand_Array_Aggregate): Remove Parent_Kind variable and call
	Unconditional_Parent and Delay_Conditional_Expressions_Between
	* exp_ch3.adb: Remove clauses for Exp_Dbug.
	(Expand_N_Object_Declaration): Factor out the code rewriting the
	declaration as a renaming in Rewrite_Object_Declaration_As_Renaming
	and call the procedure.
	* exp_ch4.adb (Insert_Conditional_Object_Declaration): Declare.
	(Expand_N_Case_Expression): Delay expanding the expression if it is
	in the context of an optimizable object declaration.  If the parent
	node is this object declaration, then replace it with a renaming of
	the dereference of an access value designating an object initialized
	with the dependent expression chosen by the condition.
	(Expand_N_If_Expression): Likewise.
	(Insert_Conditional_Object_Declaration): New procedure.
	* exp_ch6.adb (Expand_Ctrl_Function_Call): Test the unconditional
	parent in the case of an object declaration too.
	* exp_ch7.adb (Build_Finalizer.Process_Declarations): Pass Strict to
	Processing_Actions from the Is_Independent flag on a Master_Node.
	* exp_util.ads (Rewrite_Object_Declaration_As_Renaming): Declare.
	* exp_util.adb: Add clauses for Exp_Dbug.
	(Rewrite_Object_Declaration_As_Renaming): New procedure extracted
	from Expand_N_Object_Declaration.
	* sem_ch3.adb (Analyze_Object_Declaration): Also leave the analysis
	if the declaration has been replaced with a renaming in the case of
	an initialization expression that is a conditional expression.

2025-01-03  Eric Botcazou  <ebotcazou@adacore.com>

	* checks.adb (Apply_Predicate_Check): Preserve Comes_From_Source.
	* exp_ch4.adb (Expand_Allocator_Expression): Factor out common code
	for the various cases.  Also delay applying the 2nd predicate check.
	In the default case, defer to Make_Build_In_Place_Call_In_Allocator
	entirely in the build-in-place case.
	* sem_ch4.adb (Analyze_Allocator): Do not give the warning or error
	for a default-initialized allocator with No_Initialization.

2025-01-03  Ronan Desplanques  <desplanques@adacore.com>

	* lib-writ.adb (Write_ALI): Remove useless space.

2025-01-03  Ronan Desplanques  <desplanques@adacore.com>

	* lib-writ.adb (Write_ALI): Remove condition for writing P line
	parameters.
	* lib-writ.ads: Fix typos. Clarify comment.

2025-01-02  Jakub Jelinek  <jakub@redhat.com>

	* gnat_ugn.texi: Bump @copying's copyright year.
	* gnat_rm.texi: Likewise.


Copyright (C) 2025 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.
