diff options
Diffstat (limited to 'gcc')
36 files changed, 1358 insertions, 112 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9a0d334..8091f67 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,212 @@ +2025-11-03  Uros Bizjak  <ubizjak@gmail.com> + +	PR target/122534 +	* config/i386/i386.md (@test<mode>_ccno_1): +	Use <general_szext_operand> as operand 1 predicate. +	(testqi_ccz_1): Use general_operand as operand 1 predicate. +	(*testdi_1): Use x86_64_szext_general_operand as operand 1 predicate. +	(*testqi_1_maybe_si): Use general_operand as operand 1 predicate. +	Add (n,*a) alternative to allow UV pairing for pentium processor. +	(*test<mode>_1): Use <general_operand> as operand 1 predicate. + +2025-11-03  Sam James  <sam@gentoo.org> + +	* configure: Regenerate. + +2025-11-03  Jeff Law  <jlaw@ventanamicro.com> + +	PR rtl-optimization/122536 +	* simplify-rtx.cc (simplify_context::simplify_binary_operation_1): Fix +	guard against variable bit extracts in recent change. + +2025-11-03  Thomas Schwinge  <tschwinge@baylibre.com> + +	PR ipa/122512 +	* symtab.cc: Fix 'static_assert'. + +2025-11-03  Loeka Rogge  <loeka@synopsys.com> + +	* config/arc/simdext.md(movv2hi_insn): Change order for movv2hi +	for big-endian. + +2025-11-03  Tobias Burnus  <tburnus@baylibre.com> + +	PR libgomp/122281 +	PR middle-end/105001 +	* gimple.cc (gimple_copy): Add missing unshare_expr for +	GIMPLE_OMP_ATOMIC_LOAD and GIMPLE_OMP_ATOMIC_STORE. + +2025-11-03  Alfie Richards  <alfie.richards@arm.com> + +	PR c/122202 +	* doc/extend.texi (target function attribute): Update to describe FMV +	behaviour. +	(target_version function attribute): New section. +	(target_clones attribute): Update to descrbe new behaviour with +	target_version. +	(Function Multiversioning): Update to discuss both target_version and +	target based FMV. + +2025-11-03  Kito Cheng  <kito.cheng@sifive.com> + +	* config/riscv/riscv.cc (riscv_flatten_aggregate_field): Skip +	empty unions and zero-length arrays when flattening aggregate +	fields for ABI classification. +	(riscv_pass_aggregate_in_fpr_pair_p): Refactor to use separate +	field parsing and emit ABI change warning for affected types. +	(riscv_pass_aggregate_in_fpr_and_gpr_p): Likewise. + +2025-11-03  Alfie Richards  <alfie.richards@arm.com> + +	* config/aarch64/aarch64-option-extensions.def (dit): New fmv feature. +	(dpb): New fmv feature. +	(dpb2): New fmv feature. +	(memtag): Change to also define an FMV feature. +	(ssbs): Change to also define an FMV feature. +	(bti): New fmv feature. +	* config/aarch64/aarch64.cc (FEAT_SSBS): Add macro. +	(FEAT_MEMTAG): Ditto. + +2025-11-03  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp> + +	* config/xtensa/xtensa.md (int_iterator ANY_ROUND): +	Specify "flag_unsafe_math_optimizations" in the condition of the +	UNSPEC_ROUND element. +	(int_attr c_round): Remove. +	(l<m_round>sfsi2, *l<m_round>sfsi2_2x, *l<m_round>sfsi2_scaled): +	Remove " && <c_round>" from the conditions. + +2025-11-03  Guo Jie  <guojie@loongson.cn> + +	* config/loongarch/loongarch.cc (loongarch_modes_tieable_p): +	Make MODE_FLOAT and MODE_INT tieable. +	* config/loongarch/loongarch.md: Adjust constraints. + +2025-11-03  Guo Jie  <guojie@loongson.cn> + +	* config/loongarch/loongarch.md +	(and_load_zero_extend<mode>): New combiner. +	* config/loongarch/predicates.md +	(mask_operand):	New predicate. + +2025-11-03  Guo Jie  <guojie@loongson.cn> + +	* config/loongarch/lasx.md (lasx_xvpermi_q_<LASX:mode>): +	Add new splitter for optimization. + +2025-11-03  Guo Jie  <guojie@loongson.cn> + +	* config/loongarch/loongarch-protos.h +	(loongarch_use_bstrins_bstrpick_for_and): New proto. +	* config/loongarch/loongarch.cc +	(loongarch_use_bstrins_bstrpick_for_and): Decide whether +	to optimize. +	(loongarch_rtx_costs): Adjust the cost of AND operation. +	* config/loongarch/loongarch.md +	(bstrins_bstrpick_for_and_imm<mode>): New insn_and_split. + +2025-11-03  Guo Jie  <guojie@loongson.cn> + +	* config/loongarch/loongarch.cc +	(loongarch_can_change_mode_class): Support for conversion +	between scalar INT and scalar FP. + +2025-11-03  Guo Jie  <guojie@loongson.cn> + +	* config/loongarch/loongarch.cc (loongarch_rtx_costs): +	Correct the cost of mulh.{w[u]|d[u]}. + +2025-11-03  Tamar Christina  <tamar.christina@arm.com> + +	PR tree-optimization/122475 +	* tree-vect-loop.cc (vectorizable_reduction): Check for neutral_op. + +2025-11-03  H.J. Lu  <hjl.tools@gmail.com> + +	PR target/90262 +	* config/i386/i386-expand.cc (ix86_expand_unroll_movmem): New. +	(ix86_expand_n_move_movmem): Likewise. +	(ix86_expand_load_movmem): Likewise. +	(ix86_expand_store_movmem): Likewise. +	(ix86_expand_n_overlapping_move_movmem): Likewise. +	(ix86_expand_less_move_movmem): Likewise. +	(ix86_expand_movmem): Likewise. +	* config/i386/i386-protos.h (ix86_expand_movmem): Likewise. +	* config/i386/i386.md (movmem<mode>): Likewise. + +2025-11-03  Shreya Munnangi  <smunnangi1@ventanamicro.com> + +	PR target/52345 +	* simplify-rtx.cc (simplify_relational_operation_1): Optimize boolean +	IOR equality tests. + +2025-11-03  chenxiaolong  <chenxiaolong@loongson.cn> + +	* config/loongarch/lasx.md (vec_cast<mode>): New template +	implemention. +	(vec_insert_lo_<mode>): Dito. +	(vec_insert_hi_<mode>): Dito. +	* config/loongarch/lasxintrin.h (defined): Test for adding +	the builtin function. +	(__lasx_cast_128_s): Dito. +	(__lasx_cast_128_d): Dito. +	(__lasx_cast_128): Dito. +	(__lasx_concat_128_s): Dito. +	(__lasx_concat_128_d): Dito. +	(__lasx_concat_128): Dito. +	(__lasx_extract_128_lo_s): Dito. +	(__lasx_extract_128_hi_s): Dito. +	(__lasx_extract_128_lo_d): Dito. +	(__lasx_extract_128_hi_d): Dito. +	(__lasx_extract_128_lo): Dito. +	(__lasx_extract_128_hi): Dito. +	(__lasx_insert_128_lo_s): Dito. +	(__lasx_insert_128_hi_s): Dito. +	(__lasx_insert_128_lo_d): Dito. +	(__lasx_insert_128_hi_d): Dito. +	(__lasx_insert_128_lo): Dito. +	(__lasx_insert_128_hi): Dito. +	* config/loongarch/loongarch-builtins.cc +	(CODE_FOR_lasx_extract_128_lo_s): Add builtins and register +	icode. +	(CODE_FOR_lasx_extract_128_hi_s): Dito. +	(CODE_FOR_lasx_extract_128_lo_d): Dito. +	(CODE_FOR_lasx_extract_128_hi_d): Dito. +	(CODE_FOR_lasx_extract_128_lo): Dito. +	(CODE_FOR_lasx_extract_128_hi): Dito. +	(CODE_FOR_lasx_insert_128_lo_s): Dito. +	(CODE_FOR_lasx_insert_128_hi_s): Dito. +	(CODE_FOR_lasx_insert_128_lo_d): Dito. +	(CODE_FOR_lasx_insert_128_hi_d): Dito. +	(CODE_FOR_lasx_insert_128_lo): Dito. +	(CODE_FOR_lasx_insert_128_hi): Dito. +	(CODE_FOR_lasx_concat_128_s): Dito. +	(CODE_FOR_lasx_concat_128_d): Dito. +	(CODE_FOR_lasx_concat_128): Dito. +	(CODE_FOR_lasx_cast_128_s): Dito. +	(CODE_FOR_lasx_cast_128_d): Dito. +	(CODE_FOR_lasx_cast_128): Dito. +	(loongarch_expand_builtin_direct): For the newly added +	insertion or extraction, construct the parallel parameter +	corresponding to the operand. +	* config/loongarch/loongarch-c.cc +	(loongarch_update_cpp_builtins): Define +	__loongarch_asx_sx_conv. +	* config/loongarch/loongarch-ftypes.def: Declare the type +	of the builtin function. +	* doc/extend.texi: Add document description. + +2025-11-03  Lulu Cheng  <chenglulu@loongson.cn> + +	* config/loongarch/loongarch.cc (loongarch_move_integer): +	No new virtual register is allocated during immediate load. + +2025-11-03  Lulu Cheng  <chenglulu@loongson.cn> + +	PR target/122477 +	* config/loongarch/loongarch.cc +	(loongarch_split_reduction): Added handling of scalar mode. +  2025-11-02  Jeff Law  <jlaw@ventanamicro.com>  	* config/riscv/bitmanip.md (rotrsi3): Use the sign extended form diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 2bb6e40..23733dc 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20251103 +20251104 diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 86629f3..c99021a 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,403 @@ +2025-11-03  Eric Botcazou  <ebotcazou@adacore.com> + +	PR ada/78175 +	* sem_ch12.adb (Hide_Current_Scope): Deal with a transient scope +	as current scope. +	(Remove_Parent): Likewise. + +2025-11-03  Eric Botcazou  <ebotcazou@adacore.com> + +	PR ada/55324 +	* par-ch3.adb (P_Type_Declaration): Give a better error message +	for illegal "abstract" in a type derivation. + +2025-11-03  Piotr Trojanek  <trojanek@adacore.com> + +	* exp_util.adb (Get_Current_Value_Condition): Guard against orphaned +	references in rewritten if-expressions. + +2025-11-03  Eric Botcazou  <ebotcazou@adacore.com> + +	* doc/gnat_rm/representation_clauses_and_pragmas.rst (Address +	Clauses): Adjust description of alignment checks. +	* sem_ch13.adb (Address_Clause_Check_Record): Remove now unused +	Alignment_Checks_Suppressed component. +	(Alignment_Checks_Suppressed): Delete. +	(Analyze_Attribute_Definition_Clause) <Attribute_Alignment>: Do not +	consider the status of range checks to decide whether to generate an +	alignment check.  Always generate it if an alignment clause is also +	given for the entity. +	<Attribute_Alignment>: Generate an alignment check if an address +	clause is also given for the entity. +	(Register_Address_Clause_Check): Adjust for above removal. +	(Validate_Address_Clauses): Test the Check_Address_Alignment flag +	on the clause to decide whether to give the warning. +	* gnat_rm.texi: Regenerate. +	* gnat_ugn.texi: Regenerate. + +2025-11-03  Eric Botcazou  <ebotcazou@adacore.com> + +	* checks.adb (Apply_Address_Clause_Check): Adjust self-reference in +	the opening comment. + +2025-11-03  Piotr Trojanek  <trojanek@adacore.com> + +	* exp_util.adb (Find_In_Enclosing_Context): Refactor from handling of +	IF statements. +	(Get_Current_Value_Condition): Reuse IF code for WHILE statements. + +2025-11-03  Piotr Trojanek  <trojanek@adacore.com> + +	* exp_util.adb (Get_Current_Value_Condition): Rewrite to not rely on +	Sloc and End_Span of an if statement. + +2025-11-03  Piotr Trojanek  <trojanek@adacore.com> + +	* sem_util.adb (Update_Semantic_Fields): Preserve tree structure when +	copying scalar range of a discrete type. + +2025-11-03  Piotr Trojanek  <trojanek@adacore.com> + +	* inline.adb (Process_Sloc): Remove. + +2025-11-03  Eric Botcazou  <ebotcazou@adacore.com> + +	PR ada/61127 +	* sem_ch12.adb (Associations.Match_Positional): Remove the always +	false condition that guards the error on a positional box. + +2025-11-03  Gary Dismukes  <dismukes@adacore.com> + +	* sem_disp.adb (Check_Dispatching_Call): Remove "elsif" that does error +	checking for abstract tag-indeterminate calls (seems to be no longer +	needed). + +2025-11-03  Marc Poulhiès  <poulhies@adacore.com> + +	* exp_ch7.adb (Fixup_Inner_Scopes): Adjust to handle N_Freeze_Entity nodes. +	* exp_unst.adb (Get_Level): Assert when the function didn't find the +	nested level (indicates that inner sub has scope pointing higher in +	the stack) + +2025-11-03  Ronan Desplanques  <desplanques@adacore.com> + +	* fname.adb (Is_Predefined_File_Name): Tweak. + +2025-11-03  Bob Duff  <duff@adacore.com> + +	* gen_il-gen-gen_nodes.adb (N_Exception_Declaration): +	Change Expression from Sm to Sy, to match other Expression fields. +	* gen_il-gen.adb (Setter_Needs_Parent): +	Expression no longer needs to be a special case. +	(Check_For_Syntactic_Field_Mismatch): +	Do not exempt Expression from the Sy/Sm mixing rule. +	This was the last such case, so remove all the exemption code. +	* gen_il-gen.ads: Update comments to match new code. +	* sinfo.ads (N_Exception_Declaration): +	Document the meaning of the Expression field, because it +	doesn't follow from the RM syntax of exception_declaration. +	* exp_ch11.adb: Minor comment fixes. + +2025-11-03  Eric Botcazou  <ebotcazou@adacore.com> + +	* sem_ch13.adb (Analyze_Attribute_Definition_Clause) +	<Attribute_Size>: Tweak wording of existing error message for the +	size of all elementary objects.  Move error handling for aliased +	objects into the block for objects and give a similar error for +	(nonaliased) floating-point objects. + +2025-11-03  Piotr Trojanek  <trojanek@adacore.com> + +	* exp_attr.adb (Rewrite_Attribute_Proc_Call)<Attribute_Put_Image>: +	Fix call to Analyze. + +2025-11-03  Piotr Trojanek  <trojanek@adacore.com> + +	* sem_attr.adb (Resolve_Attribute): Remove rewriting of a slice +	address expression. + +2025-11-03  Viljar Indus  <indus@adacore.com> + +	* libgnat/a-cbmutr.adb (Put_Image): Fix the condition and starting point +	for printing the tree. +	* libgnat/a-cimutr.adb (Put_Image): Likewise. +	* libgnat/a-comutr.adb (Put_Image): Likewise. + +2025-11-03  Viljar Indus  <indus@adacore.com> + +	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Avoid disabling +	the expander for ignored ghost regions if Codepeer_Mode is active. +	* sem_ch7.adb (Analyze_Package_Body_Helper): Likewise. +	* freeze.adb (Freeze_Entity): Avoid triggering special freezing +	action for entities within ignored ghost regions in Codepeer_Mode. + +2025-11-03  Viljar Indus  <indus@adacore.com> + +	* ghost.adb (Is_Ok_Context): consider ghost prefix to always +	be a valid ghost context. + +2025-11-03  Denis Mazzucato  <mazzucato@adacore.com> + +	* errout.adb (Set_Msg_Node): Support N_Attribute_Reference and +	nodes that denotes direct attribute definitions. +	* exp_dbug.ads: Description for the encoding of direct attribute +	definitions as tick are hard to deal in entity names. +	* erroutc.adb +	(Set_Msg_Insertion_Name): Replace underscore between prefix and +	attribute name in direct attribute definitions; at this point we +	lost the semantic information of node type and we resort to match +	the string name as described in exp_dbug.adb. +	* exp_aggr.adb (Convert_To_Positional): Use Needs_Construction and +	Has_Default_Constructor. +	* exp_ch3.adb (Build_Record_Init_Proc) +	(Expand_N_Object_Declaration): Likewise. +	* exp_attr.adb (Expand_N_Attribute_Reference): Likewise. +	* exp_ch4.adb (Expand_N_Allocator): Likewise. +	* exp_ch6.adb +	(Prepend_Constructor_Procedure_Prologue): Use +	Is_Constructor_Procedure. +	(Make_Parent_Constructor_Call): Use +	Direct_Attribute_Definition_Name. +	* gen_il-fields.ads: Remove Constructor_List and Constructor_Name. +	* gen_il-gen-gen_entities.adb: Likewise. +	* einfo.ads (Needs_Construction): Add description. +	(Has_Delayed_Aspects): Adjust indentation. +	* par-ch13.adb (P_Attribute_Designators): Parse attribute +	designators. +	(P_Representation_Clause): Use P_Attribute_Designators. +	* par-ch6.adb (P_Subprogram): Support attribute designators in +	subprogram name. +	(Rewrites_Entity_If_Direct_Attribute_Def): Fix the specification +	node in case of direct attribute definitions. +	* par-endh.adb (Check_End, Same_Label): Likewise. +	* par.adb (P_Attribute_Designators): Specification. +	* sem_attr.adb (Analyze_Attribute): Error when using 'Constructor +	outside procedure specification. +	(Analyze_Attribute): Add error handling code. +	* sem_ch3.adb (Analyze_Aspect_Specifications): Likewise. +	* sem_ch6.adb (Analyze_Direct_Attribute_Definition): Handle direct +	attribute definitions. Add error handling code for the +	'Construction attribute and set constructor flags when necessary. +	(Analyze_Subprogram_Specification): Use +	Analyze_Direct_Attribute_Definition. +	* sem_util.adb (Direct_Attribute_Definition_Name): Name of +	entities created for direct attribute definitions. We emit an +	error if multiple attributes. +	(Is_Direct_Attribute_Subp_Spec): Helper to check whether a +	subprogram specification is a direct attribute definition. +	(Is_Constructor_Procedure): Helper to check whether a subprogram +	is a constructor procedure. +	(Has_Default_Constructor): Check whether the default constructor +	exists. +	(Default_Constructor): Not used anymore. +	(Parameter_Count): Likewise. +	(Process_End_Label): Get_Attribute_Reference_Name_String encodes +	also direct attribute definition end labels. +	* sem_util.ads: Likewise. +	* snames.ads-tmpl: Support for 'Constructor attribute. +	* snames.adb-tmpl (Is_Direct_Attribute_Definition_Name): Helper to +	check attributes allowed in direct attribute definitions. +	* aspects.ads: Remove constructor aspect. +	* sem_ch13.adb: Likewise. + +2025-11-03  Eric Botcazou  <ebotcazou@adacore.com> + +	PR ada/122161 +	* sem_ch12.adb: Improve the description of Check_Generic_Actuals, +	Restore_Private_Views and Switch_View, and alphabetize them. +	(Check_Generic_Actuals): Make actuals visible only if needed. +	(Install_Formal_Packages): Pass exact Is_Formal_Box parameter and +	remove call to Set_Is_Hidden. +	(Instantiate_Formal_Package): Use Next_Non_Pragma consistently in +	the loop computing the visibility of actuals. +	(Analyze_Package_Instantiation): Use named second parameter in the +	call to Restore_Private_Views. +	(Analyze_Subprogram_Instantiation): Likewise. +	(Instantiate_Package_Body): Likewise and for Check_Generic_Actuals. +	(Instantiate_Subprogram_Body): Likewise. +	(Restore_Env): Replace call to Restore_Private_Views. +	(Restore_Private_Views): Remove default value for second parameter +	and test of presence for first parameter.  Consistently clear the +	Is_Potentially_Use_Visible flag when setting the Is_Hidden flag. +	Remove call to Set_Is_Hidden for a formal package of the enclosing +	generic unit, if any. + +2025-11-03  Bob Duff  <duff@adacore.com> + +	* gen_il-gen.adb (N_Short_Circuit): +	Make Actions syntactic. +	(N_Case_Expression_Alternative): Likewise. +	* gen_il-gen-gen_nodes.adb (Create_Type): +	No longer exempt Actions from the syntactic/semantic ordering rule. +	(Check_For_Syntactic_Field_Mismatch): +	No longer exempt Actions from the syntactic/semantic mixing rule. +	* sinfo.ads (N_Compound_Statement): +	Add comment. + +2025-11-03  Marc Poulhiès  <poulhies@adacore.com> + +	* sem_aux.adb (Enclosing_Dynamic_Scope): Remove comment. + +2025-11-03  Bob Duff  <duff@adacore.com> + +	* einfo.ads: Remove unused fields. +	* gen_il-fields.ads: Likewise. +	* gen_il-gen-gen_entities.adb: Likewise. +	* gen_il-gen-gen_nodes.adb: Likewise. +	* sinfo.ads: Likewise. +	* gen_il-gen.adb (Compile): Remove obsolete comment. + +2025-11-03  Ronan Desplanques  <desplanques@adacore.com> + +	* libgnat/s-stratt__cheri.adb (W_80IEEE): New procedure. + +2025-11-03  Ronan Desplanques  <desplanques@adacore.com> + +	* libgnat/s-stratt.adb (W_80IEEE): Make constant local. + +2025-11-03  Bob Duff  <duff@adacore.com> + +	* einfo.ads (Has_Pragma_Controlled): Remove. +	(Is_Activation_Record): Document usage by llvm. +	* gen_il-fields.ads (Opt_Field_Enum): +	Remove Has_Pragma_Controlled. +	* gen_il-gen-gen_entities.adb (Access_Kind): +	Remove Has_Pragma_Controlled. +	* sem_prag.adb: +	Remove setting of Has_Pragma_Controlled. +	* sinfo.ads (Corresponding_Entry_Body): +	Document usage by codepeer. + +2025-11-03  Alexandre Oliva  <oliva@adacore.com> + +	* exp_ch3.adb (Expand_N_Object_Declaration): Insert ctor call +	after representation clauses. + +2025-11-03  Bob Duff  <duff@adacore.com> + +	* atree.adb (Same_Node_To_Fetch_From): +	Use Node_To_Fetch_From_If_Set, and remove handler. +	* einfo-utils.adb (Root_Type_If_Set): +	Return Empty if Base_Type_If_Set returns Empty. +	Return Empty if we find Etype (T) = Empty. +	(Underlying_Type): Use "Has_Non_Limited_View..." instead +	of "Present (Non_Limited_View...)", because the latter raises +	an exception when given the wrong Ekind. + +2025-11-03  Ronan Desplanques  <desplanques@adacore.com> + +	* gen_il-fields.ads (Is_IEEE_Extended_Precision): New flag. +	* gen_il-gen-gen_entities.adb: Likewise. +	* gen_il-internals.adb (Image): Likewise. +	* treepr.adb (Image): Likewise. +	* einfo.ads: Document new flag. +	* cstand.adb (Copy_Float_Type, Register_Float_Type): Use new flag. +	* libgnat/s-stratt.ads (W_80IEEE): New procedure. +	* libgnat/s-stratt.adb (W_80IEEE): Likewise. +	* exp_strm.adb (Get_Primitives): Select new procedure when +	appropriate. +	* rtsfind.ads: Register new runtime procedure. +	* sem_ch3.adb (Build_Derived_Numeric_Type, +	Analyze_Subtype_Declaration): Propagate new flag. + +2025-11-03  Eric Botcazou  <ebotcazou@adacore.com> + +	PR ada/122160 +	* sem_res.adb (Resolve_Op_Concat_Rest): Do not build the subtype of +	the second operand again if it has already been built. +	(Resolve_String_Literal): Do not defer the creation of the subtype +	for the right operand of a concatenation whose left operand may be +	the null string. + +2025-11-03  Gary Dismukes  <dismukes@adacore.com> + +	* exp_ch6.ads (Make_Build_In_Place_Call_In_Allocator): Simplify comment. +	* exp_ch6.adb (Make_Build_In_Place_Call_In_Allocator): Remove obsolete +	comment about not being able to allocate fixed-size controlled results +	on the caller side, and replace another obsolete comment with a simpler +	comment. Call Build_Allocate_Deallocate_Proc when the function doesn't +	need a BIPalloc formal to ensure that function results with controlled +	parts allocated on the caller side will be chained for finalization. +	(Make_Build_In_Place_Call_In_Object_Declaration): Call Needs_BIP_Collection +	on the function's Entity_Id rather than the function call. +	(Needs_BIP_Collection): If a BIP function doesn't need a BIPalloc formal +	then it doesn't need a BIP collection either; return False in that case. +	(Needs_BIP_Alloc_Form): Remove test of Needs_BIP_Collection. +	* exp_ch7.adb (Expand_Cleanup_Actions): Move test of Uses_Sec_Stack +	to be the first conjunct in setting of Needs_Sec_Stack_Mark, and put +	the other tests in a disjunction subsidiary to that. Improve preceding +	comment. + +2025-11-03  Bob Duff  <duff@adacore.com> + +	* gen_il-gen-gen_nodes.adb: Rename Default_Expression to be +	Expression. +	* gen_il-gen.adb (Check_For_Syntactic_Field_Mismatch): Do not +	exempt Default_Expression from the rule. +	* par-ch12.adb (P_Formal_Object_Declarations): Use renamed setter. +	* sem_ch12.adb (Default): Use renamed getter. +	(Analyze_Formal_Object_Declaration): Likewise. +	* sprint.adb (Sprint_Node_Actual): Use renamed getter. +	* sinfo.ads: Fix comments. + +2025-11-03  Bob Duff  <duff@adacore.com> + +	* style.adb (Check_Xtra_Parens_Precedence): +	Give warning based on Original_Node. + +2025-11-03  Eric Botcazou  <ebotcazou@adacore.com> + +	PR ada/122161 +	* sem_ch12.adb (Check_Generic_Actuals): Consistently set the +	Is_Potentially_Use_Visible flag on actuals whenever the Is_Hidden +	flag is cleared. +	(Restore_Private_Views): Clear the Is_Potentially_Use_Visible flag +	explicitly on the entities of an actual package. + +2025-11-03  Ronan Desplanques  <desplanques@adacore.com> + +	* libgnat/s-trasym.ads (Calling_Entity): New function. +	* libgnat/s-trasym.adb (Calling_Entity): Add dummy body. +	* libgnat/s-trasym__dwarf.adb (Calling_Entity): New function. +	(Symbolic_Traceback, Symbolic_Traceback_No_Lock, +	Module_Symbolic_Traceback, Multi_Module_Symbolic_Traceback): Add +	Subprg_Name_Only parameter and corresponding functionality. +	(Symbolic_Traceback_No_Lock): Fix typo in documentation comment. +	* libgnat/s-dwalin.ads (Symbolic_Traceback): Likewise. +	* libgnat/s-dwalin.adb (Symbolic_Traceback): Likewise. + +2025-11-03  Bob Duff  <duff@adacore.com> + +	* gen_il-gen-gen_nodes.adb (N_Op): +	Make Chars syntactic, and move it down into subclasses +	N_Binary_Op and N_Unary_Op. +	* gen_il-gen.adb (Create_Type): +	Do not exempt Chars from the ordering rule. +	(Exception_To_Inheritance_Rule): Exempt Chars from the +	inheritance rule. +	(Check_For_Syntactic_Field_Mismatch): +	Do not exempt Chars from the syntactic mismatch rule. +	This is the main point of this change. +	(Put_Make_Bodies): The Nmake functions for types in N_Op +	will now take a Chars parameter, which should always +	default to No_Name. This will be overwritten by the +	special-case Set_Chars call. Assert that it is in +	fact defaulted. +	* exp_ch4.adb (Expand_Array_Comparison): +	Use the Nkind instead of the Chars, which seems cleaner. +	Use a case instead of an elsif chain. +	* sem_attr.adb (Proper_Op): Minor cleanup. +	* sem_ch8.adb: Minor reformatting. +	* sem_res.adb (Operator_Kind): Tighten up the result subtype. + +2025-11-03  Viljar Indus  <indus@adacore.com> + +	* exp_attr.adb (Expand_N_Attribute_Reference): Use the +	First_Subtype when creating the procedure for stream +	attributes. +	(Get_Array_Stream_Item_Type): New method for calculating +	the type for the Item argument for streaming methods. +  2025-11-02  Eric Botcazou  <ebotcazou@adacore.com>  	* locales.c (is_iso_639_3): New static function. diff --git a/gcc/ada/par-ch3.adb b/gcc/ada/par-ch3.adb index 56c1b89..ee0958d 100644 --- a/gcc/ada/par-ch3.adb +++ b/gcc/ada/par-ch3.adb @@ -757,8 +757,7 @@ package body Ch3 is                       Typedef_Node := P_Derived_Type_Def_Or_Private_Ext_Decl;                       if Saved_Token = Tok_Synchronized then -                        if Nkind (Typedef_Node) = -                          N_Derived_Type_Definition +                        if Nkind (Typedef_Node) = N_Derived_Type_Definition                          then                             Error_Msg_N                               ("SYNCHRONIZED not allowed for record extension", @@ -864,7 +863,13 @@ package body Ch3 is              Set_Abstract_Present (Typedef_Node, Abstract_Present);           elsif Abstract_Present then -            Error_Msg ("ABSTRACT not allowed here, ignored", Abstract_Loc); +            if Nkind (Typedef_Node) = N_Derived_Type_Definition then +               Error_Msg +                 ("ABSTRACT allowed only for record extension, ignored", +                  Abstract_Loc); +            else +               Error_Msg ("ABSTRACT not allowed here, ignored", Abstract_Loc); +            end if;           end if;           Decl_Node := New_Node (N_Full_Type_Declaration, Type_Loc); diff --git a/gcc/ada/sem_ch12.adb b/gcc/ada/sem_ch12.adb index 702939a..363abe3 100644 --- a/gcc/ada/sem_ch12.adb +++ b/gcc/ada/sem_ch12.adb @@ -810,11 +810,11 @@ package body Sem_Ch12 is     --  the suffix is removed is added to Prims_List to restore them later.     procedure Install_Parent (P : Entity_Id; In_Body : Boolean := False); -   --  When compiling an instance of a child unit the parent (which is -   --  itself an instance) is an enclosing scope that must be made -   --  immediately visible. This procedure is also used to install the non- -   --  generic parent of a generic child unit when compiling its body, so -   --  that full views of types in the parent are made visible. +   --  When compiling an instance of a child unit, the parent P is an enclosing +   --  scope that must be made immediately visible. In_Body is True if this is +   --  done for an instance body and False for an instance spec. Note that the +   --  procedure does not insert P on the scope stack above the current scope, +   --  but instead pushes P and then pushes an extra copy of the current scope.     --  The functions Instantiate_... perform various legality checks and build     --  the declarations for instantiated generic parameters. In all of these @@ -930,7 +930,7 @@ package body Sem_Ch12 is     --  subprogram declaration N.     procedure Remove_Parent (In_Body : Boolean := False); -   --  Reverse effect after instantiation of child is complete +   --  Reverse Install_Parent's effect after instantiation of child is complete     function Renames_Standard_Subprogram (Subp : Entity_Id) return Boolean;     --  Determine whether Subp renames one of the subprograms defined in the @@ -11168,10 +11168,20 @@ package body Sem_Ch12 is     ------------------------     procedure Hide_Current_Scope is -      C : constant Entity_Id := Current_Scope; +      C : Entity_Id;        E : Entity_Id;     begin +      C := Current_Scope; + +      --  The analysis of the actual parameters may have created a transient +      --  scope after the extra copy of the current scope was pushed onto the +      --  stack, so we need to skip it. + +      if Scope_Is_Transient then +         C := Scope (C); +      end if; +        Set_Is_Hidden_Open_Scope (C);        E := First_Entity (C); @@ -11194,7 +11204,6 @@ package body Sem_Ch12 is           Set_Is_Immediately_Visible (C, False);           Append_Elmt (C, Hidden_Entities);        end if; -     end Hide_Current_Scope;     -------------- @@ -16948,20 +16957,33 @@ package body Sem_Ch12 is     procedure Remove_Parent (In_Body : Boolean := False) is        S : Entity_Id := Current_Scope; -      --  S is the scope containing the instantiation just completed. The scope -      --  stack contains the parent instances of the instantiation, followed by -      --  the original S. +      --  S is the extra copy of the current scope that has been pushed by +      --  Install_Parent. The scope stack next contains the parents of the +      --  instance followed by the original S.        Cur_P  : Entity_Id;        E      : Entity_Id; -      P      : Entity_Id;        Hidden : Elmt_Id; +      P      : Entity_Id; +      SE     : Scope_Stack_Entry;     begin -      --  After child instantiation is complete, remove from scope stack the -      --  extra copy of the current scope, and then remove parent instances. -        if not In_Body then +         --  If the analysis of the actual parameters has created a transient +         --  scope after the extra copy of the current scope was pushed onto +         --  the stack, we first need to save this transient scope and pop it. + +         if Scope_Is_Transient then +            SE := Scope_Stack.Table (Scope_Stack.Last); +            Scope_Stack.Decrement_Last; +            S := Current_Scope; +         else +            SE := (Is_Transient => False, others => <>); +         end if; + +         --  After child instantiation is complete, remove from scope stack the +         --  extra copy of the current scope, and then remove the parents. +           Pop_Scope;           while Current_Scope /= S loop @@ -17045,6 +17067,12 @@ package body Sem_Ch12 is              Next_Elmt (Hidden);           end loop; +         --  Restore the transient scope that was popped on entry, if any + +         if SE.Is_Transient then +            Scope_Stack.Append (SE); +         end if; +        else           --  Each body is analyzed separately, and there is no context that           --  needs preserving from one body instance to the next, so remove all diff --git a/gcc/analyzer/checker-event.cc b/gcc/analyzer/checker-event.cc index 790ebc7..3e54c2a 100644 --- a/gcc/analyzer/checker-event.cc +++ b/gcc/analyzer/checker-event.cc @@ -833,6 +833,14 @@ start_cfg_edge_event::should_print_expr_p (tree expr)    return false;  } +/* class catch_cfg_edge_event : public cfg_edge_event.  */ + +diagnostics::paths::event::meaning +catch_cfg_edge_event::get_meaning () const +{ +  return meaning (verb::catch_); +} +  /* class call_event : public superedge_event.  */  /* call_event's ctor.  */ @@ -1034,6 +1042,12 @@ setjmp_event::print_desc (pretty_printer &pp) const  	     get_user_facing_name (m_setjmp_call));  } +diagnostics::paths::event::meaning +setjmp_event::get_meaning () const +{ +  return meaning (verb::setjmp_); +} +  /* Implementation of checker_event::prepare_for_emission vfunc for setjmp_event.     Record this setjmp's event ID into the path, so that rewind events can @@ -1066,6 +1080,12 @@ rewind_event::get_setjmp_caller () const    return m_eedge->m_dest->get_function ()->decl;  } +diagnostics::paths::event::meaning +rewind_event::get_meaning () const +{ +  return meaning (verb::longjmp_); +} +  /* rewind_event's ctor.  */  rewind_event::rewind_event (const exploded_edge *eedge, @@ -1163,6 +1183,12 @@ rewind_to_setjmp_event::prepare_for_emission (checker_path *path,  /* class throw_event : public checker_event.  */ +diagnostics::paths::event::meaning +throw_event::get_meaning () const +{ +  return meaning (verb::throw_); +} +  /* class explicit_throw_event : public throw_event.  */  void  explicit_throw_event::print_desc (pretty_printer &pp) const @@ -1205,6 +1231,12 @@ unwind_event::print_desc (pretty_printer &pp) const      pp_printf (&pp, "unwinding stack frame");  } +diagnostics::paths::event::meaning +unwind_event::get_meaning () const +{ +  return meaning (verb::unwind_); +} +  /* class warning_event : public checker_event.  */  /* Implementation of diagnostics::paths::event::print_desc vfunc for diff --git a/gcc/analyzer/checker-event.h b/gcc/analyzer/checker-event.h index 909e388..fc51be1 100644 --- a/gcc/analyzer/checker-event.h +++ b/gcc/analyzer/checker-event.h @@ -539,6 +539,8 @@ public:        pp_string (&pp, "...catching exception here");    } +  meaning get_meaning () const override; +  private:    tree m_type;  }; @@ -666,6 +668,8 @@ public:    void print_desc (pretty_printer &pp) const final override; +  meaning get_meaning () const override; +    void prepare_for_emission (checker_path *path,  			     pending_diagnostic *pd,  			     diagnostics::paths::event_id_t emission_id) final override; @@ -688,6 +692,8 @@ public:    tree get_setjmp_caller () const;    const exploded_edge *get_eedge () const { return m_eedge; } +  meaning get_meaning () const override; +   protected:    rewind_event (const exploded_edge *eedge,  		enum event_kind kind, @@ -754,6 +760,8 @@ public:    {    } +  meaning get_meaning () const override; +  protected:    const exploded_node *m_enode;    const gcall &m_throw_call; @@ -817,6 +825,8 @@ public:    {    } +  meaning get_meaning () const override; +    void print_desc (pretty_printer &pp) const final override;    int m_num_frames; diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 7ec028c..4a2232e 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -12213,7 +12213,7 @@  	(compare:CCNO  	  (and:SWI48  	    (match_operand:SWI48 0 "nonimmediate_operand") -	    (match_operand:SWI48 1 "<nonmemory_szext_operand>")) +	    (match_operand:SWI48 1 "<general_szext_operand>"))  	  (const_int 0)))])  (define_expand "testqi_ccz_1" @@ -12221,7 +12221,7 @@  	(compare:CCZ  	  (and:QI  	    (match_operand:QI 0 "nonimmediate_operand") -	    (match_operand:QI 1 "nonmemory_operand")) +	    (match_operand:QI 1 "general_operand"))  	  (const_int 0)))])  (define_insn "*testdi_1" @@ -12229,7 +12229,7 @@  	(compare  	  (and:DI  	    (match_operand:DI 0 "nonimmediate_operand" "%r,rm") -	    (match_operand:DI 1 "x86_64_szext_nonmemory_operand" "Z,re")) +	    (match_operand:DI 1 "x86_64_szext_general_operand" "Z,re"))  	 (const_int 0)))]    "TARGET_64BIT     && ix86_match_ccmode @@ -12242,7 +12242,8 @@  	 (satisfies_constraint_Z (operands[1])  	  && (!CONST_INT_P (operands[1])  	      || val_signbit_known_set_p (SImode, INTVAL (operands[1])))) -	 ? CCZmode : CCNOmode)" +	 ? CCZmode : CCNOmode) +   && !(MEM_P (operands[0]) && MEM_P (operands[1]))"    "@     test{l}\t{%k1, %k0|%k0, %k1}     test{q}\t{%1, %0|%0, %1}" @@ -12253,12 +12254,13 @@    [(set (reg FLAGS_REG)  	(compare  	  (and:QI -	    (match_operand:QI 0 "nonimmediate_operand" "%qm,qm,r") -	    (match_operand:QI 1 "nonmemory_operand" "q,n,n")) +	    (match_operand:QI 0 "nonimmediate_operand" "%qm,*a,qm,r") +	    (match_operand:QI 1 "general_operand" "q,n,n,n"))  	  (const_int 0)))]    "ix86_match_ccmode (insn,  		      CONST_INT_P (operands[1]) -		      && INTVAL (operands[1]) >= 0 ? CCNOmode : CCZmode)" +		      && INTVAL (operands[1]) >= 0 ? CCNOmode : CCZmode) +   && !(MEM_P (operands[0]) && MEM_P (operands[1]))"  {    if (get_attr_mode (insn) == MODE_SI)      { @@ -12270,7 +12272,7 @@  }    [(set_attr "type" "test")     (set (attr "mode") -     (cond [(eq_attr "alternative" "2") +     (cond [(eq_attr "alternative" "3")  	      (const_string "SI")  	    (and (match_test "optimize_insn_for_size_p ()")  		 (and (match_operand 0 "ext_QIreg_operand") @@ -12278,16 +12280,17 @@  	      (const_string "SI")  	   ]  	   (const_string "QI"))) -   (set_attr "pent_pair" "uv,np,np")]) +   (set_attr "pent_pair" "uv,uv,np,np")])  (define_insn "*test<mode>_1"    [(set (reg FLAGS_REG)  	(compare  	  (and:SWI124  	    (match_operand:SWI124 0 "nonimmediate_operand" "%<r>m,*a,<r>m") -	    (match_operand:SWI124 1 "<nonmemory_szext_operand>" "<r>,<i>,<i>")) -	 (const_int 0)))] -  "ix86_match_ccmode (insn, CCNOmode)" +	    (match_operand:SWI124 1 "<general_operand>" "<r>,<i>,<i>")) +	  (const_int 0)))] +  "ix86_match_ccmode (insn, CCNOmode) +   && !(MEM_P (operands[0]) && MEM_P (operands[1]))"    "test{<imodesuffix>}\t{%1, %0|%0, %1}"    [(set_attr "type" "test")     (set_attr "mode" "<MODE>") diff --git a/gcc/configure b/gcc/configure index 962511f..611f691 100755 --- a/gcc/configure +++ b/gcc/configure @@ -16498,15 +16498,7 @@ rm -f conftest*  fi  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $clang_cv_is_clang" >&5  $as_echo "$clang_cv_is_clang" >&6; } -  plugin_file= -  if test $clang_cv_is_clang = yes; then -    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clang plugin file" >&5 -$as_echo_n "checking for clang plugin file... " >&6; } -    plugin_names="LLVMgold.so" -    for plugin in $plugin_names; do -      plugin_file=`${CC} ${CFLAGS} --print-file-name $plugin` -      if test x$plugin_file = x$plugin; then -	if test -n "$ac_tool_prefix"; then +  if test -n "$ac_tool_prefix"; then    # Extract the first word of "${ac_tool_prefix}llvm-config", so it can be a program name with args.  set dummy ${ac_tool_prefix}llvm-config; ac_word=$2  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 @@ -16598,22 +16590,31 @@ else    LLVM_CONFIG="$ac_cv_prog_LLVM_CONFIG"  fi -	if test "$?" != 0; then -	  as_fn_error $? "Required tool 'llvm-config' not found on PATH." "$LINENO" 5 -	fi -	clang_lib_dir=`$LLVM_CONFIG --libdir` -	if test -f $clang_lib_dir/$plugin; then -	  plugin_file=$clang_lib_dir/$plugin -	fi -	if test x$plugin_file != x$plugin; then +  plugin_file= +  if test $clang_cv_is_clang = yes; then +    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clang plugin file" >&5 +$as_echo_n "checking for clang plugin file... " >&6; } +    plugin_names="LLVMgold.so" +    for plugin in $plugin_names; do +      plugin_file=`${CC} ${CFLAGS} --print-file-name $plugin` +      if test "$plugin_file" != "$plugin"; then +	break; +      fi +      if test -n "${LLVM_CONFIG}"; then +	plugin_file=`${LLVM_CONFIG} --libdir`/$plugin +	if test -f "$plugin_file"; then  	  break;  	fi        fi +      plugin_file=      done -    if test -z $plugin_file; then -      as_fn_error $? "Couldn't find clang plugin file for $CC." "$LINENO" 5 -    fi -        if test -n "$ac_tool_prefix"; then +    if test -z "$plugin_file"; then +      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +    else +      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $plugin_file" >&5 +$as_echo "$plugin_file" >&6; } +            if test -n "$ac_tool_prefix"; then    # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.  set dummy ${ac_tool_prefix}ar; ac_word=$2  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 @@ -16705,42 +16706,26 @@ else    AR="$ac_cv_prog_AR"  fi -    if test "${AR}" = "" ; then -      as_fn_error $? "Required archive tool 'ar' not found on PATH." "$LINENO" 5 -    fi -    plugin_option="--plugin $plugin_file" -    touch conftest.c -    ${AR} $plugin_option rc conftest.a conftest.c -    if test "$?" != 0; then -      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Failed: $AR $plugin_option rc" >&5 +      if test -z "${AR}"; then +	as_fn_error $? "Required archive tool 'ar' not found on PATH." "$LINENO" 5 +      fi +      plugin_option="--plugin $plugin_file" +      touch conftest.c +      ${AR} $plugin_option rc conftest.a conftest.c +      if test "$?" != 0; then +	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Failed: $AR $plugin_option rc" >&5  $as_echo "$as_me: WARNING: Failed: $AR $plugin_option rc" >&2;} -      plugin_file= +	plugin_file= +      fi +      rm -f conftest.*      fi -    rm -f conftest.* -    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $plugin_file" >&5 -$as_echo "$plugin_file" >&6; }    fi    plugin_file="$plugin_file"  if test -n "$plugin_file"; then    plugin_option="--plugin $plugin_file"  else -  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -plugin option" >&5 -$as_echo_n "checking for -plugin option... " >&6; } - -plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll" -plugin_option= -for plugin in $plugin_names; do -  plugin_so=`${CC} ${CFLAGS} --print-prog-name $plugin` -  if test x$plugin_so = x$plugin; then -    plugin_so=`${CC} ${CFLAGS} --print-file-name $plugin` -  fi -  if test x$plugin_so != x$plugin; then -    plugin_option="--plugin $plugin_so" -    break -  fi -done -if test -n "$ac_tool_prefix"; then +  if test -n "$ac_tool_prefix"; then    # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.  set dummy ${ac_tool_prefix}ar; ac_word=$2  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 @@ -16832,25 +16817,39 @@ else    AR="$ac_cv_prog_AR"  fi -if test "${AR}" = "" ; then +if test -z "${AR}"; then    as_fn_error $? "Required archive tool 'ar' not found on PATH." "$LINENO" 5  fi -touch conftest.c -${AR} $plugin_option rc conftest.a conftest.c -if test "$?" != 0; then -  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Failed: $AR $plugin_option rc" >&5 -$as_echo "$as_me: WARNING: Failed: $AR $plugin_option rc" >&2;} -  plugin_option= -fi -rm -f conftest.* -if test -n "$plugin_option"; then -  plugin_option="$plugin_option" -  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $plugin_option" >&5 -$as_echo "$plugin_option" >&6; } -else +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -plugin option" >&5 +$as_echo_n "checking for -plugin option... " >&6; } +plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll" +plugin_option= +for plugin in $plugin_names; do +  plugin_so=`${CC} ${CFLAGS} --print-prog-name $plugin` +  if test x$plugin_so = x$plugin; then +    plugin_so=`${CC} ${CFLAGS} --print-file-name $plugin` +  fi +  if test x$plugin_so != x$plugin; then +    plugin_option="--plugin $plugin_so" +    break +  fi +done +if test -z "$plugin_option"; then    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5  $as_echo "no" >&6; } +else +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $plugin_option" >&5 +$as_echo "$plugin_option" >&6; } +    touch conftest.c +  ${AR} $plugin_option rc conftest.a conftest.c +  if test "$?" != 0; then +    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Failed: $AR $plugin_option rc" >&5 +$as_echo "$as_me: WARNING: Failed: $AR $plugin_option rc" >&2;} +    plugin_option= +  fi +  rm -f conftest.*  fi +plugin_option="$plugin_option"  fi  if test -n "$ac_tool_prefix"; then @@ -21873,7 +21872,7 @@ else    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2    lt_status=$lt_dlunknown    cat > conftest.$ac_ext <<_LT_EOF -#line 21876 "configure" +#line 21875 "configure"  #include "confdefs.h"  #if HAVE_DLFCN_H @@ -21979,7 +21978,7 @@ else    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2    lt_status=$lt_dlunknown    cat > conftest.$ac_ext <<_LT_EOF -#line 21982 "configure" +#line 21981 "configure"  #include "confdefs.h"  #if HAVE_DLFCN_H diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 08d1fa7..9a8c394 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,23 @@ +2025-11-03  Jason Merrill  <jason@redhat.com> + +	* name-lookup.cc (name_lookup::adl_class_fns): Include all +	namespace-scope friends. + +2025-11-03  Jason Merrill  <jason@redhat.com> + +	* name-lookup.cc (pushdecl): Discard built-in sooner. + +2025-11-03  Jason Merrill  <jason@redhat.com> + +	* module.cc (trees_in::decl_value): Don't add an instantiation to +	CLASSTYPE_MEMBER_VEC. + +2025-11-03  Jason Merrill  <jason@redhat.com> + +	* module.cc (module_state::write_namespaces): Handle +	TREE_DEPRECATED. +	(module_state::read_namespaces): Likewise. +  2025-11-02  Nathaniel Shead  <nathanieloshead@gmail.com>  	PR c++/122421 diff --git a/gcc/cp/name-lookup.cc b/gcc/cp/name-lookup.cc index b753061..ef13604 100644 --- a/gcc/cp/name-lookup.cc +++ b/gcc/cp/name-lookup.cc @@ -1372,11 +1372,14 @@ name_lookup::adl_class_fns (tree type)  	  {  	    tree fn = TREE_VALUE (friends); -	    /* Only interested in global functions with potentially hidden -	       (i.e. unqualified) declarations.  */ +	    /* Before C++20, ADL just makes hidden friends visible, so we +	       only include functions in the same namespace.  After C++20, +	       include all namespace-scope functions.  */  	    if (!context)  	      context = decl_namespace_context (type); -	    if (CP_DECL_CONTEXT (fn) != context) +	    if (cxx_dialect < cxx20 +		? CP_DECL_CONTEXT (fn) != context +		: !DECL_NAMESPACE_SCOPE_P (fn))  	      continue;  	    dedup (true); @@ -4063,6 +4066,11 @@ pushdecl (tree decl, bool hiding)  	      }  	} +      /* Skip a hidden builtin we failed to match already.  There can +	 only be one.  */ +      if (old && anticipated_builtin_p (old)) +	old = OVL_CHAIN (old); +        /* Check for redeclaring an import.  */        if (slot && *slot && TREE_CODE (*slot) == BINDING_VECTOR)  	if (tree match @@ -4081,11 +4089,6 @@ pushdecl (tree decl, bool hiding)        /* We are pushing a new decl.  */ -      /* Skip a hidden builtin we failed to match already.  There can -	 only be one.  */ -      if (old && anticipated_builtin_p (old)) -	old = OVL_CHAIN (old); -        if (hiding)  	; /* Hidden bindings don't shadow anything.  */        else diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc index 5836122..f642900 100644 --- a/gcc/cp/parser.cc +++ b/gcc/cp/parser.cc @@ -83,7 +83,7 @@ enum non_integral_constant {    NIC_FUNC_CALL,    /* an increment */    NIC_INC, -  /* an decrement */ +  /* a decrement */    NIC_DEC,    /* an array reference */    NIC_ARRAY_REF, @@ -3782,7 +3782,7 @@ cp_parser_non_integral_constant_expression (cp_parser  *parser,  		       "cannot appear in a constant-expression");  		return true;  	      case NIC_DEC: -		error ("an decrement " +		error ("a decrement "  		       "cannot appear in a constant-expression");  		return true;  	      case NIC_ARRAY_REF: diff --git a/gcc/diagnostics/paths.cc b/gcc/diagnostics/paths.cc index 824b810..8e29dae 100644 --- a/gcc/diagnostics/paths.cc +++ b/gcc/diagnostics/paths.cc @@ -97,6 +97,22 @@ event::meaning::maybe_get_verb_str (enum verb v)        return "branch";      case verb::danger:        return "danger"; + +    /* Special control flow operations. + +       These are not part of SARIF v2.1.0 section 3.38.8, but the +       spec allows other values; see +       https://github.com/oasis-tcs/sarif-spec/issues/735  */ +    case verb::throw_: +      return "throw"; +    case verb::catch_: +      return "catch"; +    case verb::unwind_: +      return "unwind"; +    case verb::setjmp_: +      return "setjmp"; +    case verb::longjmp_: +      return "longjmp";      }  } diff --git a/gcc/diagnostics/paths.h b/gcc/diagnostics/paths.h index d30c420..f7dff8d 100644 --- a/gcc/diagnostics/paths.h +++ b/gcc/diagnostics/paths.h @@ -96,7 +96,14 @@ class event      return_,      branch, -    danger +    danger, + +    // Special control flow operations: +    throw_, +    catch_, +    unwind_, // unwinding stack frame(s) during exception-handling +    setjmp_, +    longjmp_    };    enum class noun    { @@ -131,6 +138,10 @@ class event        m_property (property::unknown)      {      } +    meaning (enum verb verb) +    : m_verb (verb), m_noun (noun::unknown), m_property (property::unknown) +    { +    }      meaning (enum verb verb, enum noun noun)      : m_verb (verb), m_noun (noun), m_property (property::unknown)      { diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 5501bca..ffaf520 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2025-11-03  Steve Kargl  <kargls@comcast.net> + +	PR fortran/122513 +	* resolve.cc (check_default_none_expr): Do not allow an +	iterator in a locality spec. Allow a named constant to be +	used within the loop. +  2025-11-01  Harald Anlauf  <anlauf@gmx.de>  	PR fortran/78640 diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc index 03e26f0..5fa408e 100644 --- a/gcc/fortran/resolve.cc +++ b/gcc/fortran/resolve.cc @@ -8461,7 +8461,20 @@ check_default_none_expr (gfc_expr **e, int *, void *data)  		break;  	      ns2 = ns2->parent;  	    } -	  if (ns2 != NULL) + +	  /* A DO CONCURRENT iterator cannot appear in a locality spec.  */ +	  if (sym->ns->code->ext.concur.forall_iterator) +	    { +	      gfc_forall_iterator *iter +		= sym->ns->code->ext.concur.forall_iterator; +	      for (; iter; iter = iter->next) +		if (iter->var->symtree +		    && strcmp(sym->name, iter->var->symtree->name) == 0) +		  return 0; +	    } + +	  /* A named constant is not a variable, so skip test.  */ +	  if (ns2 != NULL && sym->attr.flavor != FL_PARAMETER)  	    {  	      gfc_error ("Variable %qs at %L not specified in a locality spec "  			"of DO CONCURRENT at %L but required due to " diff --git a/gcc/simplify-rtx.cc b/gcc/simplify-rtx.cc index 989cf9c..53592d2 100644 --- a/gcc/simplify-rtx.cc +++ b/gcc/simplify-rtx.cc @@ -3686,8 +3686,8 @@ simplify_context::simplify_binary_operation_1 (rtx_code code,  	  && XEXP (op0, 1) == CONST1_RTX (mode)  	  && XEXP (op1, 1) == CONST1_RTX (mode)  	  /* Verify bit positions (for cases with variable bit position). */ -	  && CONST_INT_P (XEXP (op0, 1)) -	  && CONST_INT_P (XEXP (op1, 1))) +	  && CONST_INT_P (XEXP (XEXP (op0, 0), 1)) +	  && CONST_INT_P (XEXP (XEXP (op1, 0), 1)))  	{  	  unsigned HOST_WIDE_INT bitpos1 = INTVAL (XEXP (XEXP (op0, 0), 1));  	  unsigned HOST_WIDE_INT bitpos2 = INTVAL (XEXP (XEXP (op1, 0), 1)); @@ -3718,7 +3718,7 @@ simplify_context::simplify_binary_operation_1 (rtx_code code,  	  && XEXP (op0, 1) == CONST1_RTX (mode)  	  && XEXP (op1, 1) == CONST0_RTX (mode)  	  /* Verify bit position. */ -	  && CONST_INT_P (XEXP (op0, 1))) +	  && CONST_INT_P (XEXP (XEXP (op0, 0), 1)))  	{  	  unsigned HOST_WIDE_INT bitpos1 = INTVAL (XEXP (XEXP (op0, 0), 1));  	  unsigned HOST_WIDE_INT mask diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 452c9c9..7a2f15e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,210 @@ +2025-11-03  Eric Botcazou  <ebotcazou@adacore.com> + +	* gnat.dg/generic_inst15.adb: New test. +	* gnat.dg/generic_inst15_pkg-g.ads: New helper. +	* gnat.dg/generic_inst15_pkg.ads: Likewise. + +2025-11-03  Eric Botcazou  <ebotcazou@adacore.com> + +	* gnat.dg/specs/abstract1.ads: New test. + +2025-11-03  Uros Bizjak  <ubizjak@gmail.com> + +	PR target/122534 +	* gcc.target/i386/pr122534.c: New test. + +2025-11-03  Robin Dapp  <rdapp.gcc@gmail.com> + +	* gcc.target/riscv/rvv/base/pr119115.c: Add -std=gnu99. + +2025-11-03  Steve Kargl  <kargls@comcast.net> + +	PR fortran/122513 +	* gfortran.dg/pr122513.f90: New test. + +2025-11-03  Jason Merrill  <jason@redhat.com> + +	* g++.dg/lookup/koenig16.C: New test. +	* g++.dg/modules/adl-11_a.C: New file. +	* g++.dg/modules/adl-11_b.C: New file. + +2025-11-03  Jason Merrill  <jason@redhat.com> + +	* g++.dg/modules/builtin-9_a.C: New test. +	* g++.dg/modules/builtin-9_b.C: New test. + +2025-11-03  Jason Merrill  <jason@redhat.com> + +	* g++.dg/modules/clone-5_a.C: New test. +	* g++.dg/modules/clone-5_b.C: New test. + +2025-11-03  Jason Merrill  <jason@redhat.com> + +	* g++.dg/modules/namespace-15_a.C: New test. +	* g++.dg/modules/namespace-15_b.C: New test. + +2025-11-03  Georg-Johann Lay  <avr@gjlay.de> + +	* gcc.target/avr/torture/pr92606.c: Use LPM even if LPMx +	is available. + +2025-11-03  Loeka Rogge  <loeka@synopsys.com> + +	* gcc.target/arc/movv2hi-be.c: New test. + +2025-11-03  Kito Cheng  <kito.cheng@sifive.com> + +	* g++.dg/abi/param2.C: Add -Wno-psabi option for RISC-V. +	* g++.target/riscv/abi/empty-struct+union-1.cc: New test. +	* g++.target/riscv/abi/empty-struct+union-2.cc: New test. +	* g++.target/riscv/abi/empty-struct+union-3.cc: New test. +	* g++.target/riscv/abi/empty-struct+union-4.cc: New test. +	* g++.target/riscv/abi/empty-struct-1.cc: New test. +	* g++.target/riscv/abi/empty-struct-2.cc: New test. +	* g++.target/riscv/abi/empty-struct-3.cc: New test. +	* g++.target/riscv/abi/empty-struct-4.cc: New test. +	* g++.target/riscv/abi/empty-struct-5.cc: New test. +	* g++.target/riscv/abi/empty-struct-6.cc: New test. +	* g++.target/riscv/abi/empty-struct-7.cc: New test. +	* g++.target/riscv/abi/empty-struct-8.cc: New test. +	* g++.target/riscv/abi/empty-struct-9.cc: New test. +	* g++.target/riscv/abi/empty-struct-10.cc: New test. +	* g++.target/riscv/abi/empty-struct-11.cc: New test. +	* g++.target/riscv/abi/empty-struct-12.cc: New test. +	* g++.target/riscv/abi/empty-union-1.cc: New test. +	* g++.target/riscv/abi/empty-union-2.cc: New test. +	* g++.target/riscv/abi/empty-union-3.cc: New test. +	* g++.target/riscv/abi/empty-union-4.cc: New test. +	* g++.target/riscv/riscv.exp: Add abi subdirectory. +	* gcc.dg/compat/pr83487-1_x.c: Add -Wno-psabi option for RISC-V. +	* gcc.dg/compat/pr83487-1_y.c: Likewise. +	* gcc.dg/compat/pr83487-2_x.c: Likewise. +	* gcc.dg/compat/pr83487-2_y.c: Likewise. +	* gcc.dg/torture/pr28814.c: Likewise. +	* gcc.target/riscv/abi/empty-struct+union-1.c: New test. +	* gcc.target/riscv/abi/empty-struct+union-2.c: New test. +	* gcc.target/riscv/abi/empty-struct+union-3.c: New test. +	* gcc.target/riscv/abi/empty-struct+union-4.c: New test. +	* gcc.target/riscv/abi/empty-struct-1.c: New test. +	* gcc.target/riscv/abi/empty-struct-2.c: New test. +	* gcc.target/riscv/abi/empty-struct-3.c: New test. +	* gcc.target/riscv/abi/empty-struct-4.c: New test. +	* gcc.target/riscv/abi/empty-struct-5.c: New test. +	* gcc.target/riscv/abi/empty-struct-6.c: New test. +	* gcc.target/riscv/abi/empty-struct-7.c: New test. +	* gcc.target/riscv/abi/empty-struct-8.c: New test. +	* gcc.target/riscv/abi/empty-struct-9.c: New test. +	* gcc.target/riscv/abi/empty-struct-10.c: New test. +	* gcc.target/riscv/abi/empty-struct-11.c: New test. +	* gcc.target/riscv/abi/empty-struct-12.c: New test. +	* gcc.target/riscv/abi/empty-union-1.c: New test. +	* gcc.target/riscv/abi/empty-union-2.c: New test. +	* gcc.target/riscv/abi/empty-union-3.c: New test. +	* gcc.target/riscv/abi/empty-union-4.c: New test. +	* gcc.target/riscv/riscv.exp: Add abi subdirectory. + +2025-11-03  Alfie Richards  <alfie.richards@arm.com> + +	PR target/122405 +	* g++.target/aarch64/mv-cpu-features.C: Add HWCAP_ATOMICS and +	HWCAP2_RNG defines. + +2025-11-03  Alfie Richards  <alfie.richards@arm.com> + +	* gcc.target/aarch64/fmv_priority.in: Update for new features. +	* gcc.target/aarch64/fmv_priority1.c: Ditto. +	* gcc.target/aarch64/fmv_priority2.c: Ditto. + +2025-11-03  Eric Botcazou  <ebotcazou@adacore.com> + +	* gnat.dg/vect19.ads, gnat.dg/vect19.adb: New test. +	* gnat.dg/vect19_pkg.ads, gnat.dg/vect19_pkg.adb: New helper. + +2025-11-03  Guo Jie  <guojie@loongson.cn> + +	* gcc.target/loongarch/mode-tieable-opt.c: New test. + +2025-11-03  Guo Jie  <guojie@loongson.cn> + +	* gcc.target/loongarch/mem-and-mask-opt.c: New test. + +2025-11-03  Guo Jie  <guojie@loongson.cn> + +	* gcc.target/loongarch/vec_pack_unpack_256.c: Adjust to changed +	lasx_xvpermi_q_<LASX:mode> template. +	* gcc.target/loongarch/vector/lasx/lasx-builtin.c: Ditto. +	* gcc.target/loongarch/lasx-xvpermi_q-opt.c: New test. + +2025-11-03  Guo Jie  <guojie@loongson.cn> + +	* gcc.target/loongarch/and-large-immediate-opt.c: New test. + +2025-11-03  Guo Jie  <guojie@loongson.cn> + +	* gcc.target/loongarch/extendsidi2-combine.c: New test. +	* gcc.target/loongarch/spill-less.c: New test. + +2025-11-03  Guo Jie  <guojie@loongson.cn> + +	* gcc.target/loongarch/mulh_wu.c: New test. + +2025-11-03  Tamar Christina  <tamar.christina@arm.com> + +	PR tree-optimization/122475 +	* gcc.dg/vect/pr122475.c: New test. +	* gcc.target/aarch64/sve/vect-reduc-bool-19.c: New test. +	* gcc.target/aarch64/sve/vect-reduc-bool-20.c: New test. + +2025-11-03  H.J. Lu  <hjl.tools@gmail.com> + +	* gcc.target/i386/builtin-memmove-1a.c: New test. +	* gcc.target/i386/builtin-memmove-1b.c: Likewise. +	* gcc.target/i386/builtin-memmove-1c.c: Likewise. +	* gcc.target/i386/builtin-memmove-1d.c: Likewise. +	* gcc.target/i386/builtin-memmove-2a.c: Likewise. +	* gcc.target/i386/builtin-memmove-2b.c: Likewise. +	* gcc.target/i386/builtin-memmove-2c.c: Likewise. +	* gcc.target/i386/builtin-memmove-2d.c: Likewise. +	* gcc.target/i386/builtin-memmove-3a.c: Likewise. +	* gcc.target/i386/builtin-memmove-3b.c: Likewise. +	* gcc.target/i386/builtin-memmove-3c.c: Likewise. +	* gcc.target/i386/builtin-memmove-4a.c: Likewise. +	* gcc.target/i386/builtin-memmove-4b.c: Likewise. +	* gcc.target/i386/builtin-memmove-4c.c: Likewise. +	* gcc.target/i386/builtin-memmove-5a.c: Likewise. +	* gcc.target/i386/builtin-memmove-5b.c: Likewise. +	* gcc.target/i386/builtin-memmove-5c.c: Likewise. +	* gcc.target/i386/builtin-memmove-6.c: Likewise. +	* gcc.target/i386/builtin-memmove-7.c: Likewise. +	* gcc.target/i386/builtin-memmove-8.c: Likewise. +	* gcc.target/i386/builtin-memmove-9.c: Likewise. +	* gcc.target/i386/builtin-memmove-10.c: Likewise. +	* gcc.target/i386/builtin-memmove-11a.c: Likewise. +	* gcc.target/i386/builtin-memmove-11b.c: Likewise. +	* gcc.target/i386/builtin-memmove-11c.c: Likewise. +	* gcc.target/i386/builtin-memmove-12.c: Likewise. +	* gcc.target/i386/builtin-memmove-13.c: Likewise. +	* gcc.target/i386/builtin-memmove-14.c: Likewise. +	* gcc.target/i386/builtin-memmove-15.c: Likewise. + +2025-11-03  Shreya Munnangi  <smunnangi1@ventanamicro.com> + +	PR target/52345 +	* gcc.target/riscv/pr52345.c: Add new test cases. + +2025-11-03  chenxiaolong  <chenxiaolong@loongson.cn> + +	* gcc.target/loongarch/vector/lasx/vect-concat-128-256-result.c: New test. +	* gcc.target/loongarch/vector/lasx/vect-concat-128-256.c: New test. +	* gcc.target/loongarch/vector/lasx/vect-extract-256-128-result.c: New test. +	* gcc.target/loongarch/vector/lasx/vect-extract-256-128.c: New test. +	* gcc.target/loongarch/vector/lasx/vect-insert-128-256-result.c: New test. +	* gcc.target/loongarch/vector/lasx/vect-insert-128-256.c: New test. + +2025-11-03  Lulu Cheng  <chenglulu@loongson.cn> + +	* gcc.target/loongarch/imm-load.c: Modify. +  2025-11-02  Gaius Mulley  <gaiusmod2@gmail.com>  	PR modula2/122499 diff --git a/gcc/testsuite/g++.dg/analyzer/exception-path-1-sarif.py b/gcc/testsuite/g++.dg/analyzer/exception-path-1-sarif.py new file mode 100644 index 0000000..8958d96 --- /dev/null +++ b/gcc/testsuite/g++.dg/analyzer/exception-path-1-sarif.py @@ -0,0 +1,22 @@ +from sarif import * + +import pytest + +@pytest.fixture(scope='function', autouse=True) +def sarif(): +    return sarif_from_env() + +def test_kinds(sarif): +    result = get_result_by_index(sarif, 0) + +    assert result['level'] == 'note' + +    events = result["codeFlows"][0]["threadFlows"][0]['locations'] + +    # Event "(1)": "throwing exception of type 'value_error' here..." (index == 0) +    assert events[0]['location']['message']['text'] == "throwing exception of type 'value_error' here..." +    assert events[0]['kinds'] == ["throw"] + +    # Event "(2)": "...catching exception of type 'value_error' here" (index == 1) +    assert events[1]['location']['message']['text'] == "...catching exception of type 'value_error' here" +    assert events[1]['kinds'] == ["catch"] diff --git a/gcc/testsuite/g++.dg/analyzer/exception-path-1.C b/gcc/testsuite/g++.dg/analyzer/exception-path-1.C index 486ca193..d923d62 100644 --- a/gcc/testsuite/g++.dg/analyzer/exception-path-1.C +++ b/gcc/testsuite/g++.dg/analyzer/exception-path-1.C @@ -1,3 +1,5 @@ +/* { dg-additional-options "-fdiagnostics-add-output=sarif" } */ +  /* Verify that we follow the correct paths when we know the typeinfo of     an exception.  */ @@ -32,3 +34,10 @@ int test ()    __analyzer_dump_path (); // { dg-bogus "path" }    return 0;  } + +/* Verify that some JSON was written to a file with the expected name.  */ +/* { dg-final { verify-sarif-file } } */ + +/* Use a Python script to verify various properties about the generated +   .sarif file: +   { dg-final { run-sarif-pytest exception-path-1.C "exception-path-1-sarif.py" } } */ diff --git a/gcc/testsuite/g++.dg/analyzer/exception-path-unwind-multiple-2-sarif.py b/gcc/testsuite/g++.dg/analyzer/exception-path-unwind-multiple-2-sarif.py new file mode 100644 index 0000000..b817a64 --- /dev/null +++ b/gcc/testsuite/g++.dg/analyzer/exception-path-unwind-multiple-2-sarif.py @@ -0,0 +1,23 @@ +from sarif import * + +import pytest + +@pytest.fixture(scope='function', autouse=True) +def sarif(): +    return sarif_from_env() + +def test_kinds(sarif): +    result = get_result_by_index(sarif, 0) + +    assert result['level'] == 'note' + +    events = result["codeFlows"][0]["threadFlows"][0]['locations'] + +    assert events[-4]['location']['message']['text'] == "throwing exception of type 'value_error' here..." +    assert events[-4]['kinds'] == ["throw"] + +    assert events[-3]['location']['message']['text'] == "unwinding 2 stack frames" +    assert events[-3]['kinds'] == ["unwind"] + +    assert events[-2]['location']['message']['text'] == "...catching exception of type 'value_error' here" +    assert events[-2]['kinds'] == ["catch"] diff --git a/gcc/testsuite/g++.dg/analyzer/exception-path-unwind-multiple-2.C b/gcc/testsuite/g++.dg/analyzer/exception-path-unwind-multiple-2.C index 2608f17..aa1ff89 100644 --- a/gcc/testsuite/g++.dg/analyzer/exception-path-unwind-multiple-2.C +++ b/gcc/testsuite/g++.dg/analyzer/exception-path-unwind-multiple-2.C @@ -1,3 +1,5 @@ +/* { dg-additional-options "-fdiagnostics-add-output=sarif" } */ +  /* Verify that we follow the correct paths when we know the typeinfo of     an exception: interprocedural case where unwind multiple frame,     failing to match the type.  */ @@ -53,3 +55,10 @@ int outer ()    __analyzer_dump_path (); // { dg-bogus "path" }    return 0;  } + +/* Verify that some JSON was written to a file with the expected name.  */ +/* { dg-final { verify-sarif-file } } */ + +/* Use a Python script to verify various properties about the generated +   .sarif file: +   { dg-final { run-sarif-pytest exception-path-unwind-multiple-2.C "exception-path-unwind-multiple-2-sarif.py" } } */ diff --git a/gcc/testsuite/g++.dg/lookup/koenig16.C b/gcc/testsuite/g++.dg/lookup/koenig16.C new file mode 100644 index 0000000..1d6e4e3 --- /dev/null +++ b/gcc/testsuite/g++.dg/lookup/koenig16.C @@ -0,0 +1,22 @@ +// Before P1787 (C++20), only hidden friends are included in ADL. +// After P1787, all friends are included. + +namespace N { +  namespace NN { +    struct A; +  } +  using NN::A; +  void fn (A); +  namespace NN { +    struct A { +      friend void N::fn (A); +    }; +  } +  void fn (A) { } +} + +int main() +{ +  N::A a; +  fn(a);			// { dg-error "not declared" "" { target c++17_down } } +} diff --git a/gcc/testsuite/g++.dg/modules/adl-11_a.C b/gcc/testsuite/g++.dg/modules/adl-11_a.C new file mode 100644 index 0000000..063dd89 --- /dev/null +++ b/gcc/testsuite/g++.dg/modules/adl-11_a.C @@ -0,0 +1,21 @@ +// Before P1787 (C++20), only hidden friends are included in ADL. +// After P1787, all friends are included. + +// { dg-additional-options "-fmodules -Wno-global-module" } + +export module M; + +namespace N { +  namespace NN { +    export struct A; +  } +  export using NN::A; + +  export void fn (A); + +  namespace NN { +    struct A { +      friend void N::fn (A); +    }; +  } +} diff --git a/gcc/testsuite/g++.dg/modules/adl-11_b.C b/gcc/testsuite/g++.dg/modules/adl-11_b.C new file mode 100644 index 0000000..f178915 --- /dev/null +++ b/gcc/testsuite/g++.dg/modules/adl-11_b.C @@ -0,0 +1,12 @@ +// Before P1787 (C++20), only hidden friends are included in ADL. +// After P1787, all friends are included. + +// { dg-additional-options -fmodules } + +import M; + +int main() +{ +  N::A a; +  fn(a);			// { dg-error "not declared" "" { target c++17_down } } +} diff --git a/gcc/testsuite/g++.dg/modules/builtin-9_a.C b/gcc/testsuite/g++.dg/modules/builtin-9_a.C new file mode 100644 index 0000000..69b0e37 --- /dev/null +++ b/gcc/testsuite/g++.dg/modules/builtin-9_a.C @@ -0,0 +1,16 @@ +// Test that the built-in clog doesn't interfere with redeclaring the import. + +// { dg-additional-options "-fmodules -Wno-global-module" } + +module; + +namespace std { +  class ostream; +  extern ostream clog; +} + +export module M; + +namespace std { +  export using std::clog; +} diff --git a/gcc/testsuite/g++.dg/modules/builtin-9_b.C b/gcc/testsuite/g++.dg/modules/builtin-9_b.C new file mode 100644 index 0000000..30ea013 --- /dev/null +++ b/gcc/testsuite/g++.dg/modules/builtin-9_b.C @@ -0,0 +1,8 @@ +// { dg-additional-options -fmodules } + +import M; + +namespace std { +  class ostream; +  extern ostream clog; +} diff --git a/gcc/testsuite/gcc.dg/analyzer/setjmp-3-sarif.py b/gcc/testsuite/gcc.dg/analyzer/setjmp-3-sarif.py new file mode 100644 index 0000000..922d338 --- /dev/null +++ b/gcc/testsuite/gcc.dg/analyzer/setjmp-3-sarif.py @@ -0,0 +1,23 @@ +from sarif import * + +import pytest + +@pytest.fixture(scope='function', autouse=True) +def sarif(): +    return sarif_from_env() + +def test_kinds(sarif): +    result = get_result_by_index(sarif, 0) + +    assert result['level'] == 'note' + +    events = result["codeFlows"][0]["threadFlows"][0]['locations'] + +    assert events[1]['location']['message']['text'] == "'setjmp' called here" +    assert events[1]['kinds'] == ["setjmp"] + +    assert events[6]['location']['message']['text'] == "rewinding from 'longjmp' in 'inner'..." +    assert events[6]['kinds'] == ["longjmp"] + +    assert events[7]['location']['message']['text'].startswith("...to 'setjmp' in 'outer'") +    assert events[7]['kinds'] == ["longjmp"] diff --git a/gcc/testsuite/gcc.dg/analyzer/setjmp-3.c b/gcc/testsuite/gcc.dg/analyzer/setjmp-3.c index 3e4f870..a19ce84 100644 --- a/gcc/testsuite/gcc.dg/analyzer/setjmp-3.c +++ b/gcc/testsuite/gcc.dg/analyzer/setjmp-3.c @@ -1,4 +1,6 @@  /* { dg-additional-options "-fdiagnostics-show-line-numbers -fdiagnostics-path-format=inline-events -fdiagnostics-show-caret" } */ +/* { dg-additional-options "-fdiagnostics-add-output=sarif" } */ +  /* { dg-enable-nn-line-numbers "" } */  /* { dg-require-effective-target indirect_jumps } */ @@ -107,3 +109,10 @@ void outer (void)      |      |       (11) here      |      { dg-end-multiline-output "" } */ + +/* Verify that some JSON was written to a file with the expected name.  */ +/* { dg-final { verify-sarif-file } } */ + +/* Use a Python script to verify various properties about the generated +   .sarif file: +   { dg-final { run-sarif-pytest setjmp-3.c "setjmp-3-sarif.py" } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr122534.c b/gcc/testsuite/gcc.target/i386/pr122534.c new file mode 100644 index 0000000..b1988fb --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr122534.c @@ -0,0 +1,15 @@ +/* PR target/122534 */ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +int test (unsigned long p[6], int index) +{ +  __SIZE_TYPE__ i; + +  for (i = 0; i < 6; i++) +    if (p[i] & (1UL << index)) +      return i; +  return 0; +} + +/* { dg-final { scan-assembler-not "and" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/pr119115.c b/gcc/testsuite/gcc.target/riscv/rvv/base/pr119115.c index ac8a70e..524201c 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/base/pr119115.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/base/pr119115.c @@ -1,7 +1,7 @@  /* { dg-do run } */  /* { dg-require-effective-target rv64 } */  /* { dg-require-effective-target rvv_zvl256b_ok } */ -/* { dg-additional-options "-march=rv64gcv_zvl256b -mabi=lp64d -O3 -fsigned-char -fwrapv -mrvv-vector-bits=zvl" } */ +/* { dg-additional-options "-march=rv64gcv_zvl256b -mabi=lp64d -O3 -fsigned-char -fwrapv -mrvv-vector-bits=zvl -std=gnu99" } */  short a[4][14][14];  void diff --git a/gcc/testsuite/gfortran.dg/pr122513.f90 b/gcc/testsuite/gfortran.dg/pr122513.f90 new file mode 100644 index 0000000..9e12ab1 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr122513.f90 @@ -0,0 +1,13 @@ +! { dg-do compile } +! PR122513 do concurrent default (none) fails on parameter arrays +program test +  implicit none +  integer :: i +  do concurrent (i=1:2) default (none) +     block +       integer, dimension(2,3), parameter :: & +            ii = reshape((/ 1,2,3,4,5,6 /), (/2, 3/)) +       print*,ii(i,:) +     end block +  end do +end program test diff --git a/gcc/testsuite/gnat.dg/generic_inst15.adb b/gcc/testsuite/gnat.dg/generic_inst15.adb new file mode 100644 index 0000000..e1abf04 --- /dev/null +++ b/gcc/testsuite/gnat.dg/generic_inst15.adb @@ -0,0 +1,27 @@ +--  { dg-do compile } + +with Ada.Command_Line; use Ada.Command_Line; +with Ada.Directories; use Ada.Directories; +with Ada.Text_IO; use Ada.Text_IO; + +with Generic_Inst15_Pkg; +with Generic_Inst15_Pkg.G; + +procedure Generic_Inst15 is + +  procedure Print_Word +     (Word     : in out Generic_Inst15_Pkg.Word_Type; +      Continue :    out Boolean) +  is +  begin +     Ada.Text_IO.Put_Line(Generic_Inst15_Pkg.Get_Word(Word)); +     Continue := True; +  end; + +  package Word_Lister is new Generic_Inst15_Pkg.G +     (Order   => Generic_Inst15_Pkg.Word_Order'Val (Positive'Value (Argument(1))), +      Process => Print_Word); + +begin +   null; +end; diff --git a/gcc/testsuite/gnat.dg/generic_inst15_pkg-g.ads b/gcc/testsuite/gnat.dg/generic_inst15_pkg-g.ads new file mode 100644 index 0000000..371f2fe --- /dev/null +++ b/gcc/testsuite/gnat.dg/generic_inst15_pkg-g.ads @@ -0,0 +1,8 @@ +generic +   Order : Word_Order; +   with procedure Process +     (Word     : in out Word_Type; +      Continue :    out Boolean); +package Generic_Inst15_Pkg.G is +   procedure Translate (Code : in Book_Code_Type) is null; +end Generic_Inst15_Pkg.G; diff --git a/gcc/testsuite/gnat.dg/generic_inst15_pkg.ads b/gcc/testsuite/gnat.dg/generic_inst15_pkg.ads new file mode 100644 index 0000000..d83af45 --- /dev/null +++ b/gcc/testsuite/gnat.dg/generic_inst15_pkg.ads @@ -0,0 +1,37 @@ +private with Ada.Containers.Indefinite_Vectors; +private with Ada.Strings.Unbounded; + +package Generic_Inst15_Pkg is +   type Word_Order is +     (wo_Alpha, +      wo_Position, +      wo_Frequency_Alpha, +      wo_Frequency_Position); + +   subtype Book_Code_Type is String (1 .. 24); + +   type Word_Type is private; +   type Word_Status is (ws_Single, ws_Multi, ws_Not_All, ws_Unknown); +   type Translation_Index is new Natural range 1 .. 10; + +   function Get_Word (Self : in Word_Type) return String; + +   type Book_Type is private; + +private + +   package Translation_List is new Ada.Containers.Indefinite_Vectors ( +      Index_Type   => Translation_Index, +      Element_Type => String, +      "="          => "="); + +   type Word_Type is record +      Is_All : Boolean := False; +      Translations : Translation_List.Vector; +   end record; + +   type Book_Type is record +      Line  : Positive := 1; +      Index : Positive := 1; +   end record; +end Generic_Inst15_Pkg; diff --git a/gcc/testsuite/gnat.dg/specs/abstract1.ads b/gcc/testsuite/gnat.dg/specs/abstract1.ads new file mode 100644 index 0000000..4674424 --- /dev/null +++ b/gcc/testsuite/gnat.dg/specs/abstract1.ads @@ -0,0 +1,9 @@ +-- { dg-do compile } + +package Abstract1 is + +  type T is abstract tagged null record; + +  type S is abstract new T; -- { dg-error "allowed only for record extension" } + +end Abstract1;  | 
