diff options
Diffstat (limited to 'gcc/ChangeLog')
-rw-r--r-- | gcc/ChangeLog | 10281 |
1 files changed, 10281 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 33d10ef..fec8c7a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10284 @@ +2025-08-02 Gerald Pfeifer <gerald@pfeifer.com> + + PR target/69374 + * doc/install.texi (Specific) <windows>: Drop note on 16-bit + Windows support. Streamline note on 32-bit support. + +2025-08-01 Richard Biener <rguenther@suse.de> + + PR tree-optimization/121350 + * tree-vect-stmts.cc (vectorizable_store): Pass down SLP + node when costing scalar stores in vect_body. + +2025-08-01 Richard Biener <rguenther@suse.de> + + PR tree-optimization/121349 + * tree-vect-stmts.cc (check_load_store_for_partial_vectors): + Get full SLP mask, reduce to uniform scalar_mask for further + processing if possible. + (vect_check_scalar_mask): Remove scalar mask output, remove + code conditional on slp_mask. + (vectorizable_call): Adjust. + (check_scan_store): Get and check SLP mask. + (vectorizable_store): Eliminate scalar mask variable. + (vectorizable_load): Likewise. + +2025-08-01 Gerald Pfeifer <gerald@pfeifer.com> + + * doc/install.texi (Prerequisites): mdocml.bsd.lv is now + mandoc.bsd.lv. + +2025-08-01 Richard Biener <rguenther@suse.de> + + * tree-vect-stmts.cc (get_group_load_store_type): Remove, + inline into ... + (get_load_store_type): ... this. Remove ncopies parameter. + (vectorizable_load): Adjust. + (vectorizable_store): Likewise. + +2025-08-01 Richard Biener <rguenther@suse.de> + + * tree-vect-stmts.cc (get_group_load_store_type): Remove + checks performed at SLP build time. + (vect_check_store_rhs): Remove scalar RHS output. + (vectorizable_store): Remove uses of scalar RHS. + +2025-08-01 Richard Biener <rguenther@suse.de> + + * tree-vectorizer.h (VMAT_UNINITIALIZED): New + vect_memory_access_type. + * tree-vect-slp.cc (_slp_tree::_slp_tree): Use it. + +2025-08-01 Richard Biener <rguenther@suse.de> + + PR tree-optimization/121338 + * tree-ssa-loop-ivopts.cc (avg_loop_niter): Return an + unsigned. + (adjust_setup_cost): When niters is so large the division + result is one or zero avoid it. + (create_new_ivs): Adjust. + +2025-08-01 Richard Biener <rguenther@suse.de> + + * tree-vectorizer.h (vect_simd_clone_data): New. + (_slp_tree::simd_clone_info): Remove. + (SLP_TREE_SIMD_CLONE_INFO): Likewise. + * tree-vect-slp.cc (_slp_tree::_slp_tree): Adjust. + (_slp_tree::~_slp_tree): Likewise. + * tree-vect-stmts.cc (vectorizable_simd_clone_call): Use + tyupe specific data to store SLP_TREE_SIMD_CLONE_INFO. + +2025-08-01 Richard Biener <rguenther@suse.de> + + * tree-vect-slp.cc (_slp_tree::_slp_tree): Adjust. + (_slp_tree::~_slp_tree): Likewise. + * tree-vectorizer.h (vect_data): New base class. + (_slp_tree::u): Remove. + (_slp_tree::data): Add pointer to vect_data. + (_slp_tree::get_data): New helper template. + +2025-08-01 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/121322 + * gimple-ssa-store-merging.cc (find_bswap_or_nop): Return NULL if + count is 0. + +2025-07-31 Georg-Johann Lay <avr@gjlay.de> + + * config/avr/avr.opt.urls (-mfuse-move2): Add url. + +2025-07-31 Georg-Johann Lay <avr@gjlay.de> + + * config/avr/avr.cc (avr_output_addr_vec) <labl>: Asm out its .type. + +2025-07-31 Georg-Johann Lay <avr@gjlay.de> + + PR rtl-optimization/121340 + * config/avr/avr.opt (-mfuse-move2): New option. + * config/avr/avr-passes.def (avr_pass_2moves): Insert after combine. + * config/avr/avr-passes.cc (make_avr_pass_2moves): New function. + (pass_data avr_pass_data_2moves): New static variable. + (avr_pass_2moves): New rtl_opt_pass. + * config/avr/avr-protos.h (make_avr_pass_2moves): New proto. + * common/config/avr/avr-common.cc + (default_options avr_option_optimization_table) <-mfuse-move2>: + Set for -O1 and higher. + * doc/invoke.texi (AVR Options) <-mfuse-move2>: Document. + +2025-07-31 Tamar Christina <tamar.christina@arm.com> + + PR tree-optimization/120805 + * tree-vect-loop-manip.cc (vect_gen_vector_loop_niters): Skip setting + bounds on epilogues. + +2025-07-31 Wilco Dijkstra <wilco.dijkstra@arm.com> + + * common/config/aarch64/cpuinfo.h: Remove unused features, add FEAT_CSSC + and FEAT_MOPS. + * config/aarch64/aarch64-option-extensions.def: Remove FMV support + for RPRES, use PULL rather than AES, add FMV support for CSSC and MOPS. + +2025-07-31 Wilco Dijkstra <wilco.dijkstra@arm.com> + + * config/aarch64/tuning_models/generic_armv9_a.h + (generic_armv9_a_addrcost_table): Use zero cost for himode. + +2025-07-31 Richard Biener <rguenther@suse.de> + + * tree-vect-stmts.cc (get_group_load_store_type): Properly + compare the scalar type of the gather/scatter offset to + the offset vector component type. + +2025-07-31 Richard Biener <rguenther@suse.de> + + * gimple-fold.h (fold_stmt_inplace): Add valueization hook + argument, defaulted to no_follow_ssa_edges. + * gimple-fold.cc (fold_stmt_inplace): Adjust. + +2025-07-31 Artemiy Granat <a.granat@ispras.ru> + + * config/i386/i386-options.cc (ix86_handle_cconv_attribute): + Fix typo. + +2025-07-31 Artemiy Granat <a.granat@ispras.ru> + + * config/i386/i386-options.cc (ix86_handle_cconv_attribute): + Handle simultaneous use of regparm and thiscall attributes in + case when regparm is set before thiscall. + +2025-07-31 Artemiy Granat <a.granat@ispras.ru> + + * config/i386/i386-options.cc (ix86_handle_cconv_attribute): + Fix comments which state that combination of stdcall and fastcall + attributes is valid but redundant. + +2025-07-31 Artemiy Granat <a.granat@ispras.ru> + + * config/i386/i386-options.cc (ix86_handle_cconv_attribute): + Move 64-bit mode check before regparm handling. + +2025-07-31 Richard Biener <rguenther@suse.de> + + PR tree-optimization/121320 + * tree-ssa-sccvn.cc (ao_ref_init_from_vn_reference): Convert + op->off to poly_offset_int before multiplying by + BITS_PER_UNIT. + +2025-07-31 Richard Biener <rguenther@suse.de> + + PR tree-optimization/121323 + * tree-ssa-alias.cc (ao_ref_init_from_ptr_and_range): Check + the pointer offset fits in a HWI when represented in bits. + +2025-07-31 Yury Khrustalev <yury.khrustalev@arm.com> + + * config/aarch64/aarch64.cc (build_ifunc_arg_type): + Add new fields _hwcap3 and _hwcap4. + +2025-07-31 Kishan Parmar <kishan@linux.ibm.com> + + PR target/118890 + * config/rs6000/rs6000.cc (can_be_rotated_to_negative_lis): Avoid left + shift of negative value and guard shift count. + (can_be_built_by_li_and_rldic): Likewise. + (rs6000_emit_set_long_const): Likewise. + * config/rs6000/rs6000.md (splitter for plus into two 16-bit parts): Fix + UB from overflow in addition. + +2025-07-31 Richard Biener <rguenther@suse.de> + + * config/aarch64/aarch64.cc (aarch64_detect_vector_stmt_subtype): + Check for node before dereferencing. + (aarch64_vector_costs::add_stmt_cost): Likewise. + +2025-07-31 Spencer Abson <spencer.abson@arm.com> + + PR target/121028 + * config/aarch64/aarch64-sme.md (aarch64_smstart_sm): Use the .inst + directive if !TARGET_SME. + (aarch64_smstop_sm): Likewise. + +2025-07-31 Richard Biener <rguenther@suse.de> + + * tree-vectorizer.h (_stmt_vec_info::memory_access_type): Remove. + (STMT_VINFO_MEMORY_ACCESS_TYPE): Likewise. + (vect_mem_access_type): Likewise. + * tree-vect-stmts.cc (vectorizable_store): Do not set + STMT_VINFO_MEMORY_ACCESS_TYPE. Fix SLP_TREE_MEMORY_ACCESS_TYPE + usage. + * tree-vect-loop.cc (update_epilogue_loop_vinfo): Remove + checking of memory access type. + * config/riscv/riscv-vector-costs.cc (costs::compute_local_live_ranges): + Use SLP_TREE_MEMORY_ACCESS_TYPE. + (costs::need_additional_vector_vars_p): Likewise. + (segment_loadstore_group_size): Get SLP node as argument, + use SLP_TREE_MEMORY_ACCESS_TYPE. + (costs::adjust_stmt_cost): Pass down SLP node. + * config/aarch64/aarch64.cc (aarch64_ld234_st234_vectors): Use + SLP_TREE_MEMORY_ACCESS_TYPE instead of vect_mem_access_type. + (aarch64_detect_vector_stmt_subtype): Likewise. + (aarch64_vector_costs::count_ops): Likewise. + (aarch64_vector_costs::add_stmt_cost): Likewise. + +2025-07-31 Richard Biener <rguenther@suse.de> + + * tree-vect-loop.cc (vect_transform_loop): Do not verify DRs + have not been modified for epilogue loops. + (update_epilogue_loop_vinfo): Do not copy modified DRs to + the originals. + +2025-07-31 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/121264 + * machmode.h (get_best_mode): Change type of first 2 arguments + from int to HOST_WIDE_INT. + * stor-layout.cc (get_best_mode): Likewise. + +2025-07-31 Jakub Jelinek <jakub@redhat.com> + + * gimple-ssa-store-merging.cc (find_bswap_or_nop): Fix comment typos, + hanlde -> handle. + * config/i386/i386.cc (ix86_gimple_fold_builtin, ix86_rtx_costs): + Likewise. + * config/i386/i386-features.cc (remove_partial_avx_dependency): + Likewise. + +2025-07-31 Richard Biener <rguenther@suse.de> + + * tree-vect-stmts.cc (check_scan_store): Remove redundant + slp_node check. Disallow epilogue vectorization. + +2025-07-31 Richard Biener <rguenther@suse.de> + + * tree-vectorizer.h (vector_costs::costing_for_scalar): New + accessor. + (add_stmt_cost): For scalar costing force vectype to NULL. + Verify we do not pass in a SLP node. + +2025-07-31 Kito Cheng <kito.cheng@sifive.com> + + PR target/121312 + * config/riscv/arch-canonicalize: Add H extension to the + canonical order. + +2025-07-30 Andrew Pinski <quic_apinski@quicinc.com> + + PR rtl-optimization/121308 + * simplify-rtx.cc (simplify_context::simplify_subreg): Handle + subreg of `not` with word_mode to make it symmetric with the + other bitwise operators. + +2025-07-30 Andrew Pinski <quic_apinski@quicinc.com> + + PR tree-optimization/121236 + PR tree-optimization/121295 + * tree-if-conv.cc (factor_out_operators): Change the phi node + to the new result and args. + +2025-07-30 Andrew Pinski <quic_apinski@quicinc.com> + + Revert: + 2025-07-28 Andrew Pinski <quic_apinski@quicinc.com> + + PR tree-optimization/121236 + * tree-if-conv.cc (is_cond_scalar_reduction): Instead of phi argument, + pass bb and res of the phi. + (factor_out_operators): Add iterator for the phi. Remove the phi + if this is the first time. Return if we had removed the phi. + (predicate_scalar_phi): Add the phi iterator argument. + Update call to is_cond_scalar_reduction. + Update call to factor_out_operators and set the return value to true + when factor_out_operators returns true. + (predicate_all_scalar_phis): Don't remove the phi if predicate_scalar_phi + already removed it. + +2025-07-30 Jan Hubicka <jh@suse.cz> + + * auto-profile.cc (string_table::read): Check gcov_is_error. + (read_profile): Likewise. + * gcov-io.cc (gcov_is_error): Export for gcc linkage. + * gcov-io.h (gcov_is_error): Declare. + +2025-07-30 Richard Biener <rguenther@suse.de> + + * config/i386/i386.cc (ix86_default_vector_cost): Split + out from ... + (ix86_builtin_vectorization_cost): ... this and use + mode instead of vectype as argument. + (ix86_vector_costs::add_stmt_cost): Call + ix86_default_vector_cost instead of ix86_builtin_vectorization_cost. + +2025-07-30 Stefan Schulze Frielinghaus <stefansf@gcc.gnu.org> + + PR target/117015 + * config/s390/s390-protos.h (s390_expand_int_spaceship): New + function. + (s390_expand_fp_spaceship): New function. + * config/s390/s390.cc (s390_expand_int_spaceship): New function. + (s390_expand_fp_spaceship): New function. + * config/s390/s390.md (spaceship<mode>4): New expander. + +2025-07-30 Stefan Schulze Frielinghaus <stefansf@gcc.gnu.org> + + * cprop.cc (bypass_block): Extract single set. + (bypass_conditional_jumps): Ditto. + +2025-07-30 H.J. Lu <hjl.tools@gmail.com> + + PR target/120427 + * config/i386/i386.md (peephole2): Transform "movq $-1,reg" to + "pushq $-1; popq reg" for -Oz if reg is a legacy integer register. + +2025-07-30 Jan Hubicka <jh@suse.cz> + + * auto-profile.cc (function_instance::match): Disable warning + about bogus locations since dwarf does not represent enough + info to output them correctly in all cases. + (add_scale): Use nonzero_p instead of orig.force_nonzero () == orig. + (afdo_adjust_guessed_profile): Add missing newline in dump + file. + +2025-07-30 Jan Hubicka <jh@suse.cz> + + * symtab.cc (symbol_table::change_decl_assembler_name): Recompute DECL_RTL + in case it is already computed. + +2025-07-30 Jan Hubicka <jh@suse.cz> + + * predict.cc (unlikely_executed_edge_p): Ignore EDGE_EH if profile + is reliable. + (unlikely_executed_stmt_p): special case builtin_trap/unreachable and + ignore other heuristics for reliable profiles. + (tree_estimate_probability): Disable unlikely bb detection when + doing dry run + +2025-07-30 Andrew Stubbs <ams@baylibre.com> + Julian Brown <julian@codesourcery.com> + + * doc/tm.texi.in (TARGET_VECTORIZE_PREFER_GATHER_SCATTER): Add + documentation hook. + * doc/tm.texi: Regenerate. + * target.def (prefer_gather_scatter): Add target hook under vectorizer. + * hooks.cc (hook_bool_mode_int_unsigned_false): New function. + * hooks.h (hook_bool_mode_int_unsigned_false): New prototype. + * tree-vect-stmts.cc (vect_use_strided_gather_scatters_p): Add + parameters group_size and single_element_p, and rework to use + targetm.vectorize.prefer_gather_scatter. + (get_group_load_store_type): Move some of the condition into + vect_use_strided_gather_scatters_p. + * config/gcn/gcn.cc (gcn_prefer_gather_scatter): New function. + (TARGET_VECTORIZE_PREFER_GATHER_SCATTER): Define hook. + +2025-07-30 Andrew Stubbs <ams@baylibre.com> + + * config/gcn/gcn.cc (gcn_option_override): Add note to set default for + param_vect_partial_vector_usage to "1". + * optc-save-gen.awk: Don't pass through options marked "NoOffload". + * params.opt (-param=vect-epilogues-nomask): Add NoOffload. + (-param=vect-partial-vector-usage): Likewise. + (-param=vect-inner-loop-cost-factor): Likewise. + +2025-07-30 Richard Biener <rguenther@suse.de> + + PR tree-optimization/121130 + * tree-vect-stmts.cc (vectorizable_call): Bail out for + .MASK_CALL. + +2025-07-30 Pengfei Li <Pengfei.Li2@arm.com> + + PR tree-optimization/121020 + * tree-vect-loop-manip.cc (vect_do_peeling): Update the + condition of omitting the skip-vector check. + * tree-vectorizer.h (LOOP_VINFO_USE_VERSIONING_WITHOUT_PEELING): + Add a helper macro. + +2025-07-30 Pengfei Li <Pengfei.Li2@arm.com> + + PR tree-optimization/121190 + * tree-vect-data-refs.cc (vect_enhance_data_refs_alignment): + Increase alignment requirement for speculative loads. + +2025-07-30 Alfie Richards <alfie.richards@arm.com> + + PR target/121300 + * config/aarch64/aarch64-sve-builtins-sme.def (svamin/svamax): Fix + arch gating. + +2025-07-30 Richard Biener <rguenther@suse.de> + + * tree-vect-stmts.cc (get_group_load_store_type): + Process STMT_VINFO_GATHER_SCATTER before reading + memory_access_type. + +2025-07-30 Spencer Abson <spencer.abson@arm.com> + + * config/aarch64/aarch64-sve.md (@cond_<optab><mode>): Extend + to support partial FP modes. + (*cond_<optab><mode>_2_strict): Extend from SVE_FULL_F to SVE_F, + use aarch64_predicate_operand. + (*cond_<optab><mode>_4_strict): Extend from SVE_FULL_F_B16B16 to + SVE_F_B16B16, use aarch64_predicate_operand. + (*cond_<optab><mode>_any_strict): Likewise. + +2025-07-30 Spencer Abson <spencer.abson@arm.com> + + * config/aarch64/aarch64-sve.md (*cond_<optab><mode>_2_relaxed): + Extend from SVE_FULL_F to SVE_F. + (*cond_<optab><mode>_4_relaxed): Extend from SVE_FULL_F_B16B16 + to SVE_F_B16B16. + (*cond_<optab><mode>_any_relaxed): Likewise. + +2025-07-30 Spencer Abson <spencer.abson@arm.com> + + * config/aarch64/aarch64-sve.md (<optab><mode>4): Extend from + SVE_FULL_F_B16B16 to SVE_F_B16B16. Use aarch64_sve_fp_pred instead + of aarch64_ptrue_reg. + (@aarch64_pred_<optab><mode>): Extend from SVE_FULL_F_B16B16 to + SVE_F_B16B16. Use aarch64_predicate_operand. + +2025-07-30 liuhongt <hongtao.liu@intel.com> + + * config/i386/i386-modes.def: Remove VECTOR_MODES(FLOAT, 256) + and VECTOR_MODE (INT, SI, 64). + * config/i386/i386.cc (ix86_hard_regno_nregs): Remove related + code for V64SF/V64SImode. + +2025-07-30 liuhongt <hongtao.liu@intel.com> + + PR target/121274 + * config/i386/sse.md (*vec_concatv2di_0): Add a splitter + before it. + +2025-07-30 Andrew Pinski <quic_apinski@quicinc.com> + + PR rtl-optimization/121302 + * simplify-rtx.cc (simplify_context::simplify_subreg): Use + byte instead of 0 when calling simplify_subreg. + +2025-07-29 Spencer Abson <spencer.abson@arm.com> + + * config/aarch64/aarch64-protos.h (aarch64_sve_emit_masked_fp_pred): + Declare. + * config/aarch64/aarch64-sve.md (and<mode>3): Change this to... + (@and<mode>3): ...this, so that we can use gen_and3. + (@cond_<optab><mode>): Extend from SVE_FULL_F_B16B16 to SVE_F_B16B16, + use aarch64_predicate_operand. + (*cond_<optab><mode>_2_strict): Likewise. + (*cond_<optab><mode>_3_strict): Likewise. + (*cond_<optab><mode>_any_strict): Likwise. + (*cond_<optab><mode>_2_const_strict): Extend from SVE_FULL_F to SVE_F, + use aarch64_predicate_operand. + (*cond_<optab><mode>_any_const_strict): Likewise. + (*cond_sub<mode>_3_const_strict): Likwise. + (*cond_sub<mode>_const_strict): Likewise. + (*vcond_mask_<mode><vpred>): Use aarch64_predicate_operand, and update + the comment here. + * config/aarch64/aarch64.cc (aarch64_sve_emit_masked_fp_pred): New + function. Helper to mask the predicate in conditional expanders. + +2025-07-29 Dongyan Chen <chendongyan@isrc.iscas.ac.cn> + + * Makefile.in: Add riscv-mcpu.texi and riscv-mtune.texi to the list + of files to be processed by the Texinfo generator. + * config/riscv/t-riscv: Add rule for generating riscv-mcpu.texi + and riscv-mtune.texi. + * doc/invoke.texi: Replace hand‑written extension table with + `@include riscv-mcpu.texi` and `@include riscv-mtune.texi` to + pull in auto‑generated entries. + * config/riscv/gen-riscv-mcpu-texi.cc: New file. + * config/riscv/gen-riscv-mtune-texi.cc: New file. + * doc/riscv-mcpu.texi: New file. + * doc/riscv-mtune.texi: New file. + +2025-07-29 Richard Sandiford <richard.sandiford@arm.com> + + * simplify-rtx.cc (simplify_context::simplify_subreg): Distribute + lowpart subregs through AND/IOR/XOR, if doing so eliminates one + of the terms. + (test_scalar_int_ext_ops): Add some tests of the above for integers. + * config/aarch64/aarch64.cc (aarch64_test_sve_folding): Likewise + add tests for predicate modes. + +2025-07-29 Richard Sandiford <richard.sandiford@arm.com> + + * config/aarch64/aarch64-sve-builtins.cc + (function_expander::get_reg_target): Check whether the target + is a valid register_operand. + +2025-07-29 Konstantinos Eleftheriou <konstantinos.eleftheriou@vrull.eu> + + PR rtl-optimization/120660 + * avoid-store-forwarding.cc (process_store_forwarding): + Fix instruction generation when haveing multiple stores with + base offset. + +2025-07-29 Christoph Müllner <christoph.muellner@vrull.eu> + + * common/config/riscv/riscv-common.cc (riscv_ext_is_subset): + Remove use of structured binding to fix compiler warning. + +2025-07-29 Konstantinos Eleftheriou <konstantinos.eleftheriou@vrull.eu> + + PR rtl-optimization/119795 + * avoid-store-forwarding.cc + (store_forwarding_analyzer::avoid_store_forwarding): Skip + transformations for stores that operate on the same address + range as deleted ones. + +2025-07-29 Pan Li <pan2.li@intel.com> + + * match.pd: Add mul based unsigned SAT_MUL. + +2025-07-29 Richard Biener <rguenther@suse.de> + + PR tree-optimization/120687 + * tree-ssa-reassoc.cc (reassociate_bb): Do not disturb + the sorted operand order in the early pass. + * tree-vect-slp.cc (vect_analyze_slp): Dump when a detected + reduction chain fails SLP discovery. + +2025-07-29 Alfie Richards <alfie.richards@arm.com> + + PR middle-end/121261 + * vec.h: Add null ptr check. + +2025-07-29 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/121159 + * calls.cc (can_implement_as_sibling_call_p): Don't reject declared + noreturn functions in musttail calls. + +2025-07-29 Andrew Pinski <quic_apinski@quicinc.com> + + * output.h (MAX_ALIGN_MERGABLE): New define. + * tree-switch-conversion.cc (switch_conversion::build_one_array): + Use MAX_ALIGN_MERGABLE instead of 256. + * varasm.cc (mergeable_string_section): Likewise + (mergeable_constant_section): Likewise + +2025-07-29 Andrew Pinski <quic_apinski@quicinc.com> + + PR middle-end/120523 + * output.h (mergeable_constant_section): New declaration taking + unsigned HOST_WIDE_INT for the size. + * tree-switch-conversion.cc (switch_conversion::build_one_array): + Increase the alignment of CSWTCH for sizes less than 32bytes. + * varasm.cc (mergeable_constant_section): Split out twice. + One that takes the size in unsigned HOST_WIDE_INT and the + other size in a tree. + (default_elf_select_section): Pass DECL_SIZE instead of + DECL_MODE to mergeable_constant_section. + +2025-07-29 Richard Biener <rguenther@suse.de> + + * tree-vect-stmts.cc (vectorizable_load): Un-factor VMAT + specific code to their handling blocks. + +2025-07-29 Richard Biener <rguenther@suse.de> + + * tree-vectorizer.h (gather_scatter_info::offset_dt): Remove. + * tree-vect-data-refs.cc (vect_describe_gather_scatter_call): + Do not set it. + (vect_check_gather_scatter): Likewise. + * tree-vect-stmts.cc (vect_truncate_gather_scatter_offset): + Likewise. + (get_group_load_store_type): Use the vector type of the offset + SLP child. Do not re-check vect_is_simple_use validated by + SLP build. + +2025-07-28 Georg-Johann Lay <avr@gjlay.de> + + PR target/121277 + * config/avr/avr.cc (avr_addr_space_convert): When converting + from generic AS to __flashx, don't set bit 23. + (avr_convert_to_type): Don't -Waddr-space-convert when NULL + is converted to __flashx or to __flash. + +2025-07-28 Andrew Pinski <quic_apinski@quicinc.com> + + PR tree-optimization/121236 + * tree-if-conv.cc (is_cond_scalar_reduction): Instead of phi argument, + pass bb and res of the phi. + (factor_out_operators): Add iterator for the phi. Remove the phi + if this is the first time. Return if we had removed the phi. + (predicate_scalar_phi): Add the phi iterator argument. + Update call to is_cond_scalar_reduction. + Update call to factor_out_operators and set the return value to true + when factor_out_operators returns true. + (predicate_all_scalar_phis): Don't remove the phi if predicate_scalar_phi + already removed it. + +2025-07-28 H.J. Lu <hjl.tools@gmail.com> + + PR target/121208 + * config/i386/i386.cc (ix86_tls_get_addr): Issue an error for + -mtls-dialect=gnu with no_caller_saved_registers attribute and + suggest -mtls-dialect=gnu2. + +2025-07-28 Mikael Pettersson <mikpelinux@gmail.com> + + PR other/121260 + * diagnostics/changes.cc: Correct nesting of namespaces + and #if CHECKING_P blocks. + * diagnostics/context.cc: Likewise. + * diagnostics/html-sink.cc: Likewise. + * diagnostics/output-spec.cc: Likewise. + * diagnostics/sarif-sink.cc: Likewise. + +2025-07-28 Tobias Burnus <tburnus@baylibre.com> + + * config/nvptx/nvptx.opt (march-map=): Add sm_100{,f,a}, + sm_101{,f,a}, sm_103{,a,f}, sm_120{,a,f} and sm_121{,f,a}. + +2025-07-28 Tobias Burnus <tburnus@baylibre.com> + + * config/gcn/gcn.md (atomic_load, atomic_store, atomic_exchange): + Fix CDNA3 L2 cache write-back before atomic instructions. + +2025-07-28 Richard Biener <rguenther@suse.de> + + * tree-vect-stmts.cc (check_load_store_for_partial_vectors): + Make *gs_info const. + (vect_build_one_gather_load_call): Likewise. + (vect_build_one_scatter_store_call): Likewise. + (vect_get_gather_scatter_ops): Likewise. + (vect_get_strided_load_store_ops): Likewise. + +2025-07-28 Tobias Burnus <tburnus@baylibre.com> + + * config/gcn/gcn.md (define_attr "vcmp"): Add with values + vcmp/vcmpx/no. + (*movbi, cstoredi4.., cstore<mode>4): Set it. + * config/gcn/gcn-valu.md (vec_cmp<mode>...): Likewise. + * config/gcn/gcn.cc (gcn_cmpx_insn_p): Remove. + (gcn_md_reorg): Add two new conditions for MI300. + +2025-07-28 Tobias Burnus <tburnus@baylibre.com> + + * config/gcn/gcn-opts.h (enum hsaco_attr_type): Add comment + about 'sc0'. + * config/gcn/gcn.cc (gcn_md_reorg): Use gen_nops instead of gen_nop. + (print_operand_address): Document 'R' and 'V' in the + pre-function comment as well. + * config/gcn/gcn.md (nops): Add. + +2025-07-28 Richard Biener <rguenther@suse.de> + + PR tree-optimization/121256 + * tree-vect-loop.cc (vectorizable_recurr): Build a correct + initialization vector for SLP_TREE_LANES > 1. + +2025-07-28 Richard Biener <rguenther@suse.de> + + * tree-vectorizer.h (_slp_tree::type): Add. + (_slp_tree::u): Likewise. + (_stmt_vec_info::type): Remove. + (STMT_VINFO_TYPE): Likewise. + (SLP_TREE_TYPE): New. + * tree-vectorizer.cc (vec_info::new_stmt_vec_info): Do not + initialize type. + * tree-vect-slp.cc (_slp_tree::_slp_tree): Initialize type. + (vect_slp_analyze_node_operations): Adjust. + (vect_schedule_slp_node): Likewise. + * tree-vect-patterns.cc (vect_init_pattern_stmt): Do not + copy STMT_VINFO_TYPE. + * tree-vect-loop.cc: Set SLP_TREE_TYPE instead of + STMT_VINFO_TYPE everywhere. + (vect_create_loop_vinfo): Do not set STMT_VINFO_TYPE on + loop conditions. + * tree-vect-stmts.cc: Set SLP_TREE_TYPE instead of + STMT_VINFO_TYPE everywhere. + (vect_analyze_stmt): Adjust. + (vect_transform_stmt): Likewise. + * config/aarch64/aarch64.cc (aarch64_vector_costs::count_ops): + Access SLP_TREE_TYPE instead of STMT_VINFO_TYPE. + * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost): + Remove non-SLP element-wise load/store matching. + * config/rs6000/rs6000.cc + (rs6000_cost_data::update_target_cost_per_stmt): Pass in + the SLP node. Use that to get at the memory access + kind and type. + (rs6000_cost_data::add_stmt_cost): Pass down SLP node. + * config/riscv/riscv-vector-costs.cc (variable_vectorized_p): + Use SLP_TREE_TYPE. + (costs::need_additional_vector_vars_p): Likewise. + (costs::update_local_live_ranges): Likewise. + +2025-07-28 Jennifer Schmitz <jschmitz@nvidia.com> + Dhruv Chawla <dhruvc@nvidia.com> + + * config/aarch64/aarch64-cores.def (olympus): Use olympus tuning + model. + * config/aarch64/aarch64.cc: Include olympus.h. + * config/aarch64/tuning_models/olympus.h: New file. + +2025-07-28 Lulu Cheng <chenglulu@loongson.cn> + + * config/loongarch/loongarch.h + (CASE_VECTOR_SHORTEN_MODE): Delete. + +2025-07-28 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> + + * config/xtensa/xtensa.cc (xtensa_is_insn_L32R_p): + Re-rewrite to more accurately capture insns that could be L32R machine + instructions wherever possible, and add comments that help understand + the intent of the process. + +2025-07-27 Pan Li <pan2.li@intel.com> + + * config/riscv/riscv-v.cc (expand_vx_binary_vxrm_vec_vec_dup): + Add new case UNSPEC_VAADD. + (expand_vx_binary_vxrm_vec_dup_vec): Ditto. + * config/riscv/riscv.cc (riscv_rtx_costs): Ditto. + * config/riscv/vector-iterators.md: Add new case UNSPEC_VAADD to + iterator. + +2025-07-27 Nathaniel Shead <nathanieloshead@gmail.com> + + PR middle-end/120855 + * cgraphunit.cc (symbol_table::compile): Assert a transparent + alias is not an internal identifier. + * symtab.cc (symbol_table::change_decl_assembler_name): + Likewise. + * varasm.cc (assemble_name_resolve): Check for + IDENTIFIER_TRANSPARENT_ALIAS instead of just TREE_CHAIN. + +2025-07-26 Thomas Schwinge <tschwinge@baylibre.com> + + * diagnostics/context.cc (context::diagnostic_impl) + (context::diagnostic_n_impl): In presence of formal parameter + 'kind', explicitly state 'diagnostics::' scope for 'kind' enum. + +2025-07-26 Thomas Schwinge <tschwinge@baylibre.com> + + * diagnostics/option-classifier.cc + (update_effective_level_from_pragmas): In presence of local + variable 'kind', explicitly state 'diagnostics::' scope for 'kind' + enum. + +2025-07-26 Christoph Müllner <christoph.muellner@vrull.eu> + + * config/riscv/riscv-ext.def: Add allocated group IDs and + group bit positions. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * diagnostics/context.cc: Eliminate digraphs::lazy_digraph in + favor of lazily_created template. + * diagnostics/context.h: Likewise. + * diagnostics/digraphs.cc: Likewise, also digraphs::lazy_digraphs. + * diagnostics/digraphs.h: Likewise. + * diagnostics/html-sink.cc: Likewise. + * diagnostics/metadata.h: Likewise. + * diagnostics/sarif-sink.cc: Likewise. + * diagnostics/sink.h: Likewise. + * diagnostics/text-sink.h: Likewise. + * lazily-created.h: New file. + * libgdiagnostics.cc: Eliminate digraphs::lazy_digraph in + favor of lazily_created template. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * diagnostic.h: Use TextOrHtml rather than Sink for template + params. + * diagnostics/context.h: Likewise. + * diagnostics/selftest-context.cc: Use "html_or_text" rather than + "sink". + * diagnostics/source-printing.cc: Use TextOrHtml rather than Sink + for template params. Use "text_out" and "html_out" rather than + "sink". + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * diagnostic.h (diagnostic_set_caret_max_width): Drop forward + decl. + (diagnostic_same_line): Make + diagnostics::context::m_source_printing private. + * diagnostics/context.cc (diagnostic_set_caret_max_width): Convert + to... + (diagnostics::context::set_caret_max_width): ...this. + * diagnostics/context.h + (diagnostics::context::get_source_printing_options): New + accessors. + (diagnostics::context::m_source_printing): Make private. + * diagnostics/html-sink.cc: Make + diagnostics::context::m_source_printing private. + * diagnostics/paths-output.cc: Likewise. + * diagnostics/sarif-sink.cc: Likewise. + * diagnostics/selftest-context.cc: Likewise. + * diagnostics/selftest-context.h + (diagnostics::selftest::test_context::colorize_source): New. + (diagnostics::selftest::test_context::show_labels): New. + (diagnostics::selftest::test_context::show_line_numbers): New. + (diagnostics::selftest::test_context::show_ruler): New. + (diagnostics::selftest::test_context::show_event_links): New. + (diagnostics::selftest::test_context::set_caret_char): New. + * diagnostics/source-printing.cc: Make + diagnostics::context::m_source_printing private. + * diagnostics/text-sink.h: Likewise. + * libgdiagnostics.cc: Likewise. + * opts.cc: Likewise. + * toplev.cc: Likewise. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * diagnostic.h: Eliminate "diagnostic_info" typedef. + * diagnostics/context.cc: Update usage of "diagnostic_info" to + explicitly refer to "diagnostics::diagnostic_info". + * langhooks.cc: Likewise. + * libgdiagnostics.cc: Likewise. + * rtl-error.cc: Likewise. + * substring-locations.cc: Likewise. + * toplev.cc: Likewise. + * tree-diagnostic.cc: Likewise. + * tree-diagnostic.h: Likewise. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * diagnostic.h (enum diagnostics_column_unit): Move to + diagnostics/context-options.h. + (enum diagnostics_escape_format): Likewise. + (enum diagnostics_output_format): Likewise. + (enum diagnostic_path_format): Likewise. + (enum diagnostics_extra_output_kind): Likewise. + (enum diagnostic_text_art_charset): Likewise. + * diagnostics/context-options.h: New file, based on the above + material. + * diagnostics/context.h: Include it. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * Makefile.in (OBJS-libcommon): Add diagnostics/file-cache.o. + * diagnostics/changes.cc: Update for file_cache and char_span + moving from input.h to diagnostics/file-cache.h and into the + "diagnostics::" namespace. + * diagnostics/context.cc: Likewise. + * diagnostics/diagnostics-selftests.cc: Likewise. + * diagnostics/diagnostics-selftests.h: Likewise. + * diagnostics/file-cache.cc: New file, based on the file_cache + and file_cache_slot material in input.cc. + * diagnostics/file-cache.h: Likewise for input.h. + * diagnostics/selftest-source-printing.h: Update for file_cache + and char_span moving from input.h to diagnostics/file-cache.h and + into the "diagnostics::" namespace. + * diagnostics/source-printing.cc: Likewise. + * final.cc: Likewise. + * gcc-rich-location.cc: Likewise. + * input.cc (default_charset_callback): Move to + diagnostics/file-cache.cc. + (file_cache::initialize_input_context): Likewise. + (class file_cache_slot): Likewise. + (file_cache::tune): Likewise. + (file_cache::lookup_file): Likewise. + (file_cache::forcibly_evict_file): Likewise. + (file_cache::missing_trailing_newline_p): Likewise. + (file_cache::add_buffered_content): Likewise. + (file_cache::evicted_cache_tab_entry): Likewise. + (file_cache::add_file): Likewise. + (file_cache::file_cache): Likewise. + (file_cache::dump): Likewise. + (file_cache::dump): Likewise. + (file_cache::lookup_or_add_file): Likewise. + (find_end_of_line): Likewise. + (file_cache::get_source_line): Likewise. + (check_line): Likewise. + (test_replacement): Likewise. + (test_reading_source_line): Likewise. + (test_reading_source_buffer): Likewise. + * input.h (class char_span): Move to diagnostics/file-cache.h and + into the "diagnostics::" namespace. + (class file_cache_slot): Likewise. + (class file_cache): Likewise. + * libgdiagnostics.cc: Update for file_cache and char_span moving + from input.h to diagnostics/file-cache.h and into the + "diagnostics::" namespace. + * selftest.cc: Likewise. + * selftest.h: Likewise. + * substring-locations.h: Likewise. + * toplev.cc: Likewise. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * diagnostics/selftest-paths.cc: Don't include "demangle.h" + and "backtrace.h". + * diagnostics/source-printing.cc: Likewise. + * diagnostics/state-graphs.cc: Don't include "graphviz.h", + "xml.h", "xml-printer.h", or "intl.h". + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * diagnostic.h: Move include of "unique-argv.h" + and various forward decls into... + * diagnostics/context.h: ...here. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * diagnostic.h (num_digits): Move to... + (diagnostics::num_digits): ...here. + (get_cwe_url): Move to... + (diagnostics::get_cwe_url): ...here. + (maybe_line_and_column): Move to... + (diagnostics::maybe_line_and_column): ...here. + * diagnostic.cc: Move to... + * diagnostics/context.cc: ...here. + * diagnostics/diagnostics-selftests.cc + (run_diagnostics_selftests): Add comment about context_cc_tests. + * diagnostics/diagnostics-selftests.h: Add context_cc_tests decl. + * diagnostics/sarif-sink.cc: Update for file rename. + * diagnostics/source-printing.cc: Update for num_digits moving to + diagnostics::num_digits. + * errors.cc: Update for file rename. + * input.cc: Update for num_digits moving to + diagnostics::num_digits. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * Makefile.in (OBJS-libcommon): Replace diagnostic.o with + diagnostics/context.o. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * Makefile.in: Replace diagnostic.def with diagnostics/kinds.def. + * config/aarch64/aarch64.cc: Update for diagnostic_t becoming + enum class diagnostics::kind. + * config/i386/i386-options.cc: Likewise. + * config/s390/s390.cc: Likewise. + * diagnostic-core.h: Replace typedef diagnostic_t with + enum class diagnostics::kind in diagnostics/kinds.h and include + it. + * diagnostic-global-context.cc: Update for diagnostic_t becoming + enum class diagnostics::kind. + * diagnostic.cc: Likewise. + * diagnostic.h: Likewise. + * diagnostics/buffering.cc: Likewise. + * diagnostics/buffering.h: Likewise. + * diagnostics/context.h: Likewise. + * diagnostics/diagnostic-info.h: Likewise. + * diagnostics/html-sink.cc: Likewise. + * diagnostic.def: Move to... + * diagnostics/kinds.def: ...here and update for diagnostic_t + becoming enum class diagnostics::kind. + * diagnostics/kinds.h: New file, based on material in + diagnostic-core.h. + * diagnostics/lazy-paths.cc: Update for diagnostic_t becoming + enum class diagnostics::kind. + * diagnostics/option-classifier.cc: Likewise. + * diagnostics/option-classifier.h: Likewise. + * diagnostics/output-spec.h: Likewise. + * diagnostics/paths-output.cc: Likewise. + * diagnostics/sarif-sink.cc: Likewise. + * diagnostics/selftest-context.cc: Likewise. + * diagnostics/selftest-context.h: Likewise. + * diagnostics/sink.h: Likewise. + * diagnostics/source-printing.cc: Likewise. + * diagnostics/text-sink.cc: Likewise. + * diagnostics/text-sink.h: Likewise. + * gcc.cc: Likewise. + * libgdiagnostics.cc: Likewise. + * lto-wrapper.cc: Likewise. + * opts-common.cc: Likewise. + * opts-diagnostic.h: Likewise. + * opts.cc: Likewise. + * rtl-error.cc: Likewise. + * substring-locations.cc: Likewise. + * toplev.cc: Likewise. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * diagnostic-core.h: Include "diagnostics/option-id.h". + (struct diagnostic_option_id): Move there, renaming to + diagnostics::option_id. + * diagnostic-global-context.cc: Update for renaming of + diagnostic_option_id to diagnostics::option_id. + * diagnostic.cc: Likewise. + * diagnostic.h: Likewise. + * diagnostics/context.h: Likewise. + * diagnostics/diagnostic-info.h: Likewise. + * diagnostics/lazy-paths.cc: Likewise. + * diagnostics/option-classifier.cc: Likewise. + * diagnostics/option-classifier.h: Likewise. + * diagnostics/option-id.h: New file, taken from material in + diagnostic-core.h. + * diagnostics/selftest-context.cc: Update for renaming of + diagnostic_option_id to diagnostics::option_id. + * diagnostics/selftest-context.h: Likewise. + * ipa-pure-const.cc: Likewise. + * lto-wrapper.cc: Likewise. + * opts-common.cc: Likewise. + * opts-diagnostic.h: Likewise. + * opts.cc: Likewise. + * substring-locations.cc: Likewise. + * substring-locations.h: Likewise. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * Makefile.in (OBJS-libcommon): Replace diagnostic-spec.o with + gcc-diagnostic-spec.o. + (GTFILES): Replace diagnostic-spec.h with gcc-diagnostic-spec.h. + * diagnostic-spec.cc: Move to... + * gcc-diagnostic-spec.cc: ...here. + * diagnostic-spec.h: Move to... + * gcc-diagnostic-spec.h: ...here. + * gengtype.cc (open_base_files): Replace diagnostic-spec.h with + gcc-diagnostic-spec.h. + * warning-control.cc: Likewise. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * Makefile.in (OBJS-libcommon): Replace diagnostics/changes.o with + diagnostics/edit-context.o. + * diagnostic.cc: Update for move of diagnostics/edit-context.h to + diagnostics/changes.h. + (diagnostics::context::initialize): Update for renaming of + m_edit_context_ptr to m_fixits_change_set. + (diagnostics::context::finish): Likewise. + (diagnostics::context::create_edit_context): Rename to... + (diagnostics::context::initialize_fixits_change_set): ...this and + update for other renamings. + (diagnostics::context::report_diagnostic): Update for renaming of + m_edit_context_ptr to m_fixits_change_set. + * diagnostic.h (diagnostics::edit_context): Drop forward decl + * diagnostics/edit-context.cc: Move to... + * diagnostics/changes.cc: ...here. Update for move of + diagnostics/edit-context.h to diagnostics/changes.h. + Rename diagnostics::edit_context to + diagnostics::changes::change_set. Rename diagnostics::edited_file + to diagnostics::changes::changed_file. Rename + diagnostics::edited_line to diagnostics::changes::changed_line. + * diagnostics/edit-context.h: Move to... + * diagnostics/changes.h: ...here, renaming as above. + * diagnostics/context.h (diagnostics::changes::change_set): New + forward decl. + (diagnostics::context::create_edit_context): Rename to... + (diagnostics::context::initialize_fixits_change_set): ...this. + (diagnostics::context::get_edit_context): Rename to... + (diagnostics::context::get_fixits_change_set): ...this. + (diagnostics::context::m_edit_context_ptr): Rename to... + (diagnostics::context::m_fixits_change_set): ..this and update + type. + * diagnostics/diagnostics-selftests.cc: Update for renaming. + * diagnostics/diagnostics-selftests.h: Likewise. + * diagnostics/html-sink.cc: Update for above changes. + * libgdiagnostics.cc: Likewise. + * toplev.cc: Likewise. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * Makefile.in (OBJS): Move diagnostics/lazy-paths.o to... + (OBJS-libcommon): ...here. Add + diagnostics/diagnostics-selftests.o. + * diagnostic.cc: Update for move of + selftest::test_diagnostic_context to + diagnostics::selftest::test_context. + * diagnostics/color.cc: Move selftests from selftest:: to + diagnostics::selftest::. + * diagnostics/diagnostics-selftests.cc: New file. + * diagnostics/diagnostics-selftests.h: New file. + * diagnostics/digraphs.cc: Move selftests from selftest:: to + diagnostics::selftest::. + * diagnostics/edit-context.cc: Likewise. + * diagnostics/html-sink.cc: Likewise. + * diagnostics/lazy-paths.cc: Likewise. Eliminate use of "tree" + by porting selftests from simple-diagnostic-path.h to + diagnostics/selftest-paths.h. + * diagnostics/output-spec.cc: Move selftests from selftest:: to + diagnostics::selftest::. + * diagnostics/paths-output.cc: Likewise. + * diagnostics/sarif-sink.cc: Likewise. + * diagnostics/selftest-context.cc: Move + selftest::test_diagnostic_context to + diagnostics::selftest::test_context. + * diagnostics/selftest-context.h: Likewise. + * diagnostics/selftest-logical-locations.cc: Move selftests from + selftest:: to diagnostics::logical_locations::selftest::. + * diagnostics/selftest-logical-locations.h: Move + selftest::logical_location_manager to + diagnostics::logical_locations::selftest::logical_location_manager. + * diagnostics/selftest-paths.cc: Move + selftest::test_diagnostic_path to + diagnostics::paths::selftest::test_path. Move + selftest::test_diagnostic_event to + diagnostics::paths::selftest::test_event. + * diagnostics/selftest-paths.h: Likewise, and move + selftest::test_diagnostic_thread to + diagnostics::paths::selftest::test_thread. + * diagnostics/selftest-source-printing.h: Move + selftest::diagnostic_show_locus_fixture to + diagnostics::selftest::source_printing_fixture. + * diagnostics/source-printing.cc: Move selftests from selftest:: + to diagnostics::selftest:: and update for renames. + * diagnostics/state-graphs.cc: Likewise. + * selftest-run-tests.cc: Include + "diagnostics/diagnostics-selftests.h". + (selftest::run_tests): Replace invocation of the various diagnostics + selftests with a call to + diagnostics::selftest::run_diagnostics_selftests. + * selftest.h: Move decls of the various per-file diagnostics + invocation functions to diagnostics/diagnostics-selftests.h, + renaming due to diagostics prefix being implied by namespace. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * common.opt: Update for move of diagnostic-url.h to + diagnostics/url.h. + * diagnostic.cc: Likewise. + * diagnostics/color.cc: Likewise. + * diagnostics/text-sink.cc: Likewise. + * diagnostic-url.h: Move to... + * diagnostics/url.h: ...here. + * libgdiagnostics.cc: Update for move of diagnostic-url.h to + diagnostics/url.h. + * pretty-print.h: Likewise. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * Makefile.in (OBJS-libcommon): Replace diagnostic-color.o with + diagnostics/color.o. + (PLUGIN_HEADERS): Remove diagnostic-color.h in favor of glob. + * common.opt: Update for move of diagnostic-color.h to + diagnostics/color.h. + * diagnostic.cc: Likewise. + * diagnostic-color.cc: Move to... + * diagnostics/color.cc: ...here. + * diagnostic-color.h: Move to... + * diagnostics/color.h: ...here. + * diagnostics/edit-context.cc: Update for move of + diagnostic-color.h to diagnostics/color.h. + * diagnostics/output-spec.cc: Likewise. + * diagnostics/paths-output.cc: Likewise. + * diagnostics/source-printing.cc: Likewise. + * diagnostics/text-sink.cc: Likewise. + * libgdiagnostics.cc: Likewise. + * opts.cc: Likewise. + * pretty-print-markup.h: Likewise. + * pretty-print.cc: Likewise. + * selftest-run-tests.cc: Likewise. + * selftest.h: Likewise. + * text-art/style.cc: Likewise. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * Makefile.in (OBJS-libcommon): Replace selftest-diagnostic.o with + diagnostics/selftest-context.o. + * diagnostic.cc: Update for move of selftest-diagnostic.h to + diagnostics/selftest-context.h. + * diagnostics/html-sink.cc: Likewise. + * diagnostics/lazy-paths.cc: Likewise. + * diagnostics/output-spec.cc: Likewise. + * diagnostics/paths-output.cc: Likewise. + * diagnostics/sarif-sink.cc: Likewise. + * selftest-diagnostic.cc: Move to... + * diagnostics/selftest-context.cc: ...here and update for move of + header file. + * selftest-diagnostic.h: Move to... + * diagnostics/selftest-context.h: ...here. + * diagnostics/source-printing.cc: Update for move of + selftest-diagnostic.h to diagnostics/selftest-context.h. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * Makefile.in (OBJS-libcommon): Add diagnostics/buffering.o. + * diagnostic.cc (diagnostics::context::set_diagnostic_buffer): Move to + diagnostics/buffering.cc. + (diagnostics::context::clear_diagnostic_buffer): Likewise. + (diagnostics::context::flush_diagnostic_buffer): Likewise. + (diagnostics::buffer::buffer): Likewise. + (diagnostics::buffer::~buffer): Likewise. + (diagnostics::buffer::dump): Likewise. + (diagnostics::buffer::empty_p): Likewise. + (diagnostics::buffer::move_to): Likewise. + (diagnostics::buffer::ensure_per_sink_buffers): Likewise. + * diagnostics/buffering.cc: New file, from material in diagnostic.cc. + * diagnostics/buffering.h: Fix comment. + * diagnostics/text-sink.h: Likewise. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * Makefile.in (OBJS-libcommon): Add + diagnostics/option-classifier.o. + * diagnostic.cc (diagnostics::option_classifier::init): Move to + diagnostics/option-classifier.cc. + (diagnostics::option_classifier::fini): Likewise. + (diagnostics::option_classifier::pch_save): Likewise. + (diagnostics::option_classifier::pch_restore): Likewise. + (diagnostics::option_classifier::push): Likewise. + (diagnostics::option_classifier::pop): Likewise. + (diagnostics::option_classifier::classify_diagnostic): Likewise. + (diagnostics::option_classifier::update_effective_level_from_pragmas): + Likewise. + * diagnostics/context.h: Include + "diagnostics/option-classifier.h". + (class option_classifier): Move to + diagnostics/option-classifier.h. + * diagnostics/option-classifier.cc: New file, based on material + from diagnostic.cc. + * diagnostics/option-classifier.h: New file, based on material + from diagnostics/context.h. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * coretypes.h: Update for diagnostic_context becoming + diagnostics::context. + * diagnostic-global-context.cc: Likewise. + * diagnostic.cc: Likewise. Also for diagnostic_option_classifier + becoming diagnostics::option_classifier. + * diagnostic.h (diagnostic_text_starter_fn): Rename to... + (diagnostics::text_starter_fn): ...this, and move to + diagnostics/context.h. + (get_printer): Rename to... + (diagnostics::get_printer): ...this, and move to + diagnostics/context.h. + (class diagnostic_option_manager): Rename to... + (class diagnostics::option_manager): ...this, and move to + diagnostics/context.h. + (class diagnostic_option_classifier): Rename to... + (class diagnostics::option_classifier): ...this, and move to + diagnostics/context.h. + (struct diagnostic_source_printing_options): Rename to... + (struct diagnostics::source_printing_options): ...this, and move + to diagnostics/context.h. + (class diagnostic_column_policy): Rename to... + (class diagnostics::column_policy): ...this, and move to + diagnostics/context.h. + (class diagnostic_location_print_policy): Rename to... + (class diagnostics::location_print_policy): ...this, and move to + diagnostics/context.h. + (class html_label_writer): Rename to... + (class diagnostics::html_label_writer): ...this, and move to + diagnostics/context.h. + (class diagnostic_source_print_policy): Rename to... + (class diagnostics::source_print_policy): ...this, and move to + diagnostics/context.h. + (struct diagnostic_counters): Rename to... + (struct diagnostics::counters): ...this, and move to + diagnostics/context.h. + (class diagnostic_context): Rename to... + (class diagnostics::context): ...this, and move to + diagnostics/context.h. + (diagnostic_text_starter): Rename to... + (diagnostics::text_starter): ...this, and move to + diagnostics/context.h. + (diagnostic_start_span): Rename to... + (diagnostics::start_span): ...this, and move to + diagnostics/context.h. + (diagnostic_text_finalizer): Rename to... + (diagnostics::text_finalizer): ...this, and move to + diagnostics/context.h. + Include "diagnostics/context.h". + * diagnostics/buffering.h: Update for diagnostic_context becoming + diagnostics::context; similarly for diagnostic_counters. + * diagnostics/client-data-hooks.h: Likewise. + * diagnostics/context.h: New file, taken from material in + diagnostic.h. + * diagnostics/html-sink.cc: : Update for diagnostic_context + becoming diagnostics::context. + * diagnostics/html-sink.h: Likewise. + * diagnostics/lazy-paths.cc: Likewise for + diagnostic_option_manager. + * diagnostics/output-file.h: Likewise for diagnostic_context. + * diagnostics/output-spec.cc: Likewise. + * diagnostics/output-spec.h: Likewise. + * diagnostics/paths-output.cc: Likewise. + * diagnostics/sarif-sink.cc: Likewise. + * diagnostics/sarif-sink.h: Likewise. + * diagnostics/sink.h: Likewise. + * diagnostics/source-printing.cc: Likewise. + * diagnostics/text-sink.cc: Likewise. + * diagnostics/text-sink.h: Likewise. + * gcc-rich-location.h: Likewise. + * gcc.cc: Likewise. + * gdbinit.in: Likewise. + * langhooks-def.h: Likewise. + * langhooks.cc: Likewise. + * langhooks.h: Likewise. + * libgdiagnostics.cc: Likewise. + * optc-gen.awk: Likewise. + * opth-gen.awk: Likewise. + * opts-common.cc: Likewise. + * opts-diagnostic.cc: Likewise. + * opts-diagnostic.h: Likewise. + * opts-global.cc: Likewise. + * opts.cc: Likewise. + * opts.h: Likewise. + * selftest-diagnostic.cc: Likewise. + * selftest-diagnostic.h: Likewise. + * toplev.cc: Likewise. + * tree-diagnostic-client-data-hooks.cc: Likewise. + * tree-diagnostic.cc: Likewise. + * tree-diagnostic.h: Likewise. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * diagnostic.h (struct diagnostic_info): Move to + diagnostics/diagnostic-info.h as diagnostics::diagnostic_info. + Add typedef bringing it back into root namespace, for now. + * diagnostics/diagnostic-info.h: New file, based on the above. + * langhooks-def.h: Update for diagnostic_info moving into + namespace diagnostics. + * langhooks.h: Likewise. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * diagnostic.cc: Update to add "m_" prefix to fields of + diagnostic_info throughout. + * diagnostic.h: Likewise. + * diagnostics/html-sink.cc: Likewise. + * diagnostics/sarif-sink.cc: Likewise. + * diagnostics/text-sink.cc: Likewise. + * libgdiagnostics.cc: Likewise. + * substring-locations.cc: Likewise. + * tree-diagnostic.cc: Likewise. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * Makefile.in (OBJS): Replace diagnostic-macro-unwinding.o with + diagnostics/macro-unwinding.o. + * diagnostic-macro-unwinding.cc: Move to... + * diagnostics/macro-unwinding.cc: ...here, moving content into + namespace diagnostics. + * diagnostic-macro-unwinding.h: Move to... + * diagnostics/macro-unwinding.h: ...here, moving content into + namespace diagnostics. + * diagnostics/paths-output.cc: Update for move of + "diagnostic-macro-unwinding.h" to "diagnostics/macro-unwinding.h". + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * Makefile.in (OBJS): Replace diagnostic-show-locus.o with + diagnostics/source-printing.o. + * diagnostic.h (class diagnostic_source_effect_info): Replace + with... + (class diagnotics::source_effect_info): ...this. + * diagnostics/paths-output.cc: Likewise. Update for move of + "diagnostic-label-effects.h" to + "diagnostics/source-printing-effects.h". + * diagnostics/sarif-sink.cc: Update for move of + "selftest-diagnostic-show-locus.h" to + "diagnostics/selftest-source-printing.h". + * selftest-diagnostic-show-locus.h: Move to... + * diagnostics/selftest-source-printing.h: ...here. + * diagnostic-label-effects.h: Move to... + * diagnostics/source-printing-effects.h: ...here, updating + for above changes. + * diagnostic-show-locus.cc: Move to... + * diagnostics/source-printing.cc: ...here. + * gcc-rich-location.h: Likewise. + * selftest-run-tests.cc: Likewise. + * selftest.h: Likewise. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * Makefile.in (OBJS): Replace diagnostic-format-html.o with + diagnostics/html-sink.o, diagnostic-format-sarif.o with + diagnostics/sarif-sink.o, and diagnostic-format-text.o with + diagnostics/text-sink.o. + * coretypes.h (class diagnostic_text_output_format): Replace + with... + (class diagnostics::text_sink): ...this. + * diagnostic-global-context.cc: Update for move of diagnostics + output formats into namespace "diagnostics", as "sinks". + * diagnostic-macro-unwinding.cc: Likewise. + * diagnostic-macro-unwinding.h: Likewise. + * diagnostic-show-locus.cc: Likewise. + * diagnostic.cc: Likewise. + * diagnostic.h: Likewise. + * diagnostic-buffer.h: Rename to... + * diagnostics/buffering.h: ...this, updating for above changes. + * diagnostics/client-data-hooks.h: Likewise. + * diagnostics/digraphs.cc: Likewise. + * diagnostic-format-html.cc: Rename to... + * diagnostics/html-sink.cc: ...this, updating for above changes. + * diagnostic-format-html.h: Rename to... + * diagnostics/html-sink.h: ...this, updating for above changes. + * diagnostics/lazy-paths.cc: Likewise. + * diagnostics/metadata.h: Likewise. + * diagnostics/output-spec.cc: Likewise. + * diagnostics/output-spec.h: Likewise. + * diagnostics/paths-output.cc: Likewise. + * diagnostics/paths.h: Likewise. + * diagnostic-format-sarif.cc: Rename to... + * diagnostics/sarif-sink.cc: ...this, updating for above changes. + * diagnostic-format-sarif.h: Rename to... + * diagnostics/sarif-sink.h: ...this, updating for above changes. + * diagnostic-format.h: Rename to... + * diagnostics/sink.h: ...this, updating for above changes. + * diagnostics/state-graphs-to-dot.cc: Likewise. + * diagnostic-format-text.cc: Rename to... + * diagnostics/text-sink.cc: ...this, updating for above changes. + * diagnostic-format-text.h: Rename to... + * diagnostics/text-sink.h: ...this, updating for above changes. + * gcc.cc: Likewise. + * langhooks-def.h: Likewise. + * langhooks.cc: Likewise. + * langhooks.h: Likewise. + * libgdiagnostics.cc: Likewise. + * opts-diagnostic.cc: Likewise. + * opts.cc: Likewise. + * selftest-diagnostic.cc: Likewise. + * selftest-run-tests.cc: Likewise. + * selftest.h: Likewise. + * tree-diagnostic-client-data-hooks.cc: Likewise. + * tree-diagnostic.cc: Likewise. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * Makefile.in (OBJS): Replace lazy-diagnostic-path.o with + diagnostics/lazy-paths.o. + (OBJS-libcommon): Replace diagnostic-path.o with + diagnostics/paths.o, diagnostic-path-output.o with + diagnostics/paths-output.o, and selftest-diagnostic-path.o with + diagnostics/selftest-paths.o. + (EXTRA_BACKEND_OBJS): Replace lazy-diagnostic-path.o with + diagnostics/lazy-paths.o. + * diagnostic-format-html.cc: Update #include for + "diagnostic-path.h" moving to "diagnostics/paths.h", + diagnostic_thread_id_t to diagnostics::paths::thread_id_t, + diagnostic_event_id_t to diagnostics::paths::event_id_t, + diagnostic_path to diagnostics::paths::path, and + diagnostic_thread to diagnostics::paths::thread, and + diagnostic_event to diagnostics::paths::event. + * diagnostic-format-html.h: Likewise. + * diagnostic-format-sarif.cc: Likewise. Update PROPERTY_PREFIX + for threadFlowLocations from "gcc/diagnostic_event/" to + "gcc/diagnostics/paths/event/". + * diagnostic-format-text.cc: Likewise. + * diagnostic-format-text.h: Likewise. + * diagnostic.cc: Likewise. + * diagnostic.h: Likewise. + * diagnostic-event-id.h: Move to... + * diagnostics/event-id.h: ...here, updating header guard. + (diagnostics:paths:event_id_t): New typedef. + (diagnostic_thread_id_t): Replace with... + (diagnostics:paths:thread_id_t): New typedef. + * lazy-diagnostic-path.cc: Move to... + * diagnostics/lazy-paths.cc: ...here. Update for above changes, + lazy_diagnostic_path becomes diagnostics::paths::lazy_path. + (lazy_diagnostic_path_cc_tests): Rename to... + (diagnostics_lazy_paths_cc_tests): ...this. + * lazy-diagnostic-path.h: Move to... + * diagnostics/lazy-paths.h: ...here, updating header guard. + Update for above changes. + * diagnostic-path-output.cc: Move to... + * diagnostics/paths-output.cc: ...here. Update for above changes. + (diagnostic_path_output_cc_tests): Rename to... + (diagnostics_paths_output_cc_tests): ...this. + * diagnostic-path.cc: Move to... + * diagnostics/paths.cc: ...here. Update for above changes. + * diagnostic-path.h: Move to... + * diagnostics/paths.h: ...here, updating header guard. + Update #include for moving "diagnostic-event-id.h" to + "diagnostics/event-id.h". + (class diagnostic_event): Convert to... + (class diagnostics::paths::event): ...this. + (class diagnostic_thread): Convert to... + (class diagnostics::paths::thread): ...this. + (class diagnostic_path): Convert to... + (class diagnostics::paths::path): ...this. + * diagnostic-show-locus.cc: Update for above changes. + * doc/analyzer.texi: Likewise. + * selftest-diagnostic-path.cc: Move to... + * diagnostics/selftest-paths.cc: ...here. Update for + above changes, and for "selftest-diagnostic-path.h" moving to + "diagnostics/selftest-paths.h". + * selftest-diagnostic-path.h: Move to... + * diagnostics/selftest-paths.h: ...here, updating header guard. + Update for above changes. + * libgdiagnostics.cc: Update for above changes. + * libsarifreplay.cc: Update property prefix for + threadFlowLocations from "gcc/diagnostic_event/" to + "gcc/diagnostics/paths/event/". + * pretty-print-format-impl.h: Update for above changes. + * pretty-print.cc: Likewise. + * selftest-run-tests.cc (selftest::run_tests): Update for + renaming of lazy_diagnostic_path_cc_tests to + diagnostics_lazy_paths_cc_tests, and of + diagnostic_path_output_cc_tests to + diagnostics_paths_output_cc_tests. + * selftest.h (lazy_diagnostic_path_cc_tests): Replace decl with... + (diagnostics_lazy_paths_cc_tests): ...this. + (diagnostic_path_output_cc_tests): Replace decl with... + (diagnostics_paths_output_cc_tests): ...this. + * simple-diagnostic-path.cc: Clarify that this relates to "tree" + and thus shouldn't be in "diagnostics". Update for above changes. + * simple-diagnostic-path.h: Likewise. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * Makefile.in (OBJS-libcommon): Replace diagnostic-output-spec.o + with diagnostics/output-spec.o. + * diagnostic-output-spec.cc: Move to... + * diagnostics/output-spec.cc: ...here. Update #include for + move of diagnostic-output-spec.h to diagnostics/output-spec.h. + (namespace::diagnostics_output_spec): Replace with... + (namespace diagnostics::output_spec): ...this, removing redundant + prefixes. + (diagnostics_output_spec::gcc_spec_context): Replace with... + (diagnostics::output_spec::dc_spec_context): ...this. + (diagnostic_output_spec_cc_tests): Rename to... + (diagnostics_output_spec_cc_tests): ...this. + * diagnostic-output-spec.h: Move to... + * diagnostics/output-spec.h: ...here and update inclusion guard. + (namespace::diagnostics_output_spec): Replace with... + (namespace diagnostics::output_spec): ...this, removing redundant + prefixes. + (diagnostics_output_spec::gcc_spec_context): Replace with... + (diagnostics::output_spec::dc_spec_context): ...this. + * libgdiagnostics.cc: Update #include for move of + diagnostic-output-spec.h to diagnostics/output-spec.h. + * opts-diagnostic.cc: Likewise. Update for namespace and name + changes. + * selftest-run-tests.cc (selftest::run_tests): Update for renaming + of diagnostic_output_spec_cc_tests to + diagnostics_output_spec_cc_tests. + * selftest.h (diagnostic_output_spec_cc_tests): Rename decl to... + (diagnostics_output_spec_cc_tests): ...this. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * diagnostic-format-html.cc: Update #include for move of + diagnostic-output-file.h to diagnostics/output-file.h. Update for + move of diagnostic_output_file to diagnostics::output_file. + * diagnostic-format-html.h: Likewise. + * diagnostic-format-sarif.cc: Likewise. + * diagnostic-format-sarif.h: Likewise. + * diagnostic-output-spec.cc: Likewise. + * diagnostic-output-spec.h (along): Likewise. + * diagnostic-output-file.h: Move to... + * diagnostics/output-file.h: ...here, updating header guard. + (class diagnostic_output_file): Move to... + (class diagnostics::output_file): ...here. + * libgdiagnostics.cc (sarif_sink::sarif_sink): Update for + move of diagnostic_output_file to diagnostics::output_file. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * diagnostic-format-html.cc: Update #include for move of + diagnostic-client-data-hooks.h to diagnostics/client-data-hooks.h. + * diagnostic-format-sarif.cc: Likewise. Update for move of + diagnostic_client_plugin_info to diagnostics::client_plugin_info. + * diagnostic-format-text.cc: Likewise. + * diagnostic.cc: Likewise. + * diagnostic.h: Likewise. + * diagnostic-client-data-hooks.h: Move to... + * diagnostics/client-data-hooks.h: ...here, updating header guard. + (class diagnostic_client_data_hooks): Move to... + (class diagnostics::client_data_hooks): ...here. Remove redundant + "diagnostics::" prefixes. + (class diagnostic_client_plugin_info): Move to... + (class diagnostics::client_plugin_info): ...here. + * libgdiagnostics.cc: : Update #include for move of + diagnostic-client-data-hooks.h to diagnostics/client-data-hooks.h. + Update for move of diagnostic_client_data_hooks to + diagnostics::client_data_hooks, and for move of + diagnostic_client_version_info to diagnostics::client_version_info. + * tree-diagnostic-client-data-hooks.cc: Likewise. + * tree-diagnostic.cc: Likewise. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * Makefile.in (OBJS-libcommon): Replace edit-context.o with + diagnostics/edit-context.o. + * diagnostic-format-html.cc: Update #include for move + of edit-context.h to diagnostics subdir. + * diagnostic.cc: Likewise. Update for move of edit_context to + diagnostics::edit_context. + * diagnostic.h: Likewise. + * edit-context.cc: Move to... + * diagnostics/edit-context.cc: ...here. Update #include for move + of edit-context.h to diagnostics subdir. Move all code + within namespace diagnostics. + * edit-context.h: Move to... + * diagnostics/edit-context.h: ...here, updating header guard. + Move all code within namespace diagnostics. + * libgdiagnostics.cc: Update #include for move of edit-context.h + to diagnostics subdir. Update for move of edit_context + to diagnostics::edit_context. + * toplev.cc: Update #include for move of edit-context.h + to diagnostics subdir. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * diagnostic-format-html.cc: Update for move of diagnostic_diagram + to diagnostics::diagram. + * diagnostic-format-sarif.cc: Update #include for move of + "diagnostic-diagram.h" to "diagnostics/diagram.h". Update for move + of diagnostic_diagram to diagnostics::diagram. + * diagnostic-format-text.cc: Likewise. + * diagnostic-format-text.h: Update for move of diagnostic_diagram + to diagnostics::diagram. + * diagnostic-format.h: Likewise. + * diagnostic.cc: Update #include for move of + "diagnostic-diagram.h" to "diagnostics/diagram.h". Update for move + of diagnostic_diagram to diagnostics::diagram. + * diagnostic.h: Update for move of diagnostic_diagram to + diagnostics::diagram. + * diagnostic-diagram.h: Move to... + * diagnostics/diagram.h: ...here. + (class diagnostic_diagram): Convert to... + (class diagnostics::diagram): ...this. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * diagnostic-core.h: Update for move of diagnostic_metadata to + diagnostics::metadata. + * diagnostic-format-html.cc: Likewise; also, update #include for + move of "diagnostic-metadata.h" to "diagnostics/metadata.h". + * diagnostic-format-sarif.cc: Likewise. + * diagnostic-format-text.cc: Likewise. + * diagnostic-global-context.cc: Likewise. + * diagnostic.cc: Likewise. + * diagnostic.h: Likewise. + * diagnostic-metadata.h: Move to... + * diagnostics/metadata.h: ...here, updating header guard. + (class diagnostic_metadata): Move to... + (class diagnostics::metadata): ...here. Drop redundant + "diagnostics::" qualifiers. + * libgdiagnostics.cc: : Update #include for move of + "diagnostic-metadata.h" to "diagnostics/metadata.h", and update + for move of diagnostic_metadata to diagnostics::metadata. + * selftest-diagnostic.cc: Update for move of diagnostic_metadata + to diagnostics::metadata. + * selftest-diagnostic.h: Likewise. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * Makefile.in (OBJS-libcommon): Replace + selftest-logical-location.o with + diagnostics/selftest-logical-locations.o. + * diagnostic-client-data-hooks.h: Update #include for move of + "logical-location.h" to "diagnostics/logical-locations.h". + Update for conversion of logical_location_manager to + diagnostics::logical_locations::manager, and of logical_location + to diagnostics::logical_locations::key. + * diagnostic-format-html.cc: Add "using namespace diagnostics;", + and drop now-redundant "diagnostics::" prefixes. + Update for conversion of logical_location_manager to + diagnostics::logical_locations::manager, of logical_location to + diagnostics::logical_locations::key, and of + enum logical_location_kind to + enum diagnostics::logical_locations::kind. + * diagnostic-format-sarif.cc: Update #include for move of + "logical-location.h" to "diagnostics/logical-locations.h". Add + "using namespace diagnostics;", and drop now-redundant + "diagnostics::" prefixes. + Update for conversion of logical_location_manager to + diagnostics::logical_locations::manager, of logical_location to + diagnostics::logical_locations::key, and of + enum logical_location_kind to + enum diagnostics::logical_locations::kind. + * diagnostic-format-sarif.h: Update #include for move of + "logical-location.h" to "diagnostics/logical-locations.h". + Update for conversion of logical_location to + diagnostics::logical_locations::key. + * diagnostic-path-output.cc: Add "using namespace diagnostics;". + Update for conversion of logical_location_manager to + diagnostics::logical_locations::manager, and + of logical_location to diagnostics::logical_locations::key, + * diagnostic-path.cc: Add "using namespace diagnostics;". + Update for conversion of logical_location to + diagnostics::logical_locations::key. + * diagnostic-path.h: Update #include for move of + "logical-location.h" to "diagnostics/logical-locations.h". + Update for conversion of logical_location_manager to + diagnostics::logical_locations::manager, and of logical_location + to diagnostics::logical_locations::key, + * diagnostic.cc: Update #include for move of + "logical-location.h" to "diagnostics/logical-locations.h". + Update for conversion of logical_location_manager to + diagnostics::logical_locations::manager and of + enum logical_location_kind to + enum diagnostics::logical_locations::kind. + * diagnostic.h: Reorganize forward decls. + (class logical_location_manager): Replace this forward decl + with... + (class diagnostics::logical_locations::manager): ...this. + (diagnostic_context::get_logical_location_manager): Update + return type. + * diagnostics/digraphs.h: : Update #include for move of + "logical-location.h" to "diagnostics/logical-locations.h". + Update for conversion of logical_location to + diagnostics::logical_locations::key. + * logical-location.h: Move to... + * diagnostics/logical-locations.h: ...here. + (enum class logical_location_kind): Convert to... + (enum class diagnostics::logical_locations::kind): ... this. + (class logical_location_manager::key): Convert to... + (class diagnostics::logical_locations::key): ... this. + (class logical_location_manager): Convert to... + (class diagnostics::logical_locations::manager): ... this. + (logical_location): Drop this typedef in favor of + diagnostics::logical_locations::key. + * selftest-logical-location.cc: Move to... + * diagnostics/selftest-logical-locations.cc: ...here. + Update #include for move of "selftest-logical-location.h" to + "diagnostics/selftest-logical-locations.h". + Update for conversion of logical_location_manager to + diagnostics::logical_locations::manager, of logical_location to + diagnostics::logical_locations::key, and of + enum logical_location_kind to + enum diagnostics::logical_locations::kind. + (selftest_logical_location_cc_tests): Rename to... + (diagnostics_selftest_logical_locations_cc_tests): ...this. + * selftest-logical-location.h: Move to... + * diagnostics/selftest-logical-locations.h: ...here, updating + include guard. + Update for conversion of logical_location_manager to + diagnostics::logical_locations::manager, of logical_location to + diagnostics::logical_locations::key, and of + enum logical_location_kind to + enum diagnostics::logical_locations::kind. + * diagnostics/state-graphs-to-dot.cc: Add + "using namespace diagnostics;" and drop now-redundant + "diagnostics::" prefixes. + Update for conversion of logical_location_manager to + diagnostics::logical_locations::manager. + * diagnostics/state-graphs.h: Update #include for move of + "logical-location.h" to "diagnostics/logical-locations.h". + Update for conversion of logical_location_manager to + diagnostics::logical_locations::manager, + of logical_location to diagnostics::logical_locations::key. + * libgdiagnostics.cc: Update #include for move of + "logical-location.h" to "diagnostics/logical-locations.h". + Update for conversion of logical_location_manager to + diagnostics::logical_locations::manager, and of logical_location + to diagnostics::logical_locations::key. + * selftest-diagnostic-path.cc: Update for conversion of + logical_location to diagnostics::logical_locations::key. + * selftest-diagnostic-path.h: Update #include for move of + "logical-location.h" to "diagnostics/logical-locations.h". + Update for conversion of logical_location to + diagnostics::logical_locations::key. + * selftest-run-tests.cc (selftest::run_tests): Update for + renaming of selftest_logical_location_cc_tests to + diagnostics_selftest_logical_locations_cc_tests. + * selftest.h: Likewise. + * simple-diagnostic-path.h: Update for conversion of + logical_location to diagnostics::logical_locations::key. + * tree-diagnostic-client-data-hooks.cc: Update for conversion of + logical_location_manager to + diagnostics::logical_locations::manager, and of logical_location + to diagnostics::logical_locations::key. + * tree-logical-location.cc: Update for conversions. + Update for conversion of logical_location to + diagnostics::logical_locations::key, and of + enum logical_location_kind to + enum diagnostics::logical_locations::kind. + * tree-logical-location.h: Update #include for move of + "logical-location.h" to "diagnostics/logical-locations.h". + Update for conversion of logical_location_manager to + diagnostics::logical_locations::manager, of logical_location + to diagnostics::logical_locations::key, and of + enum logical_location_kind to + enum diagnostics::logical_locations::kind. + +2025-07-25 David Malcolm <dmalcolm@redhat.com> + + * Makefile.in (OBJS-libcommon): Rename diagnostic-digraphs.o to + diagnostics/digraphs.o. Rename diagnostic-state-graphs.o to + diagnostics/state-graphs.o. Rename diagnostic-state-to-dot.o to + diagnostics/state-graphs-to-dot.o. + (PLUGIN_HEADERS): Add $(srcdir)/diagnostics/*.h. + (install-plugin:): Likewise. + * configure: Regenerate. + * configure.ac (gccdepdir): Add "diagnostics" to directories. + * diagnostic-format-html.cc: Update #includes for move of + "diagnostic-digraphs.h" to "diagnostics/digraphs.h" and of + move of "diagnostic-state-graphs.h" to + "diagnostics/state-graphs.h". + * diagnostic-format-sarif.cc: Likewise. + * diagnostic-path.cc: Likewise for state-graphs.h + * diagnostic-digraphs.cc: Move... + * diagnostics/digraphs.cc: ...to here. Update #include + for renaming of digraphs.h. + (selftest::diagnostic_digraphs_cc_tests): Rename to... + (selftest::diagnostics_digraphs_cc_tests): ...this. + * diagnostic-digraphs.h: Move... + * diagnostics/digraphs.h: ...to here, updating header guard. + * diagnostic-state-to-dot.cc: Move... + * diagnostics/state-graphs-to-dot.cc: ...to here. Update #include + of state-graphs.h. + * diagnostic-state-graphs.cc: Move... + * diagnostics/state-graphs.cc: ...to here. Update #include + of state-graphs.h. + (selftest::diagnostic_state_graphs_cc_tests): Rename... + (selftest::diagnostics_state_graphs_cc_tests): ...to this. + * diagnostic-state-graphs.h: Move... + * diagnostics/state-graphs.h: ...to here, updating header guard. + * libgdiagnostics.cc: Update #includes for move of + "diagnostic-digraphs.h" to "diagnostics/digraphs.h" and of + move of "diagnostic-state-graphs.h" to + "diagnostics/state-graphs.h". + * selftest-run-tests.cc (selftest::run_tests): Update for + function renamings that reflect file renamings. + * selftest.h (selftest::diagnostic_digraphs_cc_tests): Rename + to... + (selftest::diagnostics_digraphs_cc_tests): ...this. + (selftest::diagnostic_state_graphs_cc_tests): Rename... + (selftest::diagnostics_state_graphs_cc_tests): ...to this. + +2025-07-25 Richard Biener <rguenther@suse.de> + + * tree-vectorizer.h (vect_get_vec_defs): Remove overload + with operand vector type. Remove stmt_vec_info and + ncopies argument. + * tree-vect-stmts.cc (vect_get_vec_defs): Likewise. + (vectorizable_conversion): Adjust by not passing in + vector types, stmt_vec_info and ncopies. + (vectorizable_bswap): Likewise. + (vectorizable_assignment): Likewise. + (vectorizable_shift): Likewise. + (vectorizable_operation): Likewise. + (vectorizable_scan_store): Likewise. + (vectorizable_store): Likewise. + (vectorizable_condition): Likewise. + (vectorizable_comparison_1): Likewise. + * tree-vect-loop.cc (vect_transform_reduction): Likewise. + (vect_transform_lc_phi): Likewise. + +2025-07-25 Richard Biener <rguenther@suse.de> + + * tree-vectorizer.h (vect_is_simple_use): Remove stmt-info + with vectype output overload and remove stmt-info argument + from SLP based API. + * tree-vect-loop.cc (vectorizable_lane_reducing): Remove + unused def_stmt_info output argument to vect_is_simple_use. + Adjust. + * tree-vect-stmts.cc (get_group_load_store_type): Get + the gather/scatter offset vector type from the SLP child. + (vect_check_scalar_mask): Remove stmt_info argument. Adjust. + (vect_check_store_rhs): Likewise. + (vectorizable_call): Likewise. + (vectorizable_simd_clone_call): Likewise. + (vectorizable_conversion): Likewise. + (vectorizable_assignment): Likewise. + (vectorizable_shift): Likewise. + (vectorizable_operation): Likewise. + (vectorizable_load): Likewise. + (vect_is_simple_cond): Remove stmt_info argument. Adjust. + (vectorizable_condition): Likewise. + (vectorizable_comparison_1): Likewise. + (vectorizable_store): Likewise. + (vect_is_simple_use): Remove overload and non-SLP path. + +2025-07-25 Richard Biener <rguenther@suse.de> + + * tree-vect-stmts.cc (vect_model_simple_cost): Removed code + when no SLP node is passed, remove then unused dt and ndts + parameters and fix the number of vector stmts calculation. + (vectorizable_call): Adjust. + (vectorizable_simd_clone_call): Likewise. + (vectorizable_conversion): Likewise. + (vectorizable_assignment): Likewise. + (vectorizable_shift): Likewise. + (vectorizable_operation): Likewise. + (vectorizable_condition): Likewise. + (vectorizable_comparison_1): Likewise. + +2025-07-25 Robin Dapp <rdapp@ventanamicro.com> + + * config/riscv/riscv-vector-costs.cc (get_live_range): + Move compute_local_program_points to cost class. + (variable_vectorized_p): Add slp node parameter. + (need_additional_vector_vars_p): Move from here... + (costs::need_additional_vector_vars_p): ... to here and add slp + parameter. + (compute_estimated_lmul): Move update_local_live_ranges to cost + class. + (has_unexpected_spills_p): Move from here... + (costs::has_unexpected_spills_p): ... to here. + (costs::record_lmul_spills): New function. + (costs::add_stmt_cost): Add stmt_info, slp mapping. + (costs::finish_cost): Analyze loop. + * config/riscv/riscv-vector-costs.h: Move declarations to class. + +2025-07-25 Richard Biener <rguenther@suse.de> + + * tree-vect-loop.cc (vect_analyze_loop_2): Get vectype + from the SLP node. + (vectorize_fold_left_reduction): Likewise. + (vect_transform_reduction): Likewise. + (vect_transform_cycle_phi): Likewise. + (vect_transform_lc_phi): Likewise. + * tree-vect-slp.cc (vect_analyze_slp): Likewise. + * tree-vect-stmts.cc (vect_truncate_gather_scatter_offset): + Pass in vectype and use that. + (vect_use_strided_gather_scatters_p): Likewise. + (get_group_load_store_type): Adjust. + (vect_check_scalar_mask): We always have a SLP node. + Use vectype from the SLP node. + (vect_check_store_rhs): Likewise. + (vect_build_one_gather_load_call): Pass in the vector type + and use that. + (vect_get_strided_load_store_ops): Likewise. + (vectorizable_store): Adjust. + (vectorizable_load): Use the vector type from the SLP node + and adjust. + +2025-07-25 Richard Biener <rguenther@suse.de> + + * target.h (stmt_vectype): Remove. + * tree-vect-stmts.cc (stmt_vectype): Likewise. + +2025-07-25 Christoph Müllner <christoph.muellner@vrull.eu> + + * config/riscv/riscv.cc (enum riscv_privilege_levels): Remove USER_MODE. + (riscv_handle_type_attribute): Remove "user" interrupts. + (riscv_expand_epilogue): Likewise. + (riscv_get_interrupt_type): Likewise. + * config/riscv/riscv.md (riscv_uret): Remove URET pattern. + * doc/extend.texi: Remove documentation of user interrupts. + +2025-07-25 Richard Biener <rguenther@suse.de> + + * tree-vectorizer.h (_stmt_vec_info::vec_stmts): Remove. + (STMT_VINFO_VEC_STMTS): Likewise. + * tree-vectorizer.cc (vec_info::new_stmt_vec_info): Do not + initialize it. + (vec_info::free_stmt_vec_info): Nor free it. + * tree-vect-data-refs.cc (vect_vfa_access_size): Remove + check on STMT_VINFO_VEC_STMTS. + +2025-07-25 Richard Biener <rguenther@suse.de> + + * tree-vectorizer.h (vect_transform_grouped_load): Remove. + (vect_record_grouped_load_vectors): Likewise. + * tree-vect-data-refs.cc (vect_permute_load_chain): Likewise. + (vect_shift_permute_load_chain): Likewise. + (vect_transform_grouped_load): Likewise. + (vect_record_grouped_load_vectors): Likewise. + * tree-vect-stmts.cc (vectorizable_load): Remove comments + about load interleaving. + +2025-07-25 Richard Biener <rguenther@suse.de> + + * tree-vectorizer.h (vect_permute_store_chain): Remove. + * tree-vect-data-refs.cc (vect_permute_store_chain): Likewise. + * tree-vect-stmts.cc (vectorizable_store): Remove comment + about store interleaving. + +2025-07-25 Richard Biener <rguenther@suse.de> + + * tree-vectorizer.h (vect_get_vec_defs_for_operand): Remove. + * tree-vect-stmts.cc (vect_get_vec_defs_for_operand): Likewise. + (vect_get_vec_defs): Remove non-SLP path. + (check_load_store_for_partial_vectors): We always have an + SLP node. + (vect_check_store_rhs): Likewise. + (vect_get_gather_scatter_ops): Likewise. + (vect_create_vectorized_demotion_stmts): Likewise. + (vectorizable_store): Adjust. + (vectorizable_load): Likewise. + +2025-07-25 Richard Biener <rguenther@suse.de> + + * tree-vectorizer.h (VMAT_CONTIGUOUS_PERMUTE): Remove. + * tree-vect-stmts.cc (check_load_store_for_partial_vectors): + Remove checks on VMAT_CONTIGUOUS_PERMUTE. + (vectorizable_load): Likewise. + (vectorizable_store): Likewise. Prune dead code. + +2025-07-25 Richard Biener <rguenther@suse.de> + + * tree-vect-stmts.cc (vectorizable_store): Remove trivially + dead code. + +2025-07-25 Tobias Burnus <tburnus@baylibre.com> + + * config/gcn/gcn-opts.h (TARGET_NO_MANUAL_NOPS, + TARGET_CDNA3_NOPS): Define. + * config/gcn/gcn.md (define_attr "laneselect): Change 'yes' to + 'read' and 'write'. + (define_attr "flatmemaccess"): Add with values store, storex34, + load, atomic, atomicwait, cmpswapx2, and no. Replacing ... + (define_attr "delayeduse"): Remove. + (define_attr "transop"): Add with values yes and no. + (various insns): Update 'laneselect', add flatmemaccess and transop, + remove delayeduse; fixing an issue for s_load_dwordx4 vs. + flat_store_dwordx4 related to delayeduse (now: flatmemaccess). + * config/gcn/gcn-valu.md: Update laneselect attribute and add + flatmemaccess. + * config/gcn/gcn.cc (gcn_cmpx_insn_p): New. + (gcn_md_reorg): Update for MI300 to add additional s_nop. + Skip s_nop-insertion part for RDNA{2,3}; add "VALU writes EXEC + followed by VALU DPP" unconditionally for CDNA2/CDNA3/GCN5. + +2025-07-25 Stefan Schulze Frielinghaus <stefansf@gcc.gnu.org> + + PR middle-end/121214 + * genpreds.cc (constraint_max_namelen): Delete. + (write_tm_preds_h): Always write insn_constraint_len() and + define CONSTRAINT_LEN to it, i.e., remove guard + constraint_max_namelen>1. Remove outer guard + constraint_max_namelen>0 and re-indent. + (write_insn_preds_c): Remove guard + constraint_max_namelen>0 and re-indent. + +2025-07-25 Christoph Müllner <christoph.muellner@vrull.eu> + + * config/riscv/riscv.cc (enum riscv_privilege_levels): Add + RNMI_MODE. + (riscv_handle_type_attribute): Handle 'rnmi' interrupt attribute. + (riscv_expand_epilogue): Generate nmret for RNMI handlers. + (riscv_get_interrupt_type): Handle 'rnmi' interrupt attribute. + * config/riscv/riscv.md (riscv_rnmi): Add nmret INSN. + * doc/extend.texi: Add documentation for 'rnmi' interrupt attribute. + +2025-07-24 Richard Biener <rguenther@suse.de> + + * tree-vectorizer.h (vectorizable_induction): Remove + gimple **vec_stmt argument. + (vectorizable_phi): Likewise. + (vectorizable_recurr): Likewise. + (vectorizable_early_exit): Likewise. + * tree-vect-loop.cc (vectorizable_phi): Likewise and adjust. + (vectorizable_recurr): Likewise. + (vectorizable_nonlinear_induction): Likewise. + (vectorizable_induction): Likewise. + * tree-vect-stmts.cc (vectorizable_bswap): Likewise. + (vectorizable_call): Likewise. + (vectorizable_simd_clone_call): Likewise. + (vectorizable_conversion): Likewise. + (vectorizable_assignment): Likewise. + (vectorizable_shift): Likewise. + (vectorizable_operation): Likewise. + (vectorizable_store): Likewise. + (vectorizable_load): Likewise. + (vectorizable_condition): Likewise. + (vectorizable_comparison_1): Likewise. + (vectorizable_comparison): Likewise. + (vectorizable_early_exit): Likewise. + (vect_analyze_stmt): Adjust. + (vect_transform_stmt): Likewise. + * tree-vect-slp.cc (vect_slp_analyze_operations): Adjust. + (vectorize_slp_instance_root_stmt): Likewise. + +2025-07-24 Andrew Pinski <quic_apinski@quicinc.com> + + * doc/cpp.texi (#ifdef): Correct typo. + +2025-07-24 Richard Biener <rguenther@suse.de> + + * tree-vect-stmts.cc (vectorizable_early_exit): Remove non-SLP + path. + +2025-07-24 Richard Biener <rguenther@suse.de> + + * tree-vectorizer.h (_stmt_vec_info::simd_clone_info): Remove. + (STMT_VINFO_SIMD_CLONE_INFO): Likewise. + * tree-vectorizer.cc (vec_info::free_stmt_vec_info): Do not + release it. + * tree-vect-stmts.cc (vectorizable_simd_clone_call): Remove + non-SLP path. + +2025-07-24 Robin Dapp <rdapp@ventanamicro.com> + + * internal-fn.cc (internal_fn_len_index): Adjust indices for new + alias_ptr param. + (internal_fn_else_index): Ditto. + (internal_fn_mask_index): Ditto. + (internal_fn_stored_value_index): Ditto. + (internal_fn_alias_ptr_index): Ditto. + (internal_fn_offset_index): Ditto. + (internal_fn_scale_index): Ditto. + (internal_gather_scatter_fn_supported_p): Ditto. + * internal-fn.h (internal_fn_alias_ptr_index): Ditto. + * optabs-query.cc (supports_vec_gather_load_p): Ditto. + * tree-vect-data-refs.cc (vect_check_gather_scatter): Add alias + pointer. + * tree-vect-patterns.cc (vect_recog_gather_scatter_pattern): Add + alias pointer. + * tree-vect-slp.cc (vect_get_operand_map): Adjust for alias + pointer. + * tree-vect-stmts.cc (vect_truncate_gather_scatter_offset): Add + alias pointer and misalignment handling. + (get_load_store_type): Move from here... + (get_group_load_store_type): ...To here. + (vectorizable_store): Add alias pointer. + (vectorizable_load): Ditto. + * tree-vectorizer.h (struct gather_scatter_info): Ditto. + +2025-07-24 Robin Dapp <rdapp@ventanamicro.com> + + * config/aarch64/aarch64.cc (aarch64_builtin_support_vector_misalignment): + Return true for gather/scatter. + * config/arm/arm.cc (arm_builtin_support_vector_misalignment): + Ditto. + * config/epiphany/epiphany.cc (epiphany_support_vector_misalignment): + Ditto. + * config/gcn/gcn.cc (gcn_vectorize_support_vector_misalignment): + Ditto. + * config/loongarch/loongarch.cc (loongarch_builtin_support_vector_misalignment): + Ditto. + * config/riscv/riscv.cc (riscv_support_vector_misalignment): + Add gather/scatter argument. + * config/rs6000/rs6000.cc (rs6000_builtin_support_vector_misalignment): + Return true for gather/scatter. + * config/s390/s390.cc (s390_support_vector_misalignment): + Ditto. + * doc/tm.texi: Add argument. + * target.def: Ditto. + * targhooks.cc (default_builtin_support_vector_misalignment): + Ditto. + * targhooks.h (default_builtin_support_vector_misalignment): + Ditto. + * tree-vect-data-refs.cc (vect_supportable_dr_alignment): + Ditto. + +2025-07-24 Robin Dapp <rdapp@ventanamicro.com> + + * tree-vect-slp.cc (GATHER_SCATTER_OFFSET): New define. + (vect_get_and_check_slp_defs): Use. + * tree-vectorizer.h (GATHER_SCATTER_LEGACY_P): New define. + (GATHER_SCATTER_IFN_P): Ditto. + (GATHER_SCATTER_EMULATED_P): Ditto. + * tree-vect-stmts.cc (vectorizable_store): Use. + (vectorizable_load): Use. + +2025-07-24 Robin Dapp <rdapp@ventanamicro.com> + + * internal-fn.cc (expand_scatter_store_optab_fn): Use new + function. + (expand_gather_load_optab_fn): Ditto. + (internal_fn_offset_index): Ditto. + (internal_fn_scale_index): Ditto. + * internal-fn.h (internal_fn_offset_index): New function. + (internal_fn_scale_index): Ditto. + * tree-vect-data-refs.cc (vect_describe_gather_scatter_call): + Use new function. + +2025-07-24 Alfie Richards <alfie.richards@arm.com> + + * tree-vect-data-refs.cc (vect_create_data_ref_ptr): Remove unnecessary + casts to aggr_ptr_type. + +2025-07-24 Richard Biener <rguenther@suse.de> + + * tree-vect-stmts.cc (vectorizable_comparison_1): Remove + non-SLP path. + (vectorizable_comparison): Likewise. + +2025-07-24 Richard Biener <rguenther@suse.de> + + * tree-vect-stmts.cc (vectorizable_condition): Remove + non-SLP paths. + +2025-07-24 Richard Biener <rguenther@suse.de> + + * tree-vect-stmts.cc (vectorizable_scan_store): Remove + non-SLP path and unused parameters. + (vectorizable_store): Adjust. + +2025-07-24 Richard Biener <rguenther@suse.de> + + * tree-vect-stmts.cc (vectorizable_shift): Remove non-SLP paths. + +2025-07-24 Richard Biener <rguenther@suse.de> + + * tree-vect-stmts.cc (vectorizable_assignment): Remove + non-SLP paths. + +2025-07-24 Richard Biener <rguenther@suse.de> + + * tree-vect-stmts.cc (vectorizable_call): Remove non-SLP path. + +2025-07-24 Richard Biener <rguenther@suse.de> + + * tree-vect-stmts.cc (vectorizable_bswap): Remove non-SLP path. + +2025-07-24 Richard Biener <rguenther@suse.de> + + * tree-vect-loop.cc (vectorizable_recurr): Remove non-SLP path. + +2025-07-24 Spencer Abson <spencer.abson@arm.com> + + * config/aarch64/aarch64-sve.md (*cond_<optab><mode>_2_relaxed): + Extend from SVE_FULL_F_B16B16 to SVE_F_B16B16. + (*cond_<optab><mode>_3_relaxed): Likewise. + (*cond_<optab><mode>_any_relaxed): Likwise. + (*cond_<optab><mode>_any_const_relaxed): Extend from SVE_FULL_F + to SVE_F. + (*cond_add<mode>_2_const_relaxed): Likewise. + (*cond_add<mode>_any_const_relaxed): Likewise. + (*cond_sub<mode>_3_const_relaxed): Likewise. + (*cond_sub<mode>_const_relaxed): Likewise. + +2025-07-24 Spencer Abson <spencer.abson@arm.com> + + * config/aarch64/aarch64-sve.md: (@aarch64_sve_<optab><mode>): + Extend from SVE_FULL_F to SVE_F, use aarch64_predicate_operand. + (@aarch64_frecpe<mode>): Extend from SVE_FULL_F to SVE_F. + (@aarch64_frecps<mode>): Likewise. + (div<mode>3): Likewise, use aarch64_sve_fp_pred. + * config/aarch64/iterators.md: Add warnings above SVE_FP_UNARY + and SVE_FP_BINARY. + +2025-07-24 Spencer Abson <spencer.abson@arm.com> + + * config/aarch64/aarch64-sve.md (<optab><mode>3): Extend from + SVE_FULL_F to SVE_F, use aarch64_sve_fp_pred. + (*post_ra_<sve_fp_op><mode>3): Extend from SVE_FULL_F to SVE_F. + (@aarch64_pred_<optab><mode>): Extend from SVE_FULL_F to SVE_F, + use aarch64_predicate_operand (ADD/SUB/MUL/MAX/MIN). + (split for using unpredicated insns): Move SVE_RELAXED_GP into + the pattern, rather than testing for it in the condition. + * config/aarch64/aarch64-sve2.md (@aarch64_pred_<optab><mode>): + Extend from VNx8BF_ONLY to SVE_BF. + +2025-07-24 Pan Li <pan2.li@intel.com> + + * config/riscv/autovec-opt.md (*uavg_floor_vx_<mode>): Rename + from... + (*<sat_op_v_vdup>_vx_<mode>): Rename to... + (*<sat_op_vdup_v>_vx_<mode>): Rename to... + * config/riscv/riscv-protos.h (enum insn_flags): Add vxrm + RNE, ROD type. + (enum insn_type): Add RNE_P, ROD_P type. + (expand_vx_binary_vxrm_vec_vec_dup): Add new func decl. + (expand_vx_binary_vxrm_vec_dup_vec): Ditto. + * config/riscv/riscv-v.cc (get_insn_type_by_vxrm_val): Add + helper to get insn type by vxrm value. + (expand_vx_binary_vxrm_vec_vec_dup): Add new func impl + to expand vec + vec_dup pattern. + (expand_vx_binary_vxrm_vec_dup_vec): Ditto but for + vec_dup + vec pattern. + * config/riscv/vector-iterators.md: Add helper iterator + for sat vx combine. + +2025-07-23 Spencer Abson <spencer.abson@arm.com> + + * config/aarch64/aarch64-sve.md (*cond_<optab><mode>_2_relaxed): + Extend from SVE_FULL_F to SVE_F. + (*cond_<optab><mode>_any_relaxed): Likewise. + +2025-07-23 Spencer Abson <spencer.abson@arm.com> + + * config/aarch64/aarch64-sve.md (<optab><mode>2): Replace use of + aarch64_ptrue_reg with aarch64_sve_fp_pred. + (@aarch64_pred_<optab><mode>): Extend from SVE_FULL_F to SVE_F, + and use aarch64_predicate_operand. + * config/aarch64/iterators.md: Split FABS/FNEG out of + SVE_COND_FP_UNARY (into new SVE_COND_FP_UNARY_BITWISE). + +2025-07-23 Spencer Abson <spencer.abson@arm.com> + + * config/aarch64/aarch64-sve.md + (*cond_<optab>_nontrunc<SVE_PARTIAL_F:mode><SVE_HSDI:mode>_relaxed): + New FCVT/SEL combiner pattern. + (*cond_<optab>_trunc<VNx2DF_ONLY:mode><VNx2SI_ONLY:mode>_relaxed): + New FCVTZ{S,U}/SEL combiner pattern. + (*cond_<optab>_nonextend<SVE_HSDI:mode><SVE_PARTIAL_F:mode>_relaxed): + New {S,U}CVTF/SEL combiner pattern. + (*cond_<optab>_trunc<SVE_SDF:mode><SVE_PARTIAL_HSF:mode>): + New FCVT/SEL combiner pattern. + (*cond_<optab>_nontrunc<SVE_PARTIAL_HSF:mode><SVE_SDF:mode>_relaxed): + New FCVTZ{S,U}/SEL combiner pattern. + * config/aarch64/iterators.md: New mode iterator for VNx2SI. + +2025-07-23 Robin Dapp <rdapp@ventanamicro.com> + + PR target/121073 + * config/riscv/autovec-opt.md: Use new helpers. + * config/riscv/autovec.md: Ditto. + * config/riscv/predicates.md (strided_broadcast_mask_operand): + New predicate. + (strided_broadcast_operand): Ditto. + (any_broadcast_operand): Ditto. + * config/riscv/riscv-protos.h (expand_broadcast): Declare. + (expand_set_first): Ditto. + (expand_set_first_tu): Ditto. + (strided_broadcast_p): Ditto. + * config/riscv/riscv-string.cc (expand_vec_setmem): Use new + helpers. + * config/riscv/riscv-v.cc (expand_broadcast): New functionk. + (expand_set_first): Ditto. + (expand_set_first_tu): Ditto. + (expand_const_vec_duplicate): Use new helpers. + (expand_const_vector_duplicate_repeating): Ditto. + (expand_const_vector_duplicate_default): Ditto. + (sew64_scalar_helper): Ditto. + (expand_vector_init_merge_repeating_sequence): Ditto. + (expand_reduction): Ditto. + (strided_broadcast_p): New function. + (whole_reg_to_reg_move_p): Use new helpers. + * config/riscv/riscv-vector-builtins-bases.cc: Use either + broadcast or strided broadcast. + * config/riscv/riscv-vector-builtins.cc (function_expander::use_ternop_insn): + Ditto. + (function_expander::use_widen_ternop_insn): Ditto. + (function_expander::use_scalar_broadcast_insn): Ditto. + * config/riscv/riscv-vector-builtins.h: Declare scalar + broadcast. + * config/riscv/vector.md (*pred_broadcast<mode>): Split into + regular and strided broadcast. + (*pred_broadcast<mode>_zvfh): Split. + (pred_broadcast<mode>_zvfh): Ditto. + (*pred_broadcast<mode>_zvfhmin): Ditto. + (@pred_strided_broadcast<mode>): Ditto. + (*pred_strided_broadcast<mode>): Ditto. + (*pred_strided_broadcast<mode>_zvfhmin): Ditto. + +2025-07-23 Andrew Pinski <quic_apinski@quicinc.com> + + PR target/120119 + * config/aarch64/cortex-a57-fma-steering.cc (func_fma_steering::analyze): + Skip if renaming fails. + +2025-07-23 Richard Biener <rguenther@suse.de> + + PR tree-optimization/121220 + * tree-ssa-sink.cc (statement_sink_location): For stores + handle sinking to paths ending in a store. Skip loads + that do not use the store. + +2025-07-23 Martin Jambor <mjambor@suse.cz> + + PR tree-optimization/119085 + * tree-sra.cc (sort_and_splice_var_accesses): Prevent total + scalarization if two incompatible aggregates access the same place. + +2025-07-23 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * config.gcc <sparc*-*-solaris2*> (with_cpu): Default to ultrasparc3. + +2025-07-23 Richard Biener <rguenther@suse.de> + + * config/aarch64/aarch64.cc (aarch64_vector_costs::add_stmt_cost): + Check vectype is non-NULL before accessing it. + +2025-07-23 Richard Biener <rguenther@suse.de> + + PR middle-end/121216 + * expr.cc (constant_byte_string): Check the string type + size fits an uhwi before converting to uhwi. + +2025-07-22 Andrew Pinski <quic_apinski@quicinc.com> + + PR middle-end/109267 + * tree-cfgcleanup.cc (execute_cleanup_cfg_post_optimizing): If the first + non debug statement in the first (and only) basic block is a call + to __builtin_unreachable change it to a call to __builtin_trap or an + infinite loop. + +2025-07-22 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> + + * config/xtensa/xtensa.cc (xtensa_is_insn_L32R_p): + Rewrite to capture insns that could be L32R machine instructions + wherever possible. + (xtensa_rtx_costs): Fix to consider that moves larger than a + natural word can take multiple L32R machine instructions. + (constantpool_address_p): Cosmetics. + * config/xtensa/xtensa.md (movdi_internal, movdf_internal): + Add missing insn attributes. + +2025-07-22 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> + + * config/xtensa/xtensa.md + (movsi_internal, movhi_internal, movsf_internal): + Change the value of the "type" attribute from "move" to "load" + when the source operand constraint is "Y". + +2025-07-22 Karl Meakin <karl.meakin@arm.com> + + * tree-vect-data-refs.cc (vect_check_gather_scatter): Swap + `base` and `off` in more scenarios. Also assert at the end of + the function that `base` and `off` are loop-invariant and not + loop-invariant respectively. + +2025-07-22 Jeff Law <jlaw@ventanamicro.com> + + * config/riscv/generic-vector-ooo.md: Restrict insn reservations to + generic_ooo and generic tuning models. + +2025-07-22 Richard Biener <rguenther@suse.de> + + PR tree-optimization/121202 + * tree-vect-slp.cc (vect_schedule_slp_node): Do not take + an out-of-region stmt as "last". + +2025-07-22 Stefan Schulze Frielinghaus <stefansf@gcc.gnu.org> + + * genpreds.cc (write_insn_constraint_len): Replace rawmemchr by + a loop. + +2025-07-21 Jeff Law <jlaw@ventanamicro.com> + + * config/riscv/mips-p8700.md: Add support for "ghost" insn types. + * config/riscv/xiangshan.md: Add support for "sf_vc" and "sf_vc_se" + insn types. + +2025-07-21 Andrew Pinski <quic_apinski@quicinc.com> + + PR tree-optimization/110949 + PR tree-optimization/95906 + * match.pd (cmp - 1): New pattern. + +2025-07-21 Andreas Schwab <schwab@suse.de> + + PR target/121121 + * config/riscv/riscv.cc (riscv_allocate_and_probe_stack_space): + Use temp2 instead of temp1 for the CFA note. + +2025-07-21 Pan Li <pan2.li@intel.com> + + * config/riscv/vector.md: Allow VLS DImode for sat_op vx pattern. + +2025-07-21 Pan Li <pan2.li@intel.com> + + * config/riscv/autovec-opt.md (*uavg_floor_vx_<mode>): Add + pattern for vaaddu.vx combine. + * config/riscv/riscv.cc (get_vector_binary_rtx_cost): Add UNSPEC + handling for UNSPEC_VAADDU. + (riscv_rtx_costs): Ditto. + +2025-07-21 Kyrylo Tkachov <ktkachov@nvidia.com> + + * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set_zero<mode>): + Enable only when optimizing for size. + +2025-07-21 Kyrylo Tkachov <ktkachov@nvidia.com> + + * config/aarch64/aarch64.cc (aarch64_rtx_costs): Add extra_cost values + only when speed is true for CONST_VECTOR, VEC_DUPLICATE, VEC_SELECT + cases. + * config/aarch64/aarch64-cost-tables.h (qdf24xx_extra_costs, + thunderx_extra_costs, thunderx2t99_extra_costs, + thunderx3t110_extra_costs, tsv110_extra_costs, a64fx_extra_costs, + ampere1_extra_costs, ampere1a_extra_costs, ampere1b_extra_costs): + Reduce cost of movi, dup, extract fields by COSTS_N_INSNS (1). + * config/arm/aarch-cost-tables.h (generic_extra_costs, + cortexa53_extra_costs, cortexa57_extra_costs, cortexa76_extra_costs, + exynosm1_extra_costs, xgene1_extra_costs): Likewise. + +2025-07-21 Richard Biener <rguenther@suse.de> + + PR tree-optimization/121194 + * tree-vect-loop.cc (vectorizable_lc_phi): Verify + vector types are compatible. + +2025-07-21 Andrew Stubbs <ams@baylibre.com> + + * config/gcn/gcn-valu.md (gather_load<mode><vndi>): New. + (scatter_store<mode><vndi>): New. + (mask_gather_load<mode><vndi>): New. + (mask_scatter_store<mode><vndi>): New. + * config/gcn/gcn.cc (gcn_expand_scaled_offsets): Support DImode. + +2025-07-21 Andrew Stubbs <ams@baylibre.com> + + * config/gcn/gcn.cc (GEN_VNM_NOEXEC): Use USE_QHF. + (GEN_VNM): Likewise, and call for new ashl and mul variants. + +2025-07-21 Andrew Stubbs <ams@baylibre.com> + + * config/gcn/gcn-valu.md (add<mode>3_dup): New. + (add<mode>3_dup_exec): New. + (<su>mul<mode>3_highpart_dup<exec>): New. + (mul<mode>3_dup): Move the vec_duplicate to operand 1. + (mul<mode>3_dup_exec): New. + (vec_series<mode>): Adjust call to gen_mul<mode>3_dup. + * config/gcn/gcn.cc (gcn_expand_vector_init): Likewise. + +2025-07-21 Stefan Schulze Frielinghaus <stefansf@gcc.gnu.org> + + * genoutput.cc (main): Emit function + verify_reg_names_in_constraints() for run-time validation. + (mdep_constraint_len): Deal with hard register constraints. + * output.h (verify_reg_names_in_constraints): New function + declaration. + * toplev.cc (backend_init): If checking is enabled, call into + verify_reg_names_in_constraints(). + +2025-07-21 Stefan Schulze Frielinghaus <stefansf@gcc.gnu.org> + + * cfgexpand.cc (n_occurrences): Move this ... + (check_operand_nalternatives): and this ... + (expand_asm_stmt): and the call to gimplify.cc. + * config/s390/s390.cc (s390_md_asm_adjust): Pass null pointer to + parse_{input,output}_constraint(). + * gimple-walk.cc (walk_gimple_asm): Pass null pointer to + parse_{input,output}_constraint(). + (walk_stmt_load_store_addr_ops): Ditto. + * gimplify-me.cc (gimple_regimplify_operands): Ditto. + * gimplify.cc (num_occurrences): Moved from cfgexpand.cc. + (num_alternatives): Ditto. + (gimplify_asm_expr): Deal with hard register constraints. + * stmt.cc (eliminable_regno_p): New helper. + (hardreg_ok_p): Perform a similar check as done in + make_decl_rtl(). + (parse_output_constraint): Add parameter for gimplify_reg_info + and validate hard register constrained operands. + (parse_input_constraint): Ditto. + * stmt.h (class gimplify_reg_info): Forward declaration. + (parse_output_constraint): Add parameter. + (parse_input_constraint): Ditto. + * tree-ssa-operands.cc + (operands_scanner::get_asm_stmt_operands): Pass null pointer + to parse_{input,output}_constraint(). + * tree-ssa-structalias.cc (find_func_aliases): Pass null pointer + to parse_{input,output}_constraint(). + * varasm.cc (assemble_asm): Pass null pointer to + parse_{input,output}_constraint(). + * gimplify_reg_info.h: New file. + +2025-07-21 Stefan Schulze Frielinghaus <stefansf@gcc.gnu.org> + + * config/cris/cris.cc (cris_md_asm_adjust): Deal with hard + register constraint. + * config/i386/i386.cc (map_egpr_constraints): Ditto. + * config/s390/s390.cc (f_constraint_p): Ditto. + * doc/extend.texi: Document hard register constraints. + * doc/md.texi: Ditto. + * function.cc (match_asm_constraints_2): Have a unique pseudo + for each operand with a hard register constraint. + (pass_match_asm_constraints::execute): Calling into new helper + match_asm_constraints_2(). + * genoutput.cc (mdep_constraint_len): Return the length of a + hard register constraint. + * genpreds.cc (write_insn_constraint_len): Support hard register + constraints for insn_constraint_len(). + * ira.cc (valid_replacement_for_asm_input_p_1): New helper. + (valid_replacement_for_asm_input_p): New helper. + (decrease_live_ranges_number): Similar to + match_asm_constraints_2() ensure that each operand has a unique + pseudo if constrained by a hard register. + * lra-constraints.cc (process_alt_operands): Install hard + register filter according to constraint. + * recog.cc (asm_operand_ok): Accept register type for hard + register constrained asm operands. + (constrain_operands): Validate hard register constraints. + * stmt.cc (decode_hard_reg_constraint): Parse a hard register + constraint into the corresponding register number or bail out. + (parse_output_constraint): Parse hard register constraint and + set *ALLOWS_REG. + (parse_input_constraint): Ditto. + * stmt.h (decode_hard_reg_constraint): Declaration of new + function. + +2025-07-21 Richard Biener <rguenther@suse.de> + + * tree-vectorizer.h (vect_analyze_data_refs): Remove min_vf + output. + * tree-vect-data-refs.cc (vect_analyze_data_refs): Likewise. + * tree-vect-loop.cc (vect_analyze_loop_2): Remove early + out based on bogus min_vf. + * tree-vect-slp.cc (vect_slp_analyze_bb_1): Adjust. + +2025-07-20 Pan Li <pan2.li@intel.com> + + * config/riscv/autovec.md: Add (const_int 1) as the op2 of + ashiftrt. + +2025-07-19 Dimitar Dimitrov <dimitar@dinux.eu> + + PR target/121124 + * config/pru/pru-pragma.cc (pru_pragma_ctable_entry): Handle the + ctable base address as signed 32-bit value, and sign-extend to + HOST_WIDE_INT. + * config/pru/pru-protos.h (struct pru_ctable_entry): Store the + ctable base address as signed. + (pru_get_ctable_exact_base_index): Pass base address as signed. + (pru_get_ctable_base_index): Ditto. + (pru_get_ctable_base_offset): Ditto. + * config/pru/pru.cc (pru_get_ctable_exact_base_index): Ditto. + (pru_get_ctable_base_index): Ditto. + (pru_get_ctable_base_offset): Ditto. + (pru_print_operand_address): Ditto. + +2025-07-19 Paul-Antoine Arras <parras@baylibre.com> + + PR target/119100 + * config/riscv/autovec-opt.md (*vfwnmacc_vf_<mode>): New pattern. + (*vfwnmsac_vf_<mode>): New pattern. + * config/riscv/riscv.cc (get_vector_binary_rtx_cost): Add support for a + vec_duplicate in a neg. + +2025-07-19 Artemiy Volkov <artemiyv@acm.org> + + * config/riscv/riscv.cc (riscv_macro_fusion_pair_p): Protect + from a NULL PREV_SET or CURR_SET. + +2025-07-19 Georg-Johann Lay <avr@gjlay.de> + + * config/avr/avr-passes.cc (avr_optimize_casesi): Fuse + get_insns() with end_sequence(). + +2025-07-18 Pan Li <pan2.li@intel.com> + + * config/riscv/autovec.md (avg<mode>3_ceil): Add new pattern + of avg3_ceil for RVV DImode + +2025-07-18 Martin Jambor <mjambor@suse.cz> + + PR tree-optimization/117423 + * tree-sra.cc (analyze_access_subtree): Fix computation of grp_covered + flag. + +2025-07-18 Richard Biener <rguenther@suse.de> + + PR tree-optimization/121126 + * tree-vect-stmts.cc (vect_analyze_stmt): Analyze the + live lane extract for LC PHIs that are vect_internal_def. + +2025-07-18 Richard Biener <rguenther@suse.de> + + * tree-vect-loop.cc (vectorizable_live_operation_1): + Remove stmt_info and ncopies parameters. Remove !slp_node + paths. + (vectorizable_live_operation): Remove !slp_node paths. + +2025-07-18 Richard Biener <rguenther@suse.de> + + PR tree-optimization/120924 + * params.opt (uninit-max-chain-len): Up from 8 to 12. + +2025-07-18 Richard Biener <rguenther@suse.de> + + PR tree-optimization/121048 + * tree-vect-loop.cc (vect_determine_vectype_for_stmt_1): + Remove rejecting vector(1) vector types. + (vect_set_stmts_vectype): Likewise. + * tree-vect-slp.cc (vect_make_slp_decision): Only + count instances with non-vector(1) root towards whether + we have any interesting instances to vectorize. + +2025-07-18 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/121131 + * gimple-fold.cc (fold_nonarray_ctor_reference): Use + TREE_INT_CST_LOW (TYPE_SIZE ()) instead of + GET_MODE_BITSIZE (SCALAR_INT_TYPE_MODE ()) for BLKmode BITINT_TYPEs. + Don't compute encoding_size at all for little endian targets. + +2025-07-17 Andrew Pinski <quic_apinski@quicinc.com> + + PR middle-end/121095 + * gcse.cc (execute_hardreg_pre): Skip if the hardreg which is never live. + +2025-07-17 Filip Kastl <fkastl@suse.cz> + + * tree-ssa-structalias.cc (lookup_vi_for_tree): Fix GNU style. + (process_constraint): Fix GNU style. + (get_constraint_for_component_ref): Fix GNU style. + (get_constraint_for_1): Fix GNU style. + (get_function_part_constraint): Fix GNU style. + (handle_lhs_call): Fix GNU style. + (find_func_aliases_for_builtin_call): Fix GNU style. + (find_func_aliases): Fix GNU style. + (find_func_clobbers): Fix GNU style. + (struct shared_bitmap_hasher): Fix GNU style. + (shared_bitmap_hasher::hash): Fix GNU style. + (pt_solution_includes_global): Fix GNU style. + (init_base_vars): Fix GNU style. + (visit_loadstore): Fix GNU style. + (compute_dependence_clique): Fix GNU style. + (struct pt_solution): Fix GNU style. + (ipa_pta_execute): Fix GNU style. + +2025-07-17 Filip Kastl <fkastl@suse.cz> + + * pta-andersen.cc (struct constraint_graph): Fix GNU style. + (constraint_equal): Fix GNU style. + (set_union_with_increment): Fix GNU style. + (insert_into_complex): Fix GNU style. + (merge_node_constraints): Fix GNU style. + (unify_nodes): Fix GNU style. + (do_ds_constraint): Fix GNU style. + (scc_info::scc_info): Fix GNU style. + (find_indirect_cycles): Fix GNU style. + (equiv_class_lookup_or_add): Fix GNU style. + (label_visit): Fix GNU style. + (dump_pred_graph): Fix GNU style. + (perform_var_substitution): Fix GNU style. + (eliminate_indirect_cycles): Fix GNU style. + (solve_graph): Fix GNU style. + (solve_constraints): Fix GNU style. + * tree-ssa-structalias.cc (first_vi_for_offset): Fix GNU style. + (debug_constraint): Fix GNU style. + * tree-ssa-structalias.h (struct constraint_expr): Fix GNU + style. + (struct variable_info): Fix GNU style. + +2025-07-17 H.J. Lu <hjl.tools@gmail.com> + + * config/i386/i386-expand.cc (ix86_expand_ternlog): Don't change + mode for XOR. + +2025-07-17 Filip Kastl <fkastl@suse.cz> + + * Makefile.in: Add pta-andersen.o. + * tree-ssa-structalias.cc (create_variable_info_for): Just move + around. + (unify_nodes): Move to pta-andersen.cc. + (struct constraint): Move to tree-ssa-structalias.h. + (EXECUTE_IF_IN_NONNULL_BITMAP): Move to pta-andersen.cc. + (struct variable_info): Move to tree-ssa-structalias.h. + (struct constraint_stats): Move to tree-ssa-structalias.h. + (first_vi_for_offset): External linkage, move to namespace + pointer_analysis. + (first_or_preceding_vi_for_offset): External linkage, move to namespace + pointer_analysis. + (dump_constraint): External linkage, move to namespace + pointer_analysis. + (debug_constraint): External linkage, move to namespace + pointer_analysis. + (dump_constraints): External linkage, move to namespace + pointer_analysis. + (debug_constraints): External linkage, move to namespace + pointer_analysis. + (lookup_vi_for_tree): Move around inside tree-ssa-structalias.cc. + (type_can_have_subvars): Move around inside tree-ssa-structalias.cc. + (make_param_constraints): Move around inside tree-ssa-structalias.cc. + (dump_solution_for_var): External linkage, move to namespace + pointer_analysis. find (...) -> var_rep[...]. + (get_varinfo): Move to tree-ssa-structalias.h. + (debug_solution_for_var): External linkage, move to namespace + pointer_analysis. + (vi_next): Move to tree-ssa-structalias.h. + (dump_sa_stats): External linkage, move to namespace pointer_analysis. + (new_var_info): Just move around. + (dump_sa_points_to_info): External linkage, move to namespace + pointer_analysis. + (debug_sa_points_to_info): External linkage, move to namespace + pointer_analysis. + (get_call_vi): Just move around. + (dump_varinfo): External linkage, move to namespace pointer_analysis. + (lookup_call_use_vi): Just move around. + (lookup_call_clobber_vi): Just move around. + (get_call_use_vi): Just move around. + (get_call_clobber_vi): Just move around. + (enum constraint_expr_type): Move to tree-ssa-structalias.h. + (struct constraint_expr): Move to tree-ssa-structalias.h. + (UNKNOWN_OFFSET): Move to tree-ssa-structalias.h. + (get_constraint_for_1): Just move around. + (get_constraint_for): Just move around. + (get_constraint_for_rhs): Just move around. + (do_deref): Just move around. + (constraint_pool): Just move around. + (struct constraint_graph): Move to pta-andersen.h. + (FIRST_REF_NODE): Move to pta-andersen.cc. + (LAST_REF_NODE): Move to pta-andersen.cc. + (find): Move to pta-andersen.cc. + (unite): Move to pta-andersen.cc. + (new_constraint): Just move around. + (debug_constraint_graph): External linkage, move to namespace + pointer_analysis. + (debug_varinfo): External linkage, move to namespace pointer_analysis. + (debug_varmap): External linkage, move to namespace pointer_analysis. + (dump_constraint_graph): External linkage, move to namespace + pointer_analysis. + (constraint_expr_equal): Move to pta-andersen.cc. + (constraint_expr_less): Move to pta-andersen.cc. + (constraint_less): Move to pta-andersen.cc. + (constraint_equal): Move to pta-andersen.cc. + (constraint_vec_find): Move to pta-andersen.cc. + (constraint_set_union): Move to pta-andersen.cc. + (solution_set_expand): Move to pta-andersen.cc. + (set_union_with_increment): Move to pta-andersen.cc. + (insert_into_complex): Move to pta-andersen.cc. + (merge_node_constraints): Move to pta-andersen.cc. + (clear_edges_for_node): Move to pta-andersen.cc. + (merge_graph_nodes): Move to pta-andersen.cc. + (add_implicit_graph_edge): Move to pta-andersen.cc. + (add_pred_graph_edge): Move to pta-andersen.cc. + (add_graph_edge): Move to pta-andersen.cc. + (init_graph): Move to pta-andersen.cc. Initialize + predbitmap_obstack here. + (build_pred_graph): Move to pta-andersen.cc. + (build_succ_graph): Move to pta-andersen.cc. + (class scc_info): Move to pta-andersen.cc. + (scc_visit): Move to pta-andersen.cc. + (solve_add_graph_edge): Move to pta-andersen.cc. + (do_sd_constraint): Move to pta-andersen.cc. + (do_ds_constraint): Move to pta-andersen.cc. + (do_complex_constraint): Move to pta-andersen.cc. + (scc_info::scc_info): Move to pta-andersen.cc. + (scc_info::~scc_info): Move to pta-andersen.cc. + (find_indirect_cycles): Move to pta-andersen.cc. + (topo_visit): Move to pta-andersen.cc. + (compute_topo_order): Move to pta-andersen.cc. + (struct equiv_class_hasher): Move to pta-andersen.cc. + (equiv_class_hasher::hash): Move to pta-andersen.cc. + (equiv_class_hasher::equal): Move to pta-andersen.cc. + (equiv_class_lookup_or_add): Move to pta-andersen.cc. + (condense_visit): Move to pta-andersen.cc. + (label_visit): Move to pta-andersen.cc. + (dump_pred_graph): External linkage, move to namespace + pointer_analysis. + (dump_varmap): External linkage, move to namespace pointer_analysis. + (perform_var_substitution): Move to pta-andersen.cc. + (free_var_substitution_info): Move to pta-andersen.cc. + (find_equivalent_node): Move to pta-andersen.cc. + (unite_pointer_equivalences): Move to pta-andersen.cc. + (move_complex_constraints): Move to pta-andersen.cc. + (rewrite_constraints): Move to pta-andersen.cc. + (eliminate_indirect_cycles): Move to pta-andersen.cc. + (solve_graph): Move to pta-andersen.cc. + (set_uids_in_ptset): find (...) -> var_rep[...]. + (find_what_var_points_to): find (...) -> var_rep[...]. + (init_alias_vars): Don't initialize predbitmap_obstack here. + (remove_preds_and_fake_succs): Move to pta-andersen.cc. + (solve_constraints): Move to pta-andersen.cc. Call + delete_graph() at the end. + (delete_points_to_sets): Don't delete graph here. Delete var_rep here. + (visit_loadstore): find (...) -> var_rep[...]. + (compute_dependence_clique): find (...) -> var_rep[...]. + (ipa_pta_execute): find (...) -> var_rep[...]. + * pta-andersen.cc: New file. + * pta-andersen.h: New file. + * tree-ssa-structalias.h: New file. + +2025-07-17 Richard Sandiford <richard.sandiford@arm.com> + Yury Khrustalev <yury.khrustalev@arm.com> + + * doc/sourcebuild.texi (aarch64_sme_hw): Document. + +2025-07-17 Stefan Schulze Frielinghaus <stefansf@gcc.gnu.org> + + * config/s390/s390.md (signbit_tdc): Rename expander. + (signbit<mode>2): New expander. + (signbit<mode>2_z10): New expander. + +2025-07-17 Stefan Schulze Frielinghaus <stefansf@gcc.gnu.org> + + * config/s390/s390.cc (s390_register_move_cost): Add costing for + vlvg/vlgv. + +2025-07-17 Stefan Schulze Frielinghaus <stefansf@gcc.gnu.org> + + * config/s390/vector.md (bhfgq): Add scalar modes. + (*movdi<mode>_zero_extend_A): New insn. + (*movsi<mode>_zero_extend_A): New insn. + (*movdi<mode>_zero_extend_B): New insn. + (*movsi<mode>_zero_extend_B): New insn. + +2025-07-17 Xi Ruoyao <xry111@xry111.site> + + PR target/121064 + * config/loongarch/lsx.md (lsx_vshuf_<lsxfmt_f>): Add '@' to + generate a mode-aware helper. Use <VIMODE> as the mode of the + operand 1 (selector). + * config/loongarch/lasx.md (lasx_xvshuf_<lasxfmt_f>): Likewise. + * config/loongarch/loongarch.cc + (loongarch_try_expand_lsx_vshuf_const): Create a new pseudo for + the selector. Use the mode-aware helper to simplify the code. + (loongarch_expand_vec_perm_const): Likewise. + +2025-07-17 Richard Biener <rguenther@suse.de> + + * tree-vect-slp.cc (vect_build_slp_tree_1): Reject + single-lane vector types. + +2025-07-17 Richard Biener <rguenther@suse.de> + + PR tree-optimization/121035 + * tree-ssa-pre.cc (find_or_generate_expression): Handle + values without expression. + +2025-07-16 David Malcolm <dmalcolm@redhat.com> + + * diagnostic-state-to-dot.cc (state_diagram::m_show_tags): Drop + unused field. + +2025-07-16 Kwok Cheung Yeung <kcyeung@baylibre.com> + + * gimplify.cc (gimplify_omp_affinity): Use OMP_ITERATOR_DECL_P. + (compute_omp_iterator_count): New. + (build_omp_iterator_loop): New. + (gimplify_omp_depend): Use OMP_ITERATOR_DECL_P, + compute_omp_iterator_count and build_omp_iterator_loop. + * tree-inline.cc (copy_tree_body_r): Use OMP_ITERATOR_DECL_P. + * tree-pretty-print.cc (dump_omp_clause): Likewise. + * tree.h (OMP_ITERATOR_DECL_P): New macro. + +2025-07-16 Uros Bizjak <ubizjak@gmail.com> + + PR target/121062 + * config/i386/i386.cc (ix86_convert_const_vector_to_integer): + Handle E_V1SImode and E_V1DImode. + * config/i386/mmx.md (V_16_32_64): Add V1SI, V2BF and V1DI. + (mmxinsnmode): Add V1DI and V1SI. + Add V_16_32_64 splitter for constant vector loads from constant + vector pool. + (V_16_32_64:*mov<mode>_imm): Moved after V_16_32_64 splitter. + Replace lowpart_subreg with adjust_address. + +2025-07-16 H.J. Lu <hjl.tools@gmail.com> + + PR target/120881 + PR testsuite/121078 + * config/i386/i386-options.cc (ix86_option_override_internal): + Warn -pg without -mfentry only on glibc targets. + +2025-07-16 Uros Bizjak <ubizjak@gmail.com> + + * config/i386/i386-expand.cc (ix86_expand_move): + Use MEM_P predicate instead of open coding it. + (ix86_erase_embedded_rounding): + Use NONJUMP_INSN_P predicate instead of open coding it. + * config/i386/i386-features.cc (convertible_comparison_p): + Use REG_P predicate instead of open coding it. + * config/i386/i386.cc (ix86_rtx_costs): + Use SUBREG_P predicate instead of open coding it. + +2025-07-16 Uros Bizjak <ubizjak@gmail.com> + + * config/i386/i386.cc (symbolic_reference_mentioned_p): + Use LABEL_REF_P predicate instead of open coding it. + (ix86_legitimate_constant_p): Ditto. + (legitimate_pic_address_disp_p): Ditto. + (ix86_legitimate_address_p): Ditto. + (legitimize_pic_address): Ditto. + (ix86_print_operand): Ditto. + (ix86_print_operand_address_as): Ditto. + (ix86_rip_relative_addr_p): Ditto. + * config/i386/i386.h (SYMBOLIC_CONST): Ditto. + * config/i386/i386.md (*anddi_1 to *andsi_1_zext splitter): Ditto. + * config/i386/predicates.md (symbolic_operand): Ditto. + (local_symbolic_operand): Ditto. + (vsib_address_operand): Ditto. + +2025-07-16 Uros Bizjak <ubizjak@gmail.com> + + * config/i386/i386-expand.cc (ix86_expand_move): + Use SYMBOL_REF_P predicate instead of open coding it. + (ix86_split_long_move): Ditto. + (construct_plt_address): Ditto. + (ix86_expand_call): Ditto. + (ix86_notrack_prefixed_insn_p): Ditto. + * config/i386/i386-features.cc + (rest_of_insert_endbr_and_patchable_area): Ditto. + * config/i386/i386.cc (symbolic_reference_mentioned_p): Ditto. + (ix86_force_load_from_GOT_p): Ditto. + (ix86_legitimate_constant_p): Ditto. + (legitimate_pic_operand_p): Ditto. + (legitimate_pic_address_disp_p): Ditto. + (ix86_legitimate_address_p): Ditto. + (legitimize_pic_address): Ditto. + (ix86_legitimize_address): Ditto. + (ix86_delegitimize_tls_address): Ditto. + (ix86_print_operand): Ditto. + (ix86_print_operand_address_as): Ditto. + (ix86_rip_relative_addr_p): Ditto. + (symbolic_base_address_p): Ditto. + * config/i386/i386.h (SYMBOLIC_CONST): Ditto. + * config/i386/i386.md (*anddi_1 to *andsi_1_zext splitter): Ditto. + * config/i386/predicates.md (symbolic_operand): Ditto. + (local_symbolic_operand): Ditto. + (local_func_symbolic_operand): Ditto. + +2025-07-16 Uros Bizjak <ubizjak@gmail.com> + + * config/i386/i386-expand.cc (ix86_expand_vector_logical_operator): + Use CONST_VECTOR_P instead of open coding it. + (ix86_expand_int_sse_cmp): Ditto. + (ix86_extract_perm_from_pool_constant): Ditto. + (ix86_split_to_parts): Ditto. + (const_vector_equal_evenodd_p): Ditto. + * config/i386/i386.cc (ix86_print_operand): Ditto. + * config/i386/predicates.md (zero_extended_scalar_load_operand): Ditto. + (float_vector_all_ones_operand): Ditto. + * config/i386/sse.md (avx512vl_vextractf128<mode>): Ditto. + +2025-07-16 Richard Biener <rguenther@suse.de> + + PR tree-optimization/121049 + * internal-fn.h (widening_evenodd_fn_p): Declare. + * internal-fn.cc (widening_evenodd_fn_p): New function. + * tree-vect-stmts.cc (vectorizable_conversion): When using + an even/odd widening function disable loop masking. + +2025-07-16 Andrew Pinski <quic_apinski@quicinc.com> + + PR tree-optimization/119920 + PR tree-optimization/112324 + PR tree-optimization/110015 + * tree-if-conv.cc (find_different_opnum): New function. + (factor_out_operators): New function. + (predicate_scalar_phi): Call factor_out_operators when + there is only 2 elements of a phi. + +2025-07-16 Andrew Pinski <quic_apinski@quicinc.com> + + * tree-if-conv.cc (fold_build_cond_expr): Return early if lhs and rhs + are the same. + +2025-07-16 Andrew Pinski <quic_apinski@quicinc.com> + + * tree-if-conv.cc (combine_blocks): Remove predicated + dynamic array. + +2025-07-16 Richard Biener <rguenther@suse.de> + + PR tree-optimization/121116 + * tree-vect-loop.cc (vectorizable_induction): Use the + step vector element type for further processing. + +2025-07-16 Andrew Stubbs <ams@baylibre.com> + + * config/gcn/gcn-valu.md (add<mode>3_vcc_dup<exec_vcc>): Change + operand 2 to allow gcn_alu_operand. Swap the operands in the VCC + update RTL. + (add<mode>3_vcc_zext_dup): Likewise. + (add<mode>3_vcc_zext_dup_exec): Likewise. + (add<mode>3_vcc_zext_dup2): Likewise. + (add<mode>3_vcc_zext_dup2_exec): Likewise. + +2025-07-16 Spencer Abson <spencer.abson@arm.com> + + PR target/117850 + * config/aarch64/aarch64-builtins.cc (LO_HI_PAIRINGS): New, group the + lo/hi pairs from aarch64-builtin-pairs.def. + (aarch64_get_highpart_builtin): New function. + (aarch64_v128_highpart_ref): New function, helper to look for vector + highparts. + (aarch64_build_vector_cst): New function, helper to build duplicated + VECTOR_CSTs. + (aarch64_fold_lo_call_to_hi): New function. + (aarch64_general_gimple_fold_builtin): Add cases for the lo builtins + in aarch64-builtin-pairs.def. + * config/aarch64/aarch64-builtin-pairs.def: New file, declare the + parirs of lowpart-operating and highpart-operating builtins. + +2025-07-16 Alfie Richards <alfie.richards@arm.com> + + * tree.cc (get_clone_versions): New function. + (get_clone_attr_versions): New function. + (get_version): New function. + * tree.h (get_clone_versions): New function. + (get_clone_attr_versions): New function. + (get_target_version): New function. + +2025-07-16 Alfie Richards <alfie.richards@arm.com> + + * attribs.cc (make_attribute): Change arguments. + * attribs.h (make_attribute): Change arguments. + +2025-07-16 Alfie Richards <alfie.richards@arm.com> + + * pretty-print.cc (format_phase_2): Add support for string_slice. + * vec.cc (string_slice::tokenize): New static method. + (string_slice::strcmp): New static method. + (string_slice::strip): New method. + (test_string_slice_initializers): New test. + (test_string_slice_tokenize): Ditto. + (test_string_slice_strcmp): Ditto. + (test_string_slice_equality): Ditto. + (test_string_slice_inequality): Ditto. + (test_string_slice_invalid): Ditto. + (test_string_slice_strip): Ditto. + (vec_cc_tests): Add new tests. + * vec.h (class string_slice): New class. + +2025-07-16 Robin Dapp <rdapp@ventanamicro.com> + + PR middle-end/121065 + * cfgexpand.cc (expand_debug_expr): Allow fixed-point modes for + RDIV_EXPR. + * optabs-tree.cc (optab_for_tree_code): Ditto. + +2025-07-16 Robin Dapp <rdapp@ventanamicro.com> + + PR target/120297 + * config/riscv/riscv-vsetvl.def: Do not forget ratio demand of + previous vsetvl. + +2025-07-16 Kyrylo Tkachov <ktkachov@nvidia.com> + + * config/aarch64/aarch64-sve2.md (*aarch64_sve2_bsl2n_eon<mode>): + New pattern. + (*aarch64_sve2_eon_bsl2n_unpred<mode>): Likewise. + +2025-07-16 Kyrylo Tkachov <ktkachov@nvidia.com> + + * config/aarch64/aarch64-sve2.md (*aarch64_sve2_unpred_nor<mode>): + New define_insn. + (*aarch64_sve2_nand_unpred<mode>): Likewise. + +2025-07-16 Jeremy Rifkin <jeremy@rifkin.dev> + + PR c/82134 + * gimplify.cc (gimplify_modify_expr): Add suppress_warning + * tree-cfg.cc (do_warn_unused_result): Check warning_suppressed_p + +2025-07-16 Haochen Jiang <haochen.jiang@intel.com> + + * common/config/i386/i386-common.cc + (OPTION_MASK_ISA2_AMX_AVX512_SET): Do not set AVX10.2. + (OPTION_MASK_ISA2_AVX10_2_UNSET): Remove AMX-AVX512 unset. + (OPTION_MASK_ISA2_AVX512F_UNSET): Unset AMX-AVX512. + (ix86_handle_option): Imply AVX512F for AMX-AVX512. + +2025-07-16 Pan Li <pan2.li@intel.com> + + * config/riscv/autovec.md (avg<mode>3_floor): Add new + pattern of avg3_floor for rvv DImode. + +2025-07-15 David Malcolm <dmalcolm@redhat.com> + + * spellcheck.cc: Define INCLUDE_ALGORITHM. + (CASE_COST, BASE_COST): Convert to... + (case_cost, base_cost): ...these, in an anonymous namespace. + (get_edit_distance): Update for above. Use std::min rather than + MIN. + (get_edit_distance_cutoff): Likewise. Use std::max rather than + MAX. + (selftest::test_edit_distances): Update for BASE_COST renaming. + (selftest::get_old_cutoff): Likewise. Use std::max. + (selftest::assert_not_suggested_for): Use nullptr. + (selftest::test_find_closest_string): Likewise. + * spellcheck.h: Replace TYPE with StringLikeType in templates, + and use CamelCase. + +2025-07-15 David Malcolm <dmalcolm@redhat.com> + + PR sarif-replay/120792 + * auto-obstack.h: New file, based on material taken from + pretty-print.cc. + * diagnostic-digraphs.h + (diagnostics::digraphs::digraph::set_description): New. + (diagnostics::digraphs::node::set_label): New. + * doc/libgdiagnostics/topics/compatibility.rst: Add + LIBGDIAGNOSTICS_ABI_4. + * doc/libgdiagnostics/topics/diagnostics.rst + (diagnostic_finish_via_msg_buf): Document new entrypoint. + * doc/libgdiagnostics/topics/execution-paths.rst + (diagnostic_execution_path_add_event_via_msg_buf): Document new + entrypoint. + * doc/libgdiagnostics/topics/index.rst: Add message-buffers.rst. + * doc/libgdiagnostics/topics/message-buffers.rst: New file. + * doc/libgdiagnostics/topics/message-formatting.rst: Add note + about message buffers. + * doc/libgdiagnostics/topics/physical-locations.rst + (diagnostic_add_location_with_label_via_msg_buf): Add. + * doc/libgdiagnostics/tutorial/07-execution-paths.rst: Link to + next section. + * doc/libgdiagnostics/tutorial/08-message-buffers.rst: New file. + * doc/libgdiagnostics/tutorial/index.rst: Add + 08-message-buffers.rst. + * libgdiagnostics++.h (libgdiagnostics::message_buffer): New + class. + (libgdiagnostics::execution_path::add_event_via_msg_buf): New. + (libgdiagnostics::diagnostic::add_location_with_label): New. + (libgdiagnostics::diagnostic::finish_via_msg_buf): New. + (libgdiagnostics::graph::set_description): New overload. + (libgdiagnostics::graph::add_edge): New overload. + (libgdiagnostics::node::set_label): New overload. + * libgdiagnostics-private.h + (private_diagnostic_execution_path_add_event_2): Drop decl. + (private_diagnostic_execution_path_add_event_3): New decl. + * libgdiagnostics.cc: Include "pretty-print-format-impl.h", + "pretty-print-markup.h", and "auto-obstack.h". + (class copying_token_printer): New. + (struct diagnostic_message_buffer): New. + (class pp_element_message_buffer): New. + (libgdiagnostics_path_event::libgdiagnostics_path_event): Replace + params "gmsgid" and "args" with "msg_buf". + (libgdiagnostics_path_event::print_desc): Reimplement using + pp_element_message_buffer to replay m_msg_buf into "pp". + (libgdiagnostics_path_event::m_desc_uncolored): Drop field. + (libgdiagnostics_path_event::m_desc_colored): Drop field. + (libgdiagnostics_path_event::msg_buf): New field. + (diagnostic_execution_path::add_event_va): Reimplement. + (diagnostic_execution_path::add_event_via_msg_buf): New. + (diagnostic::add_location_with_label): New overload, using + msg_buf. + (diagnostic_manager::emit): Reimplement with... + (diagnostic_manager::emit_va): ...this. + (diagnostic_manager::emit_msg_buf): New. + (FAIL_IF_NULL): Rename "p" to "ptr_arg". + (diagnostic_finish_va): Update to use diagnostic_manager::emit_va. + (diagnostic_graph::add_node_with_id): Rename "id" to "node_id". + (diagnostic_graph_add_node): Likewise. + (diagnostic_graph_add_edge): Rename "id" to "edge_id". + (diagnostic_graph_get_node_by_id): Rename "id" to "node_id". + (diagnostic_graph_get_edge_by_id): Rename "id" to "edge_id". + (private_diagnostic_execution_path_add_event_2): Delete. + (diagnostic_message_buffer_new): New public entrypoint. + (diagnostic_message_buffer_release): Likewise. + (diagnostic_message_buffer_append_str): Likewise. + (diagnostic_message_buffer_append_text): Likewise. + (diagnostic_message_buffer_append_byte): Likewise. + (diagnostic_message_buffer_append_printf): Likewise. + (diagnostic_message_buffer_append_event_id): Likewise. + (diagnostic_message_buffer_begin_url): Likewise. + (diagnostic_message_buffer_end_url): Likewise. + (diagnostic_message_buffer_begin_quote): Likewise. + (diagnostic_message_buffer_end_quote): Likewise. + (diagnostic_message_buffer_begin_color): Likewise. + (diagnostic_message_buffer_end_color): Likewise. + (diagnostic_message_buffer_dump): Likewise. + (diagnostic_finish_via_msg_buf): Likewise. + (diagnostic_add_location_with_label_via_msg_buf): Likewise. + (diagnostic_execution_path_add_event_via_msg_buf): Likewise. + (diagnostic_graph_set_description_via_msg_buf): Likewise. + (diagnostic_graph_add_edge_via_msg_buf): Likewise. + (diagnostic_node_set_label_via_msg_buf): Likewise. + (private_diagnostic_execution_path_add_event_3): New private + entrypoint. + * libgdiagnostics.h (LIBGDIAGNOSTICS_PARAM_FORMAT_STRING): New macro. + (LIBGDIAGNOSTICS_PARAM_PRINTF_FORMAT_STRING): New macro. + (diagnostic_message_buffer): New typedef. + (LIBDIAGNOSTICS_HAVE_diagnostic_message_buffer): New define. + (diagnostic_message_buffer_new): New decl. + (diagnostic_message_buffer_release): New decl. + (diagnostic_message_buffer_append_str): New decl. + (diagnostic_message_buffer_append_text): New decl. + (diagnostic_message_buffer_append_byte): New decl. + (diagnostic_message_buffer_append_printf): New decl. + (diagnostic_message_buffer_append_event_id): New decl. + (diagnostic_message_buffer_begin_url): New decl. + (diagnostic_message_buffer_end_url): New decl. + (diagnostic_message_buffer_begin_quote): New decl. + (diagnostic_message_buffer_end_quote): New decl. + (diagnostic_message_buffer_begin_color): New decl. + (diagnostic_message_buffer_end_color): New decl. + (diagnostic_message_buffer_dump): New decl. + (diagnostic_finish_via_msg_buf): New decl. + (diagnostic_add_location_with_label_via_msg_buf): New decl. + (diagnostic_execution_path_add_event_via_msg_buf): New decl. + (diagnostic_graph_set_description_via_msg_buf): New decl. + (diagnostic_graph_add_edge_via_msg_buf): New decl. + (diagnostic_node_set_label_via_msg_buf): New decl. + * libgdiagnostics.map (LIBGDIAGNOSTICS_ABI_3): Drop + private_diagnostic_execution_path_add_event_2. + (LIBGDIAGNOSTICS_ABI_4): New. + * libsarifreplay.cc (class annotation): Use + libgdiagnostics::message_buffer rather than label_text. + (add_any_annotations): Likewise. + (sarif_replayer::handle_result_obj): Likewise. + (make_plain_text_within_result_message): Likewise. + (handle_thread_flow_location_object): Likewise. + (handle_location_object): Likewise. + (sarif_replayer::handle_graph_object): Likewise. + (sarif_replayer::handle_node_object): Likewise. + (sarif_replayer::handle_edge_object): Likewise. + * pretty-print-format-impl.h (pp_token_list::push_back_byte): New + decl. + * pretty-print-markup.h (pp_markup::context::begin_url): New decl. + (pp_markup::context::end_url): New decl. + (pp_markup::context::add_event_id): New decl. + * pretty-print.cc: Include "auto-obstack.h". + (pp_token_list::push_back_byte): New. + (struct auto_obstack): Move to auto-obstack.h. + (default_token_printer): Make non-static. + (pp_markup::context::begin_url): New. + (pp_markup::context::end_url): New. + (pp_markup::context::add_event_id): New. + +2025-07-15 Umesh Kalappa <ukalappa.mips@gmail.com> + + * config/riscv/riscv-cores.def (RISCV_CORE): Updated the supported march. + * config/riscv/riscv-ext-mips.def (DEFINE_RISCV_EXT): + New file added for mips conditional mov extension. + * config/riscv/riscv-ext.def: Likewise. + * config/riscv/t-riscv: Generates riscv-ext.opt + * config/riscv/riscv-ext.opt: Generated file. + * config/riscv/riscv.cc (riscv_expand_conditional_move): Updated for mips cmov + and outlined some code that handle arch cond move. + * config/riscv/riscv.md (mov<mode>cc): updated expand for MIPS CCMOV. + * config/riscv/mips-insn.md: New file for mips-p8700 ccmov insn. + * doc/riscv-ext.texi: Updated for mips cmov. + +2025-07-15 Konstantinos Eleftheriou <konstantinos.eleftheriou@vrull.eu> + + * avoid-store-forwarding.cc (generate_bit_insert_sequence): + Remove adjustment of bitfield insertion's starting position + when BYTES_BIG_ENDIAN != BITS_BIG_ENDIAN. + (process_store_forwarding): Update offset check in base reg + initialization to take into account the target's endianness. + +2025-07-15 Soumya AR <soumyaa@nvidia.com> + + * config/aarch64/aarch64-tuning-flags.def (AARCH64_EXTRA_TUNING_OPTION): + Add AVOID_LDAPUR tuning flag. + * config/aarch64/aarch64.cc (aarch64_adjust_generic_arch_tuning): + Set AVOID_LDAPUR for architectures before armv8.8-a. + (aarch64_override_options_internal): Apply generic tuning adjustments + to generic_armv8_a_tunings and generic_armv9_a_tunings. + * config/aarch64/aarch64.h (TARGET_ENABLE_LDAPUR): New macro to + control LDAPUR usage based on RCPC2 and tuning flags. + * config/aarch64/aarch64.md: Add enable_ldapur attribute. + * config/aarch64/atomics.md (aarch64_atomic_load<mode>_rcpc): Modify + to emit LDAPUR for cores with RCPC2. + (*aarch64_atomic_load<ALLX:mode>_rcpc_zext): Likewise. + (*aarch64_atomic_load<ALLX:mode>_rcpc_sext): Update constraint to Ust. + * config/aarch64/tuning_models/cortexx925.h: Add AVOID_LDAPUR flag. + * config/aarch64/tuning_models/neoversev2.h: Likewise. + * config/aarch64/tuning_models/neoversev3.h: Likewise. + * config/aarch64/tuning_models/neoversev3ae.h: Likewise. + +2025-07-15 Richard Biener <rguenther@suse.de> + Richard Sandiford <richard.sandiford@arm.com> + + PR tree-optimization/121059 + * tree-vect-stmts.cc (vectorizable_operation): Query + scalar_cond_masked_set with the correct number of masks. + +2025-07-15 Jakub Jelinek <jakub@redhat.com> + Jason Merrill <jason@redhat.com> + + PR c/44677 + * common.opt (Wunused-but-set-parameter=, Wunused-but-set-variable=): + New options. + (Wunused-but-set-parameter, Wunused-but-set-variable): Turn into + aliases. + * common.opt.urls: Regenerate. + * diagnostic-spec.cc (nowarn_spec_t::nowarn_spec_t): Use + OPT_Wunused_but_set_variable_ instead of OPT_Wunused_but_set_variable + and OPT_Wunused_but_set_parameter_ instead of + OPT_Wunused_but_set_parameter. + * gimple-ssa-store-merging.cc (find_bswap_or_nop_1): Remove unused + but set variable tmp. + * ipa-strub.cc (pass_ipa_strub::execute): Cast named_args to + (void) if ATTR_FNSPEC_DECONST_WATERMARK is not defined. + * doc/invoke.texi (Wunused-but-set-parameter=, + Wunused-but-set-variable=): Document new options. + (Wunused-but-set-parameter, Wunused-but-set-variable): Adjust + documentation now that they are just aliases. + +2025-07-15 Alfie Richards <alfie.richards@arm.com> + + * config/aarch64/aarch64-sme.md (@aarch64_sme_<faminmax_uns_op><mode>): + Change gating and comment. + +2025-07-15 Kyrylo Tkachov <ktkachov@nvidia.com> + + Revert: + 2025-07-11 Kyrylo Tkachov <ktkachov@nvidia.com> + + * config/aarch64/aarch64-simd.md (*eor3qdi4): New + define_insn_and_split. + +2025-07-15 Spencer Abson <spencer.abson@arm.com> + + * config/aarch64/aarch64-sve.md (*fcm<cmp_op><mode>_and_combine): + Extend from SVE_FULL_F to SVE_F. + (*fcmuo<mode>_and_combine): Likewise. + (*fcm<cmp_op><mode>_bic_combine): Likewise. + (*fcm<cmp_op><mode>_nor_combine): Likewise. + (*fcmuo<mode>_bic_combine): Likewise. + (*fcmuo<mode>_nor_combine): Likewise. Move the comment here to + above fcmuo<mode>_bic_combine, since it applies to both patterns. + +2025-07-15 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * tree.cc: Include memmodel.h. + +2025-07-14 Andrew Stubbs <ams@baylibre.com> + + * config/gcn/gcn-valu.md (vec_cmpu<mode>di_exec): Call gen_vec_cmp*, + not gen_vec_cmpu*. + +2025-07-14 Richard Biener <rguenther@suse.de> + + Revert: + 2025-07-14 Richard Biener <rguenther@suse.de> + + PR tree-optimization/121059 + * tree-vect-stmts.cc (vectorizable_operation): Record a + loop mask for mask AND operations. + +2025-07-14 Juergen Christ <jchrist@linux.ibm.com> + + * config/s390/vector.md (reduc_plus_scal_<mode>): Implement. + (reduc_plus_scal_v2df): Implement. + (reduc_plus_scal_v4sf): Implement. + (REDUC_FMINMAX): New int iterator. + (reduc_fminmax_name): New int attribute. + (reduc_minmax): New code iterator. + (reduc_minmax_name): New code attribute. + (reduc_<reduc_fminmax_name>_scal_v2df): Implement. + (reduc_<reduc_fminmax_name>_scal_v4sf): Implement. + (reduc_<reduc_minmax_name>_scal_v2df): Implement. + (reduc_<reduc_minmax_name>_scal_v4sf): Implement. + (REDUCBIN): New code iterator. + (reduc_bin_insn): New code attribute. + (reduc_<reduc_bin_insn>_scal_v2di): Implement. + (reduc_<reduc_bin_insn>_scal_v4si): Implement. + (reduc_<reduc_bin_insn>_scal_v8hi): Implement. + (reduc_<reduc_bin_insn>_scal_v16qi): Implement. + +2025-07-14 Juergen Christ <jchrist@linux.ibm.com> + + * config/s390/s390.cc (s390_option_override_internal): Remove override. + +2025-07-14 Andrew Stubbs <ams@baylibre.com> + + * config/gcn/gcn-valu.md (add<mode>3<exec_clobber>): Rename ... + (add<mode>3<exec>): ... to this, remove the clobber, and change the + instruction from v_add_co_u32 to v_add_u32. + (add<mode>3_dup<exec_clobber>): Rename ... + (add<mode>3_dup<exec>): ... to this, and likewise. + (sub<mode>3<exec_clobber>): Rename ... + (sub<mode>3<exec>): ... to this, and likewise + * config/gcn/gcn.md (addsi3): Remove the DI clobber, and change the + instruction from v_add_co_u32 to v_add_u32. + (addsi3_scc): Likewise. + (subsi3): Likewise, but for v_sub_co_u32. + (muldi3): Likewise. + +2025-07-14 Richard Biener <rguenther@suse.de> + + PR tree-optimization/121059 + * tree-vect-stmts.cc (vectorizable_operation): Record a + loop mask for mask AND operations. + +2025-07-14 Pan Li <pan2.li@intel.com> + + * match.pd: Make sure widen mul has twice bitsize + of the inputs in SAT_MUL pattern. + +2025-07-14 Uros Bizjak <ubizjak@gmail.com> + + PR target/121015 + * config/i386/i386-features.cc (ix86_broadcast_inner): Check all + 0s/1s vectors with standard_sse_constant_p. + +2025-07-14 H.J. Lu <hjl.tools@gmail.com> + + PR target/120881 + * config.in: Regenerated. + * configure: Likewise. + * configure.ac: Add --enable-x86-64-mfentry. + * config/i386/i386-options.cc (ix86_option_override_internal): + Enable __fentry__ in 64-bit mode if ENABLE_X86_64_MFENTRY is set + to 1. Warn -pg without -mfentry with shrink wrapping enabled. + * doc/install.texi: Document --enable-x86-64-mfentry. + +2025-07-14 François-Xavier Coudert <fxcoudert@gcc.gnu.org> + + PR target/120645 + * config/darwin-driver.cc: Account for latest macOS numbering + scheme. + +2025-07-14 Paul-Antoine Arras <parras@baylibre.com> + + PR target/119100 + * config/riscv/autovec-opt.md (*vfwmacc_vf_<mode>): New pattern to + handle both vfwmacc and vfwmsac. + (*extend_vf_<mode>): New pattern that serves as an intermediate combine + step. + * config/riscv/vector-iterators.md (vsubel): New mode attribute. This is + just the lower-case version of VSUBEL. + * config/riscv/vector.md (@pred_widen_mul_<optab><mode>_scalar): Reorder + and swap operands to match the RTL emitted by expand, i.e. first + float_extend then vec_duplicate. + +2025-07-14 Alfie Richards <alfie.richards@arm.com> + + * config/aarch64/aarch64-sme.md (@aarch64_sme_<faminmax_uns_op><mode>): + New patterns. + * config/aarch64/aarch64-sve-builtins-sme.def (svamin): New intrinsics. + (svamax): New intrinsics. + * config/aarch64/aarch64-sve-builtins-sve2.cc (class faminmaximpl): New + class. + (svamin): New function. + (svamax): New function. + +2025-07-14 Haochen Jiang <haochen.jiang@intel.com> + + * config/i386/i386.h (PTA_PANTHERLAKE): Revmoe KL and WIDEKL. + (PTA_CLEARWATERFOREST): Ditto. + * doc/invoke.texi: Revise documentation. + +2025-07-13 Andrew Pinski <quic_apinski@quicinc.com> + + PR middle-end/120866 + * tree.cc: Add include to tm_p.h. + +2025-07-13 Benjamin Wu <bwu25@cs.washington.edu> + + * gimple.h (GTMA_DOES_GO_IRREVOCABLE): Fix typo. + +2025-07-12 Jan Hubicka <hubicka@ucw.cz> + + * auto-profile.cc (function_instance::~function_instance): + Move down in source. + (string_table::get_cgraph_node): New member function with + logic broken out from ... + (function_instance::get_cgraph_node): ... here. + (match_with_target): Fix formating. + (function_instance::match): Fix formating; do not use iterators + after modifying map; remove incorrect set of warned flag. + (autofdo_source_profile::offline_external_functions): Keep + seen set up to date. + (function_instance::read_function_instance): Fix formating. + +2025-07-12 Uros Bizjak <ubizjak@gmail.com> + + * config/i386/mmx.md (mov<V_32:mode>): + Use nonimm_or_0_operand predicate for operand 1. + (*mov<V_32:mode>_internal): Ditto. + (movv2qi): Ditto. + (*movv2qi_internal): Ditto. Use ix86_hardreg_mov_ok + in insn condition. + +2025-07-12 Xi Ruoyao <xry111@xry111.site> + + PR rtl-optimization/120983 + * lra-constraints.cc (process_alt_operands): Allow reloading + user hard registers unless the insn is an asm. + +2025-07-11 David Malcolm <dmalcolm@redhat.com> + + * diagnostic-format-html.cc: Include "diagnostic-format-sarif.h", + Replace include of "diagnostic-state.h" with includes of + "diagnostic-digraphs.h" and "diagnostic-state-graphs.h". + (html_generation_options::html_generation_options): Update for + field renaming. + (html_builder::m_body_element): New field. + (html_builder::html_builder): Initialize m_body_element. + (html_builder::maybe_make_state_diagram): Port from XML + implementation to state graph implementation. + (html_builder::make_element_for_diagnostic): Add any + per-diagnostic graphs. + (html_builder::add_graph): New. + (html_builder::emit_global_graph): New. + (html_output_format::report_global_digraph): New. + * diagnostic-format-html.h + (html_generation_options::m_show_state_diagram_xml): Replace + with... + (html_generation_options::m_show_state_diagrams_sarif): ...this. + (html_generation_options::m_show_state_diagram_dot_src): Rename + to... + (html_generation_options::m_show_state_diagrams_dot_src): ...this. + * diagnostic-format-sarif.cc: Include "diagnostic-digraphs.h" and + "diagnostic-state-graphs.h". + (sarif_builder::m_run_graphs): New field. + (sarif_result::on_nested_diagnostic): Update call to + make_location_object to pass arg by pointer. + (sarif_builder::sarif_builder): Initialize m_run_graphs. + (sarif_builder::report_global_digraph): New. + (sarif_builder::make_result_object): Add any graphs to + the result object. + (sarif_builder::make_locations_arr): Update call to + make_location_object to pass arg by pointer. + (sarif_builder::make_location_object): Pass param "loc_mgr" by + pointer rather than by reference so that it can be null, and + handle this case. + (copy_any_property_bag): New. + (make_sarif_graph): New. + (make_sarif_node): New. + (make_sarif_edge): New. + (sarif_property_bag::set_graph): New. + (populate_thread_flow_location_object): Port from XML + implementation to state graph implementation. + (make_run_object): Store any graphs. + (sarif_output_format::report_global_digraph): New. + (sarif_generation_options::sarif_generation_options): Rename + m_xml_state to m_state_graph. + (selftest::test_make_location_object): Update for change to + make_location_object. + * diagnostic-format-sarif.h: + (sarif_generation_options::m_xml_state): Replace with... + (sarif_generation_options::m_state_graph): ...this. + (class sarif_location_manager): Add forward decl. + (diagnostics::digraphs::digraph): New forward decl. + (diagnostics::digraphs::node): New forward decl. + (diagnostics::digraphs::edge): New forward decl. + (sarif_property_bag::set_graph): New decl. + (class sarif_graph): New. + (class sarif_node): New. + (class sarif_edge): New. + (make_sarif_graph): New decl. + (make_sarif_node): New decl. + (make_sarif_edge): New decl. + * diagnostic-format-text.h + (diagnostic_text_output_format::report_global_digraph): New. + * diagnostic-format.h + (diagnostic_output_format::report_global_digraph): New vfunc. + * diagnostic-digraphs.cc: New file. + * diagnostic-digraphs.h: New file. + * diagnostic-metadata.h (diagnostics::digraphs::lazy_digraphs): + New forward decl. + (diagnostic_metadata::diagnostic_metadata): Initialize + m_lazy_digraphs. + (diagnostic_metadata::set_lazy_digraphs): New. + (diagnostic_metadata::get_lazy_digraphs): New. + (diagnostic_metadata::m_lazy_digraphs): New field. + * diagnostic-output-spec.cc (sarif_scheme_handler::make_sink): + Update for XML to state graph changes. + (sarif_scheme_handler::make_sarif_gen_opts): Likewise. + (html_scheme_handler::make_sink): Rename "show-state-diagram-xml" + to "show-state-diagrams-sarif" and use pluralization consistently. + * diagnostic-path.cc: Replace include of "xml.h" with + "diagnostic-state-graphs.h". + (diagnostic_event::maybe_make_xml_state): Replace with... + (diagnostic_event::maybe_make_diagnostic_state_graph): ...this. + * diagnostic-path.h (diagnostics::digraphs::digraph): New forward + decl. + (diagnostic_event::maybe_make_xml_state): Replace with... + (diagnostic_event::maybe_make_diagnostic_state_graph): ...this. + * diagnostic-state-graphs.cc: New file. + * diagnostic-state-graphs.h: New file. + * diagnostic-state-to-dot.cc: Port implementation from XML to + state graphs. + * diagnostic-state.h: Deleted file. + * diagnostic.cc (diagnostic_context::report_global_digraph): New. + * diagnostic.h (diagnostics::digraphs::lazy_digraph): New forward + decl. + (diagnostic_context::report_global_digraph): New decl. + * doc/analyzer.texi (Debugging the Analyzer): Update to reflect + change from XML to state graphs. + * doc/invoke.texi ("sarif" diagnostics sink): Replace "xml-state" + with "state-graphs". + ("experimental-html" diagnostics sink): Replace + "show-state-diagrams-xml" with "show-state-diagrams-sarif" + * doc/libgdiagnostics/topics/compatibility.rst + (LIBGDIAGNOSTICS_ABI_3): New. + * doc/libgdiagnostics/topics/graphs.rst: New file. + * doc/libgdiagnostics/topics/index.rst: Add graphs.rst. + * graphviz.h (node_id::operator=): New. + * json.h (json::value::dyn_cast_string): New. + (json::object::get_num_keys): New accessor. + (json::object::get_key): New accessor. + (json::string::dyn_cast_string): New. + * libgdiagnostics++.h (class libgdiagnostics::graph): New. + (class libgdiagnostics::node): New. + (class libgdiagnostics::edge): New. + (class libgdiagnostics::diagnostic::take_graph): New. + (class libgdiagnostics::manager::take_global_graph): New. + (class libgdiagnostics::graph::set_description): New. + (class libgdiagnostics::graph::get_node_by_id): New. + (class libgdiagnostics::graph::get_edge_by_id): New. + (class libgdiagnostics::graph::add_edge): New. + (class libgdiagnostics::node::set_label): New. + (class libgdiagnostics::node::set_location): New. + (class libgdiagnostics::node::set_logical_location): New. + * libgdiagnostics-private.h: New file. + * libgdiagnostics.cc: Define INCLUDE_STRING. Include + "diagnostic-digraphs.h", "diagnostic-state-graphs.h", and + "libgdiagnostics-private.h". + (struct diagnostic_graph): New. + (struct diagnostic_node): New. + (struct diagnostic_edge): New. + (libgdiagnostics_path_event::libgdiagnostics_path_event): Add + state_graph param. + (libgdiagnostics_path_event::maybe_make_diagnostic_state_graph): + New. + (libgdiagnostics_path_event::m_state_graph): New field. + (diagnostic_execution_path::add_event_va): Add state_graph param. + (class prebuilt_digraphs): New. + (diagnostic::diagnostic): Use m_graphs in m_metadata. + (diagnostic::take_graph): New. + (diagnostic::get_graphs): New accessor. + (diagnostic::m_graphs): New field. + (diagnostic_manager::take_global_graph): New. + (diagnostic_execution_path_add_event): Update for new param to + add_event_va. + (diagnostic_execution_path_add_event_va): Likewise. + (diagnostic_graph::add_node_with_id): New public entrypoint. + (diagnostic_graph::add_edge_with_label): New public entrypoint. + (diagnostic_manager_new_graph): New public entrypoint. + (diagnostic_manager_take_global_graph): New public entrypoint. + (diagnostic_take_graph): New public entrypoint. + (diagnostic_graph_release): New public entrypoint. + (diagnostic_graph_set_description): New public entrypoint. + (diagnostic_graph_add_node): New public entrypoint. + (diagnostic_graph_add_edge): New public entrypoint. + (diagnostic_graph_get_node_by_id): New public entrypoint. + (diagnostic_graph_get_edge_by_id): New public entrypoint. + (diagnostic_node_set_location): New public entrypoint. + (diagnostic_node_set_label): New public entrypoint. + (diagnostic_node_set_logical_location): New public entrypoint. + (private_diagnostic_execution_path_add_event_2): New private + entrypoint. + (private_diagnostic_graph_set_property_bag): New private + entrypoint. + (private_diagnostic_node_set_property_bag): New private + entrypoint. + (private_diagnostic_edge_set_property_bag): New private + entrypoint. + * libgdiagnostics.h (diagnostic_graph): New typedef. + (diagnostic_node): New typedef. + (diagnostic_edge): New typedef. + (diagnostic_manager_new_graph): New decl. + (diagnostic_manager_take_global_graph): New decl. + (diagnostic_take_graph): New decl. + (diagnostic_graph_release): New decl. + (diagnostic_graph_set_description): New decl. + (diagnostic_graph_add_node): New decl. + (diagnostic_graph_add_edge): New decl. + (diagnostic_graph_get_node_by_id): New decl. + (diagnostic_graph_get_edge_by_id): New decl. + (diagnostic_node_set_label): New decl. + (diagnostic_node_set_location): New decl. + (diagnostic_node_set_logical_location): New decl. + * libgdiagnostics.map (LIBGDIAGNOSTICS_ABI_3): New. + * libsarifreplay.cc: Include "libgdiagnostics-private.h". + (id_map): New "using". + (sarif_replayer::report_invalid_sarif): Update for change to + report_problem params. + (sarif_replayer::report_unhandled_sarif): Likewise. + (sarif_replayer::report_note): New. + (sarif_replayer::report_problem): Pass param "ref" by + pointer rather than reference and handle it being null. + (sarif_replayer::maybe_get_property_bag): New. + (sarif_replayer::maybe_get_property_bag_value): New. + (sarif_replayer::handle_run_obj): Handle run-level "graphs" as per + §3.14.20. + (sarif_replayer::handle_result_obj): Handle result-level "graphs" + as per §3.27.19. + (handle_thread_flow_location_object): Optionally handle graphs + stored in property "gcc/diagnostic_event/state_graph" as state + graphs. + (sarif_replayer::handle_graph_object): New. + (sarif_replayer::handle_node_object): New. + (sarif_replayer::handle_edge_object): New. + (sarif_replayer::get_graph_node_by_id_property): New. + * selftest-run-tests.cc (selftest::run_tests): Call + selftest::diagnostic_graph_cc_tests and + selftest::diagnostic_state_graph_cc_tests. + * selftest.h (selftest::diagnostic_graph_cc_tests): New decl. + (selftest::diagnostic_state_graph_cc_tests): New decl. + +2025-07-11 David Malcolm <dmalcolm@redhat.com> + + * Makefile.in (OBJS-libcommon): Add diagnostic-digraphs.o and + diagnostic-state-graphs.o. + +2025-07-11 David Malcolm <dmalcolm@redhat.com> + + * json.cc (json::object::clone): New. + (json::object::clone_as_object): New. + (json::array::clone): New. + (json::float_number::clone): New. + (json::integer_number::clone): New. + (json::string::clone): New. + (json::literal::clone): New. + (selftest::test_cloning): New test. + (selftest::json_cc_tests): Call it. + * json.h (json::value::clone): New vfunc. + (json::object::clone): New decl. + (json::object::clone_as_object): New decl. + (json::array::clone): New decl. + (json::float_number::clone): New decl. + (json::integer_number::clone): New decl. + (json::string::clone): New decl. + (json::literal::clone): New decl. + +2025-07-11 David Malcolm <dmalcolm@redhat.com> + + * json.cc (string::string): When constructing from pointer and + length, ensure the new buffer is null-terminated. + (selftest::test_strcmp): New. + (selftest::json_cc_tests): Likewise. + +2025-07-11 David Malcolm <dmalcolm@redhat.com> + + * doc/libgdiagnostics/topics/compatibility.rst + (_LIBGDIAGNOSTICS_ABI_2): Add missing anchor. + * doc/libgdiagnostics/topics/diagnostic-manager.rst + (diagnostic_manager_add_sink_from_spec): Add links to GCC's + documentation of "-fdiagnostics-add-output=". Fix parameter + markup. + (diagnostic_manager_set_analysis_target): Fix parameter markup. + Add link to SARIF spec. + * doc/libgdiagnostics/topics/logical-locations.rst: Markup fix. + * doc/libgdiagnostics/tutorial/02-physical-locations.rst: Clarify + wording of what "the source file" means, and that a range can't + have multiple files. + +2025-07-11 Vladimir N. Makarov <vmakarov@redhat.com> + + * lra-constraints.cc (process_address_1): When changing base reg + on a reg of the base class, fall back to reload of whole inner address. + (process_address): Constrain the iteration number. + +2025-07-11 Jakub Jelinek <jakub@redhat.com> + + PR c++/119064 + * doc/invoke.texi (Wc++26-compat): Document. + +2025-07-11 Richard Sandiford <richard.sandiford@arm.com> + + PR target/121027 + * config/aarch64/aarch64.cc (aarch64_evpc_sve_tbl): Punt on 2-input + operations that can be handled by vec_perm. + +2025-07-11 Kyrylo Tkachov <ktkachov@nvidia.com> + + * config/aarch64/aarch64-simd.md (*eor3qdi4): New + define_insn_and_split. + +2025-07-11 Kyrylo Tkachov <ktkachov@nvidia.com> + + * config/aarch64/aarch64-simd.md (*bcaxqdi4): New + define_insn_and_split. + +2025-07-11 Kyrylo Tkachov <ktkachov@nvidia.com> + + * config/aarch64/aarch64-simd.md (eor3q<mode>4): Use VDQ_I mode + iterator. + +2025-07-11 Kyrylo Tkachov <ktkachov@nvidia.com> + + * config/aarch64/aarch64-simd.md (bcaxq<mode>4): Use VDQ_I mode + iterator. + +2025-07-11 Richard Biener <rguenther@suse.de> + + PR tree-optimization/121034 + * tree-vect-loop.cc (vectorizable_reduction): Cleanup + reduction chain following code. + +2025-07-11 Jan Hubicka <hubicka@ucw.cz> + + * opts.cc (finish_options): Enable debug_nonbind_markers_p for + auto-profile. + * tree-cfg.cc (struct locus_discrim_map): Remove. + (struct locus_discrim_hasher): Remove. + (locus_discrim_hasher::hash): Remove. + (locus_discrim_hasher::equal): Remove. + (first_non_label_nondebug_stmt): Remove. + (build_gimple_cfg): Do not allocate discriminator tables. + (next_discriminator_for_locus): Remove. + (same_line_p): Remove. + (struct discrim_entry): New structure. + (assign_discriminator): Rewrite. + (assign_discriminators): Rewrite. + +2025-07-11 Jan Hubicka <hubicka@ucw.cz> + + PR ipa/114790 + * cgraph.cc (cgraph_update_edges_for_call_stmt_node): Resolve devirtualization + if call statement was optimized out or turned to direct call. + +2025-07-11 Jakub Jelinek <jakub@redhat.com> + Martin Jambor <mjambor@suse.cz> + + PR ipa/121023 + * ipa-fnsummary.cc (compute_fn_summary): Disallow signature changes + on cfun->has_musttail functions. + +2025-07-11 Hu, Lin1 <lin1.hu@intel.com> + + PR target/91384 + * config/i386/i386.md: Add new peeophole2 for optimize *negsi_1 + followed by *cmpsi_ccno_1 with APX_F. + +2025-07-11 Richard Biener <rguenther@suse.de> + + * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost): Use + the LHS of a scalar stmt to determine mode and whether it is FP. + +2025-07-10 Richard Sandiford <richard.sandiford@arm.com> + + * config/aarch64/aarch64.cc (aarch64_vector_costs::add_stmt_cost): + Guard VF-based costing with !m_costing_for_scalar. + +2025-07-10 Qing Zhao <qing.zhao@oracle.com> + + * internal-fn.cc (expand_ACCESS_WITH_SIZE): Update comments. + * internal-fn.def (ACCESS_WITH_SIZE): Update comments. + * tree-object-size.cc (access_with_size_object_size): Update comments. + Adjust the arguments per the new design. + +2025-07-10 Qing Zhao <qing.zhao@oracle.com> + + PR middle-end/121000 + * internal-fn.cc (expand_ACCESS_WITH_SIZE): Update comments. + * internal-fn.def (ACCESS_WITH_SIZE): Update comments. + * tree-object-size.cc (access_with_size_object_size): Update comments. + Get the element_size from the 6th argument directly. + +2025-07-10 Richard Sandiford <richard.sandiford@arm.com> + + * config/aarch64/aarch64-sve2.md (aarch64_gather_ld1q): Replace with... + (@aarch64_gather_ld1q<mode>): ...this, parameterizing based on mode. + * config/aarch64/aarch64-sve-builtins-sve2.cc + (svld1q_gather_impl::expand): Update accordingly. + (svst1q_scatter_impl::expand): Use aarch64_sve_reinterpret + instead of force_lowpart_subreg. + +2025-07-10 Jan Hubicka <hubicka@ucw.cz> + + * auto-profile.cc: Include output.h. + (function_instance::set_call_location): Also sanity check + that location is known. + (raw_symbol_name): Two new static functions. + (dump_inline_stack): Use it. + (string_table::get_index_by_decl): Likewise. + (function_instance::get_cgraph_node): Likewise. + (function_instance::get_function_instance_by_decl): Fix typo + in warning; use raw names; fix lineno decoding. + (match_with_target): Add containing funciton parameter; + correctly output function and call location in warning. + (function_instance::lookup_count): Fix warning locations. + (function_instance::match): Fix warning locations; avoid + crash with mismatched callee; do not warn about broken callsites + twice. + (autofdo_source_profile::offline_external_functions): Use + raw_assembler_name. + (walk_block): Use raw_assembler_name. + +2025-07-10 Robin Dapp <rdapp@ventanamicro.com> + + PR target/121014 + * cfgexpand.cc (expand_debug_expr): Assert FLOAT_MODE_P. + * optabs-tree.cc (optab_for_tree_code): Assert FLOAT_TYPE_P. + * tree-vect-loop.cc (vect_get_loop_len): Use EXACT_DIV_EXPR. + +2025-07-10 Robin Dapp <rdapp@ventanamicro.com> + + PR target/118734 + * config/riscv/constraints.md (Wdm): Use tunable for Wdm + constraint. + * config/riscv/riscv-protos.h (emit_avltype_insn): Declare. + (can_be_broadcasted_p): Rename to... + (can_be_broadcast_p): ...this. + * config/riscv/predicates.md: Use renamed function. + (strided_load_broadcast_p): Declare. + * config/riscv/riscv-selftests.cc (run_broadcast_selftests): + Only run broadcast selftest if strided broadcasts are OK. + * config/riscv/riscv-v.cc (emit_avltype_insn): New function. + (sew64_scalar_helper): Only emit a pred_broadcast if the new + tunable says so. + (can_be_broadcasted_p): Rename to... + (can_be_broadcast_p): ...this and use new tunable. + * config/riscv/riscv.cc (struct riscv_tune_param): Add strided + broad tunable. + (strided_load_broadcast_p): Implement. + * config/riscv/vector.md: Use strided_load_broadcast_p () and + work around 64-bit broadcast on rv32 targets. + +2025-07-10 Co-authored-by: Jeff Law <jlaw@ventanamicro.com> + + * config/riscv/riscv.cc (riscv_fusion_pairs): Add new cases. + (riscv_set_is_add): New function. + (riscv_set_is_addi, riscv_set_is_adduw, riscv_set_is_shNadd): Likewise. + (riscv_set_is_shNadduw): Likewise. + (riscv_macro_fusion_pair_p): Add new fusion cases. + +2025-07-10 Richard Biener <rguenther@suse.de> + + * tree-vect-slp.cc (vect_analyze_slp): Fail for non-canonical + gconds. + +2025-07-10 Richard Biener <rguenther@suse.de> + + * tree-vect-slp.cc (vect_build_slp_instance): Do not use + SLP_TREE_VECTYPE to determine the conversion back to the + reduction IV. + +2025-07-10 Richard Biener <rguenther@suse.de> + + * tree-vect-loop.cc (vectorizable_reduction): Avoid + vect_is_simple_use and record a vector type if we come + up with one. + +2025-07-10 Richard Biener <rguenther@suse.de> + + * tree-vect-stmts.cc (get_load_store_type): Do not use + vect_is_simple_use to fill gather/scatter offset operand + vectype and dt. + +2025-07-10 Richard Biener <rguenther@suse.de> + + * tree-vect-loop.cc (vect_model_reduction_cost): Get SLP + node instead of stmt_info and use that when recording costs. + +2025-07-10 Kyrylo Tkachov <ktkachov@nvidia.com> + + PR target/120999 + * config/aarch64/aarch64-sve2.md (*aarch64_sve2_nor<mode>): + Adjust movprfx alternative. + +2025-07-10 Richard Sandiford <richard.sandiford@arm.com> + + * doc/sourcebuild.texi (aarch64_sve2_hw, aarch64_sve2p1_hw): Document. + * config/aarch64/aarch64.cc (aarch64_evpc_hvla): Extend to + BYTES_BIG_ENDIAN. + +2025-07-10 Richard Biener <rguenther@suse.de> + + * tree-vectorizer.h (vect_analyze_stmt): Remove stmt-info + and need_to_vectorize arguments. + * tree-vect-slp.cc (vect_slp_analyze_node_operations_1): + Adjust. + * tree-vect-stmts.cc (can_vectorize_live_stmts): Remove + stmt_info argument and remove non-SLP path. + (vect_analyze_stmt): Remove stmt_info and need_to_vectorize + argument and prune paths no longer reachable. + (vect_transform_stmt): Adjust. + +2025-07-10 Jakub Jelinek <jakub@redhat.com> + + * config/i386/x86-tune.def: Change "Tunning the" to "tuning" in + comment and use semicolon instead of dot in comment. + * loop-unroll.cc (decide_unroll_stupid): Comment spelling fix, + tunning -> tuning. + +2025-07-10 Jakub Jelinek <jakub@redhat.com> + + * tree-vect-loop.cc (scale_profile_for_vect_loop): Comment + spelling fix: bellow -> below. + * ipa-polymorphic-call.cc (record_known_type): Likewise. + * config/i386/x86-tune.def: Likewise. + * config/riscv/vector.md (*vsetvldi_no_side_effects_si_extend): + Likewise. + * tree-scalar-evolution.cc (iv_can_overflow_p): Likewise. + * ipa-devirt.cc (add_type_duplicate): Likewise. + * tree-ssa-loop-niter.cc (maybe_lower_iteration_bound): Likewise. + * gimple-ssa-sccopy.cc: Likewise. + * cgraphunit.cc: Likewise. + * graphite.h (struct poly_dr): Likewise. + * ipa-reference.cc (ignore_edge_p): Likewise. + * tree-ssa-alias.cc (ao_compare::compare_ao_refs): Likewise. + * profile-count.h (profile_probability::probably_reliable_p): + Likewise. + * ipa-inline-transform.cc (inline_call): Likewise. + +2025-07-10 Richard Biener <rguenther@suse.de> + + * tree-vect-loop.cc (vect_dissolve_slp_only_groups): Remove. + (vect_analyze_loop_2): Do not call it. + +2025-07-10 Richard Biener <rguenther@suse.de> + + * tree-vect-loop.cc (vect_active_double_reduction_p): Remove. + (vect_analyze_loop_operations): Remove. + (vect_analyze_loop_2): Do not call it. + +2025-07-10 Richard Biener <rguenther@suse.de> + + * tree-vect-loop.cc (vect_determine_vf_for_stmt_1): Rename + to ... + (vect_determine_vectype_for_stmt_1): ... this and only set + STMT_VINFO_VECTYPE. Fail for single-element vector types. + (vect_determine_vf_for_stmt): Rename to ... + (vect_determine_vectype_for_stmt): ... this and only set + STMT_VINFO_VECTYPE. Fail for single-element vector types. + (vect_determine_vectorization_factor): Rename to ... + (vect_set_stmts_vectype): ... this and only set STMT_VINFO_VECTYPE. + (vect_update_vf_for_slp): Remove. + (vect_analyze_loop_operations): Remove walk over stmts. + (vect_analyze_loop_2): Call vect_set_stmts_vectype instead of + vect_determine_vectorization_factor. Set vectorization factor + from LOOP_VINFO_SLP_UNROLLING_FACTOR. Fail if vect_detect_hybrid_slp + detects hybrid stmts or when vect_make_slp_decision finds + nothing to SLP. + * tree-vect-slp.cc (vect_detect_hybrid_slp): Move check + whether we have any hybrid stmts here from vect_update_vf_for_slp + * tree-vect-stmts.cc (vect_analyze_stmt): Remove loop over + stmts. + * tree-vectorizer.h (vect_detect_hybrid_slp): Update. + +2025-07-09 Richard Sandiford <richard.sandiford@arm.com> + + * config/aarch64/aarch64.cc (aarch64_simd_valid_imm): Account + for FLOAT_WORDS_BIG_ENDIAN when building a floating-point value. + +2025-07-09 Jan Hubicka <hubicka@ucw.cz> + + * auto-profile.cc (afdo_adjust_guessed_profile): Add forgotten + if (dump_file) guard. + +2025-07-09 Richard Sandiford <richard.sandiford@arm.com> + + * config/aarch64/aarch64.cc (aarch64_sve_index_series_p): New + function, split out from... + (aarch64_simd_valid_imm): ...here. Account for the different + SVE and Advanced SIMD element orders on big-endian targets. + Check each vector in a structure mode. + +2025-07-09 Richard Sandiford <richard.sandiford@arm.com> + + * read-rtl-function.cc (function_reader::read_rtx_operand_r): Use + hard_regno_nregs to work out REG_NREGS for hard registers. + +2025-07-09 Pan Li <pan2.li@intel.com> + + * config/riscv/riscv-v.cc (expand_vx_binary_vec_vec_dup): Add + new case SS_MINUS. + * config/riscv/riscv.cc (riscv_rtx_costs): Ditto. + * config/riscv/vector-iterators.md: Add new op ss_minus. + +2025-07-09 Richard Sandiford <richard.sandiford@arm.com> + + * ext-dce.cc (ext_dce_process_uses): Apply is_constant directly + to the subreg_lsb. + +2025-07-09 Jan Dubiec <jdx@o2.pl> + + PR target/109286 + * config.gcc: Include elfos.h before h8300/h8300.h. + * config/h8300/h8300.h (INIT_SECTION_ASM_OP): Override + default version from elfos.h. + (FINI_SECTION_ASM_OP): Ditto. + (ASM_DECLARE_FUNCTION_NAME): Ditto. + (ASM_GENERATE_INTERNAL_LABEL): Macro removed because it was + being overridden in elfos.h anyway. + (ASM_OUTPUT_SKIP): Ditto. + +2025-07-09 Icen Zeyada <Icen.Zeyada2@arm.com> + + PR tree-optimization/119196 + * match.pd: Allow scalar optimizations with bitwise AND/OR/XOR to apply to vectors. + +2025-07-09 Icen Zeyada <Icen.Zeyada2@arm.com> + + PR tree-optimization/119196 + * match.pd: Merge multiple vec_cond_expr in a single one for + bit_and, bit_ior and bit_xor. + +2025-07-09 Jeff Law <jlaw@ventanamicro.com> + + PR target/120642 + * config/riscv/riscv-avlprop.cc (pass_avlprop::execute): Do not do + constant AVL propagation for xtheadvector. + +2025-07-09 Richard Biener <rguenther@suse.de> + + * tree-vect-loop.cc (vectorizable_reduction): Get the + output vector type from slp_for_stmt_info. + * tree-vect-stmts.cc (vect_analyze_stmt): Bail out earlier + for PURE_SLP_STMT when doing loop stmt analysis. + +2025-07-09 Jan Hubicka <hubicka@ucw.cz> + + * auto-profile.cc (struct scale): New structure. + (add_scale): Also record weights. + (afdo_adjust_guessed_profile): Compute robust average + of scales and cap by max count in function. + +2025-07-09 Jan Hubicka <hubicka@ucw.cz> + + * tree-inline.cc (initialize_cfun): Use num and den for scaling. + +2025-07-09 Jan Hubicka <hubicka@ucw.cz> + + * auto-profile.cc (get_original_name): Fix loop walking the + suffixes. + +2025-07-09 Christophe Lyon <christophe.lyon@linaro.org> + + * config/arm/arm_neon.h: Remove useless push/pop pragmas. + +2025-07-09 Tamar Christina <tamar.christina@arm.com> + + PR tree-optimization/120922 + * tree-vect-loop-manip.cc (vect_gen_vector_loop_niters): Support range + for partial vectors. + +2025-07-09 Tamar Christina <tamar.christina@arm.com> + + PR tree-optimization/120922 + * tree-vect-loop-manip.cc (vect_gen_vector_loop_niters): Don't set range + for partial vectors. + +2025-07-08 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> + + * config/xtensa/xtensa.cc (xtensa_b4const_or_zero): + Remove. + (xtensa_b4const): Add a case where the value is 0, and rename + to xtensa_b4const_or_zero. + (xtensa_rtx_costs): Fix to also consider the result of + xtensa_b4constu(). + +2025-07-08 Stefan Schulze Frielinghaus <stefansf@gcc.gnu.org> + + * config/s390/s390.md (stack_protect_get_tpsi): New insn. + (stack_protect_get_tpdi): New insn. + (stack_protect_set): Use new insn. + (stack_protect_test): Use new insn. + +2025-07-08 Robin Dapp <rdapp@ventanamicro.com> + + PR target/120461 + * config/riscv/riscv-v.cc (emit_vlmax_insn_lra): Do not emit + vsetivli for XTHeadVector. + +2025-07-08 Robin Dapp <rdapp@ventanamicro.com> + + PR target/113829 + * config/riscv/riscv-vector-builtins.cc (registered_function::overloaded_hash): + Skip non-type arguments. + +2025-07-08 Andreas Schwab <schwab@suse.de> + + PR target/120995 + * config/riscv/sync.md (zacas_atomic_cas_value_strong<mode>): + Allow op3 to be zero. + +2025-07-08 Richard Biener <rguenther@suse.de> + + * config/i386/x86-tune.def (X86_TUNE_AVX512_MASKED_EPILOGUES): + New tunable, default on for m_ZNVER4 and m_ZNVER5. + * config/i386/i386.cc (ix86_vector_costs::finish_cost): With + X86_TUNE_AVX512_MASKED_EPILOGUES and when the main loop + had a vectorization factor > 2 use a masked epilogue when + possible and when not obviously problematic. + +2025-07-08 Richard Biener <rguenther@suse.de> + + * tree-vectorizer.h (vector_costs::suggested_epilogue_mode): + Add masked output parameter and return m_masked_epilogue. + (vector_costs::m_masked_epilogue): New tristate flag. + (vector_costs::vector_costs): Initialize m_masked_epilogue. + * tree-vect-loop.cc (vect_analyze_loop_1): Pass in masked + flag to optionally initialize can_use_partial_vectors_p. + (vect_analyze_loop): For epilogues also get whether to use + a masked epilogue for this loop from the target and use + that for the first epilogue mode we try. + +2025-07-08 Richard Biener <rguenther@suse.de> + + PR tree-optimization/120358 + * tree-ssa-structalias.cc (get_constraint_for_1): Adjust + pruning of sub-variables according to the imprecise + known start offset. + +2025-07-08 Alexandre Oliva <oliva@adacore.com> + + * config/vxworks-dummy.h (TARGET_VXWORKS_VAROFF): New. + (TARGET_VXWORKS_GOTTPIC): New. + * config/vxworks.h (TARGET_VXWORKS_VAROFF): Override. + (TARGET_VXWORKS_GOTTPIC): Likewise. + * config/i386/i386.cc (output_set_got): Disable VxWorks6 GOT + sequence on VxWorks7. + (legitimize_pic_address): Accept relative addressing of + labels on VxWorks7. + (ix86_delegitimize_address_1): Likewise. + (ix86_output_addr_diff_elt): Likewise. + * config/i386/i386.md (tablejump): Likewise. + (set_got, set_got_labelled): Set no-red-zone flag on VxWorks7. + * config/i386/predicates.md (gotoff_operand): Test + TARGET_VXWORKS_VAROFF. + +2025-07-08 Alexandre Oliva <oliva@adacore.com> + + * config.gcc (vxworks-dummy.h): Add to aarch64-*-* as well. + +2025-07-07 Qing Zhao <qing.zhao@oracle.com> + + Revert: + 2025-07-07 Qing Zhao <qing.zhao@oracle.com> + + * doc/extend.texi: Extend counted_by attribute to pointer fields in + structures. Add one more requirement to pointers with counted_by + attribute. + +2025-07-07 Qing Zhao <qing.zhao@oracle.com> + + Revert: + 2025-07-01 Qing Zhao <qing.zhao@oracle.com> + + * tree-object-size.cc (access_with_size_object_size): Update comments + for pointers with .ACCESS_WITH_SIZE. + (collect_object_sizes_for): Propagate size info through GIMPLE_ASSIGN + for pointers with .ACCESS_WITH_SIZE. + +2025-07-07 Martin Jambor <mjambor@suse.cz> + + * value-range.h (class irange): Mark member function verify_range + with override. + (class prange): Mark member function verify_range with final override. + (class frange): Mark member function verify_range with override. + +2025-07-07 H.J. Lu <hjl.tools@gmail.com> + + PR target/120888 + * config/xtensa/xtensa.cc (xtensa_promote_function_mode): New. + (TARGET_PROMOTE_FUNCTION_MODE): Use. + (TARGET_PROMOTE_PROTOTYPES): Removed. + +2025-07-07 Juergen Christ <jchrist@linux.ibm.com> + + * config/s390/s390.md: Update UNSPECs + * config/s390/vector.md (fmax<mode>3): New expander. + (fmin<mode>3): New expander. + * config/s390/vx-builtins.md (*fmin<mode>): New insn. + (vfmin<mode>): Redefined to use new insn. + (*fmax<mode>): New insn. + (vfmax<mode>): Redefined to use new insn. + +2025-07-07 Jason Merrill <jason@redhat.com> + + PR c++/120917 + * doc/invoke.texi: Add -Wno-abbreviated-auto-in-template-arg. + +2025-07-07 Kyrylo Tkachov <ktkachov@nvidia.com> + + * config/aarch64/aarch64.md (popcountti2): Add TARGET_SVE path. + +2025-07-07 Richard Biener <rguenther@suse.de> + + PR tree-optimization/120817 + * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Use + ao_ref_init_from_ptr_and_range with unknown size for + .MASK_STORE and .MASK_LEN_STORE. + +2025-07-07 Pan Li <pan2.li@intel.com> + + * config/riscv/riscv-protos.h (riscv_expand_usmul): Add new func + decl. + * config/riscv/riscv.cc (riscv_expand_xmode_usmul): Add new func + to expand Xmode SAT_MUL. + (riscv_expand_non_xmode_usmul): Ditto but for non-Xmode. + (riscv_expand_usmul): Add new func to implment SAT_MUL. + * config/riscv/riscv.md (usmul<mode>3): Add new pattern to match + standard name usmul. + +2025-07-07 Pan Li <pan2.li@intel.com> + + * match.pd: Add new match pattern for unsigned SAT_MUL. + * tree-ssa-math-opts.cc (gimple_unsigned_integer_sat_mul): + new decl for pattern match func. + (match_unsigned_saturation_mul): Add new func to match unsigned + SAT_MUL. + (math_opts_dom_walker::after_dom_children): Try to match + unsigned SAT_MUL on NOP. + +2025-07-07 Pan Li <pan2.li@intel.com> + + * internal-fn.cc (commutative_binary_fn_p): Add new case + for SAT_MUL. + * internal-fn.def (SAT_MUL): Add new IFN_SAT_MUL. + * optabs.def (OPTAB_NL): Remove fixed point limitation. + +2025-07-07 Juergen Christ <jchrist@linux.ibm.com> + + * config/s390/s390.md: Removed unused unspecs. + * config/s390/vector.md (avg<mode>3_ceil): New expander. + (uavg<mode>3_ceil): New expander. + (smul<mode>3_highpart): New expander. + (umul<mode>3_highpart): New expander. + * config/s390/vx-builtins.md (vec_umulh<mode>): Remove unspec. + (vec_smulh<mode>): Remove unspec. + +2025-07-07 Spencer Abson <spencer.abson@arm.com> + + * config/aarch64/aarch64-sve.md (vec_cmp<mode><vpred>): Extend + to handle partial FP modes. + (@aarch64_pred_fcm<cmp_op><mode>): Likewise. + (@aarch64_pred_fcmuo<mode>): Likewise. + (*one_cmpl<mode>3): Rename to... + (@aarch64_pred_one_cmpl<mode>_z): ... this. + * config/aarch64/aarch64.cc (aarch64_emit_sve_fp_cond): Allow the + target and governing predicates to have different modes. + (aarch64_emit_sve_or_fp_conds): Likewise. + (aarch64_emit_sve_invert_fp_cond): Likewise. + (aarch64_expand_sve_vec_cmp_float): Likewise. + +2025-07-07 Richard Sandiford <richard.sandiford@arm.com> + + PR tree-optimization/118891 + * tree-vect-stmts.cc (supportable_widening_operation): Swap the + hi and lo internal functions on big-endian targets. + +2025-07-07 Richard Sandiford <richard.sandiford@arm.com> + + * ext-dce.cc (ext_dce_process_uses): Apply is_constant directly + to the subreg_lsb. + +2025-07-07 Richard Sandiford <richard.sandiford@arm.com> + + * config/aarch64/aarch64-sve.md (@aarch64_sve_set_neonq_<mode>): + Use %Z instead of lowpart_subreg. Tweak formatting. + +2025-07-07 Richard Sandiford <richard.sandiford@arm.com> + + PR target/118891 + * config/aarch64/aarch64.cc (aarch64_expand_vector_init): Fix the + ZIP1 operand order for big-endian targets. + +2025-07-07 Jan Hubicka <hubicka@ucw.cz> + + * tree-ssa-live.cc (dump_scope_block): Print discriminators + of inlined functions. + +2025-07-07 H.J. Lu <hjl.tools@gmail.com> + + PR target/120670 + PR target/120683 + * config/i386/i386-expand.cc (expand_set_or_cpymem_via_loop): + Don't generate the loop if the loop count is 1. + (expand_cpymem_epilogue): Use move_by_pieces. + (setmem_epilogue_gen_val): New. + (expand_setmem_epilogue): Use store_by_pieces. + (expand_small_cpymem_or_setmem): Choose cpymem mode from MOVE_MAX. + For memset with vector and the size is smaller than the vector + size, first try the narrower vector, otherwise, use the scalar + value. + (promote_duplicated_reg): Duplicate the scalar value for vector. + (ix86_expand_set_or_cpymem): Always expand vector-version of + memset for vector_loop. Use misaligned prologue if alignment + isn't needed and destination isn't aligned. Always initialize + vec_promoted_val from the promoted scalar value for vector_loop. + +2025-07-07 Andrew Pinski <quic_apinski@quicinc.com> + + PR middle-end/120709 + * builtins.cc (expand_builtin_crc_table_based): Error out + instead of asserting the 3rd argument is an integer constant. + * internal-fn.cc (expand_crc_optab_fn): Likewise. + * doc/extend.texi (crc): Document requirement of the poly argument + being a constant. + +2025-07-06 Georg-Johann Lay <avr@gjlay.de> + + * config/avr/avr-mcus.def: -mmcu= takes lower case MCU names. + * doc/avr-mmcu.texi: Rebuild. + +2025-07-06 Georg-Johann Lay <avr@gjlay.de> + + * config/avr/avr-mcus.def (avr32da28S, avr32da32S, avr32da48S) + (avr64da28S, avr64da32S, avr64da48S avr64da64S) + (avr128da28S, avr128da32S, avr128da48S, avr128da64S): Add devices. + * doc/avr-mmcu.texi: Rebuild. + +2025-07-06 Andrew Pinski <quic_apinski@quicinc.com> + + PR tree-optimization/120951 + * tree-call-cdce.cc (use_internal_fn): For non-call exceptions + with EQ_EXPR can throw for floating point types, then create + the EQ_EXPR seperately. + +2025-07-06 Andrew Pinski <quic_apinski@quicinc.com> + + PR middle-end/120921 + * tree-cfg.cc (verify_gimple_assign_single): Reject constant and address expression LHS. + For non-empty vector constructors, make sure the LHS is an is_gimple_reg. + +2025-07-06 Jan Hubicka <hubicka@ucw.cz> + + * auto-profile.cc + (autofdo_source_profile::read): Scale cutoff. + (read_autofdo_file): Initialize cutoff + * coverage.cc (read_counts_file): Initialize cutoff to 1. + * gcov-io.h (struct gcov_summary): Add cutoff field. + * ipa-inline.cc (inline_small_functions): mac_count can be non-zero + also with auto_profile. + * lto-cgraph.cc (output_profile_summary): Write cutoff + and sum_max. + (input_profile_summary): Read cutoff and sum max. + (merge_profile_summaries): Initialize and scale global cutoffs + and sum max. + * profile-count.cc: Include profile.h + (profile_count::force_nonzero): move here from ...; use cutoff. + * profile-count.h: (profile_count::force_nonzero): ... here. + +2025-07-06 Jan Hubicka <hubicka@ucw.cz> + + * profile-count.cc (profile_count::operator*): fix overflow check. + +2025-07-05 Alexandre Oliva <oliva@adacore.com> + + * config/rs6000/vxworks.h (SUBTARGET_DRIVER_SELF_SPECS): + Redefine to select word size matching TARGET_VXWORKS64. + (TARGET_VXWORKS64): Redefine in terms of TARGET_64BIT. + +2025-07-04 Vineet Gupta <vineetg@rivosinc.com> + + PR target/118241 + * config/riscv/riscv.md (prefetch): Add alternative "r". + +2025-07-04 Vineet Gupta <vineetg@rivosinc.com> + + * config/riscv/predicates.md (prefetch_operand): mack 5 bits. + +2025-07-04 Raphael Moreira Zinsly <rzinsly@ventanamicro.com> + + * config/sh/predicates.md + (treg_set_expr_not_const01): call sh_recog_treg_set_expr_not_01 + * config/sh/sh-protos.h + (sh_recog_treg_set_expr_not_01): New function + * config/sh/sh.cc (sh_recog_treg_set_expr_not_01): Likewise + +2025-07-04 Andrew Pinski <quic_apinski@quicinc.com> + + PR c/118948 + * fold-const.cc (tree_expr_nonnegative_warnv_p): Use + error_operand_p instead of checking for error_mark_node directly. + +2025-07-04 Pan Li <pan2.li@intel.com> + + * config/riscv/riscv-v.cc (expand_vx_binary_vec_dup_vec): Add + new case SS_PLUS. + (expand_vx_binary_vec_vec_dup): Ditto. + * config/riscv/riscv.cc (riscv_rtx_costs): Ditto. + * config/riscv/vector-iterators.md: Add new op ss_plus. + +2025-07-04 Richard Biener <rguenther@suse.de> + + PR tree-optimization/120944 + * tree-ssa-sccvn.cc (vn_reference_lookup_3): Gate optimizations + invalid when volatile is involved. + +2025-07-04 Jan Hubicka <hubicka@ucw.cz> + + * common.opt: Add period. + * common.opt.urls: Regenerate. + +2025-07-04 Richard Biener <rguenther@suse.de> + + PR tree-optimization/120927 + * tree-vect-data-refs.cc (vect_compute_data_ref_alignment): + Do not force a DRs base alignment when analyzing an + epilog loop. Check whether the step preserves alignment + for all VFs possibly involved sofar. + +2025-07-04 Xi Ruoyao <xry111@xry111.site> + + * config/loongarch/loongarch.md (crc_combine): Avoid nested + subreg. + +2025-07-04 Shreya Munnangi <smunnangi1@ventanamicro.com> + + * config/riscv/riscv.cc (riscv_macro_fusion_pair_p): Add basic + instrumentation to all cases where fusion is detected. Fix + minor formatting goofs found in the process. + +2025-07-04 panciyan <panciyan@eswincomputing.com> + + * match.pd: Add signed scalar SAT_ADD IMM form2 matching. + +2025-07-03 Juergen Christ <jchrist@linux.ibm.com> + + * config/s390/s390.cc (expand_perm_with_merge): Add size change cases. + (expand_perm_with_pack): New function. + (vectorize_vec_perm_const_1): Wire up new function. + +2025-07-03 Co-authored-by: Daniel Barboza <dbarboza@ventanamicro.com> + Co-authored-by: Shreya Munnangi <smunnangi1@ventanamicro.com> + + PR target/118886 + * config/riscv/riscv.cc (riscv_macro_fusion_pair_p): Check + for fusion being disabled earlier. If PREV is already fused, + then it can't be fused again. Be more selective about fusing + when the destination registers do not match. Don't fuse into + loads that aren't scalar integer modes. Revamp store pair + commit support. + +2025-07-03 Karl Meakin <karl.meakin@arm.com> + + * config/aarch64/aarch64.md (aarch64_cbz<optab><mode>1): Move + above rules for CBB<cond>/CBH<cond>/CB<cond>. + (*aarch64_tbz<optab><mode>1): Likewise. + +2025-07-03 Karl Meakin <karl.meakin@arm.com> + + * config/aarch64/aarch64-protos.h (aarch64_cb_rhs): New function. + * config/aarch64/aarch64.cc (aarch64_cb_rhs): Likewise. + * config/aarch64/aarch64.md (cbranch<mode>4): Rename to ... + (cbranch<GPI:mode>4): ...here, and emit CMPBR if possible. + (cbranch<SHORT:mode>4): New expand rule. + (aarch64_cb<INT_CMP:code><GPI:mode>): New insn rule. + (aarch64_cb<INT_CMP:code><SHORT:mode>): Likewise. + * config/aarch64/constraints.md (Uc0): New constraint. + (Uc1): Likewise. + (Uc2): Likewise. + * config/aarch64/iterators.md (cmpbr_suffix): New mode attr. + (INT_CMP): New code iterator. + (cmpbr_imm_constraint): New code attr. + +2025-07-03 Karl Meakin <karl.meakin@arm.com> + + * config/aarch64/aarch64-option-extensions.def (cmpbr): New + option. + * config/aarch64/aarch64.h (TARGET_CMPBR): New macro. + * doc/invoke.texi (cmpbr): New option. + +2025-07-03 Karl Meakin <karl.meakin@arm.com> + + * config/aarch64/aarch64.md (far_branch): Replace 0/1 with + no/yes. + (aarch64_bcond): Handle rename. + (aarch64_cbz<optab><mode>1): Likewise. + (*aarch64_tbz<optab><mode>1): Likewise. + (@aarch64_tbz<optab><ALLI:mode><GPI:mode>): Likewise. + +2025-07-03 Karl Meakin <karl.meakin@arm.com> + + * config/aarch64/aarch64.md (BRANCH_LEN_P_1MiB): New constant. + (BRANCH_LEN_N_1MiB): Likewise. + (BRANCH_LEN_P_32KiB): Likewise. + (BRANCH_LEN_N_32KiB): Likewise. + +2025-07-03 Karl Meakin <karl.meakin@arm.com> + + * config/aarch64/aarch64.md (condjump): Rename to ... + (aarch64_bcond): ...here. + (*compare_condjump<GPI:mode>): Rename to ... + (*aarch64_bcond_wide_imm<GPI:mode>): ...here. + (aarch64_cb<optab><mode>): Rename to ... + (aarch64_cbz<optab><mode>1): ...here. + (*cb<optab><mode>1): Rename to ... + (*aarch64_tbz<optab><mode>1): ...here. + (@aarch64_tb<optab><ALLI:mode><GPI:mode>): Rename to ... + (@aarch64_tbz<optab><ALLI:mode><GPI:mode>): ...here. + (restore_stack_nonlocal): Handle rename. + (stack_protect_combined_test): Likewise. + * config/aarch64/aarch64-simd.md (cbranch<mode>4): Likewise. + * config/aarch64/aarch64-sme.md (aarch64_restore_za): Likewise. + * config/aarch64/aarch64.cc (aarch64_gen_test_and_branch): Likewise. + +2025-07-03 Karl Meakin <karl.meakin@arm.com> + + * config/aarch64/aarch64.md (cbranch<mode>4): Reformat. + (cbranchcc4): Likewise. + (condjump): Likewise. + (*compare_condjump<GPI:mode>): Likewise. + (aarch64_cb<optab><mode>1): Likewise. + (*cb<optab><mode>1): Likewise. + (tbranch_<code><mode>3): Likewise. + (@aarch64_tb<optab><ALLI:mode><GPI:mode>): Likewise. + +2025-07-03 Karl Meakin <karl.meakin@arm.com> + + * config/aarch64/aarch64.md (condjump): Move. + (*compare_condjump<GPI:mode>): Likewise. + (aarch64_cb<optab><mode>1): Likewise. + (*cb<optab><mode>1): Likewise. + (tbranch_<code><mode>3): Likewise. + (@aarch64_tb<optab><ALLI:mode><GPI:mode>): Likewise. + +2025-07-03 Siddhesh Poyarekar <siddhesh@gotplt.org> + + PR tree-optimization/120780 + * tree-object-size.cc (inner_at_offset, + get_wholesize_for_memref): New functions. + (addr_object_size): Call get_wholesize_for_memref. + +2025-07-03 H.J. Lu <hjl.tools@gmail.com> + + PR target/120936 + * config/i386/i386.cc (x86_print_call_or_nop): Add a label + argument and use it to print label. + (x86_function_profiler): Emit label only when __mcount_loc + section is used. + +2025-07-03 Jan Hubicka <hubicka@ucw.cz> + + * auto-profile.cc (get_combined_location): Handle negative + offsets; output better diagnostics. + (get_relative_location_for_locus): Reutrn -1 for unknown location. + (function_instance::get_cgraph_node): New member function. + (match_with_target): New function. + (dump_stmt): New function. + (function_instance::lookup_count): New function. + (mark_expr_locations): New function. + (function_instance::match): New function. + (autofdo_source_profile::offline_external_functions): Do + not repeat renaming; manage two worklists and do matching. + (autofdo_source_profile::offline_unrealized_inlines): Simplify. + (afdo_set_bb_count): do not look for lost discriminators. + (auto_profile): Do not ICE when profile reading failed. + * common.opt (Wauto-profile): New warning flag + * doc/invoke.texi (-Wauto-profile): Document. + +2025-07-03 Jan Hubicka <hubicka@ucw.cz> + + * ipa-fnsummary.cc (analyze_function_body): For loop + heuristics use header count instead of preheader count. + +2025-07-03 Jan Hubicka <hubicka@ucw.cz> + + * ipa-cp.cc (update_profiling_info): Watch for division by zero. + +2025-07-03 Alex Coplan <alex.coplan@arm.com> + + * config/aarch64/aarch64-sve.md + (vec_load_lanes<mode><vsingle>): Expand else operand in + subvector mode, as per optab documentation. + (vec_mask_load_lanes<mode><vsingle>): Add missing mode for + operand 3. + * config/aarch64/predicates.md (aarch64_maskload_else_operand): + Remove const_int. + +2025-07-03 Alex Coplan <alex.coplan@arm.com> + + * doc/md.texi (Standard Names): Clarify mode of else operand for + vec_mask_load_lanesmn optab. + +2025-07-03 Jan Hubicka <hubicka@ucw.cz> + + * ipa-cp.cc (cs_interesting_for_ipcp_p): Handle + correctly GLOBAL0 afdo counts. + (ipcp_cloning_candidate_p): Do not rule out nodes + !node->optimize_for_size_p (). + (good_cloning_opportunity_p): Handle afdo counts + as non-zero. + +2025-07-03 Jan Hubicka <hubicka@ucw.cz> + + * ipa-cp.cc (hint_time_bonus): Return sreal and avoid + conversions to integer. + (good_cloning_opportunity_p): Avoid sreal to integer + conversions + (perform_estimation_of_a_value): Update. + +2025-07-03 Jan Hubicka <hubicka@ucw.cz> + + * auto-profile.cc (afdo_hot_bb_threshod): New global + variable. + (maybe_hot_afdo_count_p): New function. + (autofdo_source_profile::read): Do not set up dump file; + set afdo_hot_bb_threshod. + (afdo_annotate_cfg): Handle partial training. + (afdo_callsite_hot_enough_for_early_inline): + Use maybe_hot_afdo_count_p. + (auto_profile_offline::execute): Read autofdo file. + * auto-profile.h (maybe_hot_afdo_count_p): Declare. + (afdo_hot_bb_threshold): Declare. + * coverage.cc (read_counts_file): Also set gcov_profile_info. + (coverage_init): Do not read autofdo file. + * opts.cc (enable_fdo_optimizations): Add autofdo parameter; + do not set flag_branch_probabilities and flag_profile_values + with it. + (common_handle_option): Update. + * passes.cc (finish_optimization_passes): Do not end branch + prob here. + (pass_manager::dump_profile_report): Also mark change after + autofdo pass. + * profile.cc: Include auto-profile.h + (gcov_profile_info): New global variable. + (struct afdo_fdo_record): New struture. + (compute_branch_probabilities): Record afdo profile. + (end_branch_prob): Dump afdo/fdo profile comparsion. + * profile.h (gcov_profile_info): Declarre. + * tree-profile.cc (tree_profiling): Call end_branch_prob + (pass_ipa_tree_profile::gate): Also enable with autoFDO + +2025-07-03 Richard Biener <rguenther@suse.de> + + PR tree-optimization/118669 + * tree-vect-stmts.cc (vectorizable_load): Emit loads + with proper (element) alignment. + (vectorizable_store): Likewise. + +2025-07-03 H.J. Lu <hjl.tools@gmail.com> + + PR target/120908 + * config/i386/i386.cc (legitimize_tls_address): Pass RDI to + gen_tls_local_dynamic_64. + * config/i386/i386.md (*tls_global_dynamic_64_largepic): Add + RDI clobber and use it to generate LEA. + (*tls_local_dynamic_64_<mode>): Likewise. + (*tls_local_dynamic_base_64_largepic): Likewise. + (@tls_local_dynamic_64_<mode>): Add a clobber. + +2025-07-02 H.J. Lu <hjl.tools@gmail.com> + + PR target/120908 + * config/i386/i386.cc (legitimize_tls_address): Pass RDI to + gen_tls_global_dynamic_64. + * config/i386/i386.md (*tls_global_dynamic_64_<mode>): Add RDI + clobber and use it to generate LEA. + (@tls_global_dynamic_64_<mode>): Add a clobber. + +2025-07-02 Alexey Merzlyakov <alexey.merzlyakov@samsung.com> + + PR target/120356 + * config/riscv/riscv-v.cc + (expand_const_vector_interleaved_stepped_npatterns): + Fix ASHIFT to LSHIFTRT insn. + +2025-07-02 Richard Biener <rguenther@suse.de> + + PR tree-optimization/120927 + * tree-vect-loop.cc (vect_analyze_loop): Stop querying + further epilogues after one with partial vectors. + +2025-07-02 Haochen Jiang <haochen.jiang@intel.com> + + * config/i386/driver-i386.cc (host_detect_local_cpu): Change + to AMX-FP8 for Diamond Rapids. + +2025-07-01 Qing Zhao <qing.zhao@oracle.com> + + * tree-object-size.cc (access_with_size_object_size): Update comments + for pointers with .ACCESS_WITH_SIZE. + (collect_object_sizes_for): Propagate size info through GIMPLE_ASSIGN + for pointers with .ACCESS_WITH_SIZE. + +2025-07-01 Qing Zhao <qing.zhao@oracle.com> + + * doc/extend.texi: Extend counted_by attribute to pointer fields in + structures. Add one more requirement to pointers with counted_by + attribute. + +2025-07-01 Jakub Jelinek <jakub@redhat.com> + + PR c++/120471 + * tree.h (address_invariant_p): New function. + * tree.cc (address_invariant_p): New function. + (tree_invariant_p_1): Use it for ADDR_EXPR handling. Formatting + tweak. + +2025-07-01 Remi Machet <rmachet@nvidia.com> + + * config/aarch64/aarch64-simd.md (*shrn_to_subhn_<mode>): Add pattern + converting mvn+shrn into mvni+subhn. + +2025-07-01 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/120608 + * passes.def (pass_musttail): Move before pass_sanopt. + * tree-tailcall.cc (empty_eh_cleanup): Handle GIMPLE_RESX + which doesn't throw externally through recursion on single + eh edge (if any and cnt still allows that). + (find_tail_calls): Add ESUCC, IGNORED_EDGES and MUST_SEE_BBS + arguments. Handle GIMPLE_CONDs for non-simplified cleanups with + finally_tmp temporaries both on backward and forward walks, adjust + recursive call. + (tree_optimize_tail_calls_1): Adjust find_tail_calls callers. + +2025-07-01 Ezra Sitorus <ezra.sitorus@arm.com> + + * config/aarch64/aarch64-sys-regs.def: Copy from Binutils. + +2025-07-01 H.J. Lu <hjl.tools@gmail.com> + + PR debug/120902 + * print-tree.cc (debug with const tree_node *): Call debug_tree + instead of debug. + +2025-07-01 Yuao Ma <c8ef@outlook.com> + + * fold-const-call.cc (fold_const_call_ss): Constant fold for + single arg pi-based trigonometric builtins. + (fold_const_call_sss): Constant fold for double arg pi-based + trigonometric builtins. + * fold-const.cc (negate_mathfn_p): asinpi/atanpi is odd func. + (tree_call_nonnegative_warnv_p): acospi always non-neg, + asinpi/atanpi non-neg iff arg non-neg. + * tree-call-cdce.cc (can_test_argument_range): Add acospi/asinpi. + (edom_only_function): Add acospi/asinpi/cospi/sinpi. + (get_no_error_domain): Add acospi/asinpi. + +2025-06-30 Jeff Law <jlaw@ventanamicro.com> + + PR rtl-optimization/120242 + PR rtl-optimization/120627 + PR rtl-optimization/120736 + PR rtl-optimization/120813 + * ext-dce.cc (ext_dce_process_uses): Remove some cases where we + unnecessarily expanded live sets for promoted subregs. + (expand_changed_pseudos): New function. + (reset_subreg_promoted_p): Use it. + +2025-06-30 Alexey Merzlyakov <alexey.merzlyakov@samsung.com> + + PR target/120714 + * config/riscv/riscv.cc (riscv_allocate_and_probe_stack_space): + Fix SP-addresses in REG_CFA_DEF_CFA notes for stack-clash case. + +2025-06-30 David Malcolm <dmalcolm@redhat.com> + + * diagnostic-color.cc: Use nullptr rather than NULL. + * diagnostic-format-sarif.cc: Likewise. + * diagnostic-format-text.cc: Likewise. + * diagnostic-macro-unwinding.cc: Likewise. + * diagnostic-path-output.cc: Likewise. + * diagnostic-path.cc: Likewise. + * diagnostic-show-locus.cc: Likewise. + * diagnostic-spec.cc: Likewise. + * diagnostic.cc: Likewise. + * lazy-diagnostic-path.cc: Likewise. + * simple-diagnostic-path.cc: Likewise. + * tree-diagnostic-client-data-hooks.cc: Likewise. + +2025-06-30 David Malcolm <dmalcolm@redhat.com> + + * diagnostic-format-sarif.cc + (sarif_builder::maybe_make_kinds_array): Convert + diagnostic_event::meaning enums to enum class. + * diagnostic-path-output.cc (path_label::get_text): Likewise. + * diagnostic-path.cc + (diagnostic_event::meaning::maybe_get_verb_str): Likewise. + (diagnostic_event::meaning::maybe_get_noun_str): Likewise. + (diagnostic_event::meaning::maybe_get_property_str): Likewise. + * diagnostic-path.h (diagnostic_event::verb): Likewise. + (diagnostic_event::noun): Likewise. + (diagnostic_event::property): Likewise. + (diagnostic_event::meaning): Likewise. + +2025-06-30 David Malcolm <dmalcolm@redhat.com> + + * Makefile.in (OBJS-libcommon): Drop diagnostic-format-json.o. + * common.opt (fdiagnostics-format=): Drop + "json|json-stderr|json-file". + (diagnostics_output_format): Drop values "json", "json-stderr", + and "json-file". + * diagnostic-format-json.cc: Delete file. + * diagnostic-format.h + (diagnostic_output_format_init_json_stderr): Delete. + (diagnostic_output_format_init_json_file): Delete. + * diagnostic.cc (diagnostic_output_format_init): Delete cases for + DIAGNOSTICS_OUTPUT_FORMAT_JSON_STDERR and + DIAGNOSTICS_OUTPUT_FORMAT_JSON_FILE. + * diagnostic.h (DIAGNOSTICS_OUTPUT_FORMAT_JSON_STDERR): Delete. + (DIAGNOSTICS_OUTPUT_FORMAT_JSON_FILE): Delete. + * doc/invoke.texi: Remove references to json output format. + * doc/ux.texi: Likewise. + * selftest-run-tests.cc (selftest::run_tests): Drop call to + deleted selftest::diagnostic_format_json_cc_tests. + * selftest.h (selftest::diagnostic_format_json_cc_tests): Delete. + +2025-06-30 Mark Wielaard <mark@klomp.org> + + * common.opt.urls: Regenerate. + +2025-06-30 Pan Li <pan2.li@intel.com> + + * config/riscv/riscv-v.cc (expand_vx_binary_vec_vec_dup): Add + new case US_MINUS. + * config/riscv/riscv.cc (riscv_rtx_costs): Ditto. + * config/riscv/vector-iterators.md: Add new op us_minus. + +2025-06-30 Peter Bergner <bergner@linux.ibm.com> + + PR target/109116 + * config/rs6000/mma.md (unspec): Delete UNSPEC_MMA_EXTRACT. + (vsx_disassemble_pair): Expand into a vector register sized subreg. + (mma_disassemble_acc): Likewise. + (*vsx_disassemble_pair): Delete. + (*mma_disassemble_acc): Likewise. + +2025-06-30 Kito Cheng <kito.cheng@sifive.com> + + * config/riscv/sifive-7.md: Add primary vector pipeline model + for SiFive 7 series. + +2025-06-30 Kito Cheng <kito.cheng@sifive.com> + + PR target/120659 + * config/riscv/sifive-7.md: Add B extension, fp16 and missing + scalar instruction type for sifive-7 pipeline model. + +2025-06-30 Richard Biener <rguenther@suse.de> + + * tree-vect-slp.cc (vect_build_slp_2): Handle ternary + and call operators when swapping operands. + +2025-06-30 Paul-Antoine Arras <parras@baylibre.com> + + PR target/119100 + * config/riscv/autovec-opt.md (*vfnmsub_<mode>,*vfnmadd_<mode>): Handle + both add and acc variants. + * config/riscv/vector.md (*pred_mul_neg_<optab><mode>_scalar_undef): New + pattern. + +2025-06-30 Kyrylo Tkachov <ktkachov@nvidia.com> + + * config/aarch64/aarch64-cores.def (gb10): New entry. + * config/aarch64/aarch64-tune.md: Regenerate. + * doc/invoke.texi (AArch64 Options): Document the above. + +2025-06-30 Jakub Jelinek <jakub@redhat.com> + + PR c/120520 + PR c/117023 + * builtin-attrs.def (DEF_LIST_INT_INT_INT): Define it and + use for 1,2,3. + (ATTR_NONNULL_IF123_LIST): New DEF_ATTR_TREE_LIST. + (ATTR_NONNULL_4_IF123_LIST): Likewise. + * builtins.def (BUILT_IN_FWRITE): Use ATTR_NONNULL_4_IF123_LIST + instead of ATTR_NONNULL_LIST. + (BUILT_IN_FWRITE_UNLOCKED): Likewise. + * gimple.h (infer_nonnull_range_by_attribute): Add another optional + tree * argument defaulted to NULL. + * gimple.cc (infer_nonnull_range_by_attribute): Add OP3 argument, + handle 3 argument nonnull_if_nonzero attribute. + * builtins.cc (validate_arglist): Handle 3 argument nonnull_if_nonzero + attribute. + * tree-ssa-ccp.cc (pass_post_ipa_warn::execute): Likewise. + * ubsan.cc (instrument_nonnull_arg): Adjust + infer_nonnull_range_by_attribute caller, handle 3 argument + nonnull_if_nonzero attribute. + * gimple-range-infer.cc (gimple_infer_range::gimple_infer_range): + Handle 3 argument nonnull_if_nonzero attribute. + * doc/extend.texi (nonnull_if_nonzero): Document 3 argument version + of the attribute. + +2025-06-30 Richard Sandiford <richard.sandiford@arm.com> + + PR rtl-optimization/120733 + * lra-eliminations.cc (move_plus_up): Check whether lowpart_subreg + returns null. + +2025-06-30 Jan Hubicka <hubicka@ucw.cz> + + * auto-profile.cc (autofdo_source_profile::offline_external_functions): + Add missing newline in dump. + (afdo_propagate_edge): If annotated BB or edge has too small count + bump it up to mitigate profile imprecisions caused by vectorizer. + (afdo_propagate): Increase number of iteraitons and fix dump + +2025-06-30 Jan Hubicka <hubicka@ucw.cz> + + * auto-profile.cc (struct decl_lineno): Turn to structure; add + location. + (dump_inline_stack): Update. + (get_inline_stack): Update. + (get_relative_location_for_locus): Fixup formating. + (function_instance::get_function_instance_by_decl): Add + LOCATION parameter; improve dumping. + (autofdo_source_profile::get_callsite_total_count): Improve dumping; + update. + (walk_block): Update. + (autofdo_source_profile::offline_unrealized_inlines): Update. + (autofdo_source_profile::get_count_info): Update. + +2025-06-30 H.J. Lu <hjl.tools@gmail.com> + + PR target/120840 + * config/i386/i386-expand.cc (ix86_expand_call): Don't mark + hard frame pointer as clobber. + * config/i386/i386-options.cc (ix86_set_func_type): Use + TYPE_NO_CALLEE_SAVED_REGISTERS instead of + TYPE_NO_CALLEE_SAVED_REGISTERS_EXCEPT_BP. + * config/i386/i386.cc (ix86_function_ok_for_sibcall): Remove the + TYPE_NO_CALLEE_SAVED_REGISTERS_EXCEPT_BP check. + (ix86_save_reg): Merge TYPE_NO_CALLEE_SAVED_REGISTERS and + TYPE_PRESERVE_NONE with TYPE_NO_CALLEE_SAVED_REGISTERS_EXCEPT_BP. + * config/i386/i386.h (call_saved_registers_type): Remove + TYPE_NO_CALLEE_SAVED_REGISTERS_EXCEPT_BP. + * doc/extend.texi: Update no_callee_saved_registers documentation. + +2025-06-30 Jin Ma <jinma@linux.alibaba.com> + + * config/riscv/riscv-vsetvl.cc (bitmap_union_of_preds_with_entry): + Refactor. + +2025-06-30 Kito Cheng <kito.cheng@sifive.com> + + * config/riscv/pipeline-checker: New file. + +2025-06-28 H.J. Lu <hjl.tools@gmail.com> + + PR debug/120849 + * print-tree.cc (debug): New. + * print-tree.h (debug): Likewise. + +2025-06-28 Georg-Johann Lay <avr@gjlay.de> + + PR target/120856 + * config/avr/avr.cc (avr_hard_regno_mode_ok) [-mno-lra]: Deny + hard regs >= 4 bytes that overlap Y. + +2025-06-28 Jan Hubicka <hubicka@ucw.cz> + Kugan Vivekanandarajah <kvivekananda@nvidia.com> + + * auto-profile.cc (get_original_name): Only strip suffixes introduced + after auto-fdo annotation. + (string_table::get_index_by_decl): Simplify. + (string_table::add_name): New member function. + (string_table::read): Micro-optimize allocation. + (function_instance::get_function_instance_by_decl): Dump reasons + for failure; try to compensate lost discriminators. + (function_instance::merge): Simplify sanity check; do not check + for realized flag; fix merging of targets. + (function_instance::offline_if_in_set): Simplify. + (function_instance::dump): Sanity check that names are consistent. + (autofdo_source_profile::offline_external_functions): Also handle + stripping suffixes. + (walk_block): Move up in source. + (autofdo_source_profile::offline_unrealized_inlines): Also compute + realized functions. + (autofdo_source_profile::get_function_instance_by_name_index): Simplify. + (autofdo_source_profile::add_function_instance): Simplify. + (autofdo_source_profile::read): Do not strip suffxies; error on duplicates. + (mark_realized_functions): Remove. + (auto_profile): Do not call mark_realized_functions. + * passes.def: Move auto_profile_offline before free_lang_data. + +2025-06-27 Eric Botcazou <ebotcazou@adacore.com> + + * gimple-fold.cc (fold_const_aggregate_ref_1) <COMPONENT_REF>: + Bail out immediately if the reference has reverse storage order. + * tree-ssa-sccvn.cc (fully_constant_vn_reference_p): Likewise. + +2025-06-27 Jakub Jelinek <jakub@redhat.com> + + PR c++/120777 + * gimple-fold.cc (gimple_get_virt_method_for_vtable): Revert + 2018-09-18 changes. + +2025-06-27 Nathaniel Shead <nathanieloshead@gmail.com> + + PR c++/98735 + PR c++/118904 + * tree.cc (struct identifier_hash): New type. + (struct identifier_count_traits): New traits. + (internal_label_nums): New hash map. + (generate_internal_label): New function. + (prefix_for_internal_label): New function. + * tree.h (IDENTIFIER_INTERNAL_P): New macro. + (generate_internal_label): Declare. + (prefix_for_internal_label): Declare. + * ubsan.cc (ubsan_ids): Remove. + (ubsan_type_descriptor): Use generate_internal_label. + (ubsan_create_data): Likewise. + +2025-06-27 Jan Hubicka <hubicka@ucw.cz> + + * auto-profile.cc (function_instance::set_name, + function_instance::set_realized, function_instnace::realized_p, + function_instance::set_in_worklist, + function_instance::clear_in_worklist, + function_instance::in_worklist_p): New member functions. + (function_instance::in_worklist, function_instance::realized_): + new. + (get_relative_location_for_locus): Break out from .... + (get_relative_location_for_stmt): ... here. + (function_instance::~function_instance): Sanity check that + removed function is not in worklist. + (function_instance::merge): Do not offline realized instances. + (function_instance::offline): Make private; add duplicate functions + to worklist rather then merging immediately. + (function_instance::offline_if_in_set): Cleanup. + (function_instance::remove_external_functions): Likewise. + (function_instance::offline_if_not_realized): New member function. + (autofdo_source_profile::offline_external_functions): Handle delayed + functions. + (autofdo_source_profile::offline_unrealized_inlines): New member function. + (walk_block): New function. + (mark_realized_functions): New function. + (afdo_annotate_cfg): Fix dump. + (auto_profile): Mark realized functions and offline rest; do not compute + fn summary. + +2025-06-27 Georg-Johann Lay <avr@gjlay.de> + + PR target/113934 + * config/avr/avr.opt (-mlra): Turn on per default. + +2025-06-27 Richard Biener <rguenther@suse.de> + + PR tree-optimization/120808 + * tree-vect-slp-patterns.cc (vect_match_expression_p): + Take a code_helper and also match calls. + (addsub_pattern::recognize): Handle .FMA/.FMS pairs + in addition to PLUS/MINUS. + (addsub_pattern::build): Adjust. + +2025-06-27 Richard Biener <rguenther@suse.de> + + * tree-vectorizer.h (vect_chooses_same_modes_p): New + overload. + * tree-vect-stmts.cc (vect_chooses_same_modes_p): Likewise. + * tree-vect-loop.cc (vect_analyze_loop): Prune epilogue + analysis further when not using partial vectors. + +2025-06-27 Richard Biener <rguenther@suse.de> + + * tree-vect-loop.cc (vect_analyze_loop): Consider AVX512 + style masking when computing supports_partial_vectors. + +2025-06-27 Tamar Christina <tamar.christina@arm.com> + + * doc/extend.texi: Fix typo in unsed attribute docs. + +2025-06-27 H.J. Lu <hjl.tools@gmail.com> + + PR target/120830 + * config/i386/i386-features.cc (ix86_get_vector_cse_mode): Handle + vector broadcast source. + +2025-06-27 Alexandre Oliva <oliva@adacore.com> + + PR rtl-optimization/120424 + * lra-eliminations.cc (elimination_2sp_occurred_p): Rename + from... + (elimination_fp2sp_occured_p): ... this. Adjust all uses. + (lra_eliminate_regs_1): Don't require a from-frame-pointer + elimination to set it. + (update_reg_eliminate): Likewise to test it. + +2025-06-27 Alexandre Oliva <oliva@adacore.com> + + PR rtl-optimization/120424 + * lra-eliminations.cc (lra_eliminate_regs_1): Adjust autoinc + addresses that are MEMs. + +2025-06-27 Alexandre Oliva <oliva@adacore.com> + + PR rtl-optimization/120424 + * lra-eliminations.cc (lra_update_fp2sp_elimination): Reorder + and regroup related statements. + +2025-06-27 Alexandre Oliva <oliva@adacore.com> + + PR rtl-optimization/120424 + * lra-eliminations.cc (lra_update_fp2sp_elimination): + Avoid sp offsets in further fp2sp eliminations... + (update_reg_eliminate): ... and restore to_rtx before assert + checking. + +2025-06-27 Alexandre Oliva <oliva@adacore.com> + + PR rtl-optimization/120424 + * lra-eliminations.cc (lra_update_fp2sp_elimination): + Compute complete live ranges and recompute slots' live ranges + if needed. + * lra-lives.cc (lra_reset_live_range_list): New. + (lra_complete_live_ranges): New. + * lra-spills.cc (assign_spill_hard_regs): Reject empty live + ranges. + (add_pseudo_to_slot): Likewise. + (lra_recompute_slots_live_ranges): New. + * lra-int.h (lra_reset_live_range_list): Declare. + (lra_complete_live_ranges): Declare. + (lra_recompute_slots_live_ranges): Declare. + +2025-06-27 Alexandre Oliva <oliva@adacore.com> + + PR rtl-optimization/120424 + * genoutput.cc (scan_operands): Make MATCH_SCRATCHes eliminable. + +2025-06-27 Alexandre Oliva <oliva@adacore.com> + + PR rtl-optimization/120424 + * lra-eliminations.cc (lra_update_fp2sp_elimination): + Inactivate the unused fp2sp elimination right away. + +2025-06-26 Dimitar Dimitrov <dimitar@dinux.eu> + + * config/pru/pru.md (reg move splitter): New splitter for 64-bit + register moves into two 32-bit moves. + (const_int move splitter): New splitter for 64-bit constant + integer moves into two 32-bit moves. + +2025-06-26 David Malcolm <dmalcolm@redhat.com> + + * diagnostic.h (diagnostic_context::set_permissive_option): New. + (diagnostic_context::set_fatal_errors): New. + (diagnostic_context::set_internal_error_callback): New. + (diagnostic_context::set_adjust_diagnostic_info_callback): New. + (diagnostic_context::inhibit_notes): New. + (diagnostic_context::m_opt_permissive): Make private. + (diagnostic_context::m_fatal_errors): Likewise. + (diagnostic_context::m_internal_error): Likewise. + (diagnostic_context::m_adjust_diagnostic_info): Likewise. + (diagnostic_context::m_inhibit_notes_p): Likewise. + (diagnostic_inhibit_notes): Delete. + * opts.cc (common_handle_option): Use + diagnostic_context::set_fatal_errors. + * toplev.cc (internal_error_function): Use + diagnostic_context::set_internal_error_callback. + (general_init): Likewise. + (process_options): Use diagnostic_context::inhibit_notes. + +2025-06-26 David Malcolm <dmalcolm@redhat.com> + + PR analyzer/120809 + * diagnostic-format-html.cc + (html_builder::maybe_make_state_diagram): Bulletproof against the + SVG generation failing. + * xml.cc (xml::printer::push_element): Assert that the ptr is + nonnull. + (xml::printer::append): Likewise. + +2025-06-26 David Malcolm <dmalcolm@redhat.com> + + * diagnostic-output-spec.cc (sarif_scheme_handler::make_sink): + Split out creation of sarif_generation_options and + sarif_serialization_format into... + (sarif_scheme_handler::make_sarif_gen_opts): ...this... + (sarif_scheme_handler::make_sarif_serialization_object): ...and + this. + +2025-06-26 Paul-Antoine Arras <parras@baylibre.com> + + PR target/120828 + * config/riscv/riscv-v.cc (prepare_ternary_operands): Handle the + vector-scalar case. + +2025-06-26 Uros Bizjak <ubizjak@gmail.com> + + PR target/120719 + * config/i386/i386.md (crc_rev<SWI124:mode>si4): New expander. + +2025-06-26 Kito Cheng <kito.cheng@sifive.com> + + * config/riscv/riscv.md: Fix build issue. + +2025-06-26 Martin Jambor <mjambor@suse.cz> + + * lto-ltrans-cache.h (class ltrans_file_cache): Remove member prefix. + * lto-ltrans-cache.cc (ltrans_file_cache::ltrans_file_cache): Do + not initialize member prefix. + +2025-06-26 Kito Cheng <kito.cheng@sifive.com> + + * config/riscv/riscv.md: Add comment and reorder include + files. + +2025-06-26 Martin Jambor <mjambor@suse.cz> + + * tree-vect-stmts.cc (supportable_indirect_convert_operation): + Remove an unused shadowed variable. + +2025-06-26 Martin Jambor <mjambor@suse.cz> + + * tree-vect-slp.cc (cond_expr_maps): Remove. + +2025-06-26 Jan Hubicka <hubicka@ucw.cz> + + * auto-profile.cc (function_instance::merge): Add TODO. + (autofdo_source_profile::offline_external_functions): + Do not use range for on the worklist. + * timevar.def (TV_IPA_AUTOFDO_OFFLINE): New timevar. + +2025-06-26 Jan Hubicka <hubicka@ucw.cz> + + * auto-profile.cc (name_index_set, name_index_map): New types. + (dump_afdo_loc): New function. + (dump_inline_stack): Simplify. + (function_instance::merge): Merge recursively inlined functions; + offline if necessary; collect new fnctions. + (function_instance::offline): New member function. + (function_instance::offline_if_in_set): New member function. + (function_instance::remove_external_functions): New member function. + (function_instance::dump): New member function. + (function_instance::debug): New member function. + (function_instance::dump_inline_stack): New member function. + (function_instance::find_icall_target_map): Use removed_icall_target. + (function_instance::remove_icall_target): Only mark icall target removed. + (autofdo_source_profile::offline_external_functions): New function. + (function_instance::read_function_instance): Record inlined_to pointers; + use -1 for unknown head counts. + (autofdo_source_profile::get_function_instance_by_name_index): New + function. + (autofdo_source_profile::add_function_instance): New member function. + (autofdo_source_profile::read): Do not leak memory; fix formatting. + (read_profile): Fix formatting. + (afdo_annotate_cfg): LIkewise. + (class pass_ipa_auto_profile_offline): New pass. + (make_pass_ipa_auto_profile_offline): New function. + * passes.def (pass_ipa_auto_profile_offline): Add + * tree-pass.h (make_pass_ipa_auto_profile): Declare + +2025-06-26 H.J. Lu <hjl.tools@gmail.com> + + PR target/120819 + * config/i386/i386-features.cc (ix86_broadcast_inner): Also handle + all 1s float vector constant. + +2025-06-26 H.J. Lu <hjl.tools@gmail.com> + + PR target/120816 + * config/i386/i386-features.cc (remove_redundant_vector_load): + Handle REG_EH_REGION note in DEF_INSN. + +2025-06-26 H.J. Lu <hjl.tools@gmail.com> + + PR target/119628 + * config/i386/i386-expand.cc (ix86_expand_call): Call + ix86_type_no_callee_saved_registers_p instead of looking up + no_callee_saved_registers attribute. + * config/i386/i386-options.cc (ix86_set_func_type): Look up + preserve_none attribute. Check preserve_none attribute for + interrupt attribute. Don't check no_caller_saved_registers nor + no_callee_saved_registers conflicts here. + (ix86_set_func_type): Check no_callee_saved_registers before + checking no_caller_saved_registers attribute. + (ix86_set_current_function): Allow SSE with + no_caller_saved_registers attribute. + (ix86_handle_call_saved_registers_attribute): Check preserve_none, + no_callee_saved_registers and no_caller_saved_registers conflicts. + (ix86_gnu_attributes): Add preserve_none attribute. + * config/i386/i386-protos.h (ix86_type_no_callee_saved_registers_p): + New. + * config/i386/i386.cc + (x86_64_preserve_none_int_parameter_registers): New. + (ix86_using_red_zone): Don't use red-zone when there are no + caller-saved registers with SSE. + (ix86_type_no_callee_saved_registers_p): New. + (ix86_function_ok_for_sibcall): Also check TYPE_PRESERVE_NONE + and call ix86_type_no_callee_saved_registers_p instead of looking + up no_callee_saved_registers attribute. + (ix86_comp_type_attributes): Call + ix86_type_no_callee_saved_registers_p instead of looking up + no_callee_saved_registers attribute. Return 0 if preserve_none + attribute doesn't match in 64-bit mode. + (ix86_function_arg_regno_p): For cfun with TYPE_PRESERVE_NONE, + use x86_64_preserve_none_int_parameter_registers. + (init_cumulative_args): Set preserve_none_abi. + (function_arg_64): Use x86_64_preserve_none_int_parameter_registers + with preserve_none attribute. + (setup_incoming_varargs_64): Use + x86_64_preserve_none_int_parameter_registers with preserve_none + attribute. + (ix86_save_reg): Treat TYPE_PRESERVE_NONE like + TYPE_NO_CALLEE_SAVED_REGISTERS. + (ix86_nsaved_sseregs): Allow saving XMM registers for + no_caller_saved_registers attribute. + (ix86_compute_frame_layout): Likewise. + (x86_this_parameter): Use + x86_64_preserve_none_int_parameter_registers with preserve_none + attribute. + * config/i386/i386.h (ix86_args): Add preserve_none_abi. + (call_saved_registers_type): Add TYPE_PRESERVE_NONE. + (machine_function): Change call_saved_registers to 3 bits. + * doc/extend.texi: Add preserve_none attribute. Update + no_caller_saved_registers attribute to remove -mgeneral-regs-only + restriction. + +2025-06-25 H.J. Lu <hjl.tools@gmail.com> + + * config/i386/i386-features.cc (ix86_place_single_vector_set): + Add debug dump. + (replace_vector_const): Likewise. + (remove_redundant_vector_load): Likewise. + +2025-06-25 Luis Silva <luiss@synopsys.com> + + * config/arc/arc.md (<su_optab>mulvsi4): New define_expand. + (<su_optab>mulsi3_Vcmp): New define_insn. + +2025-06-25 Luis Silva <luiss@synopsys.com> + + * config/arc/arc.cc (arc_select_cc_mode): Handle multiplication + results compared against zero, selecting CC_Zmode. + * config/arc/arc.md (*mulsi3_cmp0): New define_insn. + (*mulsi3_cmp0_noout): New define_insn. + +2025-06-25 Shahab Vahedi <shahab@synopsys.com> + + * config/arc/arc.md (subsi3_v, subvsi4, subsi3_c): New patterns. + +2025-06-25 Shahab Vahedi <shahab@synopsys.com> + + * config/arc/arc-modes.def (CC_V): New mode. + * config/arc/arc-protos.h (arc_gen_unlikely_cbranch): New + function declaration. + * config/arc/arc.cc (arc_gen_unlikely_cbranch): New + function. + (get_arc_condition_code): Handle new mode. + * config/arc/arc.md (addvsi3_v, addvsi4, addsi3_c, uaddvsi4): New + patterns. + * config/arc/predicates.md (proper_comparison_operator): Handel + the new V_mode. + (equality_comparison_operator): Likewise. + +2025-06-25 Martin Jambor <mjambor@suse.cz> + + * diagnostic-path-output.cc (path_label::get_effects): Mark as + final override. + * diagnostic-format-html.cc + (html_output_format::after_diagnostic): Likewise. + +2025-06-25 Martin Jambor <mjambor@suse.cz> + + * gimple-range-op.cc + (gimple_range_op_handler::maybe_builtin_call): Use + CFN_BUILT_IN_ISINF instead of BUILT_IN_ISINF. + +2025-06-25 Martin Jambor <mjambor@suse.cz> + + * value-relation.h (class dom_oracle): Mark member function + next_relation as override. + +2025-06-25 Martin Jambor <mjambor@suse.cz> + + * tree-ssa-propagate.h (class substitute_and_fold_engine): Mark + member functions value_of_expr and range_of_expr as override. + +2025-06-25 Martin Jambor <mjambor@suse.cz> + + * range-op-mixed.h (class operator_plus): Mark member function + overflow_free_p as final override. + (class operator_minus): Likewise. + (class operator_mult): Likewise. + * range-op-ptr.cc (class pointer_plus_operator): Mark member + function lhs_op1_relation as final override. + * range-op.cc (class operator_div::): Mark member functions + op2_range and update_bitmask as final override. + (class operator_logical_and): Mark member functions fold_range, + op1_range and op2_range as final override. Remove unnecessary + virtual. + (class operator_logical_or): Likewise. + (class operator_logical_not): Mark member functions fold_range and + op1_range as final override. Remove unnecessary virtual. + formatting easier. + (class operator_absu): Mark member functions wi_fold as final + override. + +2025-06-25 Martin Jambor <mjambor@suse.cz> + + * gimple-ssa-sccopy.cc (class pass_sccopy): Mark member functions + gate and execute as final override. + +2025-06-25 Martin Jambor <mjambor@suse.cz> + + * avoid-store-forwarding.cc (class + pass_rtl_avoid_store_forwarding): Mark member function gate as + final override. + +2025-06-25 Andrew MacLeod <amacleod@redhat.com> + + * value-relation.cc (relation_to_code): Remove. + +2025-06-25 Andrew MacLeod <amacleod@redhat.com> + + * value-range.cc (frange::verify_range): Constify. + (irange::verify_range): Constify. + * value-range.h (vrange::verify_range): New. + (irange::verify_range): Make public. + (prange::verify_range): Make public. + (prange::verify_range): Make public. + (value_range::verify_range): New. + +2025-06-25 Andrew MacLeod <amacleod@redhat.com> + + * value-range.cc (irange::get_bitmask): Return original mask if + result is unknown. + (assert_snap_result): New. + (test_irange_snap_bounds): New. + (range_tests_misc): Call test_irange_snap_bounds. + +2025-06-25 Richard Biener <rguenther@suse.de> + + PR tree-optimization/109892 + * tree-vect-loop.cc (check_reduction_path): Handle fma. + (vectorizable_reduction): Apply FOLD_LEFT_REDUCTION code + generation constraints. + +2025-06-25 Richard Biener <rguenther@suse.de> + + PR tree-optimization/120808 + * tree-vectorizer.h (compatible_calls_p): Add flag to + indicate a FMA/FMS pair is allowed. + * tree-vect-slp.cc (compatible_calls_p): Likewise. + (vect_build_slp_tree_1): Allow mixed .FMA/.FMS as two-operator. + (vect_build_slp_tree_2): Handle calls in two-operator SLP build. + * tree-vect-slp-patterns.cc (compatible_complex_nodes_p): + Adjust. + +2025-06-25 Alfie Richards <alfie.richards@arm.com> + + * tree-ssa-loop-ivopts.cc (constant_multiple_of): Change + tree_to_aff_combination to tree_to_aff_combination_expand and add + parameter to take ivopts_data. + (get_computation_aff_1): Change parameters and calls to include + ivopts_data. + (get_computation_aff): Ditto. + (get_computation_at) Ditto.: + (get_debug_computation_at) Ditto.: + (get_computation_cost) Ditto.: + (rewrite_use_nonlinear_expr) Ditto.: + (rewrite_use_address) Ditto.: + (rewrite_use_compare) Ditto.: + (remove_unused_ivs) Ditto.: + +2025-06-25 Richard Sandiford <richard.sandiford@arm.com> + + PR rtl-optimization/120745 + * rtl-ssa/changes.cc (process_uses_of_deleted_def): Rewrite to + handle deletions of non-degenerate phis. + +2025-06-25 H.J. Lu <hjl.tools@gmail.com> + + PR target/120815 + * common/config/i386/i386-common.cc (processor_alias_table): + Replace CPU_SLM/PTA_NEHALEM with CPU_HASWELL/PTA_HASWELL for + PROCESSOR_INTEL. + * config/i386/i386-options.cc (processor_cost_table): Replace + intel_cost with alderlake_cost. + * config/i386/x86-tune-costs.h (intel_cost): Removed. + * config/i386/x86-tune-sched.cc (ix86_issue_rate): Treat + PROCESSOR_INTEL like PROCESSOR_ALDERLAKE. + (ix86_adjust_cost): Likewise. + * doc/invoke.texi: Update -mtune=intel for Diamond Rapids and + Clearwater Forest. + +2025-06-25 Haochen Jiang <haochen.jiang@intel.com> + + * config/i386/i386.h (PTA_ALDERLAKE): Use PTA_GOLDMONT_PLUS + as base to remove PTA_CLDEMOTE. + (PTA_SIERRAFOREST): Add PTA_CLDEMOTE since PTA_ALDERLAKE + does not include that anymore. + * doc/invoke.texi: Update texi file. + +2025-06-25 Jiawei <jiawei@iscas.ac.cn> + + * common/config/riscv/riscv-common.cc: New Profiles. + +2025-06-25 Jan Hubicka <hubicka@ucw.cz> + + * common.opt: (fauto-profile-inlining): New + * doc/invoke.texi (-fauto-profile-inlining): Document. + * ipa-inline.cc (inline_functions_by_afdo): Check + flag_auto_profile. + (early_inliner): Also do inline_functions_by_afdo with + !flag_early_inlining. + +2025-06-25 Jan Hubicka <hubicka@ucw.cz> + + * auto-profile.cc: Update toplevel comment. + (early_inline): Remove. + (auto_profile): Don't do early inlining. + +2025-06-24 Tobias Burnus <tburnus@baylibre.com> + + * config/gcn/gcn-opts.h (TARGET_GLC_NAME): Fix and extend the + description in the comment. + * config/gcn/gcn.cc (print_operand): Extend the comment about + 'G' and 'g'. + * config/gcn/gcn.md: Use 'glc' instead of %G where appropriate. + +2025-06-24 Paul-Antoine Arras <parras@baylibre.com> + + PR target/119100 + * config/riscv/autovec-opt.md (*<optab>_vf_<mode>): Handle both add and + acc FMA variants. + * config/riscv/vector.md (*pred_mul_<optab><mode>_scalar_undef): New. + +2025-06-24 Uros Bizjak <ubizjak@gmail.com> + + * config/i386/i386.md + (@pro_epilogue_adjust_stack_add_nocc<mode>): Add type attribute. + (pro_epilogue_adjust_stack_add_nocc peephole2 pattern): + Convert pro_epilogue_adjust_stack_add_nocc variant to + pro_epilogue_adjust_stack_add when FLAGS_REG is dead. + +2025-06-24 Richard Biener <rguenther@suse.de> + + * tree-vect-stmts.cc (vectorizable_load): Remove non-SLP + paths and propagate out ncopies == 1. + +2025-06-24 Marc Poulhiès <poulhies@adacore.com> + + * diagnostic-state-to-dot.cc (get_color_for_dynalloc_state): + Rename argument dynalloc_state to dynalloc_st. + (add_title_tr): Rename argument style to styl. + (on_xml_node): Rename local variable dynalloc_state to dynalloc_st. + +2025-06-24 Yuao Ma <c8ef@outlook.com> + + * tree-call-cdce.cc (edom_only_function): Remove atan. + +2025-06-24 Juergen Christ <jchrist@linux.ibm.com> + + * config/s390/vector.md (VF): Don't restrict modes. + (VEC_SET_SINGLEFLOAT): Ditto. + +2025-06-24 Tamar Christina <tamar.christina@arm.com> + + * config/aarch64/aarch64.cc (aarch64_override_options_internal): Set + value of parameter based on option. + * config/aarch64/aarch64.opt (autovec-preference): New. + * doc/invoke.texi (autovec-preference): Document it. + +2025-06-24 Tamar Christina <tamar.christina@arm.com> + + * config/aarch64/aarch64.opt (max-vectorization): New. + * config/aarch64/aarch64.cc (aarch64_override_options_internal): Save + and restore option. + Implement it through vect-scalar-cost-multiplier. + (aarch64_attributes): Default to off. + * common/config/aarch64/aarch64-common.cc (aarch64_handle_option): + Initialize option. + * doc/extend.texi (max-vectorization): Document attribute. + * doc/invoke.texi (max-vectorization): Document flag. + +2025-06-24 hongtao.liu <hongtao.liu@intel.com> + + PR target/115842 + * tree-ssa-loop-ivopts.cc (determine_group_iv_cost_address): + Don't recalculate inv_expr when group-candidate cost + calucalution. + +2025-06-24 Tamar Christina <tamar.christina@arm.com> + + * doc/extend.texi: Document pragma unroll interaction with vectorizer. + * tree-vectorizer.h (LOOP_VINFO_USER_UNROLL): New. + (class _loop_vec_info): Add user_unroll. + * tree-vect-loop.cc (vect_analyze_loop_1): Set + suggested_unroll_factor and retry. + (_loop_vec_info::_loop_vec_info): Initialize user_unroll. + (vect_transform_loop): Clear the loop->unroll value if the pragma was + used. + +2025-06-24 Tamar Christina <tamar.christina@arm.com> + + * tree-vect-loop-manip.cc (vect_gen_vector_loop_niters, + vect_gen_vector_loop_niters_mult_vf): Remove uses of log_vf. + +2025-06-24 H.J. Lu <hjl.tools@gmail.com> + + PR target/92080 + * config/i386/i386-expand.cc (ix86_expand_call): Set + recursive_function to true for recursive call. + * config/i386/i386-features.cc (ix86_place_single_vector_set): + Add an argument for inner scalar, default to nullptr. Set the + source from inner scalar if not nullptr. + (ix86_get_vector_load_mode): Renamed to ... + (ix86_get_vector_cse_mode): This. Add an argument for scalar mode + and handle integer and float scalar modes. + (replace_vector_const): Add an argument for scalar mode and pass + it to ix86_get_vector_load_mode. + (x86_cse_kind): New. + (redundant_load): Likewise. + (ix86_broadcast_inner): Likewise. + (remove_redundant_vector_load): Also support const0_rtx and + constm1_rtx broadcasts. Handle vector broadcasts from constant + and variable scalars. + * config/i386/i386.h (machine_function): Add recursive_function. + +2025-06-24 H.J. Lu <hjl.tools@gmail.com> + + PR target/70308 + PR target/101366 + PR target/102294 + PR target/108585 + PR target/118276 + PR target/119596 + PR target/119703 + PR target/119704 + * config/i386/x86-tune-costs.h (generic_memcpy): Updated. + (generic_memset): Likewise. + (generic_cost): Change CLEAR_RATIO to 10. + +2025-06-24 Jan Hubicka <hubicka@ucw.cz> + + * tree-inline.cc (expand_call_inline): Preserve discriminator. + +2025-06-24 Jan Hubicka <hubicka@ucw.cz> + + * auto-profile.cc (afdo_set_bb_count): Dump also 0 count stmts. + (afdo_annotate_cfg): Fix conditional for block having non-zero static + profile. + +2025-06-24 Lili Cui <lili.cui@intel.com> + + PR target/120741 + * config/i386/i386.cc (ix86_expand_prologue): + Remove 1 assertion. + +2025-06-24 Jeff Law <jlaw@ventanamicro.com> + + PR target/118241 + * config/riscv/predicates.md: Fix comment typo in recent change. + +2025-06-23 Sam James <sam@gentoo.org> + Jeff Law <jlaw@ventanamicro.com> + + PR rtl-optimization/120795 + * ext-dce.cc (ext_dce_try_optimize_insn): Enable rescan in + remove_reg_equal_equiv_notes call. + +2025-06-23 David Malcolm <dmalcolm@redhat.com> + + PR other/116792 + PR testsuite/116163 + PR sarif-replay/120792 + * Makefile.in (OBJS-libcommon): Add diagnostic-output-spec.o. + * diagnostic-format-html.cc (html_builder::html_builder): Ensure + title is non-empty. + * diagnostic-output-spec.cc: New file, taken from material in + opts-diagnostic.cc. + * diagnostic-output-spec.h: New file. + * diagnostic.cc (diagnostic_context::set_main_input_filename): + New. + * diagnostic.h (diagnostic_context::set_main_input_filename): New + decl. + * doc/libgdiagnostics/topics/compatibility.rst + (LIBGDIAGNOSTICS_ABI_2): New. + * doc/libgdiagnostics/topics/diagnostic-manager.rst + (diagnostic_manager_add_sink_from_spec): New. + (diagnostic_manager_set_analysis_target): New. + * libgdiagnostics++.h (manager::add_sink_from_spec): New. + (manager::set_analysis_target): New. + * libgdiagnostics.cc: Include "diagnostic-output-spec.h". + (struct spec_context): New. + (diagnostic_manager_add_sink_from_spec): New. + (diagnostic_manager_set_analysis_target): New. + * libgdiagnostics.h + (LIBDIAGNOSTICS_HAVE_diagnostic_manager_add_sink_from_spec): New + define. + (diagnostic_manager_add_sink_from_spec): New decl. + (LIBDIAGNOSTICS_HAVE_diagnostic_manager_set_analysis_target): New + define. + (diagnostic_manager_set_analysis_target): New decl. + * libgdiagnostics.map (LIBGDIAGNOSTICS_ABI_2): New. + * libsarifreplay.cc (sarif_replayer::handle_artifact_obj): Looks + for "analysisTarget" in roles and call set_analysis_target using + the artifact if found. + * opts-diagnostic.cc: Refactor, moving material to + diagnostic-output-spec.cc. + (struct opt_spec_context): New. + (handle_OPT_fdiagnostics_add_output_): Use opt_spec_context. + (handle_OPT_fdiagnostics_set_output_): Likewise. + * sarif-replay.cc: Define INCLUDE_STRING. + (struct options): Add m_extra_output_specs. + (usage_msg): Add -fdiagnostics-add-output=SCHEME. + (str_starts_with): New. + (parse_options): Add -fdiagnostics-add-output=SCHEME. + (main): Likewise. + * selftest-run-tests.cc (selftest::run_tests): Call + diagnostic_output_spec_cc_tests rather than + opts_diagnostic_cc_tests. + * selftest.h (selftest::diagnostic_output_spec_cc_tests): + Replace... + (selftest::opts_diagnostic_cc_tests): ...this. + +2025-06-23 David Malcolm <dmalcolm@redhat.com> + + PR other/116792 + * Makefile.in (ANALYZER_OBJS): Add + analyzer/ana-state-to-diagnostic-state.o. + (OBJS): Move graphviz.o to... + (OBJS-libcommon): ...here. Add diagnostic-state-to-dot.o and pex.o. + * diagnostic-format-html.cc: Include "diagnostic-state.h" and + "graphviz.h". + (html_generation_options::html_generation_options): Initialize the + new flags. + (HTML_SCRIPT): Add function "get_any_state_diagram". Use it + when changing current focus id to update the visibility of the + pertinent diagram, if any. + (print_pre_source): New. + (html_builder::maybe_make_state_diagram): New. + (html_path_label_writer::html_path_label_writer): Add "path" param. + Initialize m_path and m_curr_event_id. + (html_path_label_writer::begin_label): Store current event id. + (html_path_label_writer::end_label): Attempt to make a state + diagram and add it if successful. + (html_path_label_writer::get_element_id): New. + (html_path_label_writer::m_path): New field. + (html_path_label_writer::m_curr_event_id): New field. + (html_builder::make_element_for_diagnostic): Pass path to label + writer. + * diagnostic-format-html.h + (html_generation_options::m_show_state_diagrams): New field. + (html_generation_options::m_show_state_diagram_xml): New field. + (html_generation_options::m_show_state_diagram_dot_src): New field. + * diagnostic-format-sarif.cc: Include "xml.h". + (populate_thread_flow_location_object): If requested, attempt to + generate xml state and add it to the proeprty bag as + "gcc/diagnostic_event/xml_state" in xml source form. + (sarif_generation_options::sarif_generation_options): Initialize + m_xml_state. + * diagnostic-format-sarif.h + (sarif_generation_options::m_xml_state): New field. + * diagnostic-path.cc: Define INCLUDE_MAP. Include "xml.h". + (diagnostic_event::maybe_make_xml_state): New. + * diagnostic-path.h (class xml::document): New forward decl. + (diagnostic_event::maybe_make_xml_state): New vfunc decl. + * diagnostic-state-to-dot.cc: New file. + * diagnostic-state.h: New file. + * digraph.cc: Define INCLUDE_STRING and INCLUDE_VECTOR. + * doc/analyzer.texi: Document state diagrams in html output. + (__analyzer_dump_dot): New. + (__analyzer_dump_xml): New. + * doc/invoke.texi (sarif): Add "xml-state" key. + (experimental-html): Add keys "show-state-diagrams", + "show-state-diagrams-dot-src" and "show-state-diagrams-xml". + * graphviz.cc: Define INCLUDE_MAP, INCLUDE_STRING, and + INCLUDE_VECTOR. Include "xml.h", "xml-printer.h", "pex.h" and + "selftest.h". + (graphviz_out::graphviz_out): Extract... + (dot::writer::writer): ...this. + (graphviz_out::write_indent): Convert to... + (dot::writer::write_indent): ...this. + (graphviz_out::print): Use get_pp. + (graphviz_out::println): Likewise. + (graphviz_out::begin_tr): Likewise. + (graphviz_out::end_tr): Likewise. + (graphviz_out::begin_td): Likewise. + (graphviz_out::end_td): Likewise. + (graphviz_out::begin_trtd): Likewise. + (graphviz_out::end_tdtr): Likewise. + (dot::ast_node::dump): New. + (dot::id::id): New. + (dot::id::print): New. + (dot::id::is_identifier_p): New. + (dot::kv_pair::print): New. + (dot::attr_list::print): New. + (dot::stmt_list::print): New. + (dot::stmt_list::add_edge): New. + (dot::stmt_list::add_attr): New. + (dot::graph::print): New. + (dot::stmt_with_attr_list::set_label): New. + (dot::node_stmt::print): New. + (dot::attr_stmt::print): New. + (dot::kv_stmt::print): New. + (dot::node_id::print): New. + (dot::port::print): New. + (dot::edge_stmt::print): New. + (dot::subgraph::print): New. + (dot::make_svg_document_buffer_from_graph): New. + (dot::make_svg_from_graph): New. + (selftest:test_ids): New. + (selftest:test_trivial_graph): New. + (selftest:test_layout_example): New. + (selftest:graphviz_cc_tests): New. + * graphviz.h (xml::node): New forward decl. + (class graphviz_out): Split out into... + (class dot::writer): ...this new class + (struct dot::ast_node): New. + (struct dot::id): New. + (struct dot::kv_pair): New. + (struct dot::attr_list): New. + (struct dot::stmt_list): New. + (struct dot::graph): New. + (struct dot::stmt): New. + (struct dot::stmt_with_attr_list): New. + (struct dot::node_stmt): New. + (struct dot::attr_stmt): New. + (struct dot::kv_stmt): New. + (enum class dot::compass_pt): New. + (struct dot::port): New. + (struct dot::node_id): New. + (struct dot::edge_stmt): New. + (struct dot::subgraph): New. + (dot::make_svg_from_graph): New. + * opts-diagnostic.cc (sarif_scheme_handler::make_sink): Add + "xml-state" flag. + (html_scheme_handler::make_sink): Add flags "show-state-diagrams", + "show-state-diagram-dot-src", and "show-state-diagram-xml". + * pex.cc: New file. + * pex.h: New file. + * selftest-run-tests.cc (selftest::run_tests): Call + graphviz_cc_tests. + * selftest.h (selftest::graphviz_cc_tests): New decl. + * xml.cc (xml::node_with_children::add_comment): New. + (xml::node_with_children::find_child_element): New. + (xml::element::get_attr): New. + (xml::comment::write_as_xml): New. + (selftest::test_printer): Add coverage of find_child_element and + get_attr. + (selftest::test_comment): New. + (selftest::xml_cc_tests): Call test_comment. + * xml.h: New forward decls. + (xml::node::dyn_cast_text): Use nullptr. + (xml::node::dyn_cast_element): New vfunc. + (xml::node_with_children::add_comment): New decl. + (xml::node_with_children::find_child_element): New decl. + (xml::element::dyn_cast_element): New vfunc impl. + (xml::element::get_attr): New decl. + (struct xml::comment): New xml::node subclass. + +2025-06-23 David Malcolm <dmalcolm@redhat.com> + + PR other/116792 + * diagnostic-format-html.cc (html_token_printer::print_tokens): + Handle pp_token::kind::event_id. + (selftest::test_token_printer): Add coverage of printing an event + id. + +2025-06-23 Pan Li <pan2.li@intel.com> + + * config/riscv/riscv-v.cc (expand_vx_binary_vec_dup_vec): Add + new case US_PLUS. + (expand_vx_binary_vec_vec_dup): Ditto. + * config/riscv/riscv.cc (riscv_rtx_costs): Ditto. + * config/riscv/vector-iterators.md: Add new op us_plus. + +2025-06-23 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/120608 + * tree-tailcall.cc (empty_eh_cleanup): Ignore .ASAN_MARK (POISON) + internal calls for the cfun->has_musttail case and diag_musttail. + (find_tail_calls): Likewise. + +2025-06-23 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/120608 + * cfgexpand.cc: Include rtl-iter.h. + (expand_gimple_tailcall): Add ASAN_EPILOG_SEQ argument, if non-NULL + and expand_gimple_stmt emitted a tail call, emit a copy of that + insn sequence before the call sequence. + (expand_gimple_basic_block): Remove DISABLE_TAIL_CALLS argument, add + ASAN_EPILOG_SEQ argument. Disable tail call flag only on non-musttail + calls if that flag is set, pass it to expand_gimple_tailcall. + (pass_expand::execute): Pass VAR_RET_SEQ directly as last + expand_gimple_basic_block argument rather than its comparison with + NULL. + +2025-06-23 Pengfei Li <Pengfei.Li2@arm.com> + + * tree-vect-data-refs.cc (vect_peeling_supportable): Return new + enum values to indicate if combined peeling and versioning can + potentially support vectorization. + (vect_enhance_data_refs_alignment): Support combined peeling and + versioning in vectorization analysis. + * tree-vect-loop-manip.cc (vect_create_cond_for_align_checks): + Add a new type of runtime check for mutually aligned DRs. + * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Set + default value of allow_mutual_alignment in the initializer list. + * tree-vectorizer.h (enum peeling_support): Define type of + peeling support for function vect_peeling_supportable. + (LOOP_VINFO_ALLOW_MUTUAL_ALIGNMENT): New access macro. + +2025-06-23 Mikael Morin <morin-mikael@orange.fr> + + * match.pd (`-(-X)`, `~(~X)`, `conj(conj(X))`): Add a + NON_LVALUE_EXPR wrapper to the simplification of doubled unary + operators NEGATE_EXPR, BIT_NOT_EXPR and CONJ_EXPR. + +2025-06-23 Richard Biener <rguenther@suse.de> + + PR tree-optimization/120729 + * gimple-predicate-analysis.h (uninit_analysis::prune_phi_opnds): + Add argument of work budget remaining. + * gimple-predicate-analysis.cc (uninit_analysis::prune_phi_opnds): + Likewise. Maintain and honor it throughout the recursion. + * params.opt (uninit-max-prune-work): New. + * doc/invoke.texi (uninit-max-prune-work): Document. + +2025-06-23 Richard Sandiford <richard.sandiford@arm.com> + + PR rtl-optimization/120721 + * function.cc (instantiate_virtual_regs_in_insn): Use force_subreg + instead of simplify_gen_subreg when instantiating an rvalue SUBREG. + +2025-06-23 H.J. Lu <hjl.tools@gmail.com> + + PR target/120728 + * config/i386/i386.cc (ix86_get_ssemov): Use vmovdqu16/vmovdqu8 + only with EVEX register operands. + +2025-06-23 H.J. Lu <hjl.tools@gmail.com> + + * config/i386/i386-options.cc (processor_cost_table): Add a + PROCESSOR_XXX comment to each entry. + +2025-06-22 Andrew Pinski <quic_apinski@quicinc.com> + + PR target/119830 + * config/riscv/riscv.cc (riscv_build_integer_1): Make arithmetic in bclr case + clean for 32 bit hosts. + +2025-06-22 Jeff Law <jlaw@ventanamicro.com> + + PR rtl-optimization/120550 + * ext-dce.cc (ext_dce_try_optimize_insn): Drop REG_EQUAL/REG_EQUIV + notes on modified insns. + +2025-06-22 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> + + * config/xtensa/xtensa.h (TARGET_DEPBITS): New macro. + * config/xtensa/xtensa.md (insvsi): New insn pattern. + +2025-06-22 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> + + * config/xtensa/xtensa.cc (xtensa_zero_call_used_regs): + New prototype and function. + (TARGET_ZERO_CALL_USED_REGS): Define macro. + +2025-06-22 Jan Hubicka <hubicka@ucw.cz> + + * auto-profile.cc (update_count_by_afdo_count): Make static; + add variant accepting profile_count. + (afdo_find_equiv_class): Use update_count_by_afdo_count. + (afdo_propagate_edge): Likewise. + (afdo_propagate): Likewise. + (afdo_calculate_branch_prob): Fix handling of all_known. + (afdo_annotate_cfg): Annotate by 0 where both afdo and static + profile agrees. + +2025-06-22 Jan Hubicka <hubicka@ucw.cz> + + * auto-profile.cc (afdo_set_bb_count): Dump inline stacks + and reasons when lookup failed. + (afdo_set_bb_count): Record info about BBs with zero AFDO count. + (afdo_annotate_cfg): Set profile to global0_afdo if there are + no samples in profile. + +2025-06-22 Jan Hubicka <hubicka@ucw.cz> + + * ipa-profile.cc (ipa_profile): Use widest_int to avoid + possible overflows. + +2025-06-22 Jan Hubicka <hubicka@ucw.cz> + + * auto-profile.cc (autofdo::afdo_count_scale): New. + (autofdo_source_profile::update_inlined_ind_target): Scale + counts. + (autofdo_source_profile::read): Set scale and dump + statistics. + (afdo_indirect_call): Scale. + (afdo_set_bb_count): Scale. + (afdo_find_equiv_class): Fix dumps. + (afdo_annotate_cfg): Scale. + +2025-06-22 Jan Hubicka <hubicka@ucw.cz> + + * cgraph.cc (cgraph_node::make_profile_global0): Support + GUESSED_GLOBAL0_AFDO + * ipa-cp.cc (update_profiling_info): Use + GUESSED_GLOBAL0_AFDO. + * profile-count.cc (profile_probability::dump): Use + quality (). + (profile_probability::stream_in): Use m_adjusted_quality. + (profile_probability::stream_out): Use m_adjusted_quality. + (profile_count::combine_with_ipa_count): Use quality (). + (profile_probability::sqrt): Likewise. + * profile-count.h (enum profile_quality): Add + GUESSED_GLOBAL0_AFDO; reoder GUESSED_GLOBAL0_ADJUSTED and + GUESSED_GLOBAL0. + (profile_probability): Add min_quality; replase m_quality + by m_adjused_quality; add set_quality; update all users + of quality. + (profile_count): Set n_bits to 60; make m_quality 4 bits; + update uses of quality. + (profile_count::afdo_zero, profile_count::globa0afdo): New. + +2025-06-21 Jan Hubicka <hubicka@ucw.cz> + + * tree-inline.cc (copy_cfg_body): Fix profile of split functions. + +2025-06-21 Jeff Law <jlaw@ventanamicro.com> + + PR target/118241 + * config/riscv/predicates.md (prefetch_operand): New predicate. + * config/riscv/constraints.md (Q): New constraint. + * config/riscv/riscv.md (prefetch): Use new predicate and constraint. + (riscv_prefetchi_<mode>): Similarly. + +2025-06-21 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/120746 + * value-range.cc (irange::snap): Use int type instead of uint. + +2025-06-21 Jan Hubicka <hubicka@ucw.cz> + + * auto-profile.cc (dump_inline_stack): New function. + (get_inline_stack_in_node): New function. + (get_relative_location_for_stmt): Add FN parameter. + (has_indirect_call): Remove. + (function_instance::find_icall_target_map): Add FN parameter. + (function_instance::remove_icall_target): New function. + (function_instance::read_function_instance): Set sum_max. + (autofdo_source_profile::get_count_info): Add NODE parameter. + (autofdo_source_profile::update_inlined_ind_target): Add NODE parameter. + (autofdo_source_profile::remove_icall_target): New function. + (afdo_indirect_call): Add INDIRECT_EDGE parameter; dump reason + for failure; do not check for recursion; do not inline call. + (afdo_vpt): Add INDIRECT_EDGE parameter. + (afdo_set_bb_count): Do not take PROMOTED set. + (afdo_vpt_for_early_inline): Remove. + (afdo_annotate_cfg): Do not take PROMOTED set. + (auto_profile): Do not call afdo_vpt_for_early_inline. + (afdo_callsite_hot_enough_for_early_inline): Dump count. + (remove_afdo_speculative_target): New function. + * auto-profile.h (afdo_vpt_for_early_inline): Declare. + (remove_afdo_speculative_target): Declare. + * ipa-inline.cc (inline_functions_by_afdo): Do VPT. + (early_inliner): Redirecct edges if inlining happened. + * tree-inline.cc (expand_call_inline): Add sanity check. + +2025-06-21 Jan Hubicka <hubicka@ucw.cz> + + * auto-profile.cc (get_inline_stack): Add fn parameter. + * ipa-inline.cc (want_early_inline_function_p): Do not care + about AFDO. + (inline_functions_by_afdo): New function. + (early_inliner): Use it. + +2025-06-21 Pan Li <pan2.li@intel.com> + + PR target/120652 + * config/riscv/autovec.md: Add immediate_operand for + select_vl operand 2. + +2025-06-20 Andrew MacLeod <amacleod@redhat.com> + + PR tree-optimization/120701 + * value-range.cc (irange::verify_range): Verify range pairs are + sorted properly. + (irange::snap): Check for over/underflow properly. + +2025-06-20 Andrew Stubbs <ams@baylibre.com> + + PR target/120722 + * config/gcn/gcn.cc (gcn_hard_regno_mode_ok): Allow SImode in VCC_HI. + +2025-06-20 Jørgen Kvalsvik <j@lambda.is> + + PR gcov-profile/120634 + * prime-paths.cc (struct auto_vec_vec): Add constructor from + vec. + (test_split_components): Use auto_vec_vec. + (test_scc_internal_prime_paths): Ditto. + (test_scc_entry_exit_paths): Ditto. + (test_complete_prime_paths): Ditto. + (test_entry_prime_paths): Ditto. + (test_singleton_path): Ditto. + +2025-06-20 Jørgen Kvalsvik <j@lambda.is> + + PR gcov-profile/120634 + * prime-paths.cc (trie::paths): Use auto_vec. + +2025-06-20 Richard Biener <rguenther@suse.de> + + PR tree-optimization/120654 + * vr-values.cc (range_fits_type_p): Check for undefined_p () + before accessing type (). + +2025-06-20 H.J. Lu <hjl.tools@gmail.com> + + PR target/120708 + * config/i386/i386-expand.cc (ix86_expand_set_or_cpymem): Use + MOVE_MAX to get the widest vector mode in vector loop. + +2025-06-20 Stafford Horne <shorne@gmail.com> + + * config/or1k/or1k.cc (or1k_noce_conversion_profitable_p): New + function. + (or1k_is_cmov_insn): New function. + (TARGET_NOCE_CONVERSION_PROFITABLE_P): Define macro. + * config/or1k/or1k.md (cbranchsi4): Convert to insn_and_split. + (cbranch<mode>4): Convert to insn_and_split. + +2025-06-20 Stafford Horne <shorne@gmail.com> + + PR target/120587 + * config/or1k/or1k.md (zero_extendbisi2_sr_f): New expand. + (extendbisi2_sr_f): New expand. + * config/or1k/predicates.md (sr_f_reg_operand): New predicate. + +2025-06-20 Pan Li <pan2.li@intel.com> + + * config/riscv/riscv-v.cc (expand_vx_binary_vec_dup_vec): Add + new case UMIN. + (expand_vx_binary_vec_vec_dup): Ditto. + * config/riscv/riscv.cc (riscv_rtx_costs): Ditto. + * config/riscv/vector-iterators.md: Add new op umin. + +2025-06-19 Jakub Jelinek <jakub@redhat.com> + + PR target/120689 + * function.cc (assign_parm_setup_block): Align parm to at least + word alignment even on !STRICT_ALIGNMENT targets, as long as + BITS_PER_WORD is not larger than MAX_SUPPORTED_STACK_ALIGNMENT. + +2025-06-19 H.J. Lu <hjl.tools@gmail.com> + + PR target/120427 + * config/i386/i386.md (*mov<mode>_and): Changed to + define_insn_and_split. Split it to "mov $0,mem" if not -Oz. + (*mov<mode>_or): Changed to define_insn_and_split. Split it + to "mov $-1,mem" if not -Oz. + (peephole2): Don't transform "mov $-1,reg" to "push $-1; pop reg" + for -Oz since it will be transformed to "or $-1,reg". + +2025-06-19 Georg-Johann Lay <avr@gjlay.de> + + PR other/115893 + * doc/install.texi (Prerequisites): Note that Texinfo older + than v7.1 may throw incorrect build warnings, cf. + https://lists.nongnu.org/archive/html/help-texinfo/2023-11/msg00004.html + +2025-06-19 Dongyan Chen <chendongyan@isrc.iscas.ac.cn> + + * config/riscv/riscv-cores.def (RISCV_TUNE): Add "generic" tune. + * config/riscv/riscv.cc: Add generic_tune_info. + * config/riscv/riscv.h (RISCV_TUNE_STRING_DEFAULT): Change default tune. + +2025-06-19 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/120631 + * dfp.cc (decimal_real_to_integer): Use result multiplication not just + when precision > 128 and dn.exponent > 19, but when precision > 64 + and dn.exponent > 0. + +2025-06-19 Kito Cheng <kito.cheng@sifive.com> + + * config/riscv/riscv.cc (riscv_legitimize_move): Use + riscv_2x_xlen_mode_p. + (riscv_binary_cost): Ditto. + (riscv_hard_regno_mode_ok): Ditto. + +2025-06-19 Kito Cheng <kito.cheng@sifive.com> + + * config/riscv/riscv.cc (riscv_cost_model): Add cost model for + zilsd. + +2025-06-19 Lili Cui <lili.cui@intel.com> + + PR target/120697 + * config/i386/i386.cc (ix86_expand_prologue): + Remove 3 assertions and associated code. + +2025-06-18 Dimitar Dimitrov <dimitar@dinux.eu> + Richard Sandiford <richard.sandiford@arm.com> + Andrew Pinski <quic_apinski@quicinc.com> + + PR target/119966 + * emit-rtl.cc (validate_subreg): Call simplify_subreg_regno + instead of checking info.representable_p.. + * rtl.h (simplify_subreg_regno): Add new argument + allow_stack_regs. + * rtlanal.cc (simplify_subreg_regno): Do not reject + stack-related registers if allow_stack_regs is true. + +2025-06-18 Andrew MacLeod <amacleod@redhat.com> + + * value-range.cc (irange::intersect_bitmask): Always update the + stored mask to reflect the current calculated mask. + +2025-06-18 Andrew MacLeod <amacleod@redhat.com> + + PR tree-optimization/119039 + * value-range.cc (irange::contains_p): Call wide_int version of + contains_p for singleton ranges. + (irange::intersect): If either range is a singleton, use + contains_p. + +2025-06-18 Andrew MacLeod <amacleod@redhat.com> + + PR tree-optimization/119039 + * vr-values.cc (simplify_using_ranges::legacy_fold_cond): Remove. + (simplify_using_ranges::simplify_switch_using_ranges): Adjust. + +2025-06-18 Richard Biener <rguenther@suse.de> + + * tree-cfg.cc (dump_function_to_file): Use flags, not dump_flags. + +2025-06-18 Jan Beulich <jbeulich@suse.com> + + * doc/gcov.texi: Drop blank after @anchor. + +2025-06-18 Jan Beulich <jbeulich@suse.com> + + * doc/extend.texi: Fill first argument of @xref{}. + +2025-06-18 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/120631 + * real.cc (decimal_from_integer): Add digits argument, if larger than + 256, use XALLOCAVEC allocated buffer. + (real_from_integer): Pass val_in's precision divided by 3 to + decimal_from_integer. + * dfp.cc (decimal_real_to_integer): For precision > 128 if finite + and exponent is large, decrease exponent and multiply resulting + wide_int by powers of 10^19. + +2025-06-18 Pan Li <pan2.li@intel.com> + + * config/riscv/riscv-v.cc (expand_vx_binary_vec_dup_vec): Add + new case SMIN. + (expand_vx_binary_vec_vec_dup): Ditto. + * config/riscv/riscv.cc (riscv_rtx_costs): Ditto. + * config/riscv/vector-iterators.md: Add new op smin. + +2025-06-18 Lili Cui <lili.cui@intel.com> + Michael Matz <matz@suse.de> + + * config/i386/i386-protos.h (ix86_get_separate_components): + New function. + (ix86_components_for_bb): Likewise. + (ix86_disqualify_components): Likewise. + (ix86_emit_prologue_components): Likewise. + (ix86_emit_epilogue_components): Likewise. + (ix86_set_handled_components): Likewise. + * config/i386/i386.cc (save_regs_using_push_pop): + Split from ix86_compute_frame_layout. + (ix86_compute_frame_layout): + Use save_regs_using_push_pop. + (pro_epilogue_adjust_stack): + Use gen_pro_epilogue_adjust_stack_add_nocc. + (ix86_expand_prologue): Add some assertions and adjust + the stack frame at the beginning of the prolog for shrink + wrapping separate. + (ix86_emit_save_regs_using_mov): + Skip registers that are wrapped separately. + (ix86_emit_restore_regs_using_mov): Likewise. + (ix86_expand_epilogue): Add some assertions and set + restore_regs_via_mov to true for shrink wrapping separate. + (ix86_get_separate_components): New function. + (ix86_components_for_bb): Likewise. + (ix86_disqualify_components): Likewise. + (ix86_emit_prologue_components): Likewise. + (ix86_emit_epilogue_components): Likewise. + (ix86_set_handled_components): Likewise. + (TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS): Define. + (TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB): Likewise. + (TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS): Likewise. + (TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS): Likewise. + (TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS): Likewise. + (TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS): Likewise. + * config/i386/i386.h (struct machine_function):Add + reg_is_wrapped_separately array for register wrapping + information. + * config/i386/i386.md + (@pro_epilogue_adjust_stack_add_nocc<mode>): New. + +2025-06-18 Andrew MacLeod <amacleod@redhat.com> + + PR tree-optimization/120661 + * value-range.cc (irange::snap): New. + (irange::snap_subranges): New. + (irange::set_range_from_bitmask): Call snap_subranges. + * value-range.h (snap, snap_subranges): New prototypes. + +2025-06-17 Jan Hubicka <hubicka@ucw.cz> + + * auto-profile.cc (afdo_indirect_call): Compute speculative edge + probability. + (add_scale): Break out from ... + (scale_bbs): Break out from ... + (afdo_adjust_guessed_profile): ... here; use componet array instead of + current_component hash_map; handle components with only 0 profile; + be more agressive on finding scales along the boundary. + +2025-06-17 Jan Hubicka <hubicka@ucw.cz> + + * cgraph.cc (cgraph_node::apply_scale): Special case scaling + to profile_count::zero (). + (cgraph_node::verify_node): Add extra compatibility check. + +2025-06-17 Umesh Kalappa <ukalappa.mips@gmail.com> + + * config/riscv/sync.md (lrsc_atomic_exchange<mode>): Use scratch + register for loop control rather than lr output. + +2025-06-17 Jason Merrill <jason@redhat.com> + + * diagnostic.h (diagnostic_option_classifier): Friend + diagnostic_context. + (diagnostic_context::get_classification_history): New. + +2025-06-17 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/120677 + * gimple-crc-optimization.cc (crc_optimization::optimize_crc_loop): + Insert before gsi_after_labels instead of gsi_start_bb. Use + gimple_bb (output_crc) instead of output_crc->bb. Formatting fix. + +2025-06-17 Richard Sandiford <richard.sandiford@arm.com> + + PR target/113027 + * config/aarch64/aarch64-protos.h (aarch64_decompose_vec_struct_index): + Declare. + * config/aarch64/aarch64.cc (aarch64_decompose_vec_struct_index): New + function. + * config/aarch64/iterators.md (VEL, Vel): Add Advanced SIMD + structure modes. + * config/aarch64/aarch64-simd.md (vec_set<VSTRUCT_QD:mode>) + (vec_extract<VSTRUCT_QD:mode>): New patterns. + +2025-06-17 Tobias Burnus <tburnus@baylibre.com> + + * omp-offload.cc (omp_discover_declare_target_tgt_fn_r): Also + walk external functions that are declare inline (and have a + DECL_SAVED_TREE). + +2025-06-16 Spencer Abson <spencer.abson@arm.com> + + * config/aarch64/aarch64-protos.h (aarch64_sve_valid_pred_p): + Declare helper for aarch64_predicate_operand. + (aarch64_sve_packed_pred): Declare helper for new expanders. + (aarch64_sve_fp_pred): Likewise. + * config/aarch64/aarch64-sve.md (<optab><mode><v_int_equiv>2): + Extend into... + (<optab><SVE_HSF:mode><SVE_HSDI:mode>2): New expander for converting + vectors of HF,SF to vectors of HI,SI,DI. + (<optab><VNx2DF_ONLY:mode><SVE_2SDI:mode>2): New expander for converting + vectors of SI,DI to vectors of DF. + (*aarch64_sve_<optab>_nontrunc<SVE_PARTIAL_F:mode><SVE_HSDI:mode>): + New pattern to match those we've added here. + (@aarch64_sve_<optab>_trunc<VNx2DF_ONLY:mode><VNx4SI_ONLY:mode>): Extend + into... + (@aarch64_sve_<optab>_trunc<VNx2DF_ONLY:mode><SVE_SI:mode>): Match both + VNx2SI<-VNx2DF and VNx4SI<-VNx4DF. + (<optab><v_int_equiv><mode>2): Extend into... + (<optab><SVE_HSDI:mode><SVE_F:mode>2): New expander for converting vectors + of HI,SI,DI to vectors of HF,SF,DF. + (*aarch64_sve_<optab>_nonextend<SVE_HSDI:mode><SVE_PARTIAL_F:mode>): New + pattern to match those we've added here. + (trunc<SVE_SDF:mode><SVE_PARTIAL_HSF:mode>2): New expander to handle + narrowing ('truncating') FP<-FP conversions. + (*aarch64_sve_<optab>_trunc<SVE_SDF:mode><SVE_PARTIAL_HSF:mode>): New + pattern to handle those we've added here. + (extend<SVE_PARTIAL_HSF:mode><SVE_SDF:mode>2): New expander to handle + widening ('extending') FP<-FP conversions. + (*aarch64_sve_<optab>_nontrunc<SVE_PARTIAL_HSF:mode><SVE_SDF:mode>): New + pattern to handle those we've added here. + * config/aarch64/aarch64.cc (aarch64_sve_packed_pred): New function. + (aarch64_sve_fp_pred): Likewise. + (aarch64_sve_valid_pred_p): Likewise. + * config/aarch64/iterators.md (SVE_PARTIAL_HSF): New mode iterator. + (SVE_HSF): Likewise. + (SVE_SDF): Likewise. + (SVE_SI): Likewise. + (SVE_2SDI) Likewise. + (self_mask): Extend to all integer/FP vector modes. + (narrower_mask): Likewise (excluding QI). + * config/aarch64/predicates.md (aarch64_predicate_operand): New special + predicate to handle narrower predicate modes. + +2025-06-16 Spencer Abson <spencer.abson@arm.com> + + * config/aarch64/aarch64-sve.md: Replace uses of SVE_FULL_F_BF + with SVE_FULL_F_B16B16. + Replace use of SVE_F with SVE_F_BF. + * config/aarch64/iterators.md (SVE_PARTIAL_F): New iterator for + partial SVE FP modes. + (SVE_FULL_F_BF): Rename to SVE_FULL_F_B16B16. + (SVE_PARTIAL_F_B16B16): New iterator (BF16 included) for partial + SVE FP modes. + (SVE_F_B16B16): New iterator for all SVE FP modes. + (SVE_BF): New iterator for all SVE BF16 modes. + (SVE_F): Redefine to exclude BF16 modes. + (SVE_F_BF): New iterator to replace the previous SVE_F. + (VPRED): Describe the VPRED mapping for partial vector modes. + (b): Cover partial FP modes. + (is_bf16): Likewise. + +2025-06-16 Jason Merrill <jason@redhat.com> + + * doc/invoke.texi: Document -Wsfinae-incomplete. + +2025-06-16 Matthieu Longo <matthieu.longo@arm.com> + Srinath Parvathaneni <srinath.parvathaneni@arm.com> + + * config.in: Regenerate. + * config/aarch64/aarch64-elf-metadata.h + (class aeabi_subsection): New class for BAs. + * config/aarch64/aarch64-protos.h + (aarch64_pacret_enabled): New function. + * config/aarch64/aarch64.cc + (HAVE_AS_AEABI_BUILD_ATTRIBUTES): New definition. + (aarch64_file_end_indicate_exec_stack): Emit BAss. + (aarch64_pacret_enabled): New function. + (aarch64_start_file): Indent. + * configure: Regenerate. + * configure.ac: New configure check for BAs support in binutils. + +2025-06-16 Matthieu Longo <matthieu.longo@arm.com> + + * Makefile.in: Add missing declaration of BACKEND_H. + * config.gcc: Add aarch64-elf-metadata.o to extra_objs. + * config/aarch64/aarch64-elf-metadata.h: New file + * config/aarch64/aarch64-elf-metadata.cc: New file. + * config/aarch64/aarch64.cc + (GNU_PROPERTY_AARCH64_FEATURE_1_AND): Removed. + (GNU_PROPERTY_AARCH64_FEATURE_1_BTI): Likewise. + (GNU_PROPERTY_AARCH64_FEATURE_1_PAC): Likewise. + (GNU_PROPERTY_AARCH64_FEATURE_1_GCS): Likewise. + (aarch64_file_end_indicate_exec_stack): Move GNU properties code to + aarch64-elf-metadata.cc + * config/aarch64/t-aarch64: Declare target aarch64-elf-metadata.o + +2025-06-16 Matthieu Longo <matthieu.longo@arm.com> + + * config/aarch64/aarch64.cc + (aarch64_file_end_indicate_exec_stack): Emit assembly comments. + +2025-06-16 Jan Hubicka <hubicka@ucw.cz> + + * auto-profile.cc (edge_set): Remove unused typedef. + (is_bb_annotated): Sanity check that annotated BBs has + quality AFDO and non-anntoated non-AFDO. Exceptions are + zeros. + (set_bb_annotated): Verify that BB set annotated has + AFDO profile. + (afdo_set_bb_count): Do not return true for 0 counts. + (afdo_find_equiv_class): Fix formating; + do not combine profile of annoated and non-annotated BBs. + (afdo_propagate_edge): Fix variable names; dump info + about changes; do not change non-annoated BB profiles; + if all flow out of BB was decided on, annotate remaining + edges with 0. + (afdo_propagate): Dump info about copied BB counts + and number of iteraitons used. + (cmp): New function. + (afdo_adjust_guessed_profile): New function. + (afdo_calculate_branch_prob): Do not initialize loop + optimizer here; call afdo_adjust_guessed_profile. + (afdo_annotate_cfg): Initialize profile here; + anotate entry/exit blocks only of profile is non-0. + * profile-count.h: (profile_count::force_guessed): New. + * tree-cfg.cc (gimple_verify_flow_info): Fix typo. + +2025-06-16 Jiawei <jiawei@iscas.ac.cn> + + * common/config/riscv/riscv-common.cc: Add b-ext and supm. + +2025-06-16 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> + + * config/xtensa/predicates.md (reload_operand): + Remove. + * config/xtensa/xtensa.md: + Remove the peephole2 pattern that was previously added. + +2025-06-16 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> + + * config/xtensa/xtensa.md: + Remove the peephole2 pattern that was previously added. + +2025-06-16 Jiawei <jiawei@iscas.ac.cn> + + * simplify-rtx.cc (simplify_context::simplify_binary_operation_1): Handle + more logical simplifications. + +2025-06-15 Pan Li <pan2.li@intel.com> + + * config/riscv/riscv-v.cc (expand_vx_binary_vec_dup_vec): Add new + case UMAX. + (expand_vx_binary_vec_vec_dup): Ditto. + * config/riscv/riscv.cc (riscv_rtx_costs): Ditto. + * config/riscv/vector-iterators.md: Add new op umax. + +2025-06-14 Georg-Johann Lay <avr@gjlay.de> + + Backported from master: + 2025-06-14 Georg-Johann Lay <avr@gjlay.de> + + PR rtl-optimization/120423 + PR rtl-optimization/116389 + * config/avr/avr.md [-mno-lra]: Add pre-reload split to transform + (left shift of) a paradoxical subreg to a (left shift of) zero-extend. + +2025-06-13 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/120629 + * cfgexpand.cc (expand_split_edge): New function. + (expand_gimple_cond, construct_init_block): Use it. + +2025-06-13 Spencer Abson <spencer.abson@arm.com> + + PR target/118150 + * config/aarch64/aarch64-sve.md (*one_cmpl<mode>3_cc): New + combiner pattern. + (*one_cmpl<mode>3_ptest): Likewise. + +2025-06-13 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/120629 + * cfgexpand.cc (construct_init_block): If first_block isn't BB_RTL, + has any PHI nodes and false_edge->dest_idx before redirection is + different from make_single_succ_edge result's dest_idx, swap the + latter with the former last pred edge and their dest_idx members. + +2025-06-13 Kito Cheng <kito.cheng@sifive.com> + + * gcc.cc (driver::set_up_specs): Use gcc_exec_prefix to + read the spec file rather than standard_exec_prefix. + +2025-06-13 H.J. Lu <hjl.tools@gmail.com> + + PR target/120589 + * config/mcore/mcore.cc (mcore_mark_dllimport): Don't use + gen_rtx_MEM. + +2025-06-12 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/120638 + * tree-ssa-math-opts.cc (pass_cse_reciprocals::execute): Call + reset_flow_sensitive_info on arg1. + +2025-06-12 Stafford Horne <shorne@gmail.com> + + PR target/120587 + * config/or1k/or1k.cc (or1k_can_change_mode_class): Allow + changing flags mode from BI to SI to allow for paradoxical + subregs. + +2025-06-12 Uros Bizjak <ubizjak@gmail.com> + + PR target/120604 + * config/i386/i386-expand.cc (ix86_expand_int_movcc): Make sure + we can represent the difference between two 64-bit DImode + immediate values in 64-bit HOST_WIDE_INT. + +2025-06-12 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/120629 + * cfgexpand.cc (expand_gimple_cond): If dest bb isn't BB_RTL, + has any PHI nodes and false_edge->dest_idx before redirection is + different from make_single_succ_edge result's dest_idx, swap the + latter with the former last pred edge and their dest_idx members. + +2025-06-12 Pan Li <pan2.li@intel.com> + + * config/riscv/riscv-v.cc (expand_vx_binary_vec_dup_vec): Add new + case SMAX. + (expand_vx_binary_vec_vec_dup): Ditto. + * config/riscv/riscv.cc (riscv_rtx_costs): Ditto. + * config/riscv/vector-iterators.md: Add new op smax. + +2025-06-12 Richard Sandiford <richard.sandiford@arm.com> + + PR target/120624 + * config/aarch64/aarch64.md (SME_STATE_REGNUM): Expand on comments. + * config/aarch64/aarch64-sme.md (aarch64_restore_za): Also set + SME_STATE_REGNUM + +2025-06-12 Alfie Richards <alfie.richards@arm.com> + + * cgraph.cc (cgraph_node::record_function_versions): Refactor and + rename to... + (cgraph_node::add_function_version): new function. + * cgraph.h (cgraph_node::record_function_versions): Refactor and + rename to... + (cgraph_node::add_function_version): new function. + * config/aarch64/aarch64.cc (aarch64_get_function_versions_dispatcher): + Remove reordering. + * config/i386/i386-features.cc (ix86_get_function_versions_dispatcher): + Remove reordering. + * config/riscv/riscv.cc (riscv_get_function_versions_dispatcher): + Remove reordering. + * config/rs6000/rs6000.cc (rs6000_get_function_versions_dispatcher): + Remove reordering. + +2025-06-12 Alfie Richards <alfie.richards@arm.com> + + * attribs.cc (is_function_default_version): Add target_version logic. + +2025-06-12 Hu, Lin1 <lin1.hu@intel.com> + + * config/i386/x86-tune-sched.cc (ix86_issue_rate): Set 4 for SRF, + 6 for GRR, GNR, CWF, DMR, ARL, PTL. + +2025-06-11 David Malcolm <dmalcolm@redhat.com> + + PR other/116792 + * diagnostic-format-html.cc: Include "selftest-xml.h". + (html_builder::make_element_for_diagnostic): Move... + (class html_token_printer): ...from local to the function + to the global namespace. + (struct selftest::token_printer_test): New. + (selftest::test_token_printer): New. + (selftest::test_simple_log): Simplify using ASSERT_XML_PRINT_EQ. + (selftest::test_metadata): Likewise. + (selftest::diagnostic_format_html_cc_tests): Run the new test. + * selftest-xml.h: New file. + * xml.cc: Include "selftest-xml.h". + (selftest::assert_xml_print_eq): New. + (selftest::test_no_dtd): Simplify using ASSERT_XML_PRINT_EQ. + (selftest::test_printer): Likewise. + (selftest::test_attribute_ordering): Likewise. + +2025-06-11 Edwin Lu <ewlu@rivosinc.com> + + * config/riscv/riscv.cc (struct riscv_tune_param): Add tune + param. + (riscv_sched_can_speculate_insn): Implement. + (TARGET_SCHED_CAN_SPECULATE_INSN): Ditto. + +2025-06-11 Uros Bizjak <ubizjak@gmail.com> + + PR target/120604 + * config/i386/i386-expand.cc (ix86_expand_int_movcc): Cast operands of + signed 64-bit HOST_WIDE_INT subtractions to (unsigned HOST_WIDE_INT). + +2025-06-11 Paul-Antoine Arras <parras@baylibre.com> + + PR target/119100 + * config/riscv/autovec-opt.md (*<optab>_vf_<mode>): Only handle vfmadd + and vfmsub. + (*vfnmsub_<mode>): New pattern. + (*vfnmadd_<mode>): New pattern. + * config/riscv/riscv.cc (get_vector_binary_rtx_cost): Add cost model for + NEG and VEC_DUPLICATE. + +2025-06-11 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/120434 + * gimple-range-fold.cc: Include rtl.h. + (fold_using_range::range_of_range_op): Handle bb ending with + GIMPLE_COND during RTL expansion where there is only one succ + edge instead of two. + +2025-06-11 Jakub Jelinek <jakub@redhat.com> + + * internal-fn.cc (expand_POPCOUNT): Use + expand_expr (lhs, NULL_RTX, VOIDmode, EXPAND_WRITE) instead of + expand_normal (lhs). + +2025-06-11 David Malcolm <dmalcolm@redhat.com> + + PR other/116792 + * diagnostic-format-html.cc: Include "diagnostic-path.h" and + "diagnostic-client-data-hooks.h". + (html_builder::m_logical_loc_mgr): New field. + (html_builder::m_cur_nesting_levels): New field. + (html_builder::m_last_logical_location): New field. + (html_builder::m_last_location): New field. + (html_builder::m_last_expanded_location): New field. + (HTML_STYLE): Add "white-space: pre;" to .source and .annotation. + Add "gcc-quoted-text" CSS class. + (html_builder::html_builder): Initialize the new fields. If CSS + is enabled, add CDN links to PatternFly 3 stylesheets. + (html_builder::add_stylesheet): New. + (html_builder::on_report_diagnostic): Add "alert" param to + make_element_for_diagnostic, setting it by default, but unsetting + it for nested diagnostics below the top level. Use + add_at_nesting_level for nested diagnostics. + (add_nesting_level_attr): New. + (html_builder::add_at_nesting_level): New. + (get_pf_class_for_alert_div): New. + (get_pf_class_for_alert_icon): New. + (get_label_for_logical_location_kind): New. + (add_labelled_value): New. + (html_builder::make_element_for_diagnostic): Add leading comment. + Add "alert" param. Drop class="gcc-diagnostic" from <div> tag, + instead adding the class for a PatternFly 3 alert if "alert" is + true, and adding a <span> with an alert icon, both according to + the diagnostic severity. Add a severity prefix to the message for + alerts. Add any metadata/option text as suffixes to the message. + Show any logical location. Show any physical location. Don't + show the locus if the last location is unchanged within the + diagnostic_group. Wrap any execution path element in a + <div id="execution-path"> and add a label to it. Wrap any + generated patch in a <div id="suggested-fix"> and add a label + to it. + (selftest::test_simple_log): Update expected HTML. + +2025-06-11 David Malcolm <dmalcolm@redhat.com> + + * diagnostic-path-output.cc: Use xml::printer::add_text_from_pp. + * diagnostic-show-locus.cc: Likewise. + * xml-printer.h (xml::printer::add_text_from_pp): New decl. + * xml.cc (xml::node_with_children::add_text_from_pp): New. + (xml::printer::add_text_from_pp): New. + * xml.h (xml::node_with_children::add_text_from_pp): New decl. + +2025-06-11 David Malcolm <dmalcolm@redhat.com> + + PR other/120610 + * diagnostic-format-html.cc (html_builder::html_builder): Update + for new param of xml::printer::pop_tag. + (html_path_label_writer::end_label): Likewise. + (html_builder::make_element_for_diagnostic::html_token_printer): + Give the instance its own xml::printer. Update for new param of + xml::printer::pop_tag. + (html_builder::make_element_for_diagnostic): Give the instance its + own xml::printer. + (html_builder::make_metadata_element): Update for new param of + xml::printer::pop_tag. + (html_builder::flush_to_file): Likewise. + * diagnostic-path-output.cc (begin_html_stack_frame): Likewise. + (begin_html_stack_frame): Likewise. + (end_html_stack_frame): Likewise. + (print_path_summary_as_html): Likewise. + * diagnostic-show-locus.cc + (struct to_text::auto_check_tag_nesting): New. + (struct to_html:: auto_check_tag_nesting): New. + (to_text::pop_html_tag): Change param to const char *. + (to_html::pop_html_tag): Likewise; rename param to + "expected_name". + (default_diagnostic_start_span_fn<to_html>): Update for new param + of xml::printer::pop_tag. + (layout_printer<to_html>::end_label): Likewise. + (layout_printer<Sink>::print_trailing_fixits): Add RAII sentinel + to check tag nesting for the HTML case. Delete stray popping + of "td" in the presence of fix-it hints. + (layout_printer<Sink>::print_line): Add RAII sentinel + to check tag nesting for the HTML case. + (diagnostic_source_print_policy::print_as_html): Likewise. + (layout_printer<Sink>::print): Likewise. + * xml-printer.h (xml::printer::printer): Add optional + "check_popped_tags" param. + (xml::printer::pop_tag): Add "expected_name" param. + (xml::printer::get_num_open_tags): New accessor. + (xml::printer::dump): New decl. + (xml::printer::m_check_popped_tags): New field. + (class xml::auto_check_tag_nesting): New. + (class xml::auto_print_element): Update for new param of pop_tag. + * xml.cc: Move pragma pop so that the pragma also covers + xml::printer's member functions, "dump" in particular. + (xml::printer::printer): Add param "check_popped_tags". + (xml::printer::pop_tag): Add param "expected_name" and use it to assert + that the popped tag is as expected. Assert that we have a tag to + pop. + (xml::printer::dump): New. + (selftest::test_printer): Update for new param of pop_tag. + (selftest::test_attribute_ordering): Likewise. + +2025-06-11 David Malcolm <dmalcolm@redhat.com> + + * gimple-ssa-warn-access.cc + (pass_waccess::maybe_check_dealloc_call): Add missing + auto_diagnostic_group to nest the "returned from %qD" + note within the warning. + +2025-06-10 Jan Hubicka <hubicka@ucw.cz> + + * cgraph.cc (cgraph_node::make_profile_local): New member function. + (cgraph_node::make_profile_global0): New member function. + (cgraph_node::apply_scale): Do not call adjust_for_ipa_scalling. + (cgraph_node::scale_profile_to): New member function. + * cgraph.h (cgraph_node::make_profile_local, + cgraph_node::make_profile_global0, cgraph_node::scale_profile_to): + Declare. + * ipa-cp.cc (lenient_count_portion_handling): Fix logic dropping count + to local. + (update_counts_for_self_gen_clones): Use scale_profile_to. + (update_profiling_info): Use make_profile_local, make_profile_global0 + and scale_profile_to. + (update_specialized_profile): Likewise. + * ipa-inline-transform.cc (clone_inlined_nodes): Call + adjust_for_ipa_scalling. + +2025-06-10 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/120434 + * expr.cc (expand_expr_real_2) <CASE_CONVERT>: If get_range_pos_neg + at -O2 for scalar integer extension suggests the most significant + bit of op0 is not set, try both unsigned and signed conversion and + choose the cheaper one. If both are the same cost, choose one + based on TYPE_UNSIGNED (TREE_TYPE (treeop0)). + +2025-06-10 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/120434 + * config/i386/i386.md (*bsr_rex64_2): Rename to ... + (*bsr_rex64<u>_2): ... this. Use any_extend instead of sign_extend. + (*bsr_2): Rename to ... + (*bsr<u>_2): ... this. Use any_extend instead of sign_extend. + (bsr splitters after those): Use any_extend instead of sign_extend. + +2025-06-10 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/120434 + * cfgrtl.h (update_bb_for_insn_chain): Declare. + * cfgrtl.cc (update_bb_for_insn_chain): No longer static. + * cfgexpand.h (expand_remove_edge): Declare. + * cfgexpand.cc: Include "gimple-range.h". + (head_end_for_bb): New variable. + (label_rtx_for_bb): Drop ATTRIBUTE_UNUSED from bb argument. + Use head_end_for_bb if possible for non-BB_RTL bbs. + (expand_remove_edge): New function. + (maybe_cleanup_end_of_block): Use it instead of remove_edge. + (expand_gimple_cond): Don't clear EDGE_TRUE_VALUE and + EDGE_FALSE_VALUE just yet. Use head_end_for_bb elts instead + of BB_END and update_bb_for_insn_chain instead of update_bb_for_insn. + (expand_gimple_tailcall): Use expand_remove_edge instead of + remove_edge. Use head_end_for_bb elts instead of BB_END and + update_bb_for_insn_chain instead of update_bb_for_insn. + (expand_gimple_basic_block): Don't change bb to BB_RTL here, instead + use head_end_for_bb elts instead of BB_HEAD and BB_END. Use + update_bb_for_insn_chain instead of update_bb_for_insn. + (pass_expand::execute): Enable ranger before expand_gimple_basic_block + calls and create head_end_for_bb vector. Disable ranger after + those calls, turn still non-BB_RTL blocks into BB_RTL and set their + BB_HEAD and BB_END from head_end_for_bb elts, and clear EDGE_TRUE_VALUE + and EDGE_FALSE_VALUE flags on edges. Release head_end_for_bb + vector. + * tree-outof-ssa.cc (expand_phi_nodes): Don't clear phi nodes here. + * tree.h (get_range_pos_neg): Add gimple * argument defaulted to NULL. + * tree.cc (get_range_pos_neg): Add stmt argument. Use + get_range_query (cfun) instead of get_global_range_query () and pass + stmt as third argument to range_of_expr. + * expr.cc (expand_expr_divmod): Pass currently_expanding_gimple_stmt + to get_range_pos_neg. + (expand_expr_real_1) <case SSA_NAME>: Change internal fn handling + to avoid temporarily overwriting gimple_call_lhs of ifn, instead + temporarily overwrite SSA_NAME_VAR of its lhs. + (maybe_optimize_pow2p_mod_cmp): Pass currently_expanding_gimple_stmt + to get_range_pos_neg. + (maybe_optimize_mod_cmp): Likewise. + * internal-fn.cc (get_min_precision): Likewise. Use + get_range_query (cfun) instead of get_global_range_query () and pass + currently_expanding_gimple_stmt as third argument to range_of_expr. + Pass g to get_range_pos_neg. + (expand_addsub_overflow): Pass currently_expanding_gimple_stmt + to get_range_pos_neg. + (expand_mul_overflow): Likewise. + (expand_arith_overflow): Pass stmt to get_range_pos_neg. + * gimple-range-edge.cc: Include rtl.h. + (gimple_outgoing_range_stmt_p): Return NULL for BB_RTL bbs. + (gimple_outgoing_range::calc_switch_range): If default_edge is NULL, + assert currently_expanding_to_rtl and return before trying to + set range on that edge. + * builtins.cc (expand_builtin_strnlen): Use get_range_query (cfun) + instead of get_global_range_query () and pass + currently_expanding_gimple_stmt as third argument to range_of_expr. + (determine_block_size): Likewise. + * gimple-range.cc (gimple_ranger::range_on_exit): Set s to NULL + instead of last_nondebug_stmt for BB_RTL bbs. + * stmt.cc: Include cfgexpand.h. + (expand_case): Use expand_remove_edge instead of remove_edge. + +2025-06-10 Andrew MacLeod <amacleod@redhat.com> + + * value-range.cc (irange::set_range_from_bitmask): When the bitmask + result is a singleton, check if it is contained in the range. + +2025-06-10 Tobias Burnus <tburnus@baylibre.com> + + * config/gcn/gcn-devices.def: Add gfx942, gfx950 and gfx9-4-generic. + * config/gcn/gcn-opts.h (TARGET_CDNA3, TARGET_CDNA3_PLUS, + TARGET_GLC_NAME, TARGET_TARGET_SC_CACHE): Define. + (TARGET_ARCHITECTED_FLAT_SCRATCH): Use also for CDNA3. + * config/gcn/gcn.h (gcn_isa): Add ISA_CDNA3 to the enum. + * config/gcn/gcn.cc (print_operand): Update 'g' to use + TARGET_GLC_NAME; add 'G' to print TARGET_GLC_NAME unconditionally. + * config/gcn/gcn-valu.md (scatter, gather): Use TARGET_GLC_NAME. + * config/gcn/gcn.md: Use %G<num> instead of glc; use 'buffer_inv sc1' + for TARGET_TARGET_SC_CACHE. + * doc/invoke.texi (march): Add gfx942, gfx950 and gfx9-4-generic. + * doc/install.texi (amdgcn*-*-*): Add gfx942, gfx950 and gfx9-4-generic. + * config/gcn/gcn-tables.opt: Regenerate. + +2025-06-10 Jeff Law <jlaw@ventanamicro.com> + + * config/riscv/riscv.md (lui-constraint<X:mode>and_to_or): Do not use + the RTL template for split code. Emit it directly taking care to avoid + emitting a constant load that needed synthesis. Fix formatting. + +2025-06-10 Kito Cheng <kito.cheng@sifive.com> + + * doc/riscv-ext.texi: Regen. + +2025-06-10 Pan Li <pan2.li@intel.com> + + * config/riscv/riscv-v.cc (expand_vx_binary_vec_vec_dup): Add new + case UMOD. + * config/riscv/riscv.cc (riscv_rtx_costs): Ditto. + * config/riscv/vector-iterators.md: Add new op umod. + +2025-06-09 David Malcolm <dmalcolm@redhat.com> + + * diagnostic-format-sarif.cc (maybe_get_sarif_kind): Update for + conversion of enum logical_location_kind to enum class. + * diagnostic.cc (logical_location_manager::function_p): Likewise. + * libgdiagnostics.cc (html-output/missing-semicolon.py::get_kind): + Likewise. + * logical-location.h (enum logical_location_kind): Convert to... + (enum class logical_location_kind): ...this. + * selftest-logical-location.cc + (test_logical_location_manager::item_from_funcname): Update for + conversion of enum logical_location_kind to enum class. + * tree-logical-location.cc + (tree_logical_location_manager::get_kind): Likewise. + +2025-06-09 Jan Hubicka <hubicka@ucw.cz> + + * cgraph.cc (cgraph_node::apply_scale): New member function. + * cgraph.h (struct cgraph_node): declare. + * ipa-cp.cc (update_counts_for_self_gen_clones): + Use cgraph_node::apply_scale. + (update_profiling_info): Do not overwrite local + profile when dropping to 0 global profile. + (update_specialized_profile): Likewise. + * ipa-inline-transform.cc (update_noncloned_counts): Remove. + (can_remove_node_now_p_1): Fix formating. + (clone_inlined_nodes): Use cgraph_node::apply_scale. + * profile-count.cc (profile_count::dump): Do not ICE + when count is not compatible with entry block count. + * tree-cfg.cc (gimple_verify_flow_info): Check + compatibility of count and entry block count. + +2025-06-09 David Malcolm <dmalcolm@redhat.com> + + PR other/116792 + * diagnostic-format-html.cc (html_builder::m_title_element): New + field. + (html_builder::html_builder): Initialize it. Don't add + placeholder text. + (html_builder::set_main_input_filename): New. + (html_output_format::set_main_input_filename): New. + (test_html_diagnostic_context::test_html_diagnostic_context): Call + set_main_input_filename on the new sink. + (seldtest::test_simple_log): Update expected <title> text. + * diagnostic-format-json.cc (diagnostic_output_format_init_json): + Return a reference to the new sink. + (diagnostic_output_format_init_json_stderr): Likewise. + (diagnostic_output_format_init_json_file): Likewise. + * diagnostic-format-sarif.cc (sarif_builder::sarif_builder): Drop + "main_input_filename_" param, and move adding an artifact for it + with diagnostic_artifact_role::analysis_target to... + (sarif_builder::set_main_input_filename): ...this new function. + (sarif_output_format::set_main_input_filename): New. + (sarif_output_format::sarif_output_format): Drop + "main_input_filename_" param. + (sarif_stream_output_format::sarif_stream_output_format): + Likewise. + (sarif_file_output_format::sarif_file_output_format): Likewise. + (diagnostic_output_format_init_sarif): Return a reference to *FMT. + (diagnostic_output_format_init_sarif_stderr): Return a refererence + to the new sink. Drop "main_input_filename_" param. + (diagnostic_output_format_init_sarif_file): Likewise. + (diagnostic_output_format_init_sarif_stream): Likewise. + (make_sarif_sink): Drop "main_input_filename_" param. + (selftest::test_sarif_diagnostic_context::test_sarif_diagnostic_context): + Likewise. Call set_main_input_filename on the new format. + (selftest::test_sarif_diagnostic_context::buffered_output_format::buffered_output_format): + Drop "main_input_filename_" param. + (selftest::test_make_location_object): Likewise. + * diagnostic-format-sarif.h + (diagnostic_output_format_init_sarif_stderr): Return a refererence + to the new sink. Drop "main_input_filename_" param. + (diagnostic_output_format_init_sarif_file): Likewise. + (diagnostic_output_format_init_sarif_stream): Likewise. + (make_sarif_sink): Drop "main_input_filename_" param. + * diagnostic-format.h + (diagnostic_output_format::set_main_input_filename): New vfunc. + (diagnostic_output_format_init_json_stderr): Return a refererence + to the new sink. + (diagnostic_output_format_init_json_file): Likewise. + * diagnostic.cc (diagnostic_output_format_init): Likewise. Call + set_main_input_filename on the new sink. + * libgdiagnostics.cc (sarif_sink::sarif_sink): Update for above + changes. + * opts-diagnostic.cc (sarif_scheme_handler::make_sink): Likewise. + (handle_OPT_fdiagnostics_add_output_): Likewise. + (handle_OPT_fdiagnostics_set_output_): Likewise. + +2025-06-09 Jeff Law <jlaw@ventanamicro.com> + + * config/riscv/riscv.cc (riscv_noce_conversion_profitable_p): Relax + condition for adjustments due to copies from promoted SUBREGs. + +2025-06-09 Tamar Christina <tamar.christina@arm.com> + + * doc/extend.texi (outline-atomics): Document the inverse -mno flag. + +2025-06-09 Tamar Christina <tamar.christina@arm.com> + + * params.opt (vect-scalar-cost-multiplier): New. + * tree-vect-loop.cc (vect_estimate_min_profitable_iters): Use it. + * doc/invoke.texi (vect-scalar-cost-multiplier): Document it. + +2025-06-09 liuhongt <hongtao.liu@intel.com> + + PR target/103750 + * config/i386/i386.cc (ix86_rtx_costs): Adjust rtx_cost for + maskload. + * config/i386/sse.md (*<avx512>_load<mode>mask_and15): New + define_insn_and_split. + (*<avx512>_load<mode>mask_and3): Ditto. + +2025-06-09 Pan Li <pan2.li@intel.com> + + * config/riscv/riscv-v.cc (expand_vx_binary_vec_vec_dup): Add new + case MOD. + * config/riscv/riscv.cc (riscv_rtx_costs): Ditto. + * config/riscv/vector-iterators.md: Add new op mod. + +2025-06-08 Kugan Vivekanandarajah <kvivekananda@nvidia.com> + + * auto-profile.cc (function_instance::merge): Fix typo. + +2025-06-08 Vineet Gupta <vineetg@rivosinc.com> + + PR target/120203 + * config/riscv/riscv.cc (CFUN_IN_CALL): New macro. + (struct mode_switching_info): Add new field. + (riscv_frm_adjust_mode_after_call): Remove. + (riscv_frm_mode_needed): Track call_insn. + +2025-06-08 Vineet Gupta <vineetg@rivosinc.com> + + PR target/119164 + * config/riscv/riscv.cc (riscv_emit_frm_mode_set): check + STATIC_FRM_P for transition to DYN. + +2025-06-08 Vineet Gupta <vineetg@rivosinc.com> + + * config/riscv/riscv.cc (riscv_frm_emit_after_bb_end): Delete. + (riscv_frm_mode_needed): Remove call riscv_frm_emit_after_bb_end. + +2025-06-08 Vineet Gupta <vineetg@rivosinc.com> + + * config/riscv/riscv.cc (riscv_dynamic_frm_mode_p): Remove. + (riscv_mode_confluence): Ditto. + (TARGET_MODE_CONFLUENCE): Ditto. + +2025-06-08 Vineet Gupta <vineetg@rivosinc.com> + + * emit-rtl.cc (next_nonnote_nondebug_insn): Update comments. + +2025-06-08 Andrew Pinski <quic_apinski@quicinc.com> + + * tree-ssa-phiopt.cc (cond_if_else_store_replacement): Move + definitin of else_vdef to right before the usage. Reformat + slightly. + +2025-06-08 Andrew Pinski <quic_apinski@quicinc.com> + + PR tree-optimization/120533 + * tree-ssa-phiopt.cc (cond_if_else_store_replacement_limited): New function. + (pass_phiopt::execute): Call cond_if_else_store_replacement_limited + for diamand case. + +2025-06-08 Andrew Pinski <quic_apinski@quicinc.com> + + * tree-ssa-phiopt.cc (single_trailing_store_in_bb): Add vphi argument. + Check for single use of the vdef of the store instead of a loop + and check vdef's single use statement is the same as vphi. + (cond_if_else_store_replacement): Update call to single_trailing_store_in_bb. + +2025-06-08 Andrew Pinski <quic_apinski@quicinc.com> + + * tree-ssa-phiopt.cc (cond_if_else_store_replacement): Use get_virtual_phi + instead of inlining it. + +2025-06-08 Co-authored-by: Jeff Law <jlaw@ventanamicro.com> + + * config/riscv/riscv.cc (riscv_expand_conditional_move): Use + riscv_extend_comparands to extend sub-word comparison arguments. + +2025-06-08 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> + + * config/xtensa/xtensa.cc (printx, print_operand): + Add two instruction operand format codes 'U' and 'V', + whose represent scale factors of 0 to 15th positive/negative + power of two. + * config/xtensa/xtensa.md (c_enum "unspec"): + Add UNSPEC_CEIL and UNSPEC_FLOOR. + (int_iterator ANY_ROUND, int_attr m_round): + New integer iterator and its attribute. + (fix<s_fix>_truncsfsi2, *fix<s_fix>_truncsfsi2_2x, + *fix<s_fix>_truncsfsi2_scaled, float<s_float>sisf2, + *float<s_float>sisf2_scaled): + Use output templates with the operand formats added above, + instead of individual output statements. + (l<m_round>sfsi2, *l<m_round>sfsi2_2x, *l<m_round>sfsi2_scaled): + New insn patterns. + +2025-06-07 Jeff Law <jlaw@ventanamicro.com> + + * config/riscv/riscv.cc (riscv_expand_conditional_move): Use + riscv_extend_comparands to extend sub-word comparison arguments. + +2025-06-07 Andrew Pinski <quic_apinski@quicinc.com> + + PR tree-optimization/120572 + * doc/invoke.texi (Wmusttail-local-addr, + Wno-maybe-musttail-local-addr): Fix opindex. + * common.opt.urls: Regenerate. + +2025-06-06 David Malcolm <dmalcolm@redhat.com> + + * diagnostic-format-html.cc (struct html_doctypedecl): New. + (html_builder::html_builder): Use it to populate the document's + m_doctypedecl. + * xml.cc (xml::document::write_as_xml): Replace hardcoded HTML DTD + with use of m_doctypedecl field. + (selftest::test_no_dtd): New. + (selftest::xml_cc_tests): New. + * xml.h (struct doctypedecl): New decl. + +2025-06-06 David Malcolm <dmalcolm@redhat.com> + + * Makefile.in (OBJS-libcommon): Add xml.o. + * diagnostic-format-html.cc (namespace xml): Move implementation + to xml.cc + (selftest::test_printer): Likewise. + (selftest::test_attribute_ordering): Likewise. + (selftest::diagnostic_format_html_cc_tests): Don't call the moved + tests here; they will be called from xml_cc_tests in xml.cc. + * selftest-run-tests.cc (selftest::run_tests): Call xml_cc_tests. + * selftest.h (selftest::xml_cc_tests): New decl. + * xml.cc: New file, based on material from + diagnostic-format-html.cc. + +2025-06-06 David Malcolm <dmalcolm@redhat.com> + + * selftest.h: Fix the sorting of the various *_cc_tests decls. + +2025-06-06 David Malcolm <dmalcolm@redhat.com> + + * text-art/widget.cc (selftest::test_empty_wrapper_widget): New. + (selftest::text_art_widget_cc_tests): Call it. + * text-art/widget.h (text_art::wrapper_widget::calc_req_size): + Gracefully handle m_child being null. + (text_art::wrapper_widget::update_child_alloc_rects): Likewise. + (text_art::wrapper_widget::paint_to_canvas): Likewise. + +2025-06-06 Andrew Pinski <quic_apinski@quicinc.com> + + * tree-ssa-phiopt.cc (cond_if_else_store_replacement_1): Add vphi argument. + Manually update the vphi and new_stmt vdef/lhs. + (cond_if_else_store_replacement): Update call to cond_if_else_store_replacement_1. + +2025-06-06 Tobias Burnus <tburnus@baylibre.com> + Sandra Loosemore <sloosemore@baylibre.com> + + * gimple-fold.cc (gimple_fold_builtin_omp_get_initial_device, + gimple_fold_builtin_omp_get_num_devices): New. + (gimple_fold_builtin): Call them. + * omp-builtins.def (BUILT_IN_OMP_GET_INITIAL_DEVICE): Add + (BUILT_IN_OMP_GET_NUM_DEVICES): Make uservisible + pure. + +2025-06-06 Tobias Burnus <tburnus@baylibre.com> + + * builtins.def (DEF_GOACC_BUILTIN_COMPILER, DEF_GOMP_BUILTIN_COMPILER): + Set NONANSI_P = false to enable those also with -fno-nonansi-builtins. + +2025-06-06 Richard Biener <rguenther@suse.de> + + * tree-vect-stmts.cc (get_group_load_store_type): Remove + non-SLP path. + (get_load_store_type): Likewise. + +2025-06-06 Pan Li <pan2.li@intel.com> + + * config/riscv/riscv-v.cc (expand_vx_binary_vec_vec_dup): Add new + case UDIV. + * config/riscv/riscv.cc (riscv_rtx_costs): Ditto. + * config/riscv/vector-iterators.md: Add new op divu. + +2025-06-06 Richard Biener <rguenther@suse.de> + + * tree-vect-stmts.cc (vectorizable_store): Remove non-SLP + paths. + +2025-06-06 Richard Biener <rguenther@suse.de> + + * gimple-fold.h (create_tmp_reg_or_ssa_name): Remove. + * gimple-fold.cc (create_tmp_reg_or_ssa_name): Likewise. + (gimple_fold_builtin_memory_op): Use make_ssa_name. + (gimple_fold_builtin_strchr): Likewise. + (gimple_fold_builtin_strcat): Likewise. + (gimple_load_first_char): Likewise. + (gimple_fold_builtin_string_compare): Likewise. + (gimple_build): Likewise. + * tree-inline.cc (copy_bb): Likewise. + * config/rs6000/rs6000-builtin.cc (fold_build_vec_cmp): Likewise. + (rs6000_gimple_fold_mma_builtin): Likewise. + (rs6000_gimple_fold_builtin): Likewise. + +2025-06-06 Eric Botcazou <ebotcazou@adacore.com> + + * expr.cc (store_constructor) <ARRAY_TYPE>: Perform the arithmetics + on offsets in (unsigned) sizetype. + +2025-06-06 Jan Hubicka <hubicka@ucw.cz> + + * coverage.cc (coverage_init): Return early when in LTO + +2025-06-06 Jan Hubicka <hubicka@ucw.cz> + + * profile-count.cc (profile_count::to_sreal_scale): Special case 0 of autofdo. + (profile_count::combine_with_ipa_count): If outer function has GLOBAL0 profile + but innter counter has non-zero profile, force it to be 0. + +2025-06-06 Jiawei <jiawei@iscas.ac.cn> + Jiawei Chen <jiawei@iscas.ac.cn> + Yangyu Chen <cyy@cyyself.name> + Tang Haojin <tanghaojin@outlook.com> + + * config/riscv/riscv-cores.def (RISCV_TUNE): New cpu tune. + (RISCV_CORE): New cpu. + * doc/invoke.texi: Ditto. + +2025-06-06 Richard Biener <rguenther@suse.de> + + PR tree-optimization/120032 + * tree-ssa-forwprop.cc (simplify_count_zeroes): When we cannot use + the IFN to determine the result at zero use a conditional move + to reproduce the correct result from the table-based + algorithm. + +2025-06-06 Richard Biener <rguenther@suse.de> + + PR tree-optimization/120032 + * match.pd (clz_table_index): New match. + * tree-ssa-forwprop.cc (check_table_array): Rename from + check_ctz_array. Split out actual verification to a functor. + (check_table_string): Rename from check_ctz_string and likewise. + (check_table): Rename from check_ctz_table and adjust. + (gimple_clz_table_index): Declare. + (simplify_count_zeroes): Rename from simplify_count_trailing_zeroes. + Extend to cover CLZ. + (pass_forwprop::execute): Adjust. + +2025-06-06 Richard Biener <rguenther@suse.de> + + * tree-ssa-forwprop.cc (simplify_count_trailing_zeroes): + Use ranger instead of tree_expr_nonzero_p. + +2025-06-06 Richard Biener <rguenther@suse.de> + + * tree-ssa-forwprop.cc (optimize_count_trailing_zeroes): + Inline into ... + (simplify_count_trailing_zeroes): ... this function. + Split out ... + (check_ctz_table): ... a wrapper for CONSTRUCTOR vs. STRING_CST + handling. + +2025-06-05 Jeff Law <jlaw@ventanamicro.com> + + * config/riscv/riscv.cc (riscv_expand_conditional_move): Avoid + zicond in some cases involving sign bit tests. + * config/riscv/riscv.md: Split a splat of the sign bit feeding a + masking off high bits into a pair of right shifts. + +2025-06-05 Uros Bizjak <ubizjak@gmail.com> + + PR target/120553 + * config/i386/i386.md (mov<mode>cc): Use "general_operand" + predicate for operands 2 and 3 for all modes. + +2025-06-05 Marek Polacek <polacek@redhat.com> + + * doc/invoke.texi: Update a link to c99status.html. + * doc/standards.texi: Likewise. + +2025-06-05 Andrew Pinski <quic_apinski@quicinc.com> + + * tree-ssa-ccp.cc (insert_clobber_before_stack_restore): Update the virtual + op on the inserted clobber and the stack restore function. + (do_ssa_ccp): Don't add TODO_update_ssa to the todo. + +2025-06-05 Andrew Pinski <quic_apinski@quicinc.com> + + * config/aarch64/aarch64-sve-builtins.cc: Include value-range.h and tree-ssanames.h + (gimple_folder::convert_and_fold): Use make_ssa_name + instead of create_tmp_var for the temporary. Add comment about callback argument. + +2025-06-05 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/120231 + * range-op.cc (range_op_table::range_op_table): Register op_cast + also for FLOAT_EXPR and FIX_TRUNC_EXPR. + (RO_III): Adjust comment. + (range_op_handler::op1_range): Handle RO_IFI rather than RO_IFF. + Don't handle RO_FII. + (range_operator::op1_range): Remove overload with + irange &, tree, const frange &, const frange &, relation_trio + and frange &, tree, const irange &, const irange &, relation_trio + arguments. Add overload with + irange &, tree, const frange &, const irange &, relation_trio + arguments. + * range-op-mixed.h (operator_cast::op1_range): Remove overload with + irange &, tree, const frange &, const frange &, relation_trio + and frange &, tree, const irange &, const irange &, relation_trio + arguments. Add overload with + irange &, tree, const frange &, const irange &, relation_trio and + frange &, tree, const irange &, const frange &, relation_trio + arguments. + * range-op.h (range_operator::op1_cast): Remove overload with + irange &, tree, const frange &, const frange &, relation_trio + and frange &, tree, const irange &, const irange &, relation_trio + arguments. Add overload with + irange &, tree, const frange &, const irange &, relation_trio + arguments. + * range-op-float.cc (operator_cast::fold_range): Implement + float to int and int to float casts. + (operator_cast::op1_range): Remove overload with + irange &, tree, const frange &, const frange &, relation_trio + and frange &, tree, const irange &, const irange &, relation_trio + arguments. Add overload with + irange &, tree, const frange &, const irange &, relation_trio and + frange &, tree, const irange &, const frange &, relation_trio + arguments and implement reverse op of float to int and int to float + cast there. + +2025-06-05 Jan Hubicka <hubicka@ucw.cz> + + * auto-profile.cc (afdo_calculate_branch_prob): Fix typo + in previous patch. + +2025-06-05 Kito Cheng <kito.cheng@sifive.com> + + * common/config/riscv/riscv-common.cc: Remove structured binding + from the code. + +2025-06-05 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/120547 + * real.cc (real_from_integer): Remove maxbitlen variable, use + len instead of that. When shifting right, or in 1 if any of the + shifted away bits are non-zero. Formatting fix. + +2025-06-05 Jan Hubicka <hubicka@ucw.cz> + + * auto-profile.cc (update_count_by_afdo_count): Fix handling + of GUESSED_LOCAL. + (afdo_calculate_branch_prob): Preserve static profile for + probabilities 0 and 1. + +2025-06-05 Pan Li <pan2.li@intel.com> + + * config/riscv/autovec-opt.md: Leverage vdup_v and v_vdup + binary op for different patterns. + * config/riscv/vector-iterators.md: Add vdup_v and v_vdup + binary op iterators. + +2025-06-05 Jeff Law <jlaw@ventanamicro.com> + + * config/riscv/zicond.md: Add new splitters to select + 1, -1 or -1, 1 based on a sign bit test. + +2025-06-05 Jiawei <jiawei@iscas.ac.cn> + + * config/riscv/riscv-ext.def: New extension definition. + * config/riscv/riscv-ext.opt: New extension mask. + * doc/riscv-ext.texi: Document the new extension. + +2025-06-05 Jiawei <jiawei@iscas.ac.cn> + + * config/riscv/riscv-ext.def: New extension definition. + * config/riscv/riscv-ext.opt: New extension mask. + * doc/riscv-ext.texi: Document the new extension. + +2025-06-05 Jiawei <jiawei@iscas.ac.cn> + + * config/riscv/riscv-ext.def: New extension definition. + * config/riscv/riscv-ext.opt: New extension mask. + * doc/riscv-ext.texi: Document the new extension. + +2025-06-05 Jiawei <jiawei@iscas.ac.cn> + + * config/riscv/riscv-ext.def: New extension definition. + * config/riscv/riscv-ext.opt: New extension mask. + * doc/riscv-ext.texi: Document the new extension. + +2025-06-05 Jiawei <jiawei@iscas.ac.cn> + + * config/riscv/riscv-ext.def: New extension definition. + * config/riscv/riscv-ext.opt: New extension mask. + * doc/riscv-ext.texi: Document the new extension. + +2025-06-05 Jiawei <jiawei@iscas.ac.cn> + + * config/riscv/riscv-ext.def: New extension definition. + * config/riscv/riscv-ext.opt: New extension mask. + * doc/riscv-ext.texi: Document the new extension. + +2025-06-05 Jiawei <jiawei@iscas.ac.cn> + + * config/riscv/riscv-ext.def: New extension definition. + * config/riscv/riscv-ext.opt: New extension mask. + * doc/riscv-ext.texi: Document the new extension. + +2025-06-05 Eric Botcazou <ebotcazou@adacore.com> + + * tree-vect-data-refs.cc (vect_can_force_dr_alignment_p): Return + false if the variable has no symtab node. + +2025-06-05 Spencer Abson <spencer.abson@arm.com> + + * tree-eh.cc (operation_could_trap_helper_p): Cover FIX_TRUNC + expressions explicitly. + +2025-06-05 Tobias Burnus <tburnus@baylibre.com> + + * config.gcc (--with-{arch,tune}): Use .def file to validate gcn + processor names. + * doc/install.texi (amdgcn*-*-*): Update list of devices supported + by --with-arch/--with-tune. + +2025-06-05 Hongyu Wang <hongyu.wang@intel.com> + + PR middle-end/112824 + * tree-sra.cc (sra_get_max_scalarization_size): Use MOVE_MAX + instead of UNITS_PER_WORD to define max_scalarization_size. + +2025-06-05 Hu, Lin1 <lin1.hu@intel.com> + + * config/i386/sse.md + (avx512f_movddup512<mask_name>): Change sselog1 to ssemov. + (avx_movddup256<mask_name>): Ditto. + (*vec_dupv2di): Change alternative 4's type attribute from sselog1 + to ssemov. + +2025-06-05 Jiawei <jiawei@iscas.ac.cn> + + * config/riscv/riscv-ext.def: Update declaration. + +2025-06-04 Kugan Vivekanandarajah <kvivekananda@nvidia.com> + + * auto-profile.cc (autofdo_source_profile::read): Dump message + while merging profile. + * pass_manager.h (get_pass_auto_profile): New. + +2025-06-04 Sandra Loosemore <sloosemore@baylibre.com> + + PR c++/120518 + * omp-general.cc (omp_device_num_check): Look inside a + CLEANUP_POINT_EXPR when trying to optimize special cases. + +2025-06-04 Thomas Schwinge <tschwinge@baylibre.com> + + * config/nvptx/mkoffload.cc (process): Use an 'auto_vec' for + 'file_idx'. + +2025-06-04 Andrew Pinski <quic_apinski@quicinc.com> + + PR tree-optimization/14295 + PR tree-optimization/108358 + PR tree-optimization/114169 + * tree-ssa-forwprop.cc (optimize_agr_copyprop): New function. + (pass_forwprop::execute): Call optimize_agr_copyprop for load/store statements. + +2025-06-04 Pengfei Li <Pengfei.Li2@arm.com> + + * match.pd: Add folding rule for vector average. + * tree-ssa-ccp.cc (get_default_value): Reject vector types. + (evaluate_stmt): Reject vector types. + * tree-ssanames.cc (get_nonzero_bits_1): Extend to handle + uniform vectors. + +2025-06-04 Xi Ruoyao <xry111@xry111.site> + + PR rtl-optimization/120050 + * ext-dce.cc (ext_dce_process_uses): Break early if a SUBREG in + rhs is promoted and the truncation from the inner mode to the + outer mode is not a noop when handling SETs. + +2025-06-04 Jakub Jelinek <jakub@redhat.com> + + * range-op-float.cc (range_operator::fold_range, + range_operator::op1_range, range_operator::op2_range, + range_operator::lhs_op1_relation, range_operator::lhs_op2_relation, + operator_equal::op1_range, foperator_unordered_gt::op1_range): Fix + up parameter indentation. + * range-op.cc (range_operator::fold_range, range_operator::op1_range, + range_operator::op1_op2_relation_effect, + range_operator::update_bitmask, plus_minus_ranges, + operator_bitwise_and::lhs_op1_relation): Likewise. + +2025-06-04 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/120231 + * range-op-mixed.h (operator_cast::fold_range): Add overload + with 3 {,const} frange & operands. Change parameter names and + add final override keywords for float <-> integer cast overloads. + (operator_cast::op1_range): Likewise. + * range-op-float.cc (operator_cast::fold_range): New overload + with 3 {,const} frange & operands. + (operator_cast::op1_range): Likewise. + +2025-06-04 Dongyan Chen <chendongyan@isrc.iscas.ac.cn> + + * config/riscv/riscv-ext.def: Imply zicsr. + +2025-06-04 Dongyan Chen <chendongyan@isrc.iscas.ac.cn> + + * config/riscv/riscv-ext.def: New extension defs. + * config/riscv/riscv-ext.opt: Ditto. + * doc/riscv-ext.texi: Ditto. + +2025-06-04 Richard Sandiford <richard.sandiford@arm.com> + + PR rtl-optimization/120447 + * emit-rtl.cc (validate_subreg): Restrict ordered_p test + between osize and regsize to cases where the inner value + occupies multiple blocks. + +2025-06-04 Pan Li <pan2.li@intel.com> + + * config/riscv/riscv.cc (get_vector_binary_rtx_cost): Rename + the args to scalar2vr. + (riscv_rtx_costs): Leverage above func to avoid code dup. + +2025-06-04 H.J. Lu <hjl.tools@gmail.com> + + PR debug/120525 + * var-tracking.cc (prepare_call_arguments): Use MEM_EXPR only + if MEM_P is true. + +2025-06-04 Jiawei <jiawei@iscas.ac.cn> + + * config/riscv/riscv-ext.def: New extension defs. + * config/riscv/riscv-ext.opt: Ditto. + * doc/riscv-ext.texi: Ditto. + +2025-06-04 Hu, Lin1 <lin1.hu@intel.com> + + * config/i386/i386.md (define_peephole2): Define some new peephole2 for + APX NDD. + +2025-06-04 Hu, Lin1 <lin1.hu@intel.com> + + * config/i386/i386.md: Add 4 new peephole2 by swap the original + peephole2's operands' order to support new pattern. + +2025-06-04 H.J. Lu <hjl.tools@gmail.com> + + PR other/120494 + * calls.cc (expand_call): Always add REG_CALL_DECL note. + (emit_library_call_value_1): Likewise. + +2025-06-03 Richard Biener <rguenther@suse.de> + + * gimple-fold.cc (create_tmp_reg_or_ssa_name): Always + create a SSA name. + +2025-06-03 Pan Li <pan2.li@intel.com> + + * config/riscv/riscv-v.cc (expand_vx_binary_vec_vec_dup): Add new + case for DIV op. + * config/riscv/riscv.cc (get_vector_binary_rtx_cost): Add new func + to get the cost of vector binary. + (riscv_rtx_costs): Add div rtx match and leverage above wrap to + get cost. + * config/riscv/vector-iterators.md: Add new op div to no_shift_vx_op. + +2025-06-03 Richard Biener <rguenther@suse.de> + + PR tree-optimization/120517 + * tree-vect-data-refs.cc (vect_analyze_data_ref_accesses): + Fix math in dataref group split. + +2025-06-03 Paul-Antoine Arras <parras@baylibre.com> + + * config/riscv/riscv-vector-costs.cc (costs::adjust_stmt_cost): Replace + FR2VR with get_fr2vr_cost (). + * config/riscv/riscv.cc (riscv_register_move_cost): Likewise. + (riscv_builtin_vectorization_cost): Likewise. + +2025-06-03 Paul-Antoine Arras <parras@baylibre.com> + + PR target/119100 + * config/riscv/autovec-opt.md (*<optab>_vf_<mode>): Add new pattern to + combine vec_duplicate + vfm{add,sub}.vv into vfm{add,sub}.vf. + * config/riscv/riscv-opts.h (FPR2VR_COST_UNPROVIDED): Define. + * config/riscv/riscv-protos.h (get_fr2vr_cost): Declare function. + * config/riscv/riscv.cc (riscv_rtx_costs): Add cost model for MULT with + VEC_DUPLICATE. + (get_fr2vr_cost): New function. + * config/riscv/riscv.opt: Add new option --param=fpr2vr-cost. + +2025-06-03 Andrew Pinski <quic_apinski@quicinc.com> + + PR tree-optimization/120451 + * tree-switch-conversion.cc (switch_conversion::build_one_array): Mark + the newly created decl as mergable. + +2025-06-02 Alexandre Oliva <oliva@adacore.com> + + PR rtl-optimization/120424 + PR middle-end/118939 + * lra-spills.cc (spill_pseudos): Update insn regno info. + * lra-eliminations.cc (update_reg_eliminate): Recognize + disabling of active elimination regardless of + prev_can_eliminate. + +2025-06-02 Dongyan Chen <chendongyan@isrc.iscas.ac.cn> + + * config/riscv/riscv-ext.def: New extension defs. + * config/riscv/riscv-ext.opt: Ditto. + * doc/riscv-ext.texi: Ditto. + +2025-06-02 Stafford Horne <shorne@gmail.com> + + * config/or1k/predicates.md (call_insn_operand): Add condition + to not allow symbol_ref operands with TARGET_CMODEL_LARGE. + * config/or1k/or1k.opt: Document new -mcmodel=large + implications. + * doc/invoke.texi: Likewise. + +2025-06-02 Christophe Lyon <christophe.lyon@linaro.org> + + * doc/sourcebuild.texi (tls_link): Add documentation. + +2025-06-02 Kito Cheng <kito.cheng@sifive.com> + + * config/riscv/t-riscv: Adjust build rule for gen-riscv-ext-opt + and gen-riscv-ext-texi. + +2025-06-02 Kito Cheng <kito.cheng@sifive.com> + + * config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins): Use + range-based-for-loop. + * config/riscv/riscv-subset.h (riscv_subset_list::iterator): + New. + (riscv_subset_list::const_iterator): New. + +2025-06-01 H.J. Lu <hjl.tools@gmail.com> + + PR other/120493 + * final.cc (call_from_call_insn): Change the argument type to + const rtx_call_insn *. + (get_call_rtx_from): New. + * rtl.h (is_a_helper <const rtx_call_insn *>::test): New. + (get_call_rtx_from): Moved to the final.cc section. + * rtlanal.cc (get_call_rtx_from): Removed. + +2025-06-01 Andrew Pinski <quic_apinski@quicinc.com> + + * tree-ssa-forwprop.cc (optimize_vector_load): Set the vuse manually + on the new load statements. Also remove forward declaration since + the definition is before the first use. + (pass_forwprop::execute): Likewise for complex loads. + (pass_data_forwprop): Remove TODO_update_ssa. + +2025-06-01 Pan Li <pan2.li@intel.com> + + * config/riscv/autovec.md: Fix line too long for sorts + of pattern. + +2025-06-01 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> + + * config/xtensa/xtensa.cc: Remove include of reload.h. + +2025-06-01 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> + + * config/xtensa/xtensa.md (movsf_internal): + Remove destination side constraint modifier '^' in the third + alternative. + +2025-06-01 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> + + * config/xtensa/xtensa.cc + (xtensa_ira_change_pseudo_allocno_class): + New prototype and function. + (TARGET_IRA_CHANGE_PSEUDO_ALLOCNO_CLASS): Define macro. + (xtensa_register_move_cost): + Change between integer and FP register move cost to a value + based on actual behavior, i.e. 2, the default and the same as + the move cost between integer registers. + +2025-05-31 Andrew Pinski <quic_apinski@quicinc.com> + + * function.h (struct function): Remove last_verified. + * gimple-harden-conditionals.cc (pass_data_harden_compares): Remove + TODO_verify_il. + (pass_data_harden_conditional_branches): Likewise. + * gimple-harden-control-flow.cc (pass_harden_control_flow_redundancy::execute): + Don't return TODO_verify_il. + * ipa-strub.cc (pass_data_ipa_strub): Remove TODO_verify_il. + * passes.cc (TODO_verify_il): Define. + (execute_function_todo): Don't use or set last_verified. + (clear_last_verified): Remove. + (execute_one_ipa_transform_pass): Update comment before execute_todo. + Assert that none of the todos have TODO_verify_il set on it. + (execute_one_pass): Don't call clear_last_verified on all functions. + Assert that none of the todos have TODO_verify_il set on it. + * tree-inline.cc (initialize_cfun): Don't copy last_verified. + * tree-pass.h (TODO_verify_all): Remove. + * tree-vrp.cc (pass_data_early_vrp): Remove TODO_verify_all. + (pass_data_fast_vrp): Likewise. + +2025-05-31 Richard Biener <rguenther@suse.de> + + PR tree-optimization/120357 + * tree-vect-loop.cc (vect_create_epilog_for_reduction): Create + the conditional reduction induction IV increment before the + main IV exit. + +2025-05-31 Gaius Mulley <gaiusmod2@gmail.com> + + PR modula2/120389 + * doc/gm2.texi (-fm2-strict-type-reason): Document new flag. + +2025-05-30 David Malcolm <dmalcolm@redhat.com> + + PR other/116792 + * diagnostic-format-html.cc (HTML_STYLE): Add ".highlight-a" and + ".highlight-b". + (html_builder::make_element_for_diagnostic): Handle begin_color + and end_color. + * diagnostic-show-locus.cc (to_html::to_html): Add "richloc" + param and use it to initialize m_richloc. + (to_html::colorize_text_for_range_idx): Drop. + (to_html::get_location_range_by_idx): New. + (to_html::get_highlight_color_for_range_idx): New. + (to_html::m_richloc): New field. + (print_html_span_start): Update for new param of to_html ctor. + (line_printer::m_was_in_range_p): New field. + (line_printer::m_last_range_idx): New field. + (layout_printer<Sink>::print_source_line): Use set_in_range + and set_outside_range rather than colorization calls. + (layout_printer<Sink>::set_in_range): New. + (layout_printer<Sink>::set_outside_range): New. + (layout_printer<Sink>::print_annotation_line): Use set_in_range + and set_outside_range rather than colorization calls. + (layout_printer<to_text>::begin_label): Convert param from label + to state_idx. Add "is_label_text" param and use it to guard logic + for turning off colorization within paths. + (layout_printer<to_html>::begin_label): Likewise. Push <span> + for any highlight color. + (layout_printer<to_text>::end_label): Likewise. + (layout_printer<to_text>::end_label): Likewise, popping the + <span>. + (layout_printer<Sink>::print_any_labels): Convert begin/end_label + calls to pass in state_idx rather than label. Use begin/end_label + rather than colorization calls. + (layout_printer<Sink>::layout_printer): Likewise. + (layout_printer<Sink>::layout_printer): Initialize new fields. + (diagnostic_source_print_policy::print_as_html): Update for new + param of to_html ctor. + +2025-05-30 Andrew Pinski <quic_apinski@quicinc.com> + + * passes.cc (execute_all_ipa_transforms): Fix typo in + commenet. + +2025-05-30 Joseph Myers <josmyers@redhat.com> + + * doc/standards.texi (C Language): Document library facilities + provided in terms of headers not declaring functions with external + linkage, not in terms of headers required of freestanding + implementations. + * doc/sourcebuild.texi (Subdirectories, Headers): Likewise. + * doc/trouble.texi (Standard Libraries): Likewise. + +2025-05-30 Pan Li <pan2.li@intel.com> + + * config/riscv/autovec.md (avg<v_double_trunc>3_ceil): Add insn + expand to leverage vaadd with rnu directly. + +2025-05-30 Richard Biener <rguenther@suse.de> + + PR tree-optimization/120341 + * tree-ssa-loop-im.cc (can_sm_ref_p): STRING_CSTs are readonly. + * tree-ssa-phiopt.cc (cond_store_replacement): Likewise. + +2025-05-30 Thomas Schwinge <tschwinge@baylibre.com> + Richard Biener <rguenther@suse.de> + + PR middle-end/119835 + * tree-nrv.cc (pass_nrv::execute): Defuse 'RESULT_DECL' check. + +2025-05-30 David Malcolm <dmalcolm@redhat.com> + + * diagnostic-show-locus.cc (colorizer::m_current_named_color): New + field. + (colorizer::set_named_color): Use it to consolidate repeated calls + to the same color. + +2025-05-30 Richard Biener <rguenther@suse.de> + + PR tree-optimization/120457 + * tree-vect-slp.cc (vect_lower_load_permutations): Implement + the same heuristics as load vectorization for single-element + interleaving that spans multiple vectors. + +2025-05-30 Richard Sandiford <richard.sandiford@arm.com> + + PR rtl-optimization/120347 + * rtlanal.cc (rtx_properties::try_to_add_src): Don't drop the + IN_MEM_LOAD and IN_MEM_STORE flags for autoinc registers. + * rtl-ssa/changes.cc (recog_level2): Check whether an + RTX_AUTOINCed register also appears outside of an address. + +2025-05-30 Julian Brown <julian@codesourcery.com> + Tobias Burnus <tburnus@baylibre.com> + + * gimplify.cc (gimplify_omp_ctx): Add IMPLICIT_MAPPERS field. + (new_omp_context): Initialise IMPLICIT_MAPPERS hash map. + (delete_omp_context): Delete IMPLICIT_MAPPERS hash map. + (instantiate_mapper_info): New structs. + (remap_mapper_decl_1, omp_mapper_copy_decl, omp_instantiate_mapper, + omp_instantiate_implicit_mappers): New functions. + (gimplify_scan_omp_clauses): Handle MAPPER_BINDING clauses. + (gimplify_adjust_omp_clauses): Instantiate implicit declared mappers. + (gimplify_omp_declare_mapper): New function. + (gimplify_expr): Call above function. + * langhooks-def.h (lhd_omp_mapper_lookup, + lhd_omp_extract_mapper_directive, lhd_omp_map_array_section): Add + prototypes. + (LANG_HOOKS_OMP_FINISH_MAPPER_CLAUSES, + LANG_HOOKS_OMP_MAPPER_LOOKUP, LANG_HOOKS_OMP_EXTRACT_MAPPER_DIRECTIVE, + LANG_HOOKS_OMP_MAP_ARRAY_SECTION): Define macros. + (LANG_HOOK_DECLS): Add above macros. + * langhooks.cc (lhd_omp_mapper_lookup, + lhd_omp_extract_mapper_directive, lhd_omp_map_array_section): New + dummy functions. + * langhooks.h (lang_hooks_for_decls): Add OMP_FINISH_MAPPER_CLAUSES, + OMP_MAPPER_LOOKUP, OMP_EXTRACT_MAPPER_DIRECTIVE, OMP_MAP_ARRAY_SECTION + hooks. + * omp-general.h (omp_name_type<T>): Add templatized struct, hash type + traits (for omp_name_type<tree> specialization). + (omp_mapper_list<T>): Add struct. + * tree-core.h (omp_clause_code): Add OMP_CLAUSE__MAPPER_BINDING_. + * tree-pretty-print.cc (dump_omp_clause): Support GOMP_MAP_UNSET, + GOMP_MAP_PUSH_MAPPER_NAME, GOMP_MAP_POP_MAPPER_NAME artificial mapping + clauses. Support OMP_CLAUSE__MAPPER_BINDING_ and OMP_DECLARE_MAPPER. + * tree.cc (omp_clause_num_ops, omp_clause_code_name): Add + OMP_CLAUSE__MAPPER_BINDING_. + * tree.def (OMP_DECLARE_MAPPER): New tree code. + * tree.h (OMP_DECLARE_MAPPER_ID, OMP_DECLARE_MAPPER_DECL, + OMP_DECLARE_MAPPER_CLAUSES): New defines. + (OMP_CLAUSE__MAPPER_BINDING__ID, OMP_CLAUSE__MAPPER_BINDING__DECL, + OMP_CLAUSE__MAPPER_BINDING__MAPPER): New defines. + +2025-05-30 Andrew Pinski <quic_apinski@quicinc.com> + + * gimple-ssa-sccopy.cc (scc_copy_prop::replace_scc_by_value): Return true + if something was done. + (scc_copy_prop::propagate): Return true if something was changed. + (pass_sccopy::execute): Return TODO_cleanup_cfg if a prop happened. + +2025-05-30 Kugan Vivekanandarajah <kvivekananda@nvidia.com> + + * auto-profile.cc (function_instance::merge): New. + (autofdo_source_profile::read): Call merge. + +2025-05-29 Kugan Vivekanandarajah <kvivekananda@nvidia.com> + + * config/aarch64/gcc-auto-profile: Make script executable. + +2025-05-29 Andrew Pinski <quic_apinski@quicinc.com> + + * tree-ssa-forwprop.cc (optimize_memcpy_to_memset): Adds + statistics when the statement changed. + +2025-05-29 Andrew Pinski <quic_apinski@quicinc.com> + + * tree-ssa-forwprop.cc (optimize_memcpy_to_memset): Change check + from NULL/non-ssa name to default name. + +2025-05-29 David Malcolm <dmalcolm@redhat.com> + + * diagnostic-format-html.cc (HTML_STYLE): Fix PatternFly URL in + comment. + +2025-05-29 David Malcolm <dmalcolm@redhat.com> + + * diagnostic-format-html.cc + (html_builder::make_element_for_diagnostic::html_token_printer): + Reimplement in terms of xml::printer. + (html_builder::make_element_for_diagnostic): Create an + xml::printer and use it with the html_token_printer. + +2025-05-29 David Malcolm <dmalcolm@redhat.com> + + * diagnostic-format-html.cc (html_builder::make_metadata_element): + Gracefully handle the case where "url" is null. + +2025-05-29 David Malcolm <dmalcolm@redhat.com> + + * pretty-print.cc (pretty_printer::pretty_printer): Use "nullptr" + rather than "NULL". Remove explicit delete of + m_format_postprocessor. + * pretty-print.h (format_postprocessor::clone): Use unique_ptr. + (pretty_printer::set_format_postprocessor): New. + (pretty_printer::m_format_postprocessor): Use unique_ptr. + (pp_format_postprocessor): Update for use of unique_ptr, removing + reference from return type. + +2025-05-29 Martin Jambor <mjambor@suse.cz> + + PR ipa/120295 + * ipa-prop.cc (update_jump_functions_after_inlining): Do not + combine pass-through jump functions with type-casts changing + signedness. + +2025-05-29 Martin Jambor <mjambor@suse.cz> + + * ipa-prop.cc (ipa_dump_jump_function): Fix whitespace when + dumping IPA VRs. + +2025-05-29 Pranav Gorantla <Pranav.Gorantla@amd.com> + + * config/i386/i386-expand.cc (emit_reduc_half): Use shuffles to + generate reduc half for V4SI, similar modes. + * config/i386/i386.h (TARGET_SSE_REDUCTION_PREFER_PSHUF): New Macro. + * config/i386/x86-tune.def (X86_TUNE_SSE_REDUCTION_PREFER_PSHUF): + New tuning. + +2025-05-29 Jakub Jelinek <jakub@redhat.com> + + PR bootstrap/120464 + * ggc-page.cc (struct ggc_globals): Fix up comment formatting. + (find_free_list): Likewise. + (alloc_page): For defined(USING_MALLOC_PAGE_GROUPS) use + free_list->free_pages instead of G.free_pages. + (do_release_pages): Add n1 and n2 arguments, make them used. + Move defined(USING_MALLOC_PAGE_GROUPS) page group freeing to + release_pages and dumping of statistics as well. Formatting fixes. + (release_pages): Adjust do_release_pages caller, move here + defined(USING_MALLOC_PAGE_GROUPS) page group freeing and dumping + of statistics. + (ggc_handle_finalizers): Fix up comment formatting and typo. + +2025-05-29 Jerry Zhang Jian <jerry.zhangjian@sifive.com> + + * config/riscv/riscv-ext.def: New extensions + * config/riscv/riscv-ext.opt: Auto re-generated + * doc/riscv-ext.texi: Auto re-generated + +2025-05-29 Pan Li <pan2.li@intel.com> + + * config/riscv/riscv-v.cc (expand_vx_binary_vec_dup_vec): Add + new case for MULT op. + (expand_vx_binary_vec_vec_dup): Ditto. + * config/riscv/riscv.cc (riscv_rtx_costs): Ditto. + * config/riscv/vector-iterators.md: Add new op mult to no_shift_vx_ops. + +2025-05-28 Jan Hubicka <hubicka@ucw.cz> + + PR target/119298 + * config/i386/x86-tune-costs.h (struct processor_costs): Set addss cost + back to 2. + +2025-05-28 Robin Dapp <rdapp.gcc@gmail.com> + + * tree-vect-stmts.cc (vectorizable_load): Remove non-SLP paths. + +2025-05-28 Robin Dapp <rdapp@ventanamicro.com> + + PR target/120436 + * config/riscv/riscv-vector-builtins-shapes.cc (struct vset_def): + Avoid division by zero. + (struct vget_def): Ditto. + * config/riscv/riscv-vector-builtins.h (struct function_group_info): + Use required_extensions_specified instead of duplicating code. + +2025-05-28 Pan Li <pan2.li@intel.com> + + * config/riscv/autovec.md (avg<v_double_trunc>3_floor): Add insn + expand to leverage vaadd directly. + +2025-05-28 Jan Hubicka <hubicka@ucw.cz> + + * cgraph.cc (cgraph_edge::maybe_hot_p): For auto-fdo turn 0 + to non-zero. + * ipa-cp.cc (cs_interesting_for_ipcp_p): Do not trust + auto-fdo 0. + * profile-count.cc (profile_count::adjust_for_ipa_scaling): Likewise. + (profile_count::from_gcov_type): Fix formating. + +2025-05-28 Jan Hubicka <hubicka@ucw.cz> + + * predict.cc (rebuild_frequencies): look harder for presence + of profile feedback. + +2025-05-28 Yuta Mukai <mukai.yuta@fujitsu.com> + + * config/aarch64/aarch64-cores.def (fujitsu-monaka): Update ISA + features. + +2025-05-28 Jan Hubicka <hubicka@ucw.cz> + + * predict.cc (set_even_probabilities): Set quality to guessed. + +2025-05-28 Jan Hubicka <hubicka@ucw.cz> + + * auto-profile.cc (update_count_by_afdo_count): New function. + (afdo_set_bb_count): Add debug output; only set count if it is + non-zero. + (afdo_find_equiv_class): Add debug output. + (afdo_calculate_branch_prob): Fix formating. + (afdo_annotate_cfg): Add debug output; do not erase static + profile if autofdo profile is all 0. + +2025-05-28 Haochen Jiang <haochen.jiang@intel.com> + + * doc/extend.texi (C Extensions): Add missing menu items. + +2025-05-28 liuhongt <hongtao.liu@intel.com> + + PR tree-optimization/119181 + * tree-vect-data-refs.cc (vect_analyze_data_ref_accesses): + Split datarefs when there's a gap bigger than + MAX_BITSIZE_MODE_ANY_MODE. + +2025-05-27 Jason Merrill <jason@redhat.com> + + PR c++/120400 + * fold-const.cc (simple_operand_p): False for vars with + DECL_VALUE_EXPR. + +2025-05-27 Alejandro Colomar <alx@kernel.org> + + PR c/117025 + * Makefile.in (USER_H): Add <stdcountof.h>. + * ginclude/stdcountof.h: New file. + +2025-05-27 Alejandro Colomar <alx@kernel.org> + Martin Uecker <uecker@tugraz.at> + + PR c/117025 + * doc/extend.texi: Document _Countof operator. + +2025-05-27 Jan Hubicka <hubicka@ucw.cz> + + * config/i386/gcc-auto-profile: regenerate. + +2025-05-27 Jan Hubicka <hubicka@ucw.cz> + + * auto-profile.cc (function_instance::mark_annotated): Remove. + (function_instance::total_annotated_count): Remove. + (autofdo_source_profile::mark_annotated): Remove. + (afdo_set_bb_count): Do not mark annotated locations. + (afdo_annotate_cfg): Likewise. + +2025-05-27 Eric Botcazou <ebotcazou@adacore.com> + + * ipa-sra.cc (scan_expr_access): Also disqualify storage order + barriers from splitting. + * tree.h (storage_order_barrier_p): Also return false if the + operand of the VIEW_CONVERT_EXPR has reverse storage order. + +2025-05-27 David Malcolm <dmalcolm@redhat.com> + + PR other/116792 + * diagnostic-format-html.cc: Define INCLUDE_STRING. + Include "xml.h", "xml-printer.h", and "json.h". + (html_generation_options::html_generation_options): New. + (namespace xml): Move decls to xml.h and convert from using + label_text to std::string. + (xml::text::write_as_xml): Reimplement indentation so it is done + by this node, rather than the parent. + (xml::node_with_children::add_text): Convert from label_text to + std::string. Consolidate runs of text into a single node. + (xml::document::write_as_xml): Reimplement indentation. + (xml::element::write_as_xml): Reimplement indentation so it is + done by this node, rather than the parent. Convert from + label_text to std::string. Update attribute-printing to new + representation to preserve insertion order. + (xml::element::set_attr): Convert from label_text to std::string. + Record insertion order. + (xml::raw::write_as_xml): New. + (xml::printer::printer): New. + (xml::printer::push_tag): New. + (xml::printer::push_tag_with_class): New. + (xml::printer::pop_tag): New. + (xml::printer::set_attr): New. + (xml::printer::add_text): New. + (xml::printer::add_raw): New. + (xml::printer::push_element): New. + (xml::printer::append): New. + (xml::printer::get_insertion_point): New. + (html_builder::add_focus_id): New. + (html_builder::m_html_gen_opts): New field. + (html_builder::m_head_element): New field. + (html_builder::m_next_diag_id): New field. + (html_builder::m_ui_focus_ids): New field. + (make_div): Convert from label_text to std::string. + (make_span): Likewise. + (HTML_STYLE): New. + (HTML_SCRIPT): New. + (html_builder::html_builder): Fix indentation. Add + "html_gen_opts" param. Initialize new fields. Reimplement + using xml::printer. Optionally add style and script tags. + (class html_path_label_writer): New. + (html_builder::make_element_for_diagnostic): Convert from + label_text to std::string. Set "id" on "gcc-diagnostic" and + "gcc-message" <div> elements; add the latter to the focus ids. + Use diagnostic_context::maybe_show_locus_as_html rather than + html_builder::make_element_for_source. Use print_path_as_html + rather than html_builder::make_element_for_path. + (html_builder::make_element_for_source): Drop. + (html_builder::make_element_for_path): Drop. + (html_builder::make_element_for_patch): Convert from label_text to + std::string. + (html_builder::make_metadata_element): Likewise. Use + xml::printer. + (html_builder::make_element_for_metadata): Convert from label_text + to std::string. + (html_builder::emit_diagram): Expand comment. + (html_builder::flush_to_file): Write out initializer for + "focus_ids" into javascript. + (html_output_format::html_output_format): Add param + "html_gen_opts" and use it to initialize m_builder. + (html_file_output_format::html_file_output_format): Likewise, to + initialize base class. + (make_html_sink): Likewise, to pass to ctor. + (selftest::test_html_diagnostic_context::test_html_diagnostic_context): + Set up html_generation_options. + (selftest::html_buffered_output_format::html_buffered_output_format): + Add html_gen_opts param. + (selftest::test_simple_log): Add id attributes to expected text + for "gcc-diagnostic" and "gcc-message" elements. Update + whitespace for indentation fixes. + (selftest::test_metadata): Update whitespace for indentation + fixes. + (selftest::test_printer): New selftest. + (selftest::test_attribute_ordering): New selftest. + (selftest::diagnostic_format_html_cc_tests): Call the new + selftests. + * diagnostic-format-html.h (struct html_generation_options): New. + (make_html_sink): Add "html_gen_opts" param. + (print_path_as_html): New decl. + * diagnostic-path-output.cc: Define INCLUDE_MAP. Add includes of + "diagnostic-format-html.h", "xml.h", and "xml-printer.h". + (path_print_policy::path_print_policy): Add ctor. + (path_print_policy::get_diagram_theme): Fix whitespace. + (struct stack_frame): New. + (begin_html_stack_frame): New function. + (end_html_stack_frame): New function. + (emit_svg_arrow): New function. + (event_range::print): Rename to... + (event_range::print_as_text): ...this. Update call to + diagnostic_start_span. + (event_range::print_as_html): New, based on the above, but ported + from pretty_printer to xml::printer. + (thread_event_printer::print_swimlane_for_event_range): Rename + to... + (thread_event_printer::print_swimlane_for_event_range_as_text): + ...this. Update for renaming of event_range::print to + event_range::print_as_text. + (thread_event_printer::print_swimlane_for_event_range_as_html): + New. + (print_path_summary_as_text): Update for "_as_text" renaming. + (print_path_summary_as_html): New. + (print_path_as_html): New. + * diagnostic-show-locus.cc: Add defines of INCLUDE_MAP and + INCLUDE_STRING. Add includes of "xml.h" and "xml-printer.h". + (struct char_display_policy): Replace "m_print_cb" with + "m_print_text_cb" and "m_print_html_cb". + (struct to_text): New. + (struct to_html): New. + (get_printer): New. + (default_diagnostic_start_span_fn<to_text>): New. + (default_diagnostic_start_span_fn<to_html>): New. + (class layout): Update "friend class layout_printer;" for + template. + (enum class margin_kind): New. + (class layout_printer): Convert into a template. + (layout_printer::m_pp): Replace field with... + (layout_printer::m_sink): ...this. + (layout_printer::m_colorizer): Drop field in favor of a pointer + in the "to_text" sink. + (default_print_decoded_ch): Convert into a template. + (escape_as_bytes_print): Likewise. + (escape_as_unicode_print): Likewise. + (make_char_policy): Update to use both text and html callbacks. + (layout_printer::print_gap_in_line_numbering): Replace with... + (layout_printer<to_text>::print_gap_in_line_numbering): ...this + (layout_printer<to_html>::print_gap_in_line_numbering): ...and + this. + (layout_printer::print_source_line): Convert to template, using + m_sink. + (layout_printer::print_leftmost_column): Likewise. + (layout_printer::start_annotation_line): Likewise. + (layout_printer<to_text>::end_line): New. + (layout_printer<to_html>::end_line): New. + (layout_printer::print_annotation_line): Convert to template, + using m_sink. + (class line_label): Add field m_original_range_idx. + (layout_printer<to_text>::begin_label): New. + (layout_printer<to_html>::begin_label): New. + (layout_printer<to_text>::end_label): New. + (layout_printer<to_html>::end_label): New. + (layout_printer::print_any_labels): Convert to template, using + m_sink. + (layout_printer::print_leading_fixits): Likewise. + (layout_printer::print_trailing_fixits): Likewise. + (layout_printer::print_newline): Drop. + (layout_printer::move_to_column): Convert to template, using + m_sink. + (layout_printer::show_ruler): Likewise. + (layout_printer::print_line): Likewise. + (layout_printer::print_any_right_to_left_edge_lines): Likewise. + (layout_printer::layout_printer): Likewise. + (diagnostic_context::maybe_show_locus_as_html): New. + (diagnostic_source_print_policy::diagnostic_source_print_policy): + Update for split of start_span_cb into text vs html variants. + (diagnostic_source_print_policy::print): Update for use of + templates; use to_text. + (diagnostic_source_print_policy::print_as_html): New. + (layout_printer::print): Convert to template, using m_sink. + (selftest::make_element_for_locus): New. + (selftest::make_raw_html_for_locus): New. + (selftest::test_layout_x_offset_display_utf8): Update for use of + templates. + (selftest::test_layout_x_offset_display_tab): Likewise. + (selftest::test_one_liner_caret_and_range): Add test coverage of + HTML output. + (selftest::test_one_liner_labels): Likewise. + * diagnostic.cc (diagnostic_context::initialize): Update for split + of start_span_cb into text vs html variants. + (default_diagnostic_start_span_fn): Move to + diagnostic-show-locus.cc, converting to template. + * diagnostic.h (class xml::printer): New forward decl. + (diagnostic_start_span_fn): Replace typedef with "using", + converting to a template. + (struct to_text): New forward decl. + (struct to_html): New forward decl. + (get_printer): New decl. + (diagnostic_location_print_policy::print_text_span_start): New + decl. + (diagnostic_location_print_policy::print_html_span_start): New + decl. + (class html_label_writer): New. + (diagnostic_source_print_policy::print_as_html): New decl. + (diagnostic_source_print_policy::get_start_span_fn): Replace + with... + (diagnostic_source_print_policy::get_text_start_span_fn): ...this + (diagnostic_source_print_policy::get_html_start_span_fn): ...and + this + (diagnostic_source_print_policy::m_start_span_cb): Replace with... + (diagnostic_source_print_policy::m_text_start_span_cb): ...this + (diagnostic_source_print_policy::m_html_start_span_cb): ...and + this. + (diagnostic_context::maybe_show_locus_as_html): New decl. + (diagnostic_context::m_text_callbacks::m_start_span): Replace + with... + (diagnostic_context::m_text_callbacks::m_text_start_span): ...this + (diagnostic_context::m_text_callbacks::m_html_start_span): ...and + this. + (diagnostic_start_span): Update for template change. + (diagnostic_show_locus_as_html): New inline function. + (default_diagnostic_start_span_fn): Convert to template. + * doc/invoke.texi (experimental-html): Add "css" and "javascript" + keys. + * opts-diagnostic.cc (html_scheme_handler::make_sink): Likewise. + * selftest-diagnostic.cc + (selftest::test_diagnostic_context::start_span_cb): Update for + template changes. + * selftest-diagnostic.h + (selftest::test_diagnostic_context::start_span_cb): Likewise. + * xml-printer.h: New file. + * xml.h: New file, based on material in diagnostic-format-html.cc, + but using std::string rather than label_text. + (xml::element::m_key_insertion_order): New field. + (struct xml::raw): New. + +2025-05-27 David Malcolm <dmalcolm@redhat.com> + + * Makefile.in (OBJS-libcommon): Add diagnostic-path-output.o. + * diagnostic-path-output.cc: New file, taken from material in + diagnostic-path.cc. + * diagnostic-path.cc: Drop includes of + "diagnostic-macro-unwinding.h", "intl.h", "gcc-rich-location.h", + "diagnostic-color.h", "diagnostic-event-id.h", + "diagnostic-label-effects.h", "pretty-print-markup.h", + "selftest.h", "selftest-diagnostic.h", + "selftest-diagnostic-path.h", "text-art/theme.h", and + "diagnostic-format-text.h". + (class path_print_policy): Move to diagnostic-path-output.cc. + (class path_label): Likewise. + (can_consolidate_events): Likewise. + (class per_thread_summary): Likewise. + (struct event_range): Likewise. + (struct path_summary): Likewise. + (per_thread_summary::interprocedural_p): Likewise. + (path_summary::path_summary): Likewise. + (write_indent): Likewise. + (base_indent): Likewise. + (per_frame_indent): Likewise. + (class thread_event_printer): Likewise. + (print_path_summary_as_text): Likewise. + (class element_event_desc): Likewise. + (diagnostic_text_output_format::print_path): Likewise. + (selftest::path_events_have_column_data_p): Likewise. + (selftest::test_empty_path): Likewise. + (selftest::test_intraprocedural_path): Likewise. + (selftest::test_interprocedural_path_1): Likewise. + (selftest::test_interprocedural_path_2): Likewise. + (selftest::test_recursion): Likewise. + (class selftest::control_flow_test): Likewise. + (selftest::test_control_flow_1): Likewise. + (selftest::test_control_flow_2): Likewise. + (selftest::test_control_flow_3): Likewise. + (selftest::assert_cfg_edge_path_streq): Likewise. + (ASSERT_CFG_EDGE_PATH_STREQ): Likewise. + (selftest::test_control_flow_4): Likewise. + (selftest::test_control_flow_5): Likewise. + (selftest::test_control_flow_6): Likewise. + (selftest::control_flow_tests): Likewise. + (selftest::diagnostic_path_cc_tests): Likewise, renaming + accordingly. + * selftest-run-tests.cc (selftest::run_tests): Update for + move of path-printing selftests. + * selftest.h (selftest::diagnostic_path_cc_tests): Replace decl + with... + (selftest::diagnostic_path_output_cc_tests): ...this. + +2025-05-27 Juergen Christ <jchrist@linux.ibm.com> + + * config/s390/vector.md(*vec_extract<mode>): Fix mnemonic. + +2025-05-27 Richard Biener <rguenther@suse.de> + + PR tree-optimization/117965 + * tree-ssa-phiprop.cc (phivn_valid_p): Remove. + (propagate_with_phi): Pass in virtual PHI node from BB, + rewrite load motion validity check to require the same + virtual use along all paths. + +2025-05-27 Konstantinos Eleftheriou <konstantinos.eleftheriou@vrull.eu> + + PR rtl-optimization/119884 + * avoid-store-forwarding.cc (process_store_forwarding): + Use `lowpart_subreg` for the base register initialization + and remove redundant stores from the store/load sequence. + +2025-05-27 Konstantinos Eleftheriou <konstantinos.eleftheriou@vrull.eu> + + * sbitmap.cc (bitmap_any_bit_in_range_p): + Call and return the result of `bitmap_bit_in_range_p` with the + `any_inverted` parameter set to false. + (bitmap_bit_in_range_p): New function. + (bitmap_all_bits_in_range_p): New function. + * sbitmap.h (bitmap_all_bits_in_range_p): New function. + +2025-05-27 Konstantinos Eleftheriou <konstantinos.eleftheriou@vrull.eu> + + * sbitmap.cc (bitmap_bit_in_range_p): Renamed the function. + (bitmap_any_bit_in_range_p): New function name. + (bitmap_bit_in_range_p_checking): Renamed the function. + (bitmap_any_bit_in_range_p_checking): New function name. + (test_set_range): Updated function calls to use the new name. + (test_bit_in_range): Likewise. + * sbitmap.h (bitmap_bit_in_range_p): Renamed the function. + (bitmap_any_bit_in_range_p): New function name. + * tree-ssa-dse.cc (live_bytes_read): + Updated function call to use the new name. + +2025-05-27 Co-authored-by: Jeff Law <jlaw@ventanamicro.com> + + * config/riscv/bitmanip.md (andi+bclr splits): Simplified from + prior define_insn_and_splits. + * config/riscv/riscv.cc (synthesize_and): Add support for andi+bclr + sequences. + +2025-05-27 Pan Li <pan2.li@intel.com> + + * config/riscv/riscv-v.cc (expand_vx_binary_vec_dup_vec): Add + new case for XOR op. + (expand_vx_binary_vec_vec_dup): Diito. + * config/riscv/riscv.cc (riscv_rtx_costs): Ditto. + * config/riscv/vector-iterators.md: Add new op or to no_shift_vx_ops. + +2025-05-27 Juergen Christ <jchrist@linux.ibm.com> + + * config/s390/vector.md (VF): New mode iterator. + (VEC_SET_NONFLOAT): New mode iterator. + (VEC_SET_SINGLEFLOAT): New mode iterator. + (*vec_set<mode>): Split pattern in two. + (*vec_setv2df): Extract special handling for V2DF mode. + (*vec_extract<mode>): Split pattern in two. + +2025-05-27 Jonathan Wakely <jwakely@redhat.com> + + * doc/extend.texi (Common Variable Attributes): Fix typo in + description of nonstring. + +2025-05-27 Kito Cheng <kito.cheng@sifive.com> + + * gcc.cc (find_multilib_os_dir_by_multilib_dir): New. + (set_multilib_dir): Fix multilib_os_dir and multiarch_dir + if multilib_os_dir is not set. + +2025-05-27 xuli <xuli1@eswincomputing.com> + + * match.pd: add singned vector SAT_ADD IMM form1 matching. + +2025-05-27 xuli <xuli1@eswincomputing.com> + + * match.pd: Add signed scalar SAT_ADD IMM form1 with IMM=-1 matching. + * tree-ssa-math-opts.cc (match_unsigned_saturation_add): Adapt function name. + (match_saturation_add_with_assign): Match signed and unsigned SAT_ADD with assign. + (math_opts_dom_walker::after_dom_children): Match imm=-1 signed SAT_ADD with NOP_EXPR case. + +2025-05-26 Jason Merrill <jason@redhat.com> + + * doc/invoke.texi: Move C++ -fdump-lang to C++ section. + Add -fdump-lang-tinst. + +2025-05-26 Kugan Vivekanandarajah <kvivekananda@nvidia.com> + + * config/aarch64/gcc-auto-profile: New file. + +2025-05-26 Segher Boessenkool <segher@kernel.crashing.org> + + * config/rs6000/rs6000.cc: Remove include of reload.h . + +2025-05-26 Kugan Vivekanandarajah <kvivekananda@nvidia.com> + + * ipa-split.cc (pass_feedback_split_functions::clone): New. + * passes.def: Enable pass_feedback_split_functions for + pass_ipa_auto_profile. + +2025-05-25 Michael J. Eager <eager@eagercon.com> + + PR target/86772 + Tracking CVE-2017-5753 + * config/microblaze/microblaze.cc (TARGET_HAVE_SPECULATION_SAFE_VALUE): + Define to speculation_save_value_not_needed + +2025-05-25 Jan Hubicka <hubicka@ucw.cz> + + * config/i386/i386.cc (ix86_builtin_vectorization_cost): + use sse_op instead of addss to cost vinsertti128 and vinsertti64x4; + compute correct mode of vinsertti128. + (ix86_vector_costs::add_stmt_cost): For integer 256bit and 512bit + vector constructions account more integer_to_sse moves. + +2025-05-25 LIU Hao <lh_mouse@126.com> + + PR target/53929 + PR target/80881 + * config/i386/i386-protos.h (ix86_asm_output_labelref): Declare new + function for quoting user-defined symbols in Intel syntax. + * config/i386/i386.cc (ix86_asm_output_labelref): Implement it. + * config/i386/i386.h (ASM_OUTPUT_LABELREF): Use it. + * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Use it. + +2025-05-24 Shreya Munnangi <smunnangi1@ventanamicro.com> + + * config/riscv/riscv.cc (synthesize_and): Use a srl+andi+sll + sequence when the mask fits in a simm12 after shifting by the + number of trailing zeros. + Co-authored-by: Jeff Law <jlaw@ventanamicro.com> + +2025-05-24 Pan Li <pan2.li@intel.com> + + * config/riscv/riscv-v.cc (expand_vx_binary_vec_dup_vec): Add new + case for IOR op. + (expand_vx_binary_vec_vec_dup): Ditto. + * config/riscv/riscv.cc (riscv_rtx_costs): Ditto. + * config/riscv/vector-iterators.md: Add new op or to no_shift_vx_ops. + +2025-05-23 Andi Kleen <ak@gcc.gnu.org> + + * doc/install.texi: Document bootstrap-native. + +2025-05-23 Andi Kleen <ak@gcc.gnu.org> + + PR middle-end/114563 + PR c++/119387 + * ggc-page.cc (struct free_list): New structure. + (struct page_entry): Point to free_list. + (find_free_list): New function. + (find_free_list_order): Dito. + (alloc_page): Use specific free_list. + (release_pages): Dito. + (do_release_pages): Dito. + (init_ggc): Dito. + (ggc_print_statistics): Print overflow stat. + (ggc_pch_read): Use specific free list. + +2025-05-23 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * doc/implement-c.texi (C Implementation): Add missing menu items. + +2025-05-23 Robin Dapp <rdapp@ventanamicro.com> + + * common/config/riscv/riscv-common.cc (riscv_subset_list::parse_base_ext): + Adjust error message. + (riscv_handle_option): Parse as CPU string first. + (riscv_expand_arch): Ditto. + * doc/invoke.texi: Document. + +2025-05-23 Robin Dapp <rdapp@ventanamicro.com> + + * config/riscv/riscv-v.cc (autovectorize_vector_modes): Return + user-specified mode if available. + * config/riscv/riscv.opt: New param. + +2025-05-23 Robin Dapp <rdapp@ventanamicro.com> + + * config/riscv/riscv.cc (singleton_vxrm_need): Init + saved_vxrm_mode. + +2025-05-23 Robin Dapp <rdapp@ventanamicro.com> + + * config/riscv/riscv-vector-costs.cc (compute_estimated_lmul): + Always use vect_vf_for_cost and TARGET_MIN_VLEN. + +2025-05-23 Dhruv Chawla <dhruvc@nvidia.com> + Richard Sandiford <richard.sandiford@arm.com> + + * expmed.cc (expand_rotate_as_vec_perm): Avoid a no-op move if the + target already provided the result in the expected register. + * config/aarch64/aarch64.cc (aarch64_vectorize_vec_perm_const): + Avoid forcing subregs into fresh registers unnecessarily. + * config/aarch64/aarch64-sve.md: Add define_split for rotate. + (*v_revvnx8hi): New pattern. + +2025-05-23 Dhruv Chawla <dhruvc@nvidia.com> + Richard Sandiford <richard.sandiford@arm.com> + + * config/aarch64/aarch64-sve.md (@aarch64_adr<mode>_shift): + Match lowered form of ashift. + (*aarch64_adr<mode>_shift): Likewise. + (*aarch64_adr_shift_sxtw): Likewise. + (*aarch64_adr_shift_uxtw): Likewise. + (<ASHIFT:optab><mode>3): Check amount instead of operands[2] in + aarch64_sve_<lr>shift_operand. + (v<optab><mode>3): Generate unpredicated shifts for constant + operands. + (@aarch64_pred_<optab><mode>): Convert to a define_expand. + (*aarch64_pred_<optab><mode>): Create define_insn_and_split pattern + from @aarch64_pred_<optab><mode>. + (*post_ra_v_ashl<mode>3): Rename to ... + (aarch64_vashl<mode>3_const): ... this and remove reload requirement. + (*post_ra_v_<optab><mode>3): Rename to ... + (aarch64_v<optab><mode>3_const): ... this and remove reload + requirement. + * config/aarch64/aarch64-sve2.md + (@aarch64_sve_add_<sve_int_op><mode>): Match lowered form of + SHIFTRT. + (*aarch64_sve2_sra<mode>): Likewise. + (*bitmask_shift_plus<mode>): Match lowered form of lshiftrt. + +2025-05-22 Joseph Myers <josmyers@redhat.com> + + * doc/implement-c.texi: Document C23 implementation-defined + behavior. + (Constant expressions implementation, Types implementation): New + nodes. + +2025-05-22 Eric Botcazou <ebotcazou@adacore.com> + + * dwarf2out.cc (loc_list_from_tree_1) <COMPONENT_REF>: Add specific + handling of bit-fields for big-endian targets. + +2025-05-22 Alexandre Oliva <oliva@adacore.com> + + * config/aarch64/aarch64-vxworks.h (TARGET_OS_USES_R18): Define. + Update comments. + * config/aarch64/aarch64.cc (aarch64_conditional_register_usage): + Mark x18 as fixed on VxWorks. + (aarch64_override_options_internal): Issue sorry message on + -fsanitize=shadow-call-stack if TARGET_OS_USES_R18. + +2025-05-22 Shreya Munnangi <smunnangi1@ventanamicro.com> + + * config/riscv/riscv.cc (synthesize_and): When profitable, use a three + shift sequence to clear bits at both upper and lower bits rather than + synthesizing the constant mask. + +2025-05-22 Siarhei Volkau <lis8215@gmail.com> + + PR target/70557 + * config/riscv/riscv.md (movdi_32bit): Add "J" constraint to allow storing 0 + directly to memory. + +2025-05-22 Andrew Pinski <quic_apinski@quicinc.com> + + PR target/120372 + * config/aarch64/aarch64.cc (aarch64_rtx_costs <case CONST_INSN>): Handle + if outer is COMPARE and the constant can be handled by the cmp instruction. + +2025-05-22 Andrew Pinski <quic_apinski@quicinc.com> + + * expmed.cc (canonicalize_comparison): Use rtx_cost directly + instead of gen_move_insn. Print out the choice if dump is enabled. + +2025-05-22 Jakub Jelinek <jakub@redhat.com> + + * gimple-lower-bitint.cc (bitint_extended): New variable. + (bitint_large_huge::lower_shift_stmt): For LSHIFT_EXPR with + bitint_extended if lhs has most significant partial limb extend + it afterwards. + +2025-05-22 Xi Ruoyao <xry111@xry111.site> + + * doc/md.texi: Document the 'q' constraint for LoongArch. + +2025-05-22 Jakub Jelinek <jakub@redhat.com> + + PR target/120360 + * config/i386/predicates.md (x86_64_neg_const_int_operand): New + predicate. + * config/i386/i386.md (*cmp<mode>_plus_1): New pattern. + +2025-05-22 Shreya Munnangi <smunnangi1@ventanamicro.com> + + * config/riscv/riscv.cc (synthesize_and): When profitable, use two + shift combinations to clear high or low bits rather than synthsizing + the constant. + +2025-05-22 Pengxuan Zheng <quic_pzheng@quicinc.com> + + * config/aarch64/aarch64.cc (aarch64_evpc_reencode): Copy zero_op0_p and + zero_op1_p from d to newd. + +2025-05-21 Andrew Pinski <quic_apinski@quicinc.com> + + PR rtl-optimization/120090 + * combine.cc (gen_lowpart_for_combine_no_emit): New function. + (RTL_HOOKS_GEN_LOWPART_NO_EMIT): Set to gen_lowpart_for_combine_no_emit. + +2025-05-21 Jeff Law <jlaw@ventanamicro.com> + + * config/riscv/riscv.md ((x << C1) + C2): Tighten split condition + and generate more efficient code when splitting. + +2025-05-21 Jeff Law <jlaw@ventanamicro.com> + + PR target/120368 + * config/riscv/riscv.md (shift with masked shift count): Fix + opcode when generating an SImode shift on rv64. + +2025-05-21 Pan Li <pan2.li@intel.com> + + * config/riscv/riscv-v.cc (expand_vx_binary_vec_dup_vec): Add new + case for rtx code AND. + (expand_vx_binary_vec_vec_dup): Ditto. + * config/riscv/riscv.cc (riscv_rtx_costs): Ditto. + * config/riscv/vector-iterators.md: Add new op and to no_shift_vx_ops. + +2025-05-21 Richard Sandiford <richard.sandiford@arm.com> + + * gensupport.h (needs_barrier_p): Delete. + * gensupport.cc (needs_barrier_p): Likewise. + * rtl.h (always_void_p): Return true for PC, RETURN and SIMPLE_RETURN. + (expand_opcode): New enum class. + (expand_rtx, complete_seq): Declare. + * emit-rtl.cc (rtx_expander): New class. + (expand_rtx, complete_seq): New functions. + * gengenrtl.cc (special_rtx, excluded_rtx): Add a cross-reference + comment. + * genemit.cc (FIRST_CODE): New constant. + (print_code): Delete. + (generator::file, generator::used, generator::sequence_type): Delete. + (generator::bytes): New member variable. + (generator::generator): Update accordingly. + (generator::gen_rtx_scratch): Delete. + (generator::add_uint, generator::add_opcode, generator::add_code) + (generator::add_match_operator, generator::add_exp) + (generator::add_vec, generator::gen_table): New member functions. + (generator::gen_exp): Rewrite to use a bytecode expansion. + (generator::gen_emit_seq): Likewise. + (start_gen_insn): Return the C++ expression for the operands array. + (gen_insn, gen_expand, gen_split): Update callers accordingly. + (emit_c_code): Remove use of _val. + +2025-05-21 Richard Sandiford <richard.sandiford@arm.com> + + * genemit.cc (clobber_pat::code): Delete. + (maybe_queue_insn): Don't set clobber_pat::code. + (output_add_clobbers): Remove info argument and output the two + REG and SCRATCH cases directly. + (main): Update call accordingly. + +2025-05-21 Richard Sandiford <richard.sandiford@arm.com> + + * genemit.cc (generator::gen_exp): Report an error for 's' operands. + +2025-05-21 Richard Sandiford <richard.sandiford@arm.com> + + * genemit.cc (generator::gen_exp): Raise an error if we see + an 'L' operand. + +2025-05-21 Richard Sandiford <richard.sandiford@arm.com> + + * genemit.cc (generator::used): Update comment. + (generator::gen_exp): Remove handling of null unused arrays. + (gen_insn, gen_expand): Always pass a used array. + (output_add_clobbers): Note why the used array is null here. + +2025-05-21 Richard Sandiford <richard.sandiford@arm.com> + + * genemit.cc (generator): New structure. + (gen_rtx_scratch, gen_exp, gen_emit_seq): Turn into member + functions of generator. + (gen_insn, gen_expand, gen_split, output_add_clobbers): Update + users accordingly. + +2025-05-21 Richard Sandiford <richard.sandiford@arm.com> + + * genemit.cc (gen_rtx_scratch, gen_exp): Use operands[%d] rather than + operand%d. + (start_gen_insn): Mark the incoming arguments as const and store + them to an operands array. + (gen_expand, gen_split): Remove copies into and out of the operands + array. + +2025-05-21 Richard Sandiford <richard.sandiford@arm.com> + + * genemit.cc (start_gen_insn): New function, split out from... + (gen_insn, gen_expand): ...here. + +2025-05-21 Richard Sandiford <richard.sandiford@arm.com> + + * genemit.cc (queue): New static variable. + (maybe_queue_insn): New function, split out from... + (gen_insn): ...here. + (queue_expand): New function, split out from... + (gen_expand): ...here. + (gen_split): New function, split out from... + (queue_split): ...here. + (main): Queue definitions for later processing rather than + emitting them on the fly. + +2025-05-21 Richard Sandiford <richard.sandiford@arm.com> + + * genemit.cc (gen_exp): Make the info argument a constant reference. + (gen_emit_seq, gen_insn, gen_expand, gen_split): Likewise. + (output_add_clobbers): Likewise. + (main): Update calls accordingly. + +2025-05-21 Richard Sandiford <richard.sandiford@arm.com> + + * config/sparc/sparc.md (zero_extendhisi2, zero_extendhidi2) + (extendhisi2, extendqihi2, extendqisi2, extendqidi2) + (extendhidi2): Use operands[0] and operands[1] instead of + operand0 and operand1. + +2025-05-21 Richard Sandiford <richard.sandiford@arm.com> + + * config/stormy16/stormy16.md (negsi2): Remove unused assignment. + +2025-05-21 Richard Sandiford <richard.sandiford@arm.com> + + PR target/100837 + * config/nds32/nds32-intrinsic.md (unspec_get_pending_int): Use + a local variable instead of operands[2]. + +2025-05-21 Andrew Pinski <quic_apinski@quicinc.com> + + PR middle-end/120369 + * tree-complex.cc (gimple_expand_builtin_cabs): Return early + if the LHS of cabs is null. + +2025-05-21 Co-Authored-By: Jeff Law <jlaw@ventanamicro.com> + + * config/riscv/riscv-protos.h (synthesize_and): Prototype. + * config/riscv/riscv.cc (synthesize_and): New function. + * config/riscv/riscv.md (and<mode>3): Use it. + +2025-05-21 liuhongt <hongtao.liu@intel.com> + + PR middle-end/118994 + * match.pd ((a >> 1) + (b >> 1) + ((a | b) & 1) to + .AVG_CEIL (a, b)): New pattern. + ((a | b) - ((a ^ b) >> 1) to .AVG_CEIL (a, b)): Ditto. + +2025-05-20 Andrew Pinski <quic_apinski@quicinc.com> + + * Makefile.in (gimple-match-exports.o-warn): Remove. + * gimple-match-exports.cc (gimple_extract): Remove valueize_condition + argument. + (gimple_extract_op): Update call to gimple_extract. + (gimple_simplify): Likewise. Also remove valueize_condition lambda. + +2025-05-20 Umesh Kalappa <ukalappa.mips@gmail.com> + + * config/riscv/mips-p8700.md (mips_p8700_dummies): New + reservation. + (mips_p8700_unknown): Reservation for all the dummies. + +2025-05-20 Umesh Kalappa <ukalappa.mips@gmail.com> + + * config/riscv/mips-p8700.md: New scheduler model. + * config/riscv/riscv-cores.def (mips-p87000): New tuning model + and core architecture. + * config/riscv/riscv-opts.h (riscv_microarchitecture_type); Add + mips-p8700. + * config/riscv/riscv.cc (mips_p8700_tune_info): New uarch + tuning parameters. + * config/riscv/riscv.md (tune): Add mips_p8700. + Include mips-p8700.md + * doc/invoke.texi: Document tune/cpu options for the MIPS P8700. + Co-authored-by: Jeff Law <jlaw@ventanamicro.com> + +2025-05-20 Jakub Jelinek <jakub@redhat.com> + + * tree-chrec.cc (convert_affine_scev): Use signed_type_for instead of + build_nonstandard_integer_type. + +2025-05-20 Jakub Jelinek <jakub@redhat.com> + + * gimple-lower-bitint.cc (bitint_big_endian): New variable. + (bitint_precision_kind): Set it. + (struct bitint_large_huge): Add unsigned argument to + finish_arith_overflow. + (bitint_large_huge::limb_access_type): Handle bitint_big_endian. + (bitint_large_huge::handle_operand): Likewise. + (bitint_large_huge::handle_cast): Likewise. + (bitint_large_huge::handle_bit_field_ref): Likewise. + (bitint_large_huge::handle_load): Likewise. + (bitint_large_huge::lower_shift_stmt): Likewise. + (bitint_large_huge::finish_arith_overflow): Likewise. + Add nelts argument. + (bitint_large_huge::lower_addsub_overflow): Handle bitint_big_endian. + Adjust finish_arith_overflow caller. + (bitint_large_huge::lower_mul_overflow): Likewise. + (bitint_large_huge::lower_bit_query): Handle bitint_big_endian. + (bitint_large_huge::lower_stmt): Likewise. + (build_bitint_stmt_ssa_conflicts): Likewise. + (gimple_lower_bitint): Likewise. + +2025-05-20 Jeff Law <jlaw@ventanamicro.com> + + * config/riscv/bitmanip.md (various splits): Avoid writing the output + more than once when trivially possible. + +2025-05-20 liuhongt <hongtao.liu@intel.com> + + PR tree-optimization/103771 + * match.pd (cond_expr_convert_p): Extend the match to handle + REAL_CST. + * tree-vect-patterns.cc + (vect_recog_cond_expr_convert_pattern): Handle REAL_CST. + +2025-05-20 Pan Li <pan2.li@intel.com> + + * config/riscv/autovec-opt.md: Leverage the new add func to + expand the vx insn. + * config/riscv/riscv-protos.h (expand_vx_binary_vec_dup_vec): Add + new func decl to expand format v = vop(vec_dup(x), v). + (expand_vx_binary_vec_vec_dup): Diito but for format + v = vop(v, vec_dup(x)). + * config/riscv/riscv-v.cc (expand_vx_binary_vec_dup_vec): Add new + func impl to expand vx for v = vop(vec_dup(x), v). + (expand_vx_binary_vec_vec_dup): Diito but for another format + v = vop(v, vec_dup(x)). + +2025-05-19 Jeff Law <jlaw@ventanamicro.com> + + PR target/120333 + * config/riscv/bitmanip.md: Remove bext formed from left+right + shift patterns. + +2025-05-19 John David Anglin <danglin@gcc.gnu.org> + + * config/pa/pa-hpux.h (TARGET_HAVE_LIBATOMIC): Define. + (HAVE_sync_compare_and_swapqi): Likewise. + (HAVE_sync_compare_and_swaphi): Likewise. + (HAVE_sync_compare_and_swapsi): Likewise. + (HAVE_sync_compare_and_swapdi): Likewise. + +2025-05-19 Thomas Schwinge <tschwinge@baylibre.com> + + PR lto/120308 + * lto-streamer-out.cc (hash_tree): Don't handle 'TYPE_EMPTY_P' for + 'lto_stream_offload_p'. + * tree-streamer-in.cc (unpack_ts_type_common_value_fields): + Likewise. + * tree-streamer-out.cc (pack_ts_type_common_value_fields): + Likewise. + +2025-05-19 Jeff Law <jlaw@ventanamicro.com> + + * config/riscv/riscv.cc (synthesize_ior_xor): Initialize OUTPUT and + verify it's non-null before emitting the final copy insn. + +2025-05-19 Richard Earnshaw <rearnsha@arm.com> + + PR target/120351 + * config/arm/predicates.md (mem_noofs_operand): Also check the op + is a valid memory_operand. + +2025-05-19 Dongyan Chen <chendongyan@isrc.iscas.ac.cn> + + * common/config/riscv/riscv-common.cc (get_riscv_ext_info): Fix argument type. + (riscv_subset_list::check_implied_ext): Type conversion. + +2025-05-19 zhusonghe <zhusonghe@eswincomputing.com> + + * config/riscv/gen-riscv-ext-texi.cc (struct version_t):rename + major/minor to major_version/minor_version. + +2025-05-19 Kito Cheng <kito.cheng@sifive.com> + + * config/riscv/riscv.cc (riscv_legitimize_move): Handle + load/store with odd-even reg pair. + (riscv_split_64bit_move_p): Don't split load/store if zilsd enabled. + (riscv_hard_regno_mode_ok): Only allow even reg can be used for + 64 bits mode for zilsd. + +2025-05-19 Jennifer Schmitz <jschmitz@nvidia.com> + + PR middle-end/120276 + * regcprop.cc (copy_value): Return in case of unordered modes. + +2025-05-19 Kito Cheng <kito.cheng@sifive.com> + + * config/riscv/constraints.md (cR): New constraint. + * doc/md.texi (Machine Constraints::RISC-V): Document the new cR + constraint. + +2025-05-19 Haochen Jiang <haochen.jiang@intel.com> + + * config.gcc: Remove 512 intrin file. + * config/i386/avx10_2-512bf16intrin.h: + Removed and combined to ... + * config/i386/avx10_2bf16intrin.h: ... this. + * config/i386/avx10_2-512convertintrin.h: + Removed and combined to ... + * config/i386/avx10_2convertintrin.h: ... this. + * config/i386/avx10_2-512mediaintrin.h: + Removed and combined to ... + * config/i386/avx10_2mediaintrin.h: ... this. + * config/i386/avx10_2-512minmaxintrin.h: + Removed and combined to ... + * config/i386/avx10_2minmaxintrin.h: ... this. + * config/i386/avx10_2-512satcvtintrin.h: + Removed and combined to ... + * config/i386/avx10_2satcvtintrin.h: ... this. + * config/i386/immintrin.h: Remove 512 intrin file. + +2025-05-19 Haochen Jiang <haochen.jiang@intel.com> + + * config/i386/sse.md (VF1_VF2_AVX10_2): Removed. + (VF2_AVX10_2): Ditto. + (VI1248_AVX10_2): Ditto. + (VFH_AVX10_2): Ditto. + (VF1_AVX10_2): Ditto. + (VHF_AVX10_2): Ditto. + (VBF_AVX10_2): Ditto. + (VI8_AVX10_2): Ditto. + (VI2_AVX10_2): Ditto. + (VBF): New. + (div<mode>3): Use VBF instead of AVX10.2 ones. + (vec_cmp<mode><avx512fmaskmodelower>): Ditto. + (avx10_2_cvt2ps2phx_<mode><mask_name><round_name>): + Use VHF_AVX512VL instead of AVX10.2 ones. + (vcvt<convertfp8_pack><mode><mask_name>): Ditto. + (vcvthf82ph<mode><mask_name>): Ditto. + (VHF_AVX10_2_2): Remove not needed TARGET_AVX10_2. + (usdot_prod<sseunpackmodelower><mode>): Use VI2_AVX512F + instead of AVX10.2 ones. + (vdpphps_<mode>): Use VF1_AVX512VL instead of AVX10.2 ones. + (vdpphps_<mode>_mask): Ditto. + (vdpphps_<mode>_maskz): Ditto. + (vdpphps_<mode>_maskz_1): Ditto. + (avx10_2_scalefbf16_<mode><mask_name>): Use VBF instead of + AVX10.2 ones. + (<code><mode>3): Ditto. + (avx10_2_<code>bf16_<mode><mask_name>): Ditto. + (avx10_2_fmaddbf16_<mode>_maskz); Ditto. + (avx10_2_fmaddbf16_<mode><sd_maskz_name>): Ditto. + (avx10_2_fmaddbf16_<mode>_mask): Ditto. + (avx10_2_fmaddbf16_<mode>_mask3): Ditto. + (avx10_2_fnmaddbf16_<mode>_maskz): Ditto. + (avx10_2_fnmaddbf16_<mode><sd_maskz_name>): Ditto. + (avx10_2_fnmaddbf16_<mode>_mask): Ditto. + (avx10_2_fnmaddbf16_<mode>_mask3): Ditto. + (avx10_2_fmsubbf16_<mode>_maskz); Ditto. + (avx10_2_fmsubbf16_<mode><sd_maskz_name>): Ditto. + (avx10_2_fmsubbf16_<mode>_mask): Ditto. + (avx10_2_fmsubbf16_<mode>_mask3): Ditto. + (avx10_2_fnmsubbf16_<mode>_maskz): Ditto. + (avx10_2_fnmsubbf16_<mode><sd_maskz_name>): Ditto. + (avx10_2_fnmsubbf16_<mode>_mask): Ditto. + (avx10_2_fnmsubbf16_<mode>_mask3): Ditto. + (avx10_2_rsqrtbf16_<mode><mask_name>): Ditto. + (avx10_2_sqrtbf16_<mode><mask_name>): Ditto. + (avx10_2_rcpbf16_<mode><mask_name>): Ditto. + (avx10_2_getexpbf16_<mode><mask_name>): Ditto. + (avx10_2_<bf16immop>bf16_<mode><mask_name>): Ditto. + (avx10_2_fpclassbf16_<mode><mask_scalar_merge_name>): Ditto. + (avx10_2_cmpbf16_<mode><mask_scalar_merge_name>): Ditto. + (avx10_2_cvt<sat_cvt_trunc_prefix>bf162i<sat_cvt_sign_prefix>bs<mode><mask_name>): + Ditto. + (avx10_2_cvtph2i<sat_cvt_sign_prefix>bs<mode><mask_name><round_name>): + Use VHF_AVX512VL instead of AVX10.2 ones. + (avx10_2_cvttph2i<sat_cvt_sign_prefix>bs<mode><mask_name><round_saeonly_name>): + Ditto. + (avx10_2_cvtps2i<sat_cvt_sign_prefix>bs<mode><mask_name><round_name>): + Use VF1_AVX512VL instead of AVX10.2 ones. + (avx10_2_cvttps2i<sat_cvt_sign_prefix>bs<mode><mask_name><round_saeonly_name>): + Ditto. + (avx10_2_vcvtt<castmode>2<sat_cvt_sign_prefix>dqs<mode><mask_name><round_saeonly_name>): + Use VF instead of AVX10.2 ones. + (avx10_2_vcvttpd2<sat_cvt_sign_prefix>qqs<mode><mask_name><round_saeonly_name>): + Use VF2 instead of AVX10.2 ones. + (avx10_2_vcvttps2<sat_cvt_sign_prefix>qqs<mode><mask_name><round_saeonly_name>): + Use VI8 instead of AVX10.2 ones. + (avx10_2_minmaxbf16_<mode><mask_name>): Use VBF instead of + AVX10.2 ones. + (avx10_2_minmaxp<mode><mask_name><round_saeonly_name>): + Use VFH_AVX512VL instead of AVX10.2 ones. + (avx10_2_vmovrs<ssemodesuffix><mode><mask_name>): + Use VI1248_AVX512VLBW instead of AVX10.2 ones. + +2025-05-19 Haochen Jiang <haochen.jiang@intel.com> + + * common/config/i386/cpuinfo.h + (get_available_features): Remove feature set for AVX10_1_256. + * common/config/i386/i386-common.cc + (OPTION_MASK_ISA2_EVEX512_SET): Removed. + (OPTION_MASK_ISA2_AVX10_1_256_SET): Removed. + (OPTION_MASK_ISA_AVX10_1_SET): Imply all AVX512 features. + (OPTION_MASK_ISA2_AVX10_1_SET): Ditto. + (OPTION_MASK_ISA2_AVX2_UNSET): Remove AVX10_1_UNSET. + (OPTION_MASK_ISA2_EVEX512_UNSET): Removed. + (OPTION_MASK_ISA2_AVX10_1_UNSET): Remove AVX10_1_256. + (OPTION_MASK_ISA2_AVX512F_UNSET): Unset AVX10_1. + (ix86_handle_option): Remove special handling for AVX512/AVX10.1 + options, evex512 and avx10_1_256. Modify ISA set for AVX10 options. + * common/config/i386/i386-cpuinfo.h + (enum feature_priority): Remove P_AVX10_1_256. + (enum processor_features): Remove FEATURE_AVX10_1_256. + * common/config/i386/i386-isas.h: Remove avx10.1-256/512. + * config/i386/avx512bf16intrin.h: Rollback target push before + evex512 is introduced. + * config/i386/avx512bf16vlintrin.h: Ditto. + * config/i386/avx512bitalgintrin.h: Ditto. + * config/i386/avx512bitalgvlintrin.h: Ditto. + * config/i386/avx512bwintrin.h: Ditto. + * config/i386/avx512cdintrin.h: Ditto. + * config/i386/avx512dqintrin.h: Ditto. + * config/i386/avx512fintrin.h: Ditto. + * config/i386/avx512fp16intrin.h: Ditto. + * config/i386/avx512fp16vlintrin.h: Ditto. + * config/i386/avx512ifmaintrin.h: Ditto. + * config/i386/avx512ifmavlintrin.h: Ditto. + * config/i386/avx512vbmi2intrin.h: Ditto. + * config/i386/avx512vbmi2vlintrin.h: Ditto. + * config/i386/avx512vbmiintrin.h: Ditto. + * config/i386/avx512vbmivlintrin.h: Ditto. + * config/i386/avx512vlbwintrin.h: Ditto. + * config/i386/avx512vldqintrin.h: Ditto. + * config/i386/avx512vlintrin.h: Ditto. + * config/i386/avx512vnniintrin.h: Ditto. + * config/i386/avx512vnnivlintrin.h: Ditto. + * config/i386/avx512vp2intersectintrin.h: Ditto. + * config/i386/avx512vp2intersectvlintrin.h: Ditto. + * config/i386/avx512vpopcntdqintrin.h: Ditto. + * config/i386/avx512vpopcntdqvlintrin.h: Ditto. + * config/i386/gfniintrin.h: Ditto. + * config/i386/vaesintrin.h: Ditto. + * config/i386/vpclmulqdqintrin.h: Ditto. + * config/i386/driver-i386.cc (check_avx512_features): Removed. + (host_detect_local_cpu): Remove -march=native special handling. + * config/i386/i386-builtins.cc + (ix86_vectorize_builtin_gather): Remove TARGET_EVEX512. + * config/i386/i386-c.cc + (ix86_target_macros_internal): Remove EVEX512 and AVX10_1_256. + * config/i386/i386-expand.cc + (ix86_valid_mask_cmp_mode): Remove TARGET_EVEX512. + (ix86_expand_int_sse_cmp): Ditto. + (ix86_vector_duplicate_simode_const): Ditto. + (ix86_expand_vector_init_duplicate): Ditto. + (ix86_expand_vector_init_one_nonzero): Ditto. + (ix86_emit_swsqrtsf): Ditto. + (ix86_vectorize_vec_perm_const): Ditto. + (ix86_expand_vecop_qihi2): Ditto. + (ix86_expand_sse2_mulvxdi3): Ditto. + (ix86_gen_bcst_mem): Ditto. + * config/i386/i386-isa.def (EVEX512): Removed. + (AVX10_1_256): Ditto. + * config/i386/i386-options.cc + (isa2_opts): Remove evex512 and avx10.1-256. + (ix86_function_specific_save): Remove no_avx512_explicit and + no_avx10_1_explicit. + (ix86_function_specific_restore): Ditto. + (ix86_valid_target_attribute_inner_p): Remove evex512 and + avx10.1-256/512. + (ix86_valid_target_attribute_tree): Remove special handling + to rerun ix86_option_override_internal for AVX10.1-256. + (ix86_option_override_internal): Remove warning handling. + (ix86_simd_clone_adjust): Remove evex512. + * config/i386/i386.cc + (type_natural_mode): Remove TARGET_EVEX512. + (ix86_return_in_memory): Ditto. + (standard_sse_constant_p): Ditto. + (standard_sse_constant_opcode): Ditto. + (ix86_get_ssemov): Ditto. + (ix86_legitimate_constant_p): Ditto. + (ix86_vectorize_builtin_scatter): Ditto. + (ix86_hard_regno_mode_ok): Ditto. + (ix86_set_reg_reg_cost): Ditto. + (ix86_rtx_costs): Ditto. + (ix86_vector_mode_supported_p): Ditto. + (ix86_preferred_simd_mode): Ditto. + (ix86_autovectorize_vector_modes): Ditto. + (ix86_get_mask_mode): Ditto. + (ix86_simd_clone_compute_vecsize_and_simdlen): Ditto. + (ix86_simd_clone_usable): Ditto. + * config/i386/i386.h (BIGGEST_ALIGNMENT): Ditto. + (MOVE_MAX): Ditto. + (STORE_MAX_PIECES): Ditto. + (PTA_SKYLAKE_AVX512): Remove PTA_EVEX512. + (PTA_CANNONLAKE): Ditto. + (PTA_ZNVER4): Ditto. + (PTA_GRANITERAPIDS): Use PTA_AVX10_1. + (PTA_DIAMONDRAPIDS): Use PTA_GRANITERAPIDS. + * config/i386/i386.md: Remove TARGET_EVEX512, avx512f_512 + and avx512bw_512. + * config/i386/i386.opt: Remove ix86_no_avx512_explicit, + ix86_no_avx10_1_explicit, mevex512, mavx10.1-256/512 and + warning for mavx10.1. Modify option comment. + * config/i386/i386.opt.urls: Remove evex512 and avx10.1-256/512. + * config/i386/predicates.md: Remove TARGET_EVEX512. + * config/i386/sse.md: Ditto. + * doc/extend.texi: Remove avx10.1-256/512. Modify avx10.1 doc. + * doc/invoke.texi: Remove avx10.1-256/512 and evex512. + * doc/sourcebuild.texi: Remove avx10.1-256/512. + +2025-05-19 Haochen Jiang <haochen.jiang@intel.com> + + * config/i386/i386-builtin.def + (BDESC): Remove OPTION_MASK_ISA2_EVEX512. + * config/i386/i386-builtins.cc + (ix86_init_mmx_sse_builtins): Ditto. + +2025-05-18 Dimitar Dimitrov <dimitar@dinux.eu> + Richard Sandiford <richard.sandiford@arm.com> + + PR target/119966 + * emit-rtl.cc (validate_subreg): Do not exit immediately for + paradoxical subregs. Filter subsequent tests which are + not valid for paradoxical subregs. + +2025-05-18 Eric Botcazou <ebotcazou@adacore.com> + + * dwarf2out.cc (loc_list_from_tree_1) <COMPONENT_REF>: Do not bail + out when the size is not a multiple of a byte. + Deal with bit-fields whose size is not a multiple of a byte when + dereferencing an address. + +2025-05-18 Andrew Pinski <quic_apinski@quicinc.com> + + * gimple-fold.cc (mark_lhs_in_seq_for_dce): Make + non-static. + * gimple-fold.h (mark_lhs_in_seq_for_dce): Declare. + * tree-ssa-phiopt.cc (match_simplify_replacement): Use + mark_lhs_in_seq_for_dce instead of manually looping. + +2025-05-17 Jeff Law <jlaw@ventanamicro.com> + + * config/riscv/riscv-vect-permconst.cc (vector_permconst:process_bb): + Use rtvec_alloc, not gen_rtvec since we don't want/need to initialize + the vector. + +2025-05-17 Yuao Ma <c8ef@outlook.com> + + * doc/extend.texi: Mention new builtins. + +2025-05-17 Yuao Ma <c8ef@outlook.com> + + * builtins.def (TRIG_TYPE): New. + (BUILT_IN_ACOSPI): New. + (BUILT_IN_ACOSPIF): New. + (BUILT_IN_ACOSPIL): New. + (BUILT_IN_ASINPI): New. + (BUILT_IN_ASINPIF): New. + (BUILT_IN_ASINPIL): New. + (BUILT_IN_ATANPI): New. + (BUILT_IN_ATANPIF): New. + (BUILT_IN_ATANPIL): New. + (BUILT_IN_COSPI): New. + (BUILT_IN_COSPIF): New. + (BUILT_IN_COSPIL): New. + (BUILT_IN_SINPI): New. + (BUILT_IN_SINPIF): New. + (BUILT_IN_SINPIL): New. + (BUILT_IN_TANPI): New. + (BUILT_IN_TANPIF): New. + (BUILT_IN_TANPIL): New. + (TRIG2_TYPE): New. + (BUILT_IN_ATAN2PI): New. + (BUILT_IN_ATAN2PIF): New. + (BUILT_IN_ATAN2PIL): New. + +2025-05-17 Jeff Law <jlaw@ventanamicro.com> + + * config/riscv/riscv.cc (synthesize_ior_xor): Avoid writing + operands[0] more than once, use new pseudos instead. + +2025-05-17 Jin Ma <jinma@linux.alibaba.com> + + * config/riscv/riscv.cc (riscv_gpr_save_operation_p): Remove + break and fixbug for elt index. + +2025-05-16 Pengxuan Zheng <quic_pzheng@quicinc.com> + + PR target/100165 + * config/aarch64/aarch64-protos.h (aarch64_output_fmov): New prototype. + (aarch64_simd_valid_and_imm_fmov): Likewise. + * config/aarch64/aarch64-simd.md (and<mode>3<vczle><vczbe>): Allow FMOV + codegen. + * config/aarch64/aarch64.cc (aarch64_simd_valid_and_imm_fmov): New. + (aarch64_output_fmov): Likewise. + * config/aarch64/constraints.md (Df): New constraint. + * config/aarch64/predicates.md (aarch64_reg_or_and_imm): Update + predicate to support FMOV codegen. + +2025-05-16 Pengxuan Zheng <quic_pzheng@quicinc.com> + + PR target/100165 + * config/aarch64/aarch64.cc (aarch64_evpc_and): New. + (aarch64_expand_vec_perm_const_1): Call aarch64_evpc_and. + * optabs.cc (vec_perm_and_mask): New. + * optabs.h (vec_perm_and_mask): New prototype. + +2025-05-16 Pengxuan Zheng <quic_pzheng@quicinc.com> + + * config/aarch64/aarch64.cc (aarch64_evpc_reencode): Zero initialize + newd. + +2025-05-16 Andrew Pinski <quic_apinski@quicinc.com> + + * tree-ssa-forwprop.cc (forward_propagate_into_comparison): Dump + when replacing statement. + +2025-05-16 Martin Jambor <mjambor@suse.cz> + Michal Jires <mjires@suse.cz> + + * cgraph.h (symtab_node): Make member function get_uid const. + * cgraphclones.cc (dump_callgraph_transformation): Dump m_uid of the + call graph nodes instead of order. + * cgraph.cc (cgraph_node::remove): Likewise. + * ipa-cp.cc (ipcp_lattice<valtype>::print): Likewise. + * ipa-sra.cc (ipa_sra_summarize_function): Likewise. + * symtab.cc (symtab_node::dump_base): Likewise. + +2025-05-16 Ville Voutilainen <ville.voutilainen@gmail.com> + + * doc/invoke.texi: Add to_underlying to -ffold-simple-inlines. + +2025-05-16 Andrew Pinski <quic_apinski@quicinc.com> + + PR target/118603 + * config/aarch64/driver-aarch64.cc (aarch64_cpu_data): Add cast to unsigned + to VARIANT of the define AARCH64_CORE. + +2025-05-16 Andrew Pinski <quic_apinski@quicinc.com> + + * config/aarch64/aarch64-protos.h (struct sve_vec_cost): Change gather_load_x32_cost + and gather_load_x64_cost fields to unsigned. + +2025-05-16 Andrew Pinski <quic_apinski@quicinc.com> + + * tree-ssa-forwprop.cc (optimize_memcpy_to_memset): Add a limit on the alias walk. + +2025-05-16 Andrew Pinski <quic_apinski@quicinc.com> + + * gimple-fold.cc (optimize_memcpy_to_memset): Move to + tree-ssa-forwprop.cc. + (gimple_fold_builtin_memory_op): Remove call to + optimize_memcpy_to_memset. + (fold_stmt_1): Likewise. + * tree-ssa-forwprop.cc (optimize_memcpy_to_memset): Move from + gimple-fold.cc. + (simplify_builtin_call): Try to optimize memcpy/memset. + (pass_forwprop::execute): Try to optimize memcpy like assignment + from a previous memset. + +2025-05-16 Richard Sandiford <richard.sandiford@arm.com> + + * config/arm/arm.cc (arm_gen_load_multiple_1): Simplify use of + end_sequence. + (arm_gen_store_multiple_1): Likewise. + * expr.cc (gen_move_insn): Likewise. + * gentarget-def.cc (main): Likewise. + +2025-05-16 Richard Sandiford <richard.sandiford@arm.com> + + * asan.cc (asan_emit_allocas_unpoison): Directly return the + result of end_sequence. + (hwasan_emit_untag_frame): Likewise. + * config/aarch64/aarch64-speculation.cc + (aarch64_speculation_clobber_sp): Likewise. + (aarch64_speculation_establish_tracker): Likewise. + * config/arm/arm.cc (arm_call_tls_get_addr): Likewise. + * config/avr/avr-passes.cc (avr_parallel_insn_from_insns): Likewise. + * config/sh/sh_treg_combine.cc + (sh_treg_combine::make_not_reg_insn): Likewise. + * tree-outof-ssa.cc (emit_partition_copy): Likewise. + +2025-05-16 Richard Sandiford <richard.sandiford@arm.com> + + * asan.cc (asan_clear_shadow): Use the return value of end_sequence, + rather than calling get_insns separately. + (asan_emit_stack_protection, asan_emit_allocas_unpoison): Likewise. + (hwasan_frame_base, hwasan_emit_untag_frame): Likewise. + * auto-inc-dec.cc (attempt_change): Likewise. + * avoid-store-forwarding.cc (process_store_forwarding): Likewise. + * bb-reorder.cc (fix_crossing_unconditional_branches): Likewise. + * builtins.cc (expand_builtin_apply_args): Likewise. + (expand_builtin_return, expand_builtin_mathfn_ternary): Likewise. + (expand_builtin_mathfn_3, expand_builtin_int_roundingfn): Likewise. + (expand_builtin_int_roundingfn_2, expand_builtin_saveregs): Likewise. + (inline_string_cmp): Likewise. + * calls.cc (expand_call): Likewise. + * cfgexpand.cc (expand_asm_stmt, pass_expand::execute): Likewise. + * cfgloopanal.cc (init_set_costs): Likewise. + * cfgrtl.cc (insert_insn_on_edge, prepend_insn_to_edge): Likewise. + (rtl_lv_add_condition_to_bb): Likewise. + * config/aarch64/aarch64-speculation.cc + (aarch64_speculation_clobber_sp): Likewise. + (aarch64_speculation_establish_tracker): Likewise. + (aarch64_do_track_speculation): Likewise. + * config/aarch64/aarch64.cc (aarch64_load_symref_appropriately) + (aarch64_expand_vector_init, aarch64_gen_ccmp_first): Likewise. + (aarch64_gen_ccmp_next, aarch64_mode_emit): Likewise. + (aarch64_md_asm_adjust): Likewise. + (aarch64_switch_pstate_sm_for_landing_pad): Likewise. + (aarch64_switch_pstate_sm_for_jump): Likewise. + (aarch64_switch_pstate_sm_for_call): Likewise. + * config/alpha/alpha.cc (alpha_legitimize_address_1): Likewise. + (alpha_emit_xfloating_libcall, alpha_gp_save_rtx): Likewise. + * config/arc/arc.cc (hwloop_optimize): Likewise. + * config/arm/aarch-common.cc (arm_md_asm_adjust): Likewise. + * config/arm/arm-builtins.cc: Likewise. + * config/arm/arm.cc (require_pic_register): Likewise. + (arm_call_tls_get_addr, arm_gen_load_multiple_1): Likewise. + (arm_gen_store_multiple_1, cmse_clear_registers): Likewise. + (cmse_nonsecure_call_inline_register_clear): Likewise. + (arm_attempt_dlstp_transform): Likewise. + * config/avr/avr-passes.cc (bbinfo_t::optimize_one_block): Likewise. + (avr_parallel_insn_from_insns): Likewise. + * config/avr/avr.cc (avr_prologue_setup_frame): Likewise. + (avr_expand_epilogue): Likewise. + * config/bfin/bfin.cc (hwloop_optimize): Likewise. + * config/c6x/c6x.cc (c6x_expand_compare): Likewise. + * config/cris/cris.cc (cris_split_movdx): Likewise. + * config/cris/cris.md: Likewise. + * config/csky/csky.cc (csky_call_tls_get_addr): Likewise. + * config/epiphany/resolve-sw-modes.cc + (pass_resolve_sw_modes::execute): Likewise. + * config/fr30/fr30.cc (fr30_move_double): Likewise. + * config/frv/frv.cc (frv_split_scc, frv_split_cond_move): Likewise. + (frv_split_minmax, frv_split_abs): Likewise. + * config/frv/frv.md: Likewise. + * config/gcn/gcn.cc (move_callee_saved_registers): Likewise. + (gcn_expand_prologue, gcn_restore_exec, gcn_md_reorg): Likewise. + * config/i386/i386-expand.cc + (ix86_expand_carry_flag_compare, ix86_expand_int_movcc): Likewise. + (ix86_vector_duplicate_value, expand_vec_perm_interleave2): Likewise. + (expand_vec_perm_vperm2f128_vblend): Likewise. + (expand_vec_perm_2perm_interleave): Likewise. + (expand_vec_perm_2perm_pblendv): Likewise. + (expand_vec_perm2_vperm2f128_vblend, ix86_gen_ccmp_first): Likewise. + (ix86_gen_ccmp_next): Likewise. + * config/i386/i386-features.cc + (scalar_chain::make_vector_copies): Likewise. + (scalar_chain::convert_reg, scalar_chain::convert_op): Likewise. + (timode_scalar_chain::convert_insn): Likewise. + * config/i386/i386.cc (ix86_init_pic_reg, ix86_va_start): Likewise. + (ix86_get_drap_rtx, legitimize_tls_address): Likewise. + (ix86_md_asm_adjust): Likewise. + * config/ia64/ia64.cc (ia64_expand_tls_address): Likewise. + (ia64_expand_compare, spill_restore_mem): Likewise. + (expand_vec_perm_interleave_2): Likewise. + * config/loongarch/loongarch.cc + (loongarch_call_tls_get_addr): Likewise. + * config/m32r/m32r.cc (gen_split_move_double): Likewise. + * config/m32r/m32r.md: Likewise. + * config/m68k/m68k.cc (m68k_call_tls_get_addr): Likewise. + (m68k_call_m68k_read_tp, m68k_sched_md_init_global): Likewise. + * config/m68k/m68k.md: Likewise. + * config/microblaze/microblaze.cc + (microblaze_call_tls_get_addr): Likewise. + * config/mips/mips.cc (mips_call_tls_get_addr): Likewise. + (mips_ls2_init_dfa_post_cycle_insn): Likewise. + (mips16_split_long_branches): Likewise. + * config/nvptx/nvptx.cc (nvptx_gen_shuffle): Likewise. + (nvptx_gen_shared_bcast, nvptx_propagate): Likewise. + (workaround_uninit_method_1, workaround_uninit_method_2): Likewise. + (workaround_uninit_method_3): Likewise. + * config/or1k/or1k.cc (or1k_init_pic_reg): Likewise. + * config/pa/pa.cc (legitimize_tls_address): Likewise. + * config/pru/pru.cc (pru_expand_fp_compare, pru_reorg_loop): Likewise. + * config/riscv/riscv-shorten-memrefs.cc + (pass_shorten_memrefs::transform): Likewise. + * config/riscv/riscv-vsetvl.cc (pre_vsetvl::emit_vsetvl): Likewise. + * config/riscv/riscv.cc (riscv_call_tls_get_addr): Likewise. + (riscv_frm_emit_after_bb_end): Likewise. + * config/rl78/rl78.cc (rl78_emit_libcall): Likewise. + * config/rs6000/rs6000.cc (rs6000_debug_legitimize_address): Likewise. + * config/s390/s390.cc (legitimize_tls_address): Likewise. + (s390_two_part_insv, s390_load_got, s390_va_start): Likewise. + * config/sh/sh_treg_combine.cc + (sh_treg_combine::make_not_reg_insn): Likewise. + * config/sparc/sparc.cc (sparc_legitimize_tls_address): Likewise. + (sparc_output_mi_thunk, sparc_init_pic_reg): Likewise. + * config/stormy16/stormy16.cc (xstormy16_split_cbranch): Likewise. + * config/xtensa/xtensa.cc (xtensa_copy_incoming_a7): Likewise. + (xtensa_expand_block_set_libcall): Likewise. + (xtensa_expand_block_set_unrolled_loop): Likewise. + (xtensa_expand_block_set_small_loop, xtensa_call_tls_desc): Likewise. + * dse.cc (emit_inc_dec_insn_before, find_shift_sequence): Likewise. + (replace_read): Likewise. + * emit-rtl.cc (reorder_insns, gen_clobber, gen_use): Likewise. + * except.cc (dw2_build_landing_pads, sjlj_mark_call_sites): Likewise. + (sjlj_emit_function_enter, sjlj_emit_function_exit): Likewise. + (sjlj_emit_dispatch_table): Likewise. + * expmed.cc (expmed_mult_highpart_optab, expand_sdiv_pow2): Likewise. + * expr.cc (convert_mode_scalar, emit_move_multi_word): Likewise. + (gen_move_insn, expand_cond_expr_using_cmove): Likewise. + (expand_expr_divmod, expand_expr_real_2): Likewise. + (maybe_optimize_pow2p_mod_cmp, maybe_optimize_mod_cmp): Likewise. + * function.cc (emit_initial_value_sets): Likewise. + (instantiate_virtual_regs_in_insn, expand_function_end): Likewise. + (get_arg_pointer_save_area, make_split_prologue_seq): Likewise. + (make_prologue_seq, gen_call_used_regs_seq): Likewise. + (thread_prologue_and_epilogue_insns): Likewise. + (match_asm_constraints_1): Likewise. + * gcse.cc (prepare_copy_insn): Likewise. + * ifcvt.cc (noce_emit_store_flag, noce_emit_move_insn): Likewise. + (noce_emit_cmove): Likewise. + * init-regs.cc (initialize_uninitialized_regs): Likewise. + * internal-fn.cc (expand_POPCOUNT): Likewise. + * ira-emit.cc (emit_move_list): Likewise. + * ira.cc (ira): Likewise. + * loop-doloop.cc (doloop_modify): Likewise. + * loop-unroll.cc (compare_and_jump_seq): Likewise. + (unroll_loop_runtime_iterations, insert_base_initialization): Likewise. + (split_iv, insert_var_expansion_initialization): Likewise. + (combine_var_copies_in_loop_exit): Likewise. + * lower-subreg.cc (resolve_simple_move,resolve_shift_zext): Likewise. + * lra-constraints.cc (match_reload, check_and_process_move): Likewise. + (process_addr_reg, insert_move_for_subreg): Likewise. + (process_address_1, curr_insn_transform): Likewise. + (inherit_reload_reg, process_invariant_for_inheritance): Likewise. + (inherit_in_ebb, remove_inheritance_pseudos): Likewise. + * lra-remat.cc (do_remat): Likewise. + * mode-switching.cc (commit_mode_sets): Likewise. + (optimize_mode_switching): Likewise. + * optabs.cc (expand_binop, expand_twoval_binop_libfunc): Likewise. + (expand_clrsb_using_clz, expand_doubleword_clz_ctz_ffs): Likewise. + (expand_doubleword_popcount, expand_ctz, expand_ffs): Likewise. + (expand_absneg_bit, expand_unop, expand_copysign_bit): Likewise. + (prepare_float_lib_cmp, expand_float, expand_fix): Likewise. + (expand_fixed_convert, gen_cond_trap): Likewise. + (expand_atomic_fetch_op): Likewise. + * ree.cc (combine_reaching_defs): Likewise. + * reg-stack.cc (compensate_edge): Likewise. + * reload1.cc (emit_input_reload_insns): Likewise. + * sel-sched-ir.cc (setup_nop_and_exit_insns): Likewise. + * shrink-wrap.cc (emit_common_heads_for_components): Likewise. + (emit_common_tails_for_components): Likewise. + (insert_prologue_epilogue_for_components): Likewise. + * tree-outof-ssa.cc (emit_partition_copy): Likewise. + (insert_value_copy_on_edge): Likewise. + * tree-ssa-loop-ivopts.cc (computation_cost): Likewise. + +2025-05-16 Richard Sandiford <richard.sandiford@arm.com> + + * rtl.h (end_sequence): Return the sequence. + * emit-rtl.cc (end_sequence): Likewise. + +2025-05-16 Pan Li <pan2.li@intel.com> + + * config/riscv/autovec-opt.md (*<optab>_vx_<mode>): Add new + pattern to convert vec_duplicate + vsub.vv to vsub.vx. + * config/riscv/riscv.cc (riscv_rtx_costs): Add minus as plus op. + * config/riscv/vector-iterators.md: Add minus to iterator + any_int_binop_no_shift_vx. + +2025-05-15 Andrew MacLeod <amacleod@redhat.com> + + PR tree-optimization/116546 + * range-op.cc (operator_bitwise_and::op1_range): Utilize bitmask + from the LHS to improve op1's bitmask. + +2025-05-15 Andrew MacLeod <amacleod@redhat.com> + + PR tree-optimization/116546 + * value-range.cc (irange::intersect_bitmask): Allow unknown + bitmasks to be processed. + +2025-05-15 Andrew MacLeod <amacleod@redhat.com> + + PR tree-optimization/116546 + * value-range.cc (irange_bitmask::irange_bitmask): Include + leading ones in the bitmask. + +2025-05-15 Andrew MacLeod <amacleod@redhat.com> + + * value-range.cc (irange_bitmask::irange_bitmask): Rename from + get_bitmask_from_range and tweak. + (prange::set): Use new constructor. + (prange::intersect): Use new constructor. + (irange::get_bitmask): Likewise. + * value-range.h (irange_bitmask): New constructor prototype. + +2025-05-15 Andrew MacLeod <amacleod@redhat.com> + + PR tree-optimization/120277 + * range-op-ptr.cc (operator_cast::fold_range): Check if the cast + if UNDEFINED before setting bounds. + +2025-05-15 Jeff Law <jlaw@ventanamicro.com> + + PR target/120223 + * config/riscv/riscv.cc (synthesize_ior_xor): XTHEADBS does not have + single bit manipulations. + +2025-05-15 Alexander Monakov <amonakov@ispras.ru> + + * tree-cfg.cc (verify_gimple_assign_unary): Accept only + COMPLEX_TYPE for CONJ_EXPR. + +2025-05-15 Andrew Pinski <quic_apinski@quicinc.com> + + * fold-const.cc (tree_swap_operands_p): Put ADDR_EXPR last + instead of just is_gimple_invariant_address ones. + * match.pd (`a ptr+ b !=\== ADDR`, `ADDR !=/== ssa_name`): + Move the ADDR to the last operand. Update comment. + +2025-05-15 Richard Biener <rguenther@suse.de> + + * tree-vectorizer.cc (vect_transform_loops): When diagnosing + a vectorized loop indicate whether we vectorized an epilogue, + whether we used masked vectors and what unroll factor was + used. + +2025-05-15 Richard Biener <rguenther@suse.de> + + * config/i386/i386.cc (ix86_vector_costs::finish_cost): + Do not suggest a first epilogue mode for AVX512 sized + main loops with X86_TUNE_AVX512_TWO_EPILOGUES as that + interferes with using a masked epilogue. + +2025-05-14 Richard Biener <rguenther@suse.de> + + * tree-vectorizer.h (record_stmt_cost): Remove mixed + stmt_vec_info/SLP node inline overload. + * tree-vect-stmts.cc (vectorizable_store): For costing + vector stmts only pass SLP node to record_stmt_cost. + (vectorizable_load): Likewise. + +2025-05-14 Richard Biener <rguenther@suse.de> + + * tree-vect-stmts.cc (vect_get_store_cost): Compute vectype based + on whether we got SLP node or stmt_vec_info and use the full + record_stmt_cost API. + (vect_get_load_cost): Likewise. + +2025-05-14 Kito Cheng <kito.cheng@sifive.com> + + * common/config/riscv/riscv-common.cc + (riscv_subset_list::riscv_subset_list): Init m_allow_adding_dup. + +2025-05-14 Jiawei <jiawei@iscas.ac.cn> + + * config/riscv/riscv-ext.def: New extension defs. + * config/riscv/riscv-ext.opt: Ditto. + * doc/riscv-ext.texi: Ditto. + +2025-05-14 Kito Cheng <kito.cheng@sifive.com> + + * config/riscv/t-riscv: Drop duplicate build rule for + riscv-ext.opt. + +2025-05-14 Kito Cheng <kito.cheng@sifive.com> + + * config/riscv/riscv-ext.opt.urls: Regenerate. + +2025-05-14 Andrew Pinski <quic_apinski@quicinc.com> + + * tree-cfgcleanup.cc (canonicalize_bool_cond): New function. + (cleanup_control_expr_graph): Call canonicalize_bool_cond for GIMPLE_COND. + * tree-cfgcleanup.h (canonicalize_bool_cond): New declaration. + * tree-ssa-forwprop.cc (forward_propagate_into_gimple_cond): + Call canonicalize_bool_cond. + +2025-05-14 Andrew Pinski <quic_apinski@quicinc.com> + + * gimple.h (gimple_cond_set_code): Add assert of the code + being a comparison. + +2025-05-14 Andrew Pinski <quic_apinski@quicinc.com> + + * tree-ssa-forwprop.cc (forward_propagate_into_gimple_cond): Assert + that gimple_cond_code is always a comparison. + +2025-05-14 Andrew Pinski <quic_apinski@quicinc.com> + + * gimple-fold.cc (replace_stmt_with_simplification): Check cfun before + accessing cfun. + +2025-05-14 Andrew Pinski <quic_apinski@quicinc.com> + + * tree-ssa-forwprop.cc (pass_forwprop::execute): Move marking of to_purge bb + and marking of fixup statements to after the local optimizations. + +2025-05-14 Andrew Pinski <quic_apinski@quicinc.com> + + * tree-ssa-forwprop.cc (pass_forwprop::execute): Use `|=` for + changed on the local folding. + +2025-05-14 Richard Biener <rguenther@suse.de> + + * tree-vectorizer.h (record_stmt_cost): Add overload with + only SLP node and no vector type. + * tree-vect-stmts.cc (record_stmt_cost): Use + SLP_TREE_REPRESENTATIVE for stmt_vec_info. + (vect_model_simple_cost): Do not get stmt_vec_info argument + and adjust. + (vectorizable_call): Adjust. + (vectorizable_simd_clone_call): Likewise. + (vectorizable_conversion): Likewise. + (vectorizable_assignment): Likewise. + (vectorizable_shift): Likewise. + (vectorizable_operation): Likewise. + (vectorizable_condition): Likewise. + (vectorizable_comparison_1): Likewise. + * tree-vect-slp.cc (vect_prologue_cost_for_slp): Use + full-blown record_stmt_cost. + +2025-05-14 liuhongt <hongtao.liu@intel.com> + + PR target/120215 + * config/i386/i386-features.cc + (scalar_chain::mark_dual_mode_def): Weight + cost of integer<->sse move with bb frequency when it's + optimized_for_speed_p. + (general_scalar_chain::compute_convert_gain): Ditto, and + adjust function prototype to return true/false when cost model + is profitable or not. + (timode_scalar_chain::compute_convert_gain): Ditto. + (convert_scalars_to_vector): Adjust after the upper two + function prototype are changed. + * config/i386/i386-features.h (class scalar_chain): Change + n_integer_to_sse/n_sse_to_integer to cost_sse_integer, and add + weighted_cost_sse_integer. + (class general_scalar_chain): Adjust prototype to return bool + intead of int. + (class timode_scalar_chain): Ditto. + +2025-05-14 Martin Jambor <mjambor@suse.cz> + + PR tree-optimization/111873 + * tree-sra.cc (sra_modify_expr): When processing a load which has + a type-incompatible replacement, do not store the contents of the + replacement into the original aggregate when that aggregate is + const. + +2025-05-14 Stefan Schulze Frielinghaus <stefansf@gcc.gnu.org> + + * config/s390/vector.md: Fix tf_to_fprx2 by using vlr instead of + ldr. + +2025-05-14 liuhongt <hongtao.liu@intel.com> + + PR tree-optimization/103771 + * match.pd (cond_expr_convert_p): Extend the match to handle + scalar floating point type. + * tree-vect-patterns.cc + (vect_recog_cond_expr_convert_pattern): Handle floating point + type. + +2025-05-13 Andrew Pinski <quic_apinski@quicinc.com> + + PR tree-optimization/119903 + * gimple-fold.cc (replace_stmt_with_simplification): Reject for + noncall exceptions replacing comparison with itself. + +2025-05-13 Andrew Pinski <quic_apinski@quicinc.com> + + PR middle-end/118868 + * tree-cfg.cc (verify_gimple_assign_unary): Allow pointers + but disallow aggregate types for PAREN_EXPR. + +2025-05-13 Andrew Pinski <quic_apinski@quicinc.com> + + * cfgexpand.cc (vars_ssa_cache::operator()): Update the cache if the use is already + has a cache. + +2025-05-13 Andrew Pinski <quic_apinski@quicinc.com> + + * cfgexpand.cc (vars_ssa_cache::operator()): Reverse the order of the going + through the update list. + +2025-05-13 Richard Biener <rguenther@suse.de> + + * tree-vect-loop.cc (vectorizable_nonlinear_induction): + Remove non-SLP path, use SLP_TREE_VECTYPE. + (vectorizable_induction): Likewise. Drop ncopies variable + which is always 1. + +2025-05-13 Kito Cheng <kito.cheng@sifive.com> + + * common/config/riscv/riscv-common.cc (riscv_extra_ext_flag_table_t): + New. + (riscv_ext_flag_table): Rename to ... + (riscv_extra_ext_flag_table): this, and drop most of definitions + that can obtained from the flags field of the riscv_ext_info_t + structures. + (apply_extra_extension_flags): Use riscv_ext_info_t. + (riscv_ext_is_subset): Ditto. + +2025-05-13 Kito Cheng <kito.cheng@sifive.com> + + * common/config/riscv/riscv-common.cc (riscv_ext_version_table): + Remove. + (standard_extensions_p): Use riscv_ext_info_t. + (get_default_version): Use riscv_ext_info_t. + (riscv_arch_help): Ditto. + +2025-05-13 Kito Cheng <kito.cheng@sifive.com> + + * common/config/riscv/riscv-common.cc + (riscv_implied_info::riscv_implied_info_t): Remove unused + variant. + (struct riscv_implied_info_t): Remove unsued field. + (riscv_implied_info::match): Remove unused variant, and adjust + the logic. + (get_riscv_ext_info): New. + (riscv_implied_info): Remove. + (riscv_ext_info_t::apply_implied_ext): New. + (riscv_combine_info). Remove. + (riscv_subset_list::handle_implied_ext): Use riscv_ext_info_t + rather than riscv_implied_info. + (riscv_subset_list::check_implied_ext): Ditto. + (riscv_subset_list::handle_combine_ext): Use riscv_ext_info_t + rather than riscv_combine_info. + (riscv_minimal_hwprobe_feature_bits): Use riscv_ext_info_t + rather than riscv_implied_info. + +2025-05-13 Kito Cheng <kito.cheng@sifive.com> + + * common/config/riscv/riscv-common.cc (riscv_ext_info_t): New + struct. + (opt_var_ref_t): Adjust order. + (cl_opt_var_ref_t): Ditto. + (riscv_ext_flag_table_t): Adjust order, and add a new construct + that not hold the extension name. + (riscv_version_t): New struct. + (riscv_implied_info_t): Adjust order, and add a new construct that not + hold the extension name. + (apply_extra_extension_flags): New function. + (riscv_ext_infos): New. + (riscv_implied_info): Adjust. + * config/riscv/riscv-opts.h (EXT_FLAG_MACRO): New macro. + (BITMASK_NOT_YET_ALLOCATED): New macro. + +2025-05-13 Kito Cheng <kito.cheng@sifive.com> + + * common/config/riscv/riscv-common.cc (riscv_can_inline_p): Drop + extension flags check from `target_flags`. + * config/riscv/riscv-subset.h (riscv_x_target_flags_isa_mask): + Remove. + * config/riscv/riscv.cc (riscv_x_target_flags_isa_mask): Remove. + +2025-05-13 Kito Cheng <kito.cheng@sifive.com> + + * doc/invoke.texi: Replace hand‑written extension table with + `@include riscv-ext.texi` to pull in auto‑generated entries. + * doc/riscv-ext.texi: New generated definition file + containing formatted documentation entries for each extension. + * Makefile.in: Add riscv-ext.texi to the list of files to be + processed by the Texinfo generator. + * config/riscv/gen-riscv-ext-texi.cc: New. + * config/riscv/t-riscv: Add rule for generating riscv-ext.texi. + +2025-05-13 Kito Cheng <kito.cheng@sifive.com> + + * config/riscv/gen-riscv-ext-opt.cc: New. + * config/riscv/riscv.opt: Drop manual entries for target + options, and include riscv-ext.opt. + * config/riscv/riscv-ext.opt: New. + * config/riscv/riscv-ext.opt.urls: New. + * config.gcc: Add riscv-ext.opt to the list of target options files. + * common/config/riscv/riscv-common.cc (riscv_ext_flag_table): Adjsut target + option variable entry. + (riscv_set_arch_by_subset_list): Adjust target option variable. + * config/riscv/riscv-c.cc (riscv_ext_flag_table): Adjust target + option variable entry. + * config/riscv/riscv-vector-builtins.cc (pragma_intrinsic_flags): + Adjust variable name. + (riscv_pragma_intrinsic_flags_pollute): Adjust variable name. + (riscv_pragma_intrinsic_flags_restore): Ditto. + * config/riscv/t-riscv: Add the rule for generating + riscv-ext.opt. + * config/riscv/riscv-opts.h (TARGET_MIN_VLEN): Update. + (TARGET_MIN_VLEN_OPTS): Update. + +2025-05-13 Kito Cheng <kito.cheng@sifive.com> + + * config/riscv/riscv-ext.def: New file; define extension metadata table. + * config/riscv/riscv-ext-corev.def: New. + * config/riscv/riscv-ext-sifive.def: New. + * config/riscv/riscv-ext-thead.def: New. + * config/riscv/riscv-ext-ventana.def: New. + +2025-05-13 David Malcolm <dmalcolm@redhat.com> + + PR other/116792 + * diagnostic-format-html.cc: Include "diagnostic-format-text.h", + "pretty-print-urlifier.h" and "edit-context.h". + (html_builder::html_builder): Fix indentation in decl. + (html_builder::make_element_for_diagnostic): Split out metadata + code into make_element_for_metadata. Call + make_element_for_source, make_element_for_path, and + make_element_for_patch. + (html_builder::make_element_for_source): New. + (html_builder::make_element_for_path): New. + (html_builder::make_element_for_patch): New. + (html_builder::make_metadata_element): New. + (html_builder::make_element_for_metadata): New. + (html_output_format::get_builder): New. + (selftest::test_html_diagnostic_context::get_builder): New. + (selftest::test_simple_log): Update test to print a quoted string, + and verify that it uses a "gcc-quoted-text" span. + (selftest::test_metadata): New. + (selftest::diagnostic_format_html_cc_tests): Call it. + +2025-05-13 Andrew MacLeod <amacleod@redhat.com> + + * tree-ssanames.cc (set_bitmask): Use int_range_max for temps. + * value-range.cc (irange::set_range_from_bitmask): Handle all + trailing zero values. + +2025-05-12 Pan Li <pan2.li@intel.com> + + * match.pd: Add form 7 matching pattern for unsigned integer + SAT_ADD. + +2025-05-12 Andrew Pinski <quic_apinski@quicinc.com> + + * config/aarch64/aarch64.md (cmov<mode>6): Remove. + +2025-05-12 Andrew Pinski <quic_apinski@quicinc.com> + + PR middle-end/120230 + * optabs.cc (can_compare_p): Remove support for ccp_cmov. + * optabs.def (cmov_optab): Remove. + * optabs.h (can_compare_purpose): Remove ccp_cmov. + +2025-05-12 Andrew MacLeod <amacleod@redhat.com> + + PR tree-optimization/120231 + * range-op-float.cc (operator_cast::fold_range): New variants. + (operator_cast::op1_range): Likewise. + * range-op-mixed.h (operator_cast::fold_range): Likewise. + (operator_cast::op1_range): Likewise + * range-op.cc (range_op_handler::fold_range): Add RO_FIF dispatch. + (range_op_handler::op1_range): Add RO_IFF and RO_FII patterns. + (range_operator::fold_range): Provide new variant default. + (range_operator::op1_range): Likewise. + * range-op.h (range_operator): Add new variant methods. + +2025-05-12 Gaius Mulley <gaiusmod2@gmail.com> + + PR modula2/120188 + * doc/gm2.texi (Semantic checking): Add -fm2-plugin command line option. + +2025-05-12 Thomas Schwinge <tschwinge@baylibre.com> + + * config/nvptx/nvptx-sm.def: Add '61'. + * config/nvptx/nvptx-gen.h: Regenerate. + * config/nvptx/nvptx-gen.opt: Likewise. + * config/nvptx/nvptx.cc (first_ptx_version_supporting_sm): Adjust. + * config/nvptx/nvptx.opt (-march-map=sm_61, -march-map=sm_62): + Likewise. + * config.gcc: Likewise. + * doc/invoke.texi (Nvidia PTX Options): Document '-march=sm_61'. + * config/nvptx/gen-multilib-matches-tests: Extend. + +2025-05-12 Thomas Schwinge <tschwinge@baylibre.com> + + * config/nvptx/nvptx-opts.h (enum ptx_version): Add + 'PTX_VERSION_5_0'. + * config/nvptx/nvptx.cc (ptx_version_to_string) + (ptx_version_to_number): Adjust. + * config/nvptx/nvptx.h (TARGET_PTX_5_0): New. + * config/nvptx/nvptx.opt (Enum(ptx_version)): Add 'EnumValue' + '5.0' for 'PTX_VERSION_5_0'. + * doc/invoke.texi (Nvidia PTX Options): Document '-mptx=5.0'. + +2025-05-12 Dongyan Chen <chendongyan@isrc.iscas.ac.cn> + + * common/config/riscv/riscv-common.cc + (riscv_subset_list::check_conflict_ext): New extension. + * config/riscv/riscv.opt: Ditto. + +2025-05-12 Dongyan Chen <chendongyan@isrc.iscas.ac.cn> + + * common/config/riscv/riscv-common.cc + (riscv_subset_list::check_conflict_ext): New extension. + * config/riscv/riscv.opt: Ditto. + +2025-05-12 Richard Biener <rguenther@suse.de> + + * lto-streamer-out.cc (hash_tree): Hash TYPE_MODE_RAW. + When offloading hash modes as VOIDmode for aggregates + and vectors. + +2025-05-12 Richard Earnshaw <rearnsha@arm.com> + + * doc/extend.texi: Remove the iwmmxt intrinsics. + * doc/md.texi: Remove the iwmmxt-related constraints. + +2025-05-12 Richard Earnshaw <rearnsha@arm.com> + + * config/arm/aout.h (REGISTER_NAMES): Remove iwmmxt registers. + * config/arm/arm.h (FIRST_IWMMXT_REGNUM): Delete. + (LAST_IWMMXT_REGNUM): Delete. + (FIRST_IWMMXT_GR_REGNUM): Delete. + (LAST_IWMMXT_GR_REGNUM): Delete. + (IS_IWMMXT_REGNUM): Delete. + (IS_IWMMXT_GR_REGNUM): Delete. + (FRAME_POINTER_REGNUM): Define relative to CC_REGNUM. + (ARG_POINTER_REGNUM): Define relative to FRAME_POINTER_REGNUM. + (FIRST_PSEUDO_REGISTER): Adjust. + (WREG): Delete. + (WGREG): Delete. + (REG_ALLOC_ORDER): Remove iWMMX registers. + (enum reg_class): Remove iWMMX register classes. + (REG_CLASS_NAMES): Likewise. + (REG_CLASS_CONTENTS): Remove iWMMX registers. + * config/arm/arm.md (CC_REGNUM): Adjust value. + (VFPCC_RENGUM): Likewise. + (APSRQ_REGNUM): Likewise. + (APSRGE_REGNUM): Likewise. + (VPR_REGNUM): Likewise. + (RA_AUTH_CODE): Likewise. + +2025-05-12 Richard Earnshaw <rearnsha@arm.com> + + * config/arm/arm-cpus.in (feature iwmmxt, feature iwmmxt2): Delete. + * config/arm/arm-protos.h (arm_output_iwmmxt_shift_immediate): Delete. + (arm_output_iwmmxt_tinsr): Delete. + (arm_arch_iwmmxt): Delete. + (arm_arch_iwmmxt2): Delete. + * config/arm/arm.h (TARGET_IWMMXT): Delete. + (TARGET_IWMMXT2): Delete. + (TARGET_REALLY_IWMMXT): Delete. + (TARGET_REALLY_IWMMXT2): Delete. + (VALID_IWMMXT_REG_MODE): Delete. + (ARM_HAVE_V8QI_ARITH): Remove iWMMXT. + (ARM_HAVE_V4HI_ARITH): Likewise. + (ARM_HAVE_V2SI_ARITH): Likewise. + (ARM_HAVE_V8QI_LDST): Likewise. + (ARM_HAVE_V4HI_LDST): Likewise. + (ARM_HAVE_V2SI_LDST): Likewise. + (SECONDARY_OUTPUT_RELOAD_CLASS): Remove iWMMXT cases. + (SECONDARY_INPUT_RELOAD_CLASS): Likewise. + * config/arm/arm.cc (arm_arch_iwmmxt): Delete. + (arm_arch_iwmmxt2): Delete. + (arm_option_reconfigure_globals): Don't initialize them. + (arm_register_move_cost): Remove costs for iwmmxt. + (struct minipool_node): Update comment. + (output_move_double): Likewise + (output_return_instruction): Likewise. + (arm_print_operand, cases 'U' and 'w'): Report an error if + used. + (arm_regno_class): Remove iWMMXT cases. + (arm_debugger_regno): Remove iWMMXT cases. + (arm_output_iwmmxt_shift_immediate): Delete. + (arm_output_iwmmxt_tinsr): Delete. + +2025-05-12 Richard Earnshaw <rearnsha@arm.com> + + * config/arm/arm-c.cc (arm_cpu_builtins): Remove predefines + for __IWWMXT__, __IWMMXT2__ and __ARM_WMMX. + +2025-05-12 Richard Earnshaw <rearnsha@arm.com> + + * config/arm/iterators.md (VMMX, VMMX2): Remove mode iterators. + (MMX_char): Remove mode iterator attribute. + +2025-05-12 Richard Earnshaw <rearnsha@arm.com> + + * config/arm/arm.md (core_cycles): Remove iwmmxt attributes. + * config/arm/types.md (autodetect_type): Likewise. + * config/arm/marvell-f-iwmmxt.md: Removed. + * config/arm/t-arm: Remove marvell-f-iwmmxt.md + +2025-05-12 Richard Earnshaw <rearnsha@arm.com> + + * config/arm/arm.cc (arm_option_check_internal): Remove + IWMMXT check. + (arm_options_perform_arch_sanity_checks): Likewise. + (use_return_insn): Likewise. + (arm_init_cumulative_args): Likewise. + (arm_legitimate_index_p): Likewise. + (thumb2_legitimate_index_p): Likewise. + (arm_compute_save_core_reg_mask): Likewise. + (output_return_instruction): Likewise. + (arm_compute_frame_layout): Likewise. + (arm_save_coproc_regs): Likewise. + (arm_hard_regno_mode_ok): Likewise. + (arm_expand_epilogue_apcs_frame): Likewise. + (arm_expand_epilogue): Likewise. + (arm_vector_mode_supported_p): Likewise. + (arm_preferred_simd_mode): Likewise. + (arm_conditional_register_usage): Likewise. + +2025-05-12 Richard Earnshaw <rearnsha@arm.com> + + * config.gcc (arm, --with-abi): Remove iwmmxt abi option. + * config/arm/arm.opt (enum ARM_ABI_IWMMXT): Remove. + * config/arm/arm.h (TARGET_IWMMXT_ABI): Delete. + (enum arm_pcs): Remove ARM_PCS_AAPCS_IWMMXT. + (FUNCTION_ARG_REGNO_P): Remove IWMMXT ABI support. + (CUMULATIVE_ARGS): Remove iwmmxt_nregs. + * config/arm/arm.cc (arm_options_perform_arch_sanity_checks): + Remove IWMMXT ABI checks. + (arm_libcall_value_1): Likewise. + (arm_function_value_regno_p): Likewise. + (arm_apply_result_size): Remove adjustment for IWMMXT ABI. + (arm_function_arg): Remove IWMMXT ABI support. + (arm_arg_partial_bytes): Likewise. + (arm_function_arg_advance): Likewise. + (arm_init_cumulative_args): Don't initialize iwmmxt_nregs. + * doc/invoke.texi (arm -mabi): Remove mention of the iwmmxt + ABI option. + * config/arm/arm-opts.h (enum arm_abi_type): Remove ARM_ABI_IWMMXT. + +2025-05-12 Richard Earnshaw <rearnsha@arm.com> + + * config/arm/arm.md(attr arch): Remove iwmmxt and iwmmxt2. + Remove checks based on TARGET_REALLY_IWMMXT2 from all split + patterns. + (arm_movdi): Likewise. + (*arm_movt): Likewise. + (arch_enabled): Remove test for iwmmxt2. + * config/arm/constraints.md (y, z): Remove register constraints. + (Uy): Remove memory constraint. + * config/arm/thumb2.md (thumb2_pop_single): Remove check for + IWMMXT. + * config/arm/vec-common.md (mov<mode>): Remove check for IWMMXT. + (mul<mode>3): Likewise. + (xor<mode>3): Likewise. + (<absneg_str><mode>2): Likewise. + (@movmisalign<mode>): Likewise. + (@mve_<mve_insn>q_<supf><mode>): Likewise. + (vashl<mode>3): Likewise. + (vashr<mode>3): Likewise. + (vlshr<mode>3): Likewise. + (uavg<mode>3_ceil): Likewise. + +2025-05-12 Richard Earnshaw <rearnsha@arm.com> + + * config/arm/arm.md: Don't include iwmmxt.md. + * config/arm/t-arm (MD_INCLUDES): Remove iwmmxt*.md. + * config/arm/iwmmxt.md: Removed. + * config/arm/iwmmxt2.md: Removed. + * config/arm/unspecs.md: Remove comment referring to + iwmmxt2.md. + (enum unspec): Remove iWMMXt unspec values. + (enum unspecv): Likewise. + * config/arm/predicates.md (imm_or_reg_operand): Delete. + +2025-05-12 Richard Earnshaw <rearnsha@arm.com> + + * config/arm/arm-builtins.cc (enum arm_builtins): Delete iWMMX + builtin values. + (bdesc_2arg): Likewise. + (bdesc_1arg): Likewise. + (arm_init_iwmmxt_builtins): Delete. + (arm_init_builtins): Don't call arm_init_iwmmxt_builtins. + (safe_vector_operand): Use __builtin_unreachable instead of emitting + an iwmmxt builtin. + (arm_general_expand_builtin): Remove iWMMX builtins support. + +2025-05-12 Richard Earnshaw <rearnsha@arm.com> + + * config/arm/arm-cpus.in (arch iwmmxt): treat in the same + way as we would treat XScale. + (arch iwmmxt2): Likewise. + (cpu xscale): Add aliases for iwmmxt and iwmmxt2. + (cpu iwmmxt): Delete. + (cpu iwmmxt2): Delete. + * config/arm/arm-generic.md (load_ldsched_xscale): Remove references + to iwmmxt. + (load_ldsched): Likewise. + * config/arm/arm-tables.opt: Regenerated. + * config/arm/arm-tune.md: Regenerated. + * doc/sourcebuild.texi (arm_iwmmxt_ok): Delete. + +2025-05-12 Richard Earnshaw <rearnsha@arm.com> + + * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Add parentheis + and re-indent. + (SECONDARY_INPUT_RELOAD_CLASS): Likewise. + +2025-05-12 H.J. Lu <hjl.tools@gmail.com> + + PR target/120228 + * config/i386/i386-features.cc (ix86_place_single_vector_set): + Remove df_insn_rescan after emit_insn_*. + (remove_partial_avx_dependency): Likewise. + (replace_vector_const): Likewise. + +2025-05-11 Jan Hubicka <hubicka@ucw.cz> + + * config/i386/i386.cc (ix86_widen_mult_cost): Use sse_op to cost + SSE integer addition. + (ix86_multiplication_cost): Use COSTS_N_INSNS (...)/2 to cost sse + loads. + (ix86_shift_rotate_cost): Likewise. + (ix86_vector_costs::add_stmt_cost): Likewise. + +2025-05-11 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> + + * config/xtensa/xtensa.cc (xtensa_register_move_cost): + Add appropriate move costs between AR_REGS and FP_REGS. + +2025-05-11 Richard Biener <rguenther@suse.de> + + PR tree-optimization/120211 + * tree-vect-stmts.cc (vect_stmt_relevant_p): Only add PHIs + from the loop header to LOOP_VINFO_EARLY_BREAKS_LIVE_IVS. + +2025-05-11 Jiawei <jiawei@iscas.ac.cn> + + * common/config/riscv/riscv-common.cc: New profile. + +2025-05-11 Jiawei <jiawei@iscas.ac.cn> + + * common/config/riscv/riscv-common.cc (struct riscv_profiles): New struct. + (riscv_subset_list::parse_profiles): New parser. + (riscv_subset_list::parse_base_ext): Ditto. + * config/riscv/riscv-subset.h: New def. + * doc/invoke.texi: New option descriptions. + 2025-05-10 H.J. Lu <hjl.tools@gmail.com> PR target/92080 |