aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog308
-rw-r--r--gcc/DATESTAMP2
-rw-r--r--gcc/ada/ChangeLog115
-rw-r--r--gcc/config/riscv/riscv.cc4
-rw-r--r--gcc/cp/ChangeLog14
-rw-r--r--gcc/doc/install.texi4
-rw-r--r--gcc/testsuite/ChangeLog190
-rw-r--r--gcc/testsuite/c-c++-common/cpp/va-opt-6.c10
-rw-r--r--gcc/testsuite/g++.dg/DRs/dr2579.C9
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/concepts-using6.C20
-rw-r--r--gcc/testsuite/gcc.dg/c23-attr-syntax-6.c4
-rw-r--r--gcc/testsuite/gcc.dg/cpp/paste12-2.c2
-rw-r--r--gcc/testsuite/gcc.dg/cpp/paste12.c2
-rw-r--r--gcc/testsuite/gcc.dg/cpp/paste14-2.c4
-rw-r--r--gcc/testsuite/gcc.dg/cpp/paste14.c4
-rw-r--r--gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-1-u32-from-u64.c2
-rw-r--r--gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-1-u64-from-u128.c1
17 files changed, 677 insertions, 18 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d73ba82..4b6bc90 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,311 @@
+2025-08-04 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * defaults.h (MAX_FIXED_MODE_SIZE): Default to 2 * BITS_PER_WORD
+ for larger-than-32-bitters.
+ * doc/tm.texi.in (MAX_FIXED_MODE_SIZE): Adjust accordingly. Tweak
+ wording.
+ * doc/tm.texi: Regenerate.
+
+2025-08-04 David Malcolm <dmalcolm@redhat.com>
+
+ * dump-context.h: Convert "enum optinfo_item_kind" into
+ "enum class kind" within class optinfo_item.
+ * dumpfile.cc: Likewise. Use "auto" in a few places.
+ Convert "enum optinfo_kind" to "enum class kind" within
+ class optinfo.
+ * opt-problem.cc: Likewise.
+ * optinfo-emit-json.cc: Likewise.
+ * optinfo.cc: Likewise.
+ * optinfo.h: Likewise.
+
+2025-08-04 David Malcolm <dmalcolm@redhat.com>
+
+ PR diagnostics/116253
+ * diagnostics/context.cc (context::set_nesting_level): New.
+ * diagnostics/context.h (context::set_nesting_level): New decl.
+ * doc/libgdiagnostics/topics/compatibility.rst
+ (LIBGDIAGNOSTICS_ABI_5): New.
+ * doc/libgdiagnostics/topics/physical-locations.rst
+ (diagnostic_manager_set_debug_physical_locations): New.
+ * libgdiagnostics++.h (manager::set_debug_physical_locations):
+ New.
+ * libgdiagnostics-private.h
+ (private_diagnostic_set_nesting_level): New decl.
+ * libgdiagnostics.cc (diagnostic_manager::diagnostic_manager):
+ Initialize m_debug_physical_locations.
+ (diagnostic_manager::new_location_from_file_and_line): Add debug
+ printing.
+ (diagnostic_manager::new_location_from_file_line_column):
+ Likewise.
+ (diagnostic_manager::new_location_from_range): Likewise.
+ (diagnostic_manager::set_debug_physical_locations): New.
+ (diagnostic_manager::ensure_linemap_for_file_and_line): Avoid
+ redundant calls to linemap_add.
+ (diagnostic_manager::new_location): Add debug printing.
+ (diagnostic_manager::m_debug_physical_locations): New field.
+ (diagnostic::diagnostic): Initialize m_nesting_level.
+ (diagnostic::get_nesting_level): New accessor.
+ (diagnostic::set_nesting_level): New.
+ (diagnostic::m_nesting_level): New field.
+ (diagnostic_manager::emit_va): Set and reset the nesting level
+ of the context from that of the diagnostic.
+ (diagnostic_manager_set_debug_physical_locations): New.
+ (private_diagnostic_set_nesting_level): New.
+ * libgdiagnostics.h
+ (diagnostic_manager_set_debug_physical_locations): New decl.
+ * libgdiagnostics.map (LIBGDIAGNOSTICS_ABI_5): New.
+ * libsarifreplay.cc (sarif_replayer::handle_result_obj): Support
+ the "nestingLevel" property.
+ * libsarifreplay.h (replay_options::m_debug_physical_locations):
+ New field.
+ * sarif-replay.cc: Add -fdebug-physical-locations.
+
+2025-08-04 David Malcolm <dmalcolm@redhat.com>
+
+ PR diagnostics/116792
+ * diagnostics/html-sink.cc
+ (html_builder::make_element_for_diagnostic): Don't add the
+ metadata element if it's empty.
+ (html_builder::make_element_for_metadata): Return null rather than
+ an empty element.
+
+2025-08-04 David Malcolm <dmalcolm@redhat.com>
+
+ * diagnostics/context.h: Move struct counters to its own header
+ and include it.
+ * diagnostics/counters.h: New file, from the above.
+
+2025-08-04 David Malcolm <dmalcolm@redhat.com>
+
+ * diagnostics/context.h: Split struct source_printing_options out
+ into "diagnostics/source-printing-options.h" and include it.
+ * diagnostics/source-printing-options.h: New file, from the above.
+
+2025-08-04 David Malcolm <dmalcolm@redhat.com>
+
+ * diagnostics/context.cc: Update for renaming of option_manager to
+ option_id_manager and of context::m_option_mgr to
+ context::m_option_id_mgr.
+ * diagnostics/context.h: Likewise, moving class declaration to a
+ new diagnostics/option-id-manager.h.
+ * diagnostics/lazy-paths.cc: Likewise.
+ * diagnostics/option-id-manager.h: New file, from material in
+ diagnostics/context.h.
+ * lto-wrapper.cc: Update for renaming of option_manager to
+ option_id_manager.
+ * opts-common.cc: Likewise.
+ * opts-diagnostic.h: Likewise.
+ * opts.cc: Likewise.
+ * toplev.cc: Likewise.
+
+2025-08-04 David Malcolm <dmalcolm@redhat.com>
+
+ * diagnostics/buffering.h: Update comment to refer to output sinks
+ rather than output formats.
+
+2025-08-04 David Malcolm <dmalcolm@redhat.com>
+
+ * gimple-warn-recursion.cc (pass_warn_recursion::execute): Add
+ missing auto_diagnostic_group.
+
+2025-08-04 Konstantinos Eleftheriou <konstantinos.eleftheriou@vrull.eu>
+
+ PR rtl-optimization/121303
+ * avoid-store-forwarding.cc (is_store_forwarding): Add check
+ for `off_val` in `is_store_forwarding`.
+
+2025-08-04 Richard Biener <rguenther@suse.de>
+
+ * tree-vect-slp.cc (vect_analyze_slp): When analyzing a loop
+ and slp instance discovery fails, immediately fail the whole
+ process.
+
+2025-08-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ * config/aarch64/aarch64-sve-builtins.cc
+ (function_expander::expand): Assert that the return value
+ has an appropriate mode.
+
+2025-08-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ * config/aarch64/aarch64-protos.h
+ (aarch64_convert_sve_data_to_pred): Remove the mode argument.
+ * config/aarch64/aarch64.cc
+ (aarch64_sve_emit_int_cmp): Allow PRED_MODE to be VNx16BI or
+ the natural predicate mode for the data mode.
+ (aarch64_convert_sve_data_to_pred): Remove the mode argument
+ and instead always create a VNx16BI result.
+ (aarch64_expand_sve_const_pred): Update call accordingly.
+ * config/aarch64/aarch64-sve-builtins-base.cc
+ (svdupq_impl::expand): Likewise, ensuring that the result
+ has mode VNx16BI.
+
+2025-08-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ * config/aarch64/aarch64-protos.h
+ (aarch64_emit_sve_pred_vec_duplicate): Declare.
+ * config/aarch64/aarch64.cc
+ (aarch64_emit_sve_pred_vec_duplicate): New function.
+ * config/aarch64/aarch64-sve.md (vec_duplicate<PRED_ALL:mode>): Use it.
+ * config/aarch64/aarch64-sve-builtins-base.cc
+ (svdup_impl::expand): Handle boolean values specially. Check for
+ constants and fall back on aarch64_emit_sve_pred_vec_duplicate
+ for the variable case, ensuring that the result has mode VNx16BI.
+
+2025-08-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ * config/aarch64/iterators.md (PNEXT_ONLY): New int iterator.
+ * config/aarch64/aarch64-sve.md
+ (@aarch64_sve_<sve_pred_op><mode>): Restrict SVE_PITER pattern
+ to VNx16BI_ONLY.
+ (@aarch64_sve_<sve_pred_op><mode>): New PNEXT_ONLY pattern for
+ PRED_HSD.
+ (*aarch64_sve_<sve_pred_op><mode>): Likewise.
+ (*aarch64_sve_<sve_pred_op><mode>_cc): Likewise.
+
+2025-08-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ * config/aarch64/aarch64-sve2.md (@aarch64_pred_<sve_int_op><mode>):
+ Split SVE2_MATCH pattern into a VNx16QI_ONLY define_ins and a
+ VNx8HI_ONLY define_expand. Use a VNx16BI destination for the latter.
+ (*aarch64_pred_<sve_int_op><mode>): New SVE2_MATCH pattern for
+ VNx8HI_ONLY.
+ (*aarch64_pred_<sve_int_op><mode>_cc): Likewise.
+
+2025-08-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ * config/aarch64/aarch64-sve.md (@aarch64_pred_fac<cmp_op><mode>):
+ Replace with...
+ (@aarch64_pred_fac<cmp_op><mode>_acle): ...this new expander.
+ (*aarch64_pred_fac<cmp_op><mode>_strict_acle): New pattern.
+ * config/aarch64/aarch64-sve-builtins-base.cc
+ (svac_impl::expand): Update accordingly.
+
+2025-08-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ * config/aarch64/aarch64-sve.md (@aarch64_pred_fcm<cmp_op><mode>_acle)
+ (*aarch64_pred_fcm<cmp_op><mode>_acle, @aarch64_pred_fcmuo<mode>_acle)
+ (*aarch64_pred_fcmuo<mode>_acle): New patterns.
+ * config/aarch64/aarch64-sve-builtins-base.cc
+ (svcmp_impl::expand, svcmpuo_impl::expand): Use them.
+
+2025-08-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ * config/aarch64/aarch64-sve.md (@aarch64_pred_cmp<cmp_op><mode>_wide):
+ Split into VNx16QI_ONLY and SVE_FULL_HSI patterns. Use VNx16BI
+ results for both.
+ (*aarch64_pred_cmp<cmp_op><mode>_wide): New pattern.
+ (*aarch64_pred_cmp<cmp_op><mode>_wide_cc): Likewise.
+
+2025-08-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ * config/aarch64/aarch64-sve.md
+ (*aarch64_pred_cmp<cmp_op><mode>_wide_cc): Turn into a
+ define_insn_and_rewrite and rewrite the governing predicate
+ of the comparison so that it is identical to the PTEST's.
+ (*aarch64_pred_cmp<cmp_op><mode>_wide_ptest): Likewise.
+
+2025-08-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ * config/aarch64/aarch64-sve.md (@aarch64_pred_cmp<cmp_op><mode>_wide)
+ (*aarch64_pred_cmp<cmp_op><mode>_wide_cc): Use <VPRED> instead of
+ VNx16BI for the governing predicate.
+ (*aarch64_pred_cmp<cmp_op><mode>_wide_ptest): Likewise.
+
+2025-08-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ * config/aarch64/aarch64-sve.md (@aarch64_pred_cmp<cmp_op><mode>_acle)
+ (*aarch64_pred_cmp<cmp_op><mode>_acle, *cmp<cmp_op><mode>_acle_cc)
+ (*cmp<cmp_op><mode>_acle_and): New patterns that yield VNx16BI
+ results for all element types.
+ * config/aarch64/aarch64-sve-builtins-base.cc
+ (svcmp_impl::expand): Use them.
+ (svcmp_wide_impl::expand): Likewise when implementing an svcmp_wide
+ against an in-range constant.
+
+2025-08-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ * config/aarch64/aarch64-sve.md (@aarch64_sve_punpk<perm_hilo>_acle)
+ (*aarch64_sve_punpk<perm_hilo>_acle): New patterns.
+ * config/aarch64/aarch64-sve-builtins-base.cc
+ (svunpk_impl::expand): Use them for boolean svunpk*.
+
+2025-08-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR target/121294
+ * config/aarch64/aarch64.md (UNSPEC_REV_PRED): New unspec.
+ * config/aarch64/aarch64-sve.md (@aarch64_sve_rev<mode>_acle)
+ (*aarch64_sve_rev<mode>_acle): New patterns.
+ * config/aarch64/aarch64-sve-builtins-base.cc
+ (svrev_impl::expand): Use the new patterns for boolean svrev.
+
+2025-08-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR target/121294
+ * config/aarch64/iterators.md (UNSPEC_TRN1_CONV): Delete.
+ (UNSPEC_PERMUTE_PRED): New unspec.
+ * config/aarch64/aarch64-sve.md (@aarch64_sve_trn1_conv<mode>):
+ Replace with...
+ (@aarch64_sve_<perm_insn><mode>_acle)
+ (*aarch64_sve_<perm_insn><mode>_acle): ...these new patterns.
+ * config/aarch64/aarch64.cc (aarch64_expand_sve_const_pred_trn):
+ Update accordingly.
+ * config/aarch64/aarch64-sve-builtins-functions.h
+ (binary_permute::expand): Use the new _acle patterns for
+ predicate operations.
+
+2025-08-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR testsuite/121118
+ * config/aarch64/iterators.md (VNx16BI_ONLY): New mode iterator.
+ * config/aarch64/predicates.md (aarch64_ptrue_all_operand): New
+ predicate.
+ * config/aarch64/aarch64-sve.md
+ (@aarch64_sve_while_<while_optab_cmp><GPI:mode><VNx16BI_ONLY:mode>_acle)
+ (@aarch64_sve_while_<while_optab_cmp><GPI:mode><PRED_HSD:mode>_acle)
+ (*aarch64_sve_while_<while_optab_cmp><GPI:mode><PRED_HSD:mode>_acle)
+ (*while_<while_optab_cmp><GPI:mode><PRED_HSD:mode>_acle_cc): New
+ patterns.
+ * config/aarch64/aarch64-sve-builtins-functions.h
+ (while_comparison::expand): Use the new _acle patterns that
+ always return a VNx16BI.
+ * config/aarch64/aarch64-sve-builtins-sve2.cc
+ (svwhilerw_svwhilewr_impl::expand): Likewise.
+ * config/aarch64/aarch64.cc
+ (aarch64_sve_move_pred_via_while): Likewise.
+
+2025-08-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR target/121293
+ * config/aarch64/aarch64-sve-builtins-base.cc (svdupq_lane::expand):
+ Use aarch64_sve_reinterpret instead of subregs. Explicitly
+ reinterpret the result back to the required mode, rather than
+ leaving the caller to take a subreg.
+
+2025-08-04 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/121362
+ * tree-ssa-sccvn.cc (vn_reference_lookup_3): Generalize
+ aggregate copy handling.
+
+2025-08-04 Filip Kastl <fkastl@suse.cz>
+
+ * doc/invoke.texi: Add remark about -options being documented
+ under -fdump-tree. Remove remark about -graph working only for
+ RTL.
+
+2025-08-04 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/120941
+ * config/i386/i386-features.cc (x86_cse_kind): Moved before
+ ix86_place_single_vector_set.
+ (redundant_load): Likewise.
+ (ix86_place_single_vector_set): Replace the last argument to the
+ pointer to redundant_load. For X86_CSE_VEC_DUP, don't place the
+ vector set outside of the loop to avoid extra spills.
+ (remove_redundant_vector_load): Pass load to
+ ix86_place_single_vector_set.
+
2025-08-03 Georg-Johann Lay <avr@gjlay.de>
* config/avr/avr.md (define_insn_and_split) [reload_completed]:
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 85faa76..3724f15 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20250804
+20250805
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 85464e3..063d6a7 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,118 @@
+2025-08-04 Viljar Indus <indus@adacore.com>
+
+ * contracts.adb: Use Is_Ignored_In_Codegen instead of just
+ using Is_Ignored.
+ * exp_ch6.adb: Likewise.
+ * exp_prag.adb: Likewise.
+ * exp_util.adb: Likewise.
+ * frontend.adb: Avoid removal of ignored nodes in GNATProve_Mode.
+ * gnat1drv.adb: Avoid forcing Assertions_Enabled in GNATProve_Mode.
+ * lib-writ.adb (Write_With_File_Names): Avoid early exit
+ with ignored entities in GNATProve_Mode.
+ * lib-xref.adb: Likewise.
+ * opt.adb: Remove check for Assertions_Enabled.
+ * sem_attr.adb: Use Is_Ignored_In_Codegen instead of Is_Ignored.
+ * sem_ch13.adb: Likewise. Additionally always add predicates in
+ GNATProve_Mode.
+ * sem_prag.adb: Likewise. Additionally remove modifications
+ to applied policies in GNATProve_Mode.
+ * sem_util.adb (Is_Ignored_In_Codegen): New function that overrides
+ Is_Ignored in GNATProve_Mode and Codepeer_Mode.
+ (Is_Ignored_Ghost_Pragma_In_Codegen): Likewise for
+ Is_Ignored_Ghost_Pragma.
+ (Is_Ignored_Ghost_Entity_In_Codegen): Likewise for
+ Is_Ignored_Ghost_Entity.
+ (Policy_In_List): Remove overriding of policies in GNATProve_Mode.
+ * sem_util.ads: Add specs for new functions.
+ * (Predicates_Enabled): Always generate predicates in
+ GNATProve_Mode.
+
+2025-08-04 Bob Duff <duff@adacore.com>
+
+ * treepr.adb (Print_Node_Ref): Protect against
+ Entity (N) being empty before calling
+ Compile_Time_Known_Value.
+
+2025-08-04 Viljar Indus <indus@adacore.com>
+
+ * sem_prag.adb (Validate_Compile_Time_Warning_Errors):
+ Check if the original compile time pragma was replaced and
+ validate the original node instead.
+
+2025-08-04 Viljar Indus <indus@adacore.com>
+
+ * sem_prag.adb (Validate_Compile_Time_Warning_Or_Error):
+ simplify the implementation.
+
+2025-08-04 Steve Baird <baird@adacore.com>
+
+ * exp_ch6.adb (Apply_Access_Discrims_Accessibility_Check): If the
+ accessibility level being checked is known statically, then
+ statically check it against the level of the function being
+ returned from.
+
+2025-08-04 Viljar Indus <indus@adacore.com>
+
+ * atree.adb: update references to Ghost_Mode.
+ * exp_ch3.adb: use a structure type to store all of the existing
+ ghost mode related state variables.
+ * exp_disp.adb: Likewise.
+ * exp_spark.adb: Likewise.
+ * exp_util.adb: Likewise.
+ * expander.adb: Likewise.
+ * freeze.adb: Likewise and replace references to existing ghost
+ mode variables.
+ * ghost.adb (Install_Ghost_Region): install the changes of
+ the region in to the new Ghost_Config structure.
+ (Restore_Ghost_Region): Use the new Ghost_Config instead.
+ In general replace all references to the existing ghost mode
+ variables with the new structure equivalent.
+ * ghost.ads (Restore_Ghost_Region): update the spec.
+ * opt.ads (Ghost_Config_Type): A new type that has two of the
+ previous ghost code related global variables as memembers -
+ Ghost_Mode and Ignored_Ghost_Region.
+ (Ghost_Config) New variable to store the previous Ghost_Mode and
+ Ignored_Ghost_Region info.
+ * rtsfind.adb: Replace references to existing ghost mode variables.
+ * sem.adb: Likewise.
+ * sem_ch12.adb: Likewise.
+ * sem_ch13.adb: Likewise.
+ * sem_ch3.adb: Likewise.
+ * sem_ch5.adb: Likewise.
+ * sem_ch6.adb: Likewise.
+ * sem_ch7.adb: Likewise.
+ * sem_prag.adb: Likewise.
+ * sem_util.adb: Likewise.
+
+2025-08-04 Steve Baird <baird@adacore.com>
+
+ * freeze.adb (Freeze_Profile): Do not emit a warning stating that
+ a formal parameter's size is 8 if the parameter's size is not 8.
+
+2025-08-04 Viljar Indus <indus@adacore.com>
+
+ * table.adb (Max): Move variable to the body and initialize
+ it with the same value as in the Init function.
+ * table.ads (Max): Likewise.
+
+2025-08-04 Bob Duff <duff@adacore.com>
+
+ * par.adb: Move and rewrite some comments.
+ (Util): Shared code and comments for dealing with
+ defining_identifier_lists.
+ * par-util.adb (Append): Shared code for appending
+ one identifier onto Defining_Identifiers.
+ (P_Def_Ids): Shared code for parsing a defining_identifier_list.
+ Unfortunately, this is not used in all cases, because some of
+ them mix in sophisticated error recovery, which we do not
+ modify here.
+ * par-ch12.adb (P_Formal_Object_Declarations):
+ Use Defining_Identifiers and related code.
+ * par-ch3.adb (P_Identifier_Declarations): Likewise.
+ (P_Known_Discriminant_Part_Opt): Likewise.
+ (P_Component_Items): Likewise.
+ * par-ch6.adb (P_Formal_Part): Likewise.
+
2025-07-31 Eric Botcazou <ebotcazou@gcc.gnu.org>
Revert:
diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc
index 0a9fcef..e0d8904 100644
--- a/gcc/config/riscv/riscv.cc
+++ b/gcc/config/riscv/riscv.cc
@@ -13867,9 +13867,9 @@ riscv_expand_xmode_usmul (rtx dest, rtx x, rtx y)
riscv_emit_binary (MULT, mul, x, y);
if (TARGET_64BIT)
- emit_insn (gen_usmuldi3_highpart (mulhu, x, y));
+ emit_insn (gen_umuldi3_highpart (mulhu, x, y));
else
- emit_insn (gen_usmulsi3_highpart (mulhu, x, y));
+ emit_insn (gen_umulsi3_highpart (mulhu, x, y));
riscv_emit_binary (NE, overflow_p, mulhu, CONST0_RTX (Xmode));
riscv_emit_unary (NEG, overflow_p, overflow_p);
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 3f76afd..3ab14f0 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,17 @@
+2025-08-04 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/121351
+ PR c++/119859
+ * class.cc (add_method): Substitute outer template arguments
+ into constraints before comparing them if the declarations are
+ from different classes.
+
+2025-08-04 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/120620
+ * constexpr.cc (cxx_dynamic_cast_fn_p): Return true only
+ for synthesized __dynamic_cast.
+
2025-08-01 Nathaniel Shead <nathanieloshead@gmail.com>
PR c++/108080
diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
index f3f1445..64c1217 100644
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -1887,8 +1887,8 @@ Produce code conforming to version 20191213.
In the absence of this configuration option the default version is 20191213.
@item --enable-__cxa_atexit
-Define if you want to use @code{__cxa_atexit}, rather than atexit, to
-register C++ destructors for local statics and global objects.
+Define if you want to use @code{__cxa_atexit}, rather than @code{atexit},
+to register C++ destructors for local statics and global objects.
This is essential for fully standards-compliant handling of
destructors, but requires @code{__cxa_atexit} in libc. This option is
currently only available on systems with GNU libc. When enabled, this
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index b43cbb7..f9f3de6 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,193 @@
+2025-08-04 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/121351
+ * g++.dg/cpp2a/concepts-using6.C: New test.
+
+2025-08-04 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/121351
+ PR c++/119859
+ * g++.dg/cpp2a/concepts-using5.C: New test.
+ * g++.dg/cpp2a/concepts-using5a.C: New test.
+
+2025-08-04 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/120620
+ * g++.dg/cpp2a/constexpr-dynamic19.C: New test.
+ * g++.dg/cpp2a/constexpr-dynamic1a.C: New test.
+
+2025-08-04 David Malcolm <dmalcolm@redhat.com>
+
+ PR diagnostics/116253
+ * gcc.dg/plugin/diagnostic-test-nesting-html.c: New test.
+ * gcc.dg/plugin/diagnostic-test-nesting-html.py: New test script.
+ * gcc.dg/plugin/plugin.exp: Add it.
+ * libgdiagnostics.dg/test-multiple-lines.c: Update expected output
+ to show fix-it hint.
+ * sarif-replay.dg/2.1.0-valid/nested-diagnostics-1.sarif: New test.
+
+2025-08-04 David Malcolm <dmalcolm@redhat.com>
+
+ PR diagnostics/116792
+ * gcc.dg/plugin/diagnostic-test-graphs-html.py: Remove trailing
+ space from expected text of message.
+ * sarif-replay.dg/2.1.0-valid/embedded-links-check-html.py:
+ Likewise.
+ * sarif-replay.dg/2.1.0-valid/graphs-check-html.py: Likewise.
+
+2025-08-04 Konstantinos Eleftheriou <konstantinos.eleftheriou@vrull.eu>
+
+ PR rtl-optimization/121303
+ * gcc.target/i386/pr121303.c: New test.
+
+2025-08-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR preprocessor/120778
+ * g++.dg/DRs/dr2580.C: New test.
+
+2025-08-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR preprocessor/120778
+ * g++.dg/DRs/dr2578.C: New test.
+
+2025-08-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/acle/general/dupq_13.c: New test.
+
+2025-08-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/acle/general/dup_1.c: New test.
+
+2025-08-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/acle/general/pnext_3.c: New test.
+
+2025-08-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve2/acle/general/match_4.c: New test.
+ * gcc.target/aarch64/sve2/acle/general/nmatch_1.c: Likewise.
+
+2025-08-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/acle/general/acge_1.c: New test.
+ * gcc.target/aarch64/sve/acle/general/acgt_1.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/acle_1.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/aclt_1.c: Likewise.
+
+2025-08-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/acle/general/cmpeq_6.c: New test.
+ * gcc.target/aarch64/sve/acle/general/cmpge_9.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmpgt_9.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmple_9.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmplt_9.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmpne_5.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmpuo_1.c: Likewise.
+
+2025-08-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/acle/general/cmpeq_5.c: New test.
+ * gcc.target/aarch64/sve/acle/general/cmpge_7.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmpge_8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmpgt_7.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmpgt_8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmple_7.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmple_8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmplt_7.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmplt_8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmpne_4.c: Likewise.
+
+2025-08-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/acle/general/cmpeq_1.c: Check the number
+ of PTRUEs.
+ * gcc.target/aarch64/sve/acle/general/cmpge_5.c: New test.
+ * gcc.target/aarch64/sve/acle/general/cmpge_6.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmpgt_5.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmpgt_6.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmple_5.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmple_6.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmplt_5.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmplt_6.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmpne_3.c: Likewise.
+
+2025-08-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/acle/general/cmpeq_1.c: Add more tests.
+
+2025-08-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/pred_clobber_1.c: Disable combine.
+ * gcc.target/aarch64/sve/pred_clobber_2.c: Likewise.
+ * gcc.target/aarch64/sve/pred_clobber_3.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmpeq_2.c: Add more cases.
+ * gcc.target/aarch64/sve/acle/general/cmpeq_4.c: New test.
+ * gcc.target/aarch64/sve/acle/general/cmpge_1.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmpge_2.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmpge_3.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmpge_4.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmpgt_1.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmpgt_2.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmpgt_3.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmpgt_4.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmple_1.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmple_2.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmple_3.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmple_4.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmplt_1.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmplt_2.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmplt_3.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmplt_4.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmpne_1.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/cmpne_2.c: Likewise.
+
+2025-08-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/acle/general/unpkhi_1.c: New test.
+ * gcc.target/aarch64/sve/acle/general/unpklo_1.c: Likewise.
+
+2025-08-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR target/121294
+ * gcc.target/aarch64/sve/acle/general/rev_2.c: New test.
+
+2025-08-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR target/121294
+ * gcc.target/aarch64/sve/acle/general/perm_2.c: New test.
+ * gcc.target/aarch64/sve/acle/general/perm_3.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/perm_4.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/perm_5.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/perm_6.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/perm_7.c: Likewise.
+
+2025-08-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR testsuite/121118
+ * gcc.target/aarch64/sve/acle/general/pr121118_1.c: New test.
+ * gcc.target/aarch64/sve/acle/general/whilele_13.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/whilelt_6.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/general/whilege_1.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/general/whilegt_1.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/general/whilerw_5.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/general/whilewr_5.c: Likewise.
+
+2025-08-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR target/121293
+ * gcc.target/aarch64/sve/acle/general/dupq_lane_9.c: New test.
+
+2025-08-04 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/121362
+ * gcc.dg/tree-ssa/ssa-fre-105.c: New testcase.
+ * gcc.dg/tree-ssa/ssa-fre-106.c: Likewise.
+
+2025-08-04 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/120941
+ * gcc.target/i386/pr120941-1.c: New test.
+
2025-08-03 Jakub Jelinek <jakub@redhat.com>
PR preprocessor/120778
diff --git a/gcc/testsuite/c-c++-common/cpp/va-opt-6.c b/gcc/testsuite/c-c++-common/cpp/va-opt-6.c
index 8a7761b..9a92431 100644
--- a/gcc/testsuite/c-c++-common/cpp/va-opt-6.c
+++ b/gcc/testsuite/c-c++-common/cpp/va-opt-6.c
@@ -3,15 +3,15 @@
/* { dg-options "-std=c++20" { target c++ } } */
#define a ""
-#define b(...) a ## #__VA_OPT__(1) /* { dg-error "pasting \"a\" and \"\"\"\" does not give a valid preprocessing token" } */
-#define c(...) a ## #__VA_OPT__(1) /* { dg-error "pasting \"a\" and \"\"1\"\" does not give a valid preprocessing token" } */
+#define b(...) a ## #__VA_OPT__(1) /* { dg-error "pasting 'a' and '\"\"' does not give a valid preprocessing token" } */
+#define c(...) a ## #__VA_OPT__(1) /* { dg-error "pasting 'a' and '\"1\"' does not give a valid preprocessing token" } */
#define d(...) #__VA_OPT__(1) ## !
#define e(...) #__VA_OPT__(1) ## !
#define f(...) #__VA_OPT__(. ## !)
#define g(...) #__VA_OPT__(. ## !)
b()
c(1)
-d( ) /* { dg-error "pasting \"\"\"\" and \"!\" does not give a valid preprocessing token" } */
-e( 1 ) /* { dg-error "pasting \"\"1\"\" and \"!\" does not give a valid preprocessing token" } */
+d( ) /* { dg-error "pasting '\"\"' and '!' does not give a valid preprocessing token" } */
+e( 1 ) /* { dg-error "pasting '\"1\"' and '!' does not give a valid preprocessing token" } */
f()
-g(0) /* { dg-error "pasting \".\" and \"!\" does not give a valid preprocessing token" } */
+g(0) /* { dg-error "pasting '.' and '!' does not give a valid preprocessing token" } */
diff --git a/gcc/testsuite/g++.dg/DRs/dr2579.C b/gcc/testsuite/g++.dg/DRs/dr2579.C
new file mode 100644
index 0000000..dda3643
--- /dev/null
+++ b/gcc/testsuite/g++.dg/DRs/dr2579.C
@@ -0,0 +1,9 @@
+// DR 2579 - Undefined behavior when token pasting does not create a preprocessing token
+// { dg-do preprocess }
+// { dg-options "-pedantic-errors" }
+
+#define A(a, b) a ## b
+A(5,6)
+A(-,32) // { dg-error "pasting '-' and '32' does not give a valid preprocessing token" }
+A("","") // { dg-error "pasting '\"\"' and '\"\"' does not give a valid preprocessing token" }
+A(\,u0393)
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-using6.C b/gcc/testsuite/g++.dg/cpp2a/concepts-using6.C
new file mode 100644
index 0000000..a40519a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-using6.C
@@ -0,0 +1,20 @@
+// PR c++/121351
+// { dg-do compile { target c++20 } }
+
+template<class T> concept C = true;
+
+template<class T>
+struct A {
+ template<class U> void f(U) requires C<T>; // #1
+};
+
+template<class T>
+struct B : A<T*> {
+ using A<T*>::f;
+ template<class U> void f(U) requires C<T>; // #2
+};
+
+int main() {
+ B<int> b;
+ b.f(42); // { dg-error "ambiguous" } #1 and #2 don't correspond
+}
diff --git a/gcc/testsuite/gcc.dg/c23-attr-syntax-6.c b/gcc/testsuite/gcc.dg/c23-attr-syntax-6.c
index f8c5b0f..4e6b80b 100644
--- a/gcc/testsuite/gcc.dg/c23-attr-syntax-6.c
+++ b/gcc/testsuite/gcc.dg/c23-attr-syntax-6.c
@@ -45,7 +45,7 @@ typedef int [[__extension__ __extension__]] b2; /* { dg-error {'extension' attri
typedef int [[__extension__ unknown_attribute]] b3; /* { dg-error {'unknown_attribute' attribute ignored} } */
typedef int [[__extension__ gnu:vector_size(4)]] b4; /* { dg-error {expected '\]' before ':'} } */
/* { dg-error {'gnu' attribute ignored} "" { target *-*-* } .-1 } */
-typedef int [[__extension__ gnu JOIN2(:,:) vector_size (4)]] b5; /* { dg-error {pasting ":" and ":" does not give a valid preprocessing token} } */
+typedef int [[__extension__ gnu JOIN2(:,:) vector_size (4)]] b5; /* { dg-error {pasting ':' and ':' does not give a valid preprocessing token} } */
/* { dg-error {expected '\]' before ':'} "" { target *-*-* } .-1 } */
/* { dg-error {'gnu' attribute ignored} "" { target *-*-* } .-2 } */
typedef int [[__extension__ gnu : : vector_size (4)]] b6; /* { dg-error {expected '\]' before ':'} } */
@@ -81,7 +81,7 @@ typedef int [[gnu :: vector_size (4)]] b18; /* { dg-error {attributes before C23
typedef int [[gnu FOO vector_size (4)]] b19; /* { dg-error {attributes before C23} } */
typedef int [[gnu :: vector_size (sizeof (void (*)(...)))]] b20; /* { dg-error {attributes before C23} } */
/* { dg-error {requires a named argument before} "" { target *-*-* } .-1 } */
-typedef int [[gnu JOIN2(:,:) vector_size (4)]] b21; /* { dg-error {pasting ":" and ":" does not give a valid preprocessing token} } */
+typedef int [[gnu JOIN2(:,:) vector_size (4)]] b21; /* { dg-error {pasting ':' and ':' does not give a valid preprocessing token} } */
/* { dg-error {expected '\]' before ':'} "" { target *-*-* } .-1 } */
/* { dg-error {'gnu' attribute ignored} "" { target *-*-* } .-2 } */
/* { dg-error {attributes before C23} "" { target *-*-* } .-3 } */
diff --git a/gcc/testsuite/gcc.dg/cpp/paste12-2.c b/gcc/testsuite/gcc.dg/cpp/paste12-2.c
index 6e2e4f1..f46645a 100644
--- a/gcc/testsuite/gcc.dg/cpp/paste12-2.c
+++ b/gcc/testsuite/gcc.dg/cpp/paste12-2.c
@@ -6,6 +6,6 @@
/* Test correct diagnostics when pasting in #include.
Source: PR preprocessor/6780. */
-#define inc2(a,b) <##a.b> /* { dg-error "pasting \"<\" and \"stdio\" does not" } */
+#define inc2(a,b) <##a.b> /* { dg-error "pasting '<' and 'stdio' does not" } */
#define INC(X) inc2(X,h)
#include INC(stdio)
diff --git a/gcc/testsuite/gcc.dg/cpp/paste12.c b/gcc/testsuite/gcc.dg/cpp/paste12.c
index 3e0f7b9..f6b3696 100644
--- a/gcc/testsuite/gcc.dg/cpp/paste12.c
+++ b/gcc/testsuite/gcc.dg/cpp/paste12.c
@@ -8,4 +8,4 @@
#define inc2(a,b) <##a.b>
#define INC(X) inc2(X,h)
-#include INC(stdio) /* { dg-error "pasting \"<\" and \"stdio\" does not" } */
+#include INC(stdio) /* { dg-error "pasting '<' and 'stdio' does not" } */
diff --git a/gcc/testsuite/gcc.dg/cpp/paste14-2.c b/gcc/testsuite/gcc.dg/cpp/paste14-2.c
index 3b23ada..bb51999 100644
--- a/gcc/testsuite/gcc.dg/cpp/paste14-2.c
+++ b/gcc/testsuite/gcc.dg/cpp/paste14-2.c
@@ -4,8 +4,8 @@
{ dg-do preprocess }
*/
-#define foo - ## >> /* { dg-error "pasting \"-\" and \">>\"" } */
+#define foo - ## >> /* { dg-error "pasting '-' and '>>'" } */
foo
-#define bar = ## == /* { dg-error "pasting \"=\" and \"==\"" } */
+#define bar = ## == /* { dg-error "pasting '=' and '=='" } */
bar
diff --git a/gcc/testsuite/gcc.dg/cpp/paste14.c b/gcc/testsuite/gcc.dg/cpp/paste14.c
index 043d5e5..d60b328 100644
--- a/gcc/testsuite/gcc.dg/cpp/paste14.c
+++ b/gcc/testsuite/gcc.dg/cpp/paste14.c
@@ -5,6 +5,6 @@
*/
#define foo - ## >>
-foo /* { dg-error "pasting \"-\" and \">>\"" } */
+foo /* { dg-error "pasting '-' and '>>'" } */
#define bar = ## ==
-bar /* { dg-error "pasting \"=\" and \"==\"" } */
+bar /* { dg-error "pasting '=' and '=='" } */
diff --git a/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-1-u32-from-u64.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-1-u32-from-u64.c
index 8d5449b..fa3758a 100644
--- a/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-1-u32-from-u64.c
+++ b/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-1-u32-from-u64.c
@@ -9,3 +9,5 @@
DEF_SAT_U_MUL_FMT_1_WRAP(NT, WT)
/* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
+/* { dg-final { scan-assembler-not "\.L\[0-9\]+" } } */
+/* { dg-final { scan-assembler-times "mulhu" 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-1-u64-from-u128.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-1-u64-from-u128.c
index d8a01d1..b1bf4fa 100644
--- a/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-1-u64-from-u128.c
+++ b/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-1-u64-from-u128.c
@@ -10,3 +10,4 @@ DEF_SAT_U_MUL_FMT_1_WRAP(NT, WT)
/* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
/* { dg-final { scan-assembler-not "\.L\[0-9\]+" } } */
+/* { dg-final { scan-assembler-times "mulhu" 1 } } */