aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog209
-rw-r--r--gcc/DATESTAMP2
-rw-r--r--gcc/ada/ChangeLog400
-rw-r--r--gcc/ada/par-ch3.adb11
-rw-r--r--gcc/ada/sem_ch12.adb58
-rw-r--r--gcc/analyzer/checker-event.cc32
-rw-r--r--gcc/analyzer/checker-event.h10
-rw-r--r--gcc/config/i386/i386.md27
-rwxr-xr-xgcc/configure129
-rw-r--r--gcc/cp/ChangeLog20
-rw-r--r--gcc/cp/name-lookup.cc19
-rw-r--r--gcc/cp/parser.cc4
-rw-r--r--gcc/diagnostics/paths.cc16
-rw-r--r--gcc/diagnostics/paths.h13
-rw-r--r--gcc/fortran/ChangeLog7
-rw-r--r--gcc/fortran/resolve.cc15
-rw-r--r--gcc/simplify-rtx.cc6
-rw-r--r--gcc/testsuite/ChangeLog207
-rw-r--r--gcc/testsuite/g++.dg/analyzer/exception-path-1-sarif.py22
-rw-r--r--gcc/testsuite/g++.dg/analyzer/exception-path-1.C9
-rw-r--r--gcc/testsuite/g++.dg/analyzer/exception-path-unwind-multiple-2-sarif.py23
-rw-r--r--gcc/testsuite/g++.dg/analyzer/exception-path-unwind-multiple-2.C9
-rw-r--r--gcc/testsuite/g++.dg/lookup/koenig16.C22
-rw-r--r--gcc/testsuite/g++.dg/modules/adl-11_a.C21
-rw-r--r--gcc/testsuite/g++.dg/modules/adl-11_b.C12
-rw-r--r--gcc/testsuite/g++.dg/modules/builtin-9_a.C16
-rw-r--r--gcc/testsuite/g++.dg/modules/builtin-9_b.C8
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/setjmp-3-sarif.py23
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/setjmp-3.c9
-rw-r--r--gcc/testsuite/gcc.target/i386/pr122534.c15
-rw-r--r--gcc/testsuite/gcc.target/riscv/rvv/base/pr119115.c2
-rw-r--r--gcc/testsuite/gfortran.dg/pr122513.f9013
-rw-r--r--gcc/testsuite/gnat.dg/generic_inst15.adb27
-rw-r--r--gcc/testsuite/gnat.dg/generic_inst15_pkg-g.ads8
-rw-r--r--gcc/testsuite/gnat.dg/generic_inst15_pkg.ads37
-rw-r--r--gcc/testsuite/gnat.dg/specs/abstract1.ads9
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;