blob: 418d175df6b681b1a4d20eec0cf67f3fa0666ae7 [file] [log] [blame]
2024-04-24 Jakub Jelinek <>
PR other/114738
* (get_option_url): Revert 2024-04-17 changes.
* Don't include diagnostic-core.h.
(gcc_urlifier::make_doc_url): Revert 2024-04-17 changes.
* (documentation-root-url): On release branches
append gcc-MAJOR.MINOR.0/ to the default DOCUMENTATION_ROOT_URL.
* doc/install.texi (--with-documentation-root-url=): Document
the change of the default.
* configure: Regenerate.
2024-04-24 Pan Li <>
2023-11-29 Juzhe-Zhong <>
kito-cheng <>
kito-cheng <>
PR target/112431
* config/riscv/ (TARGET_VECTOR ? V_REGS : NO_REGS): New register filters.
* config/riscv/ (no,W21,W42,W84,W41,W81,W82): Ditto.
(no,yes): Ditto.
* config/riscv/ Support highpart register overlap for vwcvt.
2024-04-24 Jose E. Marchesi <>
* config.gcc: Add bpf-c.o as a target object for C and C++.
* config/bpf/ (bpf_target_macros): Move to
* config/bpf/ New file.
(bpf_target_macros): Move from and define BPF CPU
feature macros.
* config/bpf/t-bpf: Add rules to build bpf-c.o.
2024-04-24 Richard Biener <>
PR tree-optimization/114787
* (remove_edge_and_dominated_blocks): When
removing a loop backedge clear niter info and when removing
the last backedge of a loop mark that loop for removal.
2024-04-24 Richard Biener <>
PR tree-optimization/114832
* (slpeel_tree_duplicate_loop_to_edge_cfg):
Fix dominance check.
2024-04-24 Haochen Jiang <>
* config/i386/ (ix86_valid_target_attribute_tree):
Check whether AVX512F is explicitly enabled.
2024-04-24 Pan Li <>
2023-11-30 Juzhe-Zhong <>
* config/riscv/ Support highpart overlap for vext.vf2
2024-04-23 Jakub Jelinek <>
PR target/114810
* config/i386/ (*andn<dwi>3_doubleword_bmi): Split the =&r,r,ro
alternative into =&r,r,r enabled only for x64 and =&r,r,o.
2024-04-23 Jan Hubicka <>
* doc/invoke.texi (-ftree-loop-distribute-patterns): Remove duplicated
sentence about optimization flags implying this.
2024-04-23 Jakub Jelinek <>
* config/darwin.opt (init): Spelling fix: initialiser -> initializer.
2024-04-23 Jakub Jelinek <>
* config/epiphany/epiphany.opt (may-round-for-trunc): Spelling fix:
floatig -> floating.
* config/riscv/riscv.opt (mcsr-check): Spelling fix: CRS -> CSR.
* params.opt (-param=ipa-cp-profile-count-base=): Spelling fix:
frequncy -> frequency.
2024-04-23 Richard Biener <>
PR tree-optimization/114799
* (vect_get_and_check_slp_defs): Properly
update ->any_pattern when swapping operands.
2024-04-23 Andreas Krebbel <>
PR target/114676
* config/s390/ (s390_expand_overloaded_builtin): Use a
MEM_REF with an addend of type ptr_type_node.
2024-04-23 Yang Yujie <>
* config.gcc: Add loongarch-evolution.o.
* config/loongarch/genopts/ Enable generation of
* config/loongarch/t-loongarch: Likewise.
* config/loongarch/genopts/gen-evolution.awk: New file.
* config/loongarch/genopts/ Mark ISA version
of introduction for each ISA evolution feature.
* config/loongarch/ (loongarch_cpu_cpp_builtins):
Define builtin macros for enabled ISA evolutions and the ISA
* config/loongarch/ Use loongarch-evolution.h.
* config/loongarch/loongarch.h: Likewise.
* config/loongarch/loongarch-cpucfg-map.h: Delete.
* config/loongarch/ New file.
* config/loongarch/loongarch-evolution.h: New file.
* config/loongarch/loongarch-opts.h (ISA_HAS_FRECIPE): Define.
(ISA_HAS_DIV32): Likewise.
(ISA_HAS_LAM_BH): Likewise.
(ISA_HAS_LAMCAS): Likewise.
(ISA_HAS_LD_SEQ_SA): Likewise.
2024-04-23 Yang Yujie <>
* config.gcc: Make la64v1.0 the default ISA preset of the lp64d ABI.
* config/loongarch/genopts/loongarch-strings: Define la64v1.0, la64v1.1.
* config/loongarch/genopts/ Likewise.
* config/loongarch/ (LARCH_CPP_SET_PROCESSOR): Likewise.
(loongarch_cpu_cpp_builtins): Likewise.
* config/loongarch/ (get_native_prid): Likewise.
(fill_native_cpu_config): Likewise.
* config/loongarch/ (array_tune): Likewise.
* config/loongarch/loongarch-def.h: Likewise.
* config/loongarch/ (driver_set_m_parm): Likewise.
(driver_get_normalized_m_opts): Likewise.
* config/loongarch/ (default_tune_for_arch): Likewise.
(TUNE_FOR_ARCH): Likewise.
(arch_str): Likewise.
(loongarch_target_option_override): Likewise.
* config/loongarch/loongarch-opts.h (TARGET_uARCH_LA464): Likewise.
(TARGET_uARCH_LA664): Likewise.
* config/loongarch/loongarch-str.h (STR_CPU_ABI_DEFAULT): Likewise.
(STR_ARCH_LA64V1_0): Likewise.
(STR_ARCH_LA64V1_1): Likewise.
* config/loongarch/ (loongarch_cpu_sched_reassociation_width): Likewise.
(loongarch_asm_code_end): Likewise.
* config/loongarch/loongarch.opt: Likewise.
* doc/invoke.texi: Likewise.
2024-04-22 Pan Li <>
* config/riscv/
2024-04-22 Pan Li <>
2023-11-30 Juzhe-Zhong <>
* config/riscv/ (TARGET_VECTOR ? V_REGS : NO_REGS): Fix constraint.
* config/riscv/ (no,W21,W42,W84,W41,W81,W82): Rename vconstraint into group_overlap.
(no,yes): Ditto.
(none,W21,W42,W84,W43,W86,W87): Ditto.
* config/riscv/ Ditto.
2024-04-22 Pan Li <>
2023-12-04 Juzhe-Zhong <>
* config/riscv/ Rostify the constraints.
2024-04-22 Haochen Jiang <>
* common/config/i386/ (processor_alias_table):
Let Sierra Forest map to CPU_TYPE enum.
2024-04-22 Andreas Krebbel <>
* config/s390/ (s390_option_override_internal): Check zarch
flag before enabling -mvx.
2024-04-22 Pan Li <>
2023-11-30 Juzhe-Zhong <>
PR target/112431
* config/riscv/ Add widenning overlap.
2024-04-22 Pan Li <>
2023-12-01 Juzhe-Zhong <>
PR target/112431
* config/riscv/ Support highpart overlap for indexed load.
2024-04-22 Pan Li <>
2023-12-04 Juzhe-Zhong <>
PR target/112431
* config/riscv/ Add highest-number overlap support.
2024-04-22 Pan Li <>
2023-11-30 Juzhe-Zhong <>
PR target/112431
* config/riscv/ Add widening overlap of vf2/vf4.
2024-04-21 Pan Li <>
2023-12-01 Juzhe-Zhong <>
PR target/112431
* config/riscv/ Support highpart overlap for vx/vf.
2024-04-20 Pan Li <>
2023-12-04 Juzhe-Zhong <>
PR target/112431
* config/riscv/ Fix incorrect overlap in v0.
2024-04-20 Pan Li <>
2023-12-11 Juzhe-Zhong <>
PR target/112431
* config/riscv/ Support highest overlap for wv instructions.
2024-04-20 Pan Li <>
2023-12-18 Juzhe-Zhong <>
PR target/112432
* config/riscv/ (none,W21,W42,W84,W43,W86,W87): Add W0.
(none,W21,W42,W84,W43,W86,W87,W0): Ditto.
* config/riscv/ Ditto.
2024-04-19 Jakub Jelinek <>
PR target/114783
* config/i386/ (*avx2_eq<mode>3): Change last operand's
constraint from "jm" to "xjm".
2024-04-19 Jakub Jelinek <>
PR middle-end/114753
* (expand_arith_overflow): Add one missing restore
of flag_trapv before return.
2024-04-19 Tamar Christina <>
PR tree-optimization/114769
(vect_recog_absolute_difference): Have only one success condition.
(vect_recog_abd_pattern): Handle further checks if
vect_recog_absolute_difference fails.
2024-04-19 Cupertino Miranda <>
* config/bpf/ (get_index_for_enum_value): Create
(pack_enum_value): Check for enumerator and error out.
(process_enum_value): Correct string allocation.
2024-04-19 Cupertino Miranda <>
* config/bpf/bpf-protos.h (bpf_add_core_reloc): Renamed function
to bpf_output_move.
* config/bpf/ (bpf_legitimate_address_p): Allow
UNSPEC_CORE_RELOC to match an address.
(bpf_insn_cost): Make UNSPEC_CORE_RELOC immediate moves
expensive to prioritize loads and stores.
(bpf_output_move): Wrapper to call bpf_output_core_reloc.
(bpf_print_operand): Add support to print immediate operands
specified with the UNSPEC_CORE_RELOC.
(bpf_print_operand_address): Likewise, but to support
UNSPEC_CORE_RELOC in addresses.
(bpf_init_builtins): Flag BPF_BUILTIN_CORE_RELOC as NOTHROW.
* config/bpf/ Wrap patterns for MOV, LD and ST
instruction with bpf_output_move call.
(mov_reloc_core<MM:mode>): Remove now spurious define_insn.
* config/bpf/ Added "c" and "C" constraints to
match immediates represented with UNSPEC_CORE_RELOC.
* config/bpf/ (bpf_add_core_reloc): Remove
(bpf_output_core_reloc): Add function to create the CO-RE
relocations based on new matching rules.
* config/bpf/core-builtins.h (bpf_output_core_reloc): Add
* config/bpf/ (core_imm_operand) Add predicate.
(mov_src_operand): Add match for core_imm_operand.
2024-04-19 Jakub Jelinek <>
PR rtl-optimization/114768
* (set_noop_p): Don't return true for MEM <- MEM
sets if src has side-effects or for stores into ZERO_EXTRACT
if ZERO_EXTRACT operand has side-effects.
2024-04-19 Alexandre Oliva <>
* config/t-vxworks (vxw-glimits.h): Don't mangle c23-required
2024-04-18 Sandra Loosemore <>
* config.gcc: Add nios2*-*-* to the list of obsoleted targets.
2024-04-18 Alexandre Oliva <>
* doc/sourcebuild.texi (strndup): Add effective target.
2024-04-18 Tamar Christina <>
PR target/114741
* config/aarch64/ (<optab><mode>3): Remove ^ from alt 2.
(copysign<GPF:mode>3): Use SIMD version of IOR directly.
2024-04-18 Jakub Jelinek <>
PR middle-end/114753
* (expand_mul_overflow): Save flag_trapv and
temporarily clear it for the duration of the function, then
restore previous value.
(expand_vector_ubsan_overflow): Likewise.
(expand_arith_overflow): Likewise.
2024-04-17 Jakub Jelinek <>
PR other/114738
* (get_option_url): On release branches append
* (gcc_urlifier::make_doc_url): Likewise.
2024-04-17 Richard Biener <>
PR tree-optimization/114749
* (vect_analyze_loop_2): Reset
2024-04-17 Georg-Johann Lay <>
PR target/114752
* config/avr/ (avr_print_operand) [CONST_DOUBLE_P]: Handle DFmode.
2024-04-17 Jakub Jelinek <>
PR sanitizer/114743
* (maybe_instrument_call): Don't instrument calls to
2024-04-16 Andrew Pinski <>
PR c/92880
* doc/extend.texi (Using Vector Instructions): Add that
the base_types could be a typedef of them.
2024-04-16 Richard Biener <>
PR tree-optimization/114736
* (vect_optimize_slp_pass::is_cfg_latch_edge):
Do not consider VEC_PERM_EXPRs as PHI use.
2024-04-16 Richard Biener <>
PR tree-optimization/114733
* (vectorizable_nonlinear_induction): Reject
neg induction vectorization of single element vectors.
2024-04-16 Jakub Jelinek <>
* (array_type_nelts): Ensure 2 spaces after . in comment
instead of just one.
(build_variant_type_copy): Likewise.
(tree_check_failed): Likewise.
(build_atomic_base): Likewise.
* (fld_incomplete_type_of): Use an indefinite
article rather than a.
2024-04-16 Fei Gao <>
* config/riscv/ (riscv_expand_conditional_move):
replace or with add when expanding zicond if possible.
2024-04-16 Alexandre Oliva <>
PR middle-end/112938
* (pass_ipa_strub::execute): Drop volatility from
indirected parm.
(maybe_make_indirect): Restore volatility in dereferences.
2024-04-16 Lulu Cheng <>
* config/loongarch/loongarch.opt.urls: Regenerate.
* config/mn10300/mn10300.opt.urls: Likewise.
* config/msp430/msp430.opt.urls: Likewise.
* config/nds32/nds32-elf.opt.urls: Likewise.
* config/nds32/nds32-linux.opt.urls: Likewise.
* config/nds32/nds32.opt.urls: Likewise.
* config/pru/pru.opt.urls: Likewise.
* config/riscv/riscv.opt.urls: Likewise.
* config/rx/rx.opt.urls: Likewise.
* config/sh/sh.opt.urls: Likewise.
* config/sparc/sparc.opt.urls: Likewise.
* doc/invoke.texi: Add indexes for some compilation options.
2024-04-15 Georg-Johann Lay <>
* config/avr/avr-mcus.def: Add: avr16du14, avr16du20, avr16du28,
avr16du32, avr32du14, avr32du20, avr32du28, avr32du32.
* doc/avr-mmcu.texi: Rebuild.
2024-04-15 Robin Dapp <>
PR target/114668
* config/riscv/ Add VLS.
2024-04-15 Richard Biener <>
PR gcov-profile/114715
* (gimplify_switch_expr): Set the location of the
GIMPLE switch.
2024-04-15 H.J. Lu <>
PR target/114696
* config/i386/ (isa): Add apx_ndd_64.
(enabled): Likewise.
(*add<dwi>3_doubleword): Change rjO to r,ro,jO with 8-bit
signed integer constant and enable jO only for apx_ndd_64.
(*add<dwi>3_doubleword_cc_overflow_1): Likewise.
(*and<dwi>3_doubleword): Likewise.
(*<code><dwi>3_doubleword): Likewise.
2024-04-15 Tamar Christina <>
PR tree-optimization/114403
* (vect_transform_loop): Adjust upper bounds for when
peeling for gaps and early break.
2024-04-15 Jakub Jelinek <>
PR c++/114634
* (diag_attr_exclusions): Set attrs[1] to NULL_TREE for
decls with NULL TREE_TYPE.
2024-04-12 Andrew Carlotti <>
* config/aarch64/aarch64-option-extensions.def: Add RCPC to
RCPC3 dependencies.
* config/aarch64/aarch64.h (AARCH64_ISA_RCPC8_4): Add test for
RCPC3 bit
2024-04-12 Andrew Carlotti <>
* config/aarch64/aarch64-arches.def: Add CSSC to V8_9A
2024-04-12 Will Schmidt <>
Peter Bergner <>
PR target/101865
* config/rs6000/ (rs6000_builtin_is_supported): Use
* config/rs6000/ (rs6000_target_modify_macros): Use
* config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Add OPTION_MASK_POWER8.
(ISA_2_7_MASKS_SERVER): Likewise.
* config/rs6000/ (rs6000_option_override_internal): Update
* config/rs6000/rs6000.h (TARGET_SYNC_HI_QI): Use TARGET_POWER8.
* config/rs6000/ (define_attr "isa"): Add p8.
(define_attr "enabled"): Handle it.
(define_insn "prefetch"): Use TARGET_POWER8.
* config/rs6000/rs6000.opt (mpower8-internal): New.
2024-04-12 Jason Merrill <>
Patrick Palka <>
PR c++/113141
* doc/invoke.texi: Document -Wcast-user-defined.
2024-04-12 Tatsuyuki Ishi <>
* config/riscv/riscv.opt.urls: Regenerated.
2024-04-12 Andrew Pinski <>
PR tree-optimization/114666
* match.pd (`!a?b:c`): Reject signed types for the condition.
(`a?~t:t`): Likewise.
2024-04-12 Richard Sandiford <>
* config/aarch64/ (aarch64_output_sme_zero_za): Require
all tiles to have the same suffix.
2024-04-12 Pan Li <>
* config/riscv/ (riscv_vector_float_type_p): Take int
as the return value instead of unsigned.
(riscv_vector_element_bitsize): Ditto.
(riscv_vector_required_min_vlen): Ditto.
(riscv_validate_vector_type): Take int type for local variable(s).
2024-04-12 Jakub Jelinek <>
* (gimple_verify_flow_info): Make the misplaced
returns_twice diagnostics translatable.
2024-04-12 Jakub Jelinek <>
PR sanitizer/114687
* (gsi_safe_insert_before): Only use
edge_before_returns_twice_call if bb_has_abnormal_pred.
(gsi_safe_insert_seq_before): Likewise.
* (bitint_large_huge::lower_call): Only
push to m_returns_twice_calls if bb_has_abnormal_pred.
2024-04-12 Pan Li <>
PR target/114639
* config/riscv/ (riscv_function_value_regno_p): Add
TARGET_VECTOR predicate for V_RETURN regno.
2024-04-11 David Faust <>
* (btf_asm_type_ref): Convert IDs to BTF internally and
fix potentially looking up wrong type for asm debug comment info.
Split into...
(btf_asm_datasec_type_ref): ... This. New.
(btf_asm_datasec_entry): Call it here, instead of btf_asm_type_ref.
(btf_asm_type, btf_asm_array, btf_asm_varent, btf_asm_sou_member)
(btf_asm_func_arg, btf_asm_func_type): Adapt btf_asm_type_ref call.
2024-04-11 David Faust <>
* (btf_asm_sou_member): Always emit non-representable
bitfield members as having 'void' type. Refactor slightly.
2024-04-11 Andrew Carlotti <>
* config/aarch64/aarch64-option-extensions.def:
Remove "memtag", "memtag2", "ssbs", "ssbs2", "ls64", "ls64_v"
and "ls64_accdata" FMV features.
2024-04-11 Andrew Carlotti <>
* config/aarch64/aarch64-option-extensions.def:
Remove "flagm2", "sha1", "pmull", "dit", "dpb", "dpb2", "jscvt",
"fcma", "rcpc2", "frintts", "dgh", "ebf16", "sve-bf16",
"sve-ebf16", "sve-i8mm", "sve2-pmull128", "memtag3", "bti" and
"wfxt" entries.
2024-04-11 Andrew Carlotti <>
* config/aarch64/aarch64-option-extensions.def:
Fix "rmd"->"rdm", and add FMV to "rdma".
* config/aarch64/ (FEAT_RDMA): Define as FEAT_RDM.
2024-04-11 Andrew Carlotti <>
* config/aarch64/ (compare_feature_masks):
Use ARRAY_SIZE and >=0 for iteration bounds.
(aarch64_mangle_decl_assembler_name): Use ARRAY_SIZE.
2024-04-11 Andrew Carlotti <>
* config/aarch64/aarch64-option-extensions.def: Reorder FMV entries.
2024-04-11 Gaius Mulley <>
* doc/standards.texi (Language Standards Supported by GCC):
Add Modula-2 language section.
2024-04-11 Jakub Jelinek <>
PR middle-end/110027
* (asan_emit_stack_protection): Assert offsets[0] is
zero if there is no stack protect guard, otherwise
-ASAN_RED_ZONE_SIZE. If alignb > ASAN_RED_ZONE_SIZE and there is
stack pointer guard, take the ASAN_RED_ZONE_SIZE bytes allocated at
the top of the stack into account when computing base_align_bias.
Recompute use_after_return_class from asan_frame_size + base_align_bias
and set to -1 if that would overflow to 11.
2024-04-11 Richard Biener <>
PR tree-optimization/109596
* (ch_base::copy_headers): Propagate
debug stmts to nonexit->dest rather than exit->dest.
2024-04-11 Richard Biener <>
PR middle-end/114681
* (copy_bb): Key on the remapped stmt
to identify gconds to have condition coverage data remapped.
2024-04-11 Pan Li <>
PR target/114639
* config/riscv/ (riscv_function_value_regno_p): New func
(riscv_get_raw_result_mode): New func imple for hook
* config/riscv/riscv.h (V_RETURN): New macro for vector return.
(GP_RETURN_FIRST): New macro for the first GPR in return.
(GP_RETURN_LAST): New macro for the last GPR in return.
(FP_RETURN_FIRST): Diito but for FPR.
(FUNCTION_VALUE_REGNO_P): Remove as deprecated and replace by
2024-04-11 Indu Bhagat <>
* (btf_asm_type): Do not skip emitting members of
unknown type.
2024-04-11 Indu Bhagat <>
PR debug/112878
* (gen_ctf_sou_type): Check for conditions before
call to ctf_add_slice. Use CTF_K_UNKNOWN type if fail.
2024-04-10 Marek Polacek <>
PR target/114606
* config/i386/ (ix86_option_override_internal): Use
opts_set rather than checking == CF_NONE.
2024-04-10 David Malcolm <>
* doc/analyzer.texi: Various tweaks.
2024-04-10 Richard Biener <>
PR tree-optimization/114672
* (convert_plusminus_to_widen): Only
allow mode-precision results.
2024-04-10 Andre Vieira <>
* config/aarch64/ (TARGET_C_BITINT_TYPE_INFO): Declare MACRO.
(aarch64_bitint_type_info): New function.
(aarch64_return_in_memory_1): Return large _BitInt's in memory.
(aarch64_function_arg_alignment): Adapt to correctly return the ABI
mandated alignment of _BitInt(N) where N > 128 as the alignment of
(aarch64_composite_type_p): Return true for _BitInt(N), where N > 128.
2024-04-10 Andre Vieira <>
* config/aarch64/ (bitint_or_aggr_of_bitint_p): New function.
(aarch64_layout_arg): Don't emit diagnostics for types involving
2024-04-10 Jakub Jelinek <>
PR c++/114462
* tree-core.h (enum annot_expr_kind): Add
annot_expr_maybe_infinite_kind enumerator.
* (gimple_boolify): Handle annot_expr_maybe_infinite_kind.
* (replace_loop_annotate_in_block): Likewise.
(replace_loop_annotate): Likewise. Move loop->finite_p initialization
before the replace_loop_annotate_in_block calls.
* (dump_generic_node): Handle
2024-04-10 Richard Biener <>
2024-03-27 Segher Boessenkool <>
PR rtl-optimization/101523
* (try_combine): Don't do a 2-insn combination if
it does not in fact change I2.
2024-04-10 Peter Bergner <>
PR target/101865
* config/rs6000/rs6000.h (TARGET_DIRECT_MOVE): Define.
* config/rs6000/ (rs6000_option_override_internal): Replace
(rs6000_opt_masks): Neuter the "direct-move" option.
* config/rs6000/ (rs6000_target_modify_macros): Replace
* config/rs6000/rs6000-cpus.def (ISA_2_7_MASKS_SERVER): Delete
(POWERPC_MASKS): Likewise.
* config/rs6000/rs6000.opt (mdirect-move): Remove Mask and Var.
2024-04-10 Hongyu Wang <>
* config/i386/ (sha1msg1): Use "ja" instead of "Bm" for
memory constraint.
(sha1msg2): Likewise.
(sha1nexte): Likewise.
(sha1rnds4): Likewise.
(sha256msg1): Likewise.
(sha256msg2): Likewise.
(sha256rnds2): Likewise.
(aes<aesklvariant>u8): Use "jm" instead of "m" for memory
(*aes<aeswideklvariant>u8): Likewise.
(*encodekey128u32): Use "jr" instead of "r" for register
(*encodekey256u32): Likewise.
2024-04-09 Juergen Christ <>
* config/s390/ (expand_perm_as_replicate): Implement.
(vectorize_vec_perm_const_1): Call new function.
* config/s390/ (vec_splat<mode>): Change to...
(@vec_splat<mode>): ...this.
2024-04-09 David Faust <>
PR debug/114608
* (btf_asm_datasec_entry): Only emit a symbol reference when
generating BTF for BPF CO-RE target.
2024-04-09 Richard Ball <>
* config/aarch64/ (aarch64_pragma_aarch64):
Add functions_nulls parameter to pragma_handlers.
* config/aarch64/aarch64-protos.h: Likewise.
* config/aarch64/aarch64-sve-builtins.h
(enum handle_pragma_index): Add enum to count
number of pragmas to be handled.
* config/aarch64/
(GTY): Add global variable for initial indexes
and change overload_names to an array.
Add pragma handler information.
Add code for overwriting previous
registered_functions entries.
Use an array to register overload_names
for both pragma handler modes.
(add_overloaded_function): Likewise.
Add functions_nulls parameter to pragma_handlers.
Initialize pragma handler information.
(handle_arm_neon_sve_bridge_h): Likewise.
(handle_arm_sme_h): Likewise.
2024-04-09 Richard Biener <>
PR lto/114655
* (merge_flto_options): Add force argument.
(merge_and_complain): Do not force here.
(run_gcc): But here to make the link-time -flto option override
any compile-time one.
2024-04-09 Sebastian Huber <>
* config/rs6000/rtems.h (OS_MISSING_POWERPC64): Define.
2024-04-09 Jørgen Kvalsvik <>
PR gcov-profile/114601
* (condition_uid): Guard fn->cond_uids access.
2024-04-09 Jakub Jelinek <>
PR target/114576
* config/i386/ (isa): Remove aes, add vaes_avx512vl.
(enabled): Remove aes isa check, add vaes_avx512vl.
* config/i386/ (aesenc, aesenclast, aesdec, aesdeclast): Use
jm instead of m for second alternative and emit {evex} prefix
for it if !TARGET_AES. Use noavx,avx,vaes_avx512vl isa attribute.
(vaesdec_<mode>, vaesdeclast_<mode>, vaesenc_<mode>,
vaesenclast_<mode>): Add second alternative with x instead of v
and jm instead of m.
2024-04-09 Gaius Mulley <>
* doc/gm2.texi (Compiler options): Remove -fdebug-trace-quad.
Remove -fdebug-trace-api.
Add -fm2-debug-trace=.
2024-04-09 Yang Yujie <>
PR target/113233
* config/loongarch/ (loongarch_reg_init):
Reinitialize the loongarch_regno_mode_ok cache.
(loongarch_option_override): Same.
(loongarch_save_restore_target_globals): Restore target globals.
(loongarch_set_current_function): Restore the target contexts
for functions.
* config/loongarch/loongarch.h (SWITCHABLE_TARGET): Enable
switchable target context.
* config/loongarch/ (loongarch_init_builtins):
Initialize all builtin functions at startup.
(loongarch_expand_builtin): Turn assertion of builtin availability
into a test.
2024-04-09 Jørgen Kvalsvik <>
PR middle-end/114627
* (instrument_decisions): Generate constant
at the start of loop.
2024-04-09 Jørgen Kvalsvik <>
PR middle-end/114599
* (copy_bb): Copy cond_uids into callee.
(prepend_lexical_block): Remove outdated comment.
(add_local_variables): Remove bad cond_uids copy.
2024-04-09 Jakub Jelinek <>
* (convert_mode_scalar): Fix duplicated words in comment;
into into -> it into.
* function.h (function::cond_uids): Fix duplicated words in comment;
same same -> same.
* config/riscv/
(costs::adjust_vect_cost_per_loop): Fix duplicated words in comment;
model model -> model.
* config/riscv/ (build_base): Fix
duplicated words in comment; for for -> for.
* config/riscv/ (pass_avlprop::execute): Fix
duplicated words in comment; more more -> more.
* config/aarch64/ (host_detect_local_cpu): Fix
duplicated words in comment; be be -> be.
* (masking_vectors): Fix duplicated words in comment;
has has -> has, the the -> the.
* (irange::set_range_from_bitmask): Fix duplicated
words in comment; the the -> the.
* (add_condition_counts): Fix duplicated words in comment;
to to -> to.
* (get_scev_info): Fix duplicated words in comment;
the the -> to the.
* (fully_replaceable): Fix duplicated words in comment;
by by -> by.
* (single_succ_confluence_n): Fix duplicated words
in comment; the the -> the.
* (value_replacement): Fix duplicated words in
comment; can can -> we can.
* (phi_analyzer::process_phi): Fix duplicated words
in comment; it it -> it is.
* (visit_phi): Fix duplicated words in comment;
to to -> to.
* rtl-ssa/accesses.h (use_info::next_debug_insn_use): Fix duplicated
words in comment; if if -> if.
* doc/options.texi (InverseMask): Fix duplicated words; and and -> and.
Change take to takes.
* doc/invoke.texi (fanalyzer-undo-inlining): Fix duplicated words;
be be -> be.
(-minline-memops-threshold): Likewise.
2024-04-09 Jakub Jelinek <>
PR middle-end/114628
* (gimple_lower_bitint): Keep debug stmts
before returns_twice calls as is, don't push them into arg_stmts
vector/move to edges.
2024-04-09 Sergey Bugaev <>
* config.gcc: Recognize aarch64*-*-gnu* targets.
* config/aarch64/aarch64-gnu.h: New file.
2024-04-09 Sergey Bugaev <>
* config/i386/gnu.h: Move GNU/Hurd STARTFILE_SPEC from here...
* config/gnu.h: here.
2024-04-09 Richard Biener <>
PR middle-end/114604
* (enable_ranger): Initialize the global
bitmap obstack.
(disable_ranger): Release it.
2024-04-09 Sebastian Huber <>
* config.gcc (aarch64-*-rtems*): Add target makefile fragment
* config/aarch64/t-aarch64-rtems: New file.
2024-04-09 H.J. Lu <>
PR target/114587
* config/i386/ (ix86_target_macros_internal): Define
__APX_INLINE_ASM_USE_GPR32__ for -mapx-inline-asm-use-gpr32.
2024-04-09 Kewen Lin <>
Andrew Pinski <>
PR target/88309
* config/rs6000/ (rs6000_gimple_fold_builtin): Fix
wrong align passed to function build_aligned_type.
* (is_miss_rate_acceptable): Add an
assertion to ensure align_unit should be positive.
* (build_qualified_type): Update function comments.
2024-04-08 Uros Bizjak <>
PR rtl-optimization/112560
* (try_combine): Replace cc_use_loc with the entire
new RTX only in case cc_use_loc satisfies COMPARISON_P predicate.
Otherwise scan the entire cc_use_loc RTX for CC reg to be updated
with a new mode.
* config/i386/ (@pushf<mode>2): Allow all CC modes for
operand 1.
2024-04-08 Thomas Schwinge <>
* config/gcn/gcn.opt (--param=gcn-preferred-vectorization-factor):
* config/gcn/ (gcn_vectorize_preferred_simd_mode) Use it.
* doc/invoke.texi (Optimize Options): Document it.
2024-04-08 Thomas Schwinge <>
* doc/sourcebuild.texi (Effective-Target Keywords): Document
'asm_goto_with_outputs'. Add comment to 'lra'.
2024-04-08 Martin Jambor <>
PR ipa/113359
* ipa-icf-gimple.h (func_checker): New members
safe_for_total_scalarization_p, m_total_scalarization_limit_known_p
and m_total_scalarization_limit.
(func_checker::func_checker): Initialize new member variables.
* Include tree-sra.h.
(func_checker::func_checker): Initialize new member variables.
(func_checker::safe_for_total_scalarization_p): New function.
(func_checker::compare_operand): Use the new function.
* tree-sra.h (sra_get_max_scalarization_size): Declare.
(sra_total_scalarization_would_copy_same_data_p): Likewise.
* (prepare_iteration_over_array_elts): New function.
(class sra_padding_collecting): New.
(sra_padding_collecting::record_padding): Likewise.
(scalarizable_type_p): Rename to totally_scalarizable_type_p. Add
ability to record padding when requested.
(totally_scalarize_subtree): Split out gathering information necessary
to iterate over array elements to prepare_iteration_over_array_elts.
Fix errornous early exit.
(analyze_all_variable_accesses): Adjust the call to
totally_scalarizable_type_p. Move determining of total scalariation
size limit...
(check_ts_and_push_padding_to_vec): New function.
(sra_total_scalarization_would_copy_same_data_p): Likewise.
2024-04-08 Martin Jambor <>
PR ipa/113907
* ipa-prop.h (class ipa_vr): Declare new overload of a member function
(ipa_jump_functions_equivalent_p): Declare.
* (ipa_vr::equal_p): New function.
(ipa_agg_pass_through_jf_equivalent_p): Likewise.
(ipa_agg_jump_functions_equivalent_p): Likewise.
(ipa_jump_functions_equivalent_p): Likewise.
* ipa-cp.h (values_equal_for_ipcp_p): Declare.
* (values_equal_for_ipcp_p): Make function public.
* Include alloc-pool.h, symbol-summary.h, sreal.h,
ipa-cp.h and ipa-prop.h.
(func_checker::compare_gimple_call): Comapre jump functions.
2024-04-08 Richard Sandiford <>
PR target/114607
* config/aarch64/
(svusdot_impl::expand): Fix botched attempt to swap the operands
for svsudot.
2024-04-08 Tatsuyuki Ishi <>
* config/riscv/riscv.opt: Add -mtls-dialect to configure TLS flavor.
* config.gcc: Add --with-tls configuration option to change the
default TLS flavor.
* config/riscv/riscv.h: Add TARGET_TLSDESC determined from
-mtls-dialect and with_tls defaults.
* config/riscv/riscv-opts.h: Define enum riscv_tls_type for the
two TLS flavors.
* config/riscv/riscv-protos.h: Define SYMBOL_TLSDESC symbol type.
* config/riscv/ Add instruction sequence for TLSDESC.
* config/riscv/ (riscv_symbol_insns): Add instruction
sequence length data for TLSDESC.
(riscv_legitimize_tls_address): Add lowering of TLSDESC.
* doc/install.texi: Document --with-tls for RISC-V.
* doc/invoke.texi: Document -mtls-dialect for RISC-V.
2024-04-08 Jakub Jelinek <>
PR target/114605
* config/s390/ (s390_const_int_pool_entry_p): Punt
if mem doesn't have MODE_INT mode, or pool constant doesn't
have MODE_INT mode, or if pool constant mode is smaller than
mem mode. If mem mode is different from pool constant mode,
try to simplify subreg. If that doesn't work, punt, if it
does, use the simplified constant instead of the constant pool
* config/s390/ (movdi from const pool peephole): If
either low or high 32-bit part is zero, just emit move insn
instead of move + ior.
2024-04-08 Richard Biener <>
PR tree-optimization/114624
* (final_value_replacement_loop):
Get at the PHI arg location before releasing the PHI node.
2024-04-08 Pan Li <>
* config/riscv/ (build_one): Pass
required_ext arg when invoke add function.
(build_th_loadstore): Ditto.
(struct vcreate_def): Ditto.
(struct read_vl_def): Ditto.
(struct vlenb_def): Ditto.
* config/riscv/ (function_builder::add_function):
Introduce new arg required_ext to fill in the register func.
(function_builder::add_unique_function): Ditto.
(function_builder::add_overloaded_function): Ditto.
(expand_builtin): Leverage required_extensions_specified to
check if the required extension is provided.
* config/riscv/riscv-vector-builtins.h (reqired_ext_to_isa_name): New
func impl to convert the required_ext enum to the extension name.
(required_extensions_specified): New func impl to predicate if
the required extension is well feeded.
2024-04-08 Iain Sandoe <>
* config/darwin.h (LINK_COMMAND_SPEC_A): Update coverage
2024-04-08 demin.han <>
* config/riscv/ Use length()
2024-04-08 Pan Li <>
* config/riscv/ (struct pragma_intrinsic_flags): New
struct to hold all intrinisc related flags.
(riscv_pragma_intrinsic_flags_pollute): New func to pollute
the intrinsic flags and backup original flags.
(riscv_pragma_intrinsic_flags_restore): New func to restore
the flags from the backup intrinsic flags.
(riscv_pragma_intrinsic): Pollute the flags and register all
possible builtin types and functions, then restore and reinit.
* config/riscv/riscv-protos.h (reinit_builtins): New func
decl to reinit after flags pollution.
(riscv_option_override): New extern func decl.
* config/riscv/ (register_builtin_types_on_null):
New func to register builtin types if null.
(DEF_RVV_TYPE): Ditto.
(reinit_builtins): New func impl to reinit after flags pollution.
(expand_builtin): Return
target rtx after error_at.
* config/riscv/ (riscv_vector_int_type_p): New predicate
func to tell one tree type is integer or not.
(riscv_vector_float_type_p): New predicate func to tell one tree
type is float or not.
(riscv_vector_element_bitsize): New func to get the element bitsize
of a vector tree type.
(riscv_vector_required_min_vlen): New func to get the required min vlen
of a vector tree type.
(riscv_validate_vector_type): New func to validate the tree type
is valid on flags.
(riscv_return_value_is_vector_type_p): Leverage the func
riscv_validate_vector_type to do the tree type validation.
(riscv_arguments_is_vector_type_p): Ditto.
(riscv_override_options_internal): Ditto.
2024-04-08 Lulu Cheng <>
PR target/112919
* config/loongarch/ (la664_align): Newly defined
function that sets alignment rules under the LA664 microarchitecture.
* config/loongarch/
(loongarch_target_option_override): If not optimizing for size, set
the default alignment to what the target wants.
* config/loongarch/loongarch-tune.h (struct loongarch_align): Add
new member variables jump and loop.
2024-04-06 H.J. Lu <>
PR target/114590
* config/i386/ (x86_64_shld): Use explicit shift count in
AT&T syntax.
(x86_64_shld_ndd): Likewise.
(x86_shld): Likewise.
(x86_shld_ndd): Likewise.
(x86_64_shrd): Likewise.
(x86_64_shrd_ndd): Likewise.
(x86_shrd): Likewise.
(x86_shrd_ndd): Likewise.
2024-04-06 Jørgen Kvalsvik <>
PR middle-end/114599
* (add_local_variables): Copy cond_uids mappings.
2024-04-05 David Malcolm <>
PR analyzer/114588
* (color_dict): Add "valid" and "invalid" as
color capability names.
* doc/invoke.texi: Document them in description of GCC_COLORS.
* text-art/ Include "diagnostic-color.h".
(text_art::get_style_from_color_cap_name): New.
* text-art/types.h (get_style_from_color_cap_name): New decl.
2024-04-05 Alex Coplan <>
* config/aarch64/ (struct alias_walker):
Fix double space after const qualifier on valid ().
2024-04-05 Martin Jambor <>
PR ipa/113964
* (ipa_param_adjustments::modify_call):
Force values obtined through pass-through maps to the expected
split type.
2024-04-05 Mark Wielaard <>
* common.opt.urls: Regenerate.
2024-04-05 Richard Sandiford <>
PR target/114603
* config/aarch64/ (@aarch64_pred_cnot<mode>): Replace
(@aarch64_ptrue_cnot<mode>): ...this, requiring operand 1 to be
a ptrue.
(*cnot<mode>): Require operand 1 to be a ptrue.
* config/aarch64/ (svcnot_impl::expand):
Use aarch64_ptrue_cnot<mode> for _x operations that are predicated
with a ptrue. Represent other _x operations as fully-defined _m
2024-04-05 Jakub Jelinek <>
PR tree-optimization/114566
* (update_epilogue_loop_vinfo): Don't clear
2024-04-05 Richard Biener <>
PR middle-end/114599
PR gcov-profile/114115
* (ifunc_ref_map): Do not use auto_bitmap.
(is_caller_ifunc_resolver): Optimize bitmap_bit_p/bitmap_set_bit
(symtab_node::check_ifunc_callee_symtab_nodes): Properly
allocate ifunc_ref_map here.
2024-04-04 Martin Jambor <>
PR ipa/111571
(ipa_param_body_adjustments::common_initialization): Avoid creating
duplicate replacement entries.
2024-04-04 Vladimir N. Makarov <>
PR rtl-optimization/114415
* (add_insn_mem_dependence): Add memory check for mem argument.
(sched_analyze_1): Treat stack pointer modification as memory read.
(sched_analyze_2, sched_analyze_insn): Add memory guard for processing pending_read_mems.
* sched-int.h (deps_desc): Add comment to pending_read_mems.
2024-04-04 Tobias Burnus <>
* config/nvptx/ (main): Call
gcc_init_libintl and diagnostic_color_init.
2024-04-04 H.J. Lu <>
PR target/114587
* config/i386/ (ix86_target_macros_internal): Define
__APX_F__ when APX is enabled.
2024-04-04 Jørgen Kvalsvik <>
* (expand_builtin_fork_or_exec): Check
* (main): Add -fno-condition-coverage to OBSTACK.
* common.opt: Add new options -fcondition-coverage and
* doc/gcov.texi: Add --conditions documentation.
* doc/invoke.texi: Add -fcondition-coverage documentation.
* (free_after_compilation): Free cond_uids.
* function.h (struct function): Add cond_uids.
* Link gcov on -fcondition-coverage.
* gcov-counter.def (GCOV_COUNTER_CONDS): New.
* (tag_conditions): New.
* gcov-io.h (GCOV_TAG_CONDS): New.
* (class condition_info): New.
(condition_info::condition_info): New.
(condition_info::popcount): New.
(struct coverage_info): New.
(add_condition_counts): New.
(output_conditions): New.
(print_usage): Add -g, --conditions.
(process_args): Likewise.
(output_intermediate_json_line): Output conditions.
(read_graph_file): Read condition counters.
(read_count_file): Likewise.
(file_summary): Print conditions.
(accumulate_line_info): Accumulate conditions.
(output_line_details): Print conditions.
* (next_cond_uid): New.
(reset_cond_uid): New.
(shortcut_cond_r): Set condition discriminator.
(tag_shortcut_cond): New.
(gimple_associate_condition_with_expr): New.
(shortcut_cond_expr): Set condition discriminator.
(gimplify_cond_expr): Likewise.
(gimplify_function_tree): Call reset_cond_uid.
* (can_early_inline_edge_p): Check
* (pass_split_functions::gate): Likewise.
* (finish_optimization_passes): Likewise.
* (struct condcov): New declaration.
(cov_length): Likewise.
(cov_blocks): Likewise.
(cov_masks): Likewise.
(cov_maps): Likewise.
(cov_free): Likewise.
(instrument_decisions): New.
(read_thunk_profile): Control output to file.
(branch_prob): Call find_conditions, instrument_decisions.
(init_branch_prob): Add total_num_conds.
(end_branch_prob): Likewise.
* tree-core.h (struct tree_exp): Add condition_uid.
* (struct conds_ctx): New.
(topological_cmp): New.
(index_of): New.
(single_p): New.
(single_edge): New.
(contract_edge_up): New.
(struct outcomes): New.
(conditional_succs): New.
(condition_index): New.
(condition_uid): New.
(masking_vectors): New.
(emit_assign): New.
(emit_bitwise_op): New.
(make_top_index_visit): New.
(make_top_index): New.
(paths_between): New.
(struct condcov): New.
(cov_length): New.
(cov_blocks): New.
(cov_masks): New.
(cov_maps): New.
(cov_free): New.
(find_conditions): New.
(struct counters): New.
(find_counters): New.
(resolve_counter): New.
(resolve_counters): New.
(instrument_decisions): New.
(tree_profiling): Check condition_coverage_flag.
(pass_ipa_tree_profile::gate): Likewise.
* tree.h (SET_EXPR_UID): New.
2024-04-04 Richard Sandiford <>
PR target/114577
* config/aarch64/aarch64-sve-builtins.h (aarch64_sve::lookup_fndecl):
* config/aarch64/ (aarch64_sve::lookup_fndecl):
New function.
* config/aarch64/ (is_undef): Likewise.
(svset_neonq_impl::expand): Optimise expansions whose first argument
is undefined.
2024-04-04 Richard Biener <>
PR tree-optimization/114485
* (vect_can_peel_nonlinear_iv_p):
vect_step_op_neg isn't OK for partial vectors but only
for unknown niter.
2024-04-04 Jakub Jelinek <>
PR c++/114537
* (native_encode_initializer): Look through
2024-04-04 Jakub Jelinek <>
PR tree-optimization/114555
* (bitint_large_huge::handle_cast): For
m_bitfld_load and save_cast_conditional add any needed PHIs
and adjust t4 accordingly.
2024-04-04 Richard Biener <>
PR tree-optimization/114551
* (split_loop): If the guard is
only conditionally evaluated rewrite computations with
possibly undefined overflow to unsigned arithmetic.
2024-04-04 Eugene Rozenfeld <>
PR gcov-profile/113765
* (afdo_annotate_cfg): Don't set full_profile to true
2024-04-03 Mark Wielaard <>
* config/i386/i386.opt.urls: Regenerate.
2024-04-03 H.J. Lu <>
PR tree-optimization/114115
* cgraph.h (symtab_node): Add check_ifunc_callee_symtab_nodes.
(cgraph_node): Add called_by_ifunc_resolver.
* (symbol_table::compile): Call
* (check_ifunc_resolver): New.
(ifunc_ref_map): Likewise.
(is_caller_ifunc_resolver): Likewise.
(symtab_node::check_ifunc_callee_symtab_nodes): Likewise.
* (gimple_gen_ic_func_profiler): Disable indirect
call profiling for IFUNC resolvers and their callees.
2024-04-03 Tobias Burnus <>
* (compile_offload_image): Prefix 'offload_args'
suffix by the target name.
2024-04-03 Tobias Burnus <>
* doc/install.texi (amdgcn-*-amdhsa): Update Newlib recommendation
and update wording for LLVM 18 release.
2024-04-03 Tobias Burnus <>
PR other/111966
* config/gcn/ (get_arch): New; moved -march= flag
handling from ...
(main): ... here; call it to handle --with-arch config option
and -march= commandline.
2024-04-03 Jakub Jelinek <>
PR middle-end/114552
* (emit_push_insn): Only use store_constructor for
immediate_const_ctor_p if int_expr_size matches size.
2024-04-03 Richard Biener <>
PR tree-optimization/114557
PR tree-optimization/114480
* (release_phi_node): Return PHIs from
allocation buckets not covered by free_phinodes to GC.
(remove_phi_node): Release the PHI LHS before freeing the
PHI node.
* (vectorizable_live_operation): Get PHI lhs
before releasing it.
2024-04-03 Jiahao Xu <>
* config/loongarch/ Remove unused code.
* config/loongarch/loongarch-protos.h
(loongarch_split_lsx_copy_d): Remove.
(loongarch_split_lsx_insert_d): Ditto.
(loongarch_split_lsx_fill_d): Ditto.
* config/loongarch/
(loongarch_split_lsx_copy_d): Ditto.
(loongarch_split_lsx_insert_d): Ditto.
(loongarch_split_lsx_fill_d): Ditto.
* config/loongarch/ (lsx_vpickve2gr_du): Remove splitter.
(lsx_vpickve2gr_<lsxfmt_f>): Ditto.
(abs<mode>2): Remove expander.
(vabs<mode>2): Rename 2 abs<mode>2.
2024-04-02 Christophe Lyon <>
* config/aarch64/aarch64-option-extensions.def: Fix comment.
2024-04-02 Tom Tromey <>
* (print_dw_val) <dw_val_class_loc>: Don't
print newline when not recursing.
2024-04-02 Iain Sandoe <>
* config/ (darwin_override_options): Update the
clang major version value in the dsymutil check.
2024-04-02 Iain Sandoe <>
* config/ (darwin_override_options): Reduce the debug
level to 2 if dsymutil cannot handle .macinfo sections.
2024-04-02 Yang Yujie <>
* config/loongarch/t-loongarch: Add loongarch-def-arrays.h
2024-04-02 mengqinggang <>
Lulu Cheng <>
Xi Ruoyao <>
* config.gcc: Add --with-tls option to change TLS flavor.
* config/loongarch/genopts/ Add -mtls-dialect to
configure TLS flavor.
* config/loongarch/loongarch-def.h (struct loongarch_target): Add
* config/loongarch/ (la_driver_init): Add tls
* config/loongarch/ (loongarch_init_target): Add
(loongarch_config_target): Ditto.
(loongarch_update_gcc_opt_status): Ditto.
* config/loongarch/loongarch-opts.h (loongarch_init_target): Ditto.
(TARGET_TLS_DESC): New define.
* config/loongarch/ (loongarch_symbol_insns): Add TLS
DESC instructions sequence length.
(loongarch_legitimize_tls_address): New TLS DESC instruction sequence.
(loongarch_option_override_internal): Add la_opt_tls_dialect.
(loongarch_option_restore): Add la_target.tls_dialect.
* config/loongarch/ (@got_load_tls_desc<mode>): Normal
code model for TLS DESC.
(got_load_tls_desc_off64): Extreme cmode model for TLS DESC.
* config/loongarch/loongarch.opt: Regenerate.
* config/loongarch/loongarch.opt.urls: Ditto.
* doc/invoke.texi: Add a description of the compilation option
2024-04-02 Lulu Cheng <>
* config/loongarch/loongarch.opt.urls: Regenerate.
2024-04-01 Yang Yujie <>
* config/loongarch/genopts/ Mark -m[no-]recip as
aliases to -mrecip={all,none}, respectively.
* config/loongarch/loongarch.opt: Regenerate.
* config/loongarch/loongarch-def.h (ABI_FPU_64): Rename to...
(ABI_FPU64_P): ...this.
(ABI_FPU_32): Rename to...
(ABI_FPU32_P): ...this.
(ABI_FPU_NONE): Rename to...
(ABI_NOFPU_P): ...this.
(ABI_LP64_P): Define.
* config/loongarch/ (loongarch_init_print_operand_punct):
Merged into loongarch_global_init.
(loongarch_cpu_option_override): Renamed to
(loongarch_option_override_internal): Move the work after
loongarch_config_target into loongarch_target_option_override.
(loongarch_global_init): Define.
(loongarch_option_override): Call loongarch_global_init
* config/loongarch/ (loongarch_parse_mrecip_scheme):
Split the parsing of -mrecip=<string> from
(loongarch_generate_mrecip_scheme): Define. Split from
(loongarch_target_option_override): Define. Renamed from
(loongarch_init_misc_options): Define. Split from
* config/loongarch/loongarch-opts.h (loongarch_target_option_override):
New prototype.
(loongarch_parse_mrecip_scheme): New prototype.
(loongarch_init_misc_options): New prototype.
(TARGET_ABI_LP64): Simplify with ABI_LP64_P.
* config/loongarch/loongarch.h (TARGET_RECIP_DIV): Simplify.
Do not reference specific CPU architecture (LA664).
2024-04-01 Lulu Cheng <>
* doc/invoke.texi: Add descriptions for the compilation
2024-03-31 Jeff Law <>
* config/riscv/ (xiangshan_jump): Add branch, jalr, ret
and sfb_alu.
2024-03-31 Pan Li <>
* config/riscv/ (expand_builtin): Take
the term built-in over builtin.
2024-03-31 Pan Li <>
* common/config/riscv/ (riscv_subset_list::parse):
Remove unused var decl.
2024-03-30 Xi Ruoyao <>
PR target/114175
* config/mips/ (mips_setup_incoming_varargs): Only skip
mips_function_arg_advance for TYPE_NO_NAMED_ARGS_STDARG_P
functions if arg.type is NULL.
2024-03-29 Andrew Pinski <>
* (lto_end_uncompression): Use
fatal_error instead of internal_error when ZSTD
is not enabled.
2024-03-28 Jeff Law <>
* config/h8300/ (zero_extendqihi*): Add output
template for reg->reg case where the regs don't match.
2024-03-28 Gaius Mulley <(no_default)>
PR modula2/114517
* doc/gm2.texi: Mention gm2 treats a # in the first column
as a preprocessor directive unless -fno-cpp is supplied.
2024-03-28 Jakub Jelinek <>
* (estimate_bb_frequencies): Fix comment typo,
scalling -> scaling.
2024-03-28 Jakub Jelinek <>
PR tree-optimization/112303
* profile-count.h (profile_count::operator+): Perform
addition in uint64_t variable and set m_val to MIN of that
val and max_count.
(profile_count::operator+=): Likewise.
(profile_count::operator-=): Formatting fix.
(profile_count::apply_probability): Use safe_scale_64bit
even in the int overload.
2024-03-28 Jan Hubicka <>
PR middle-end/113907
* (sem_function::init): Hash PHI operands
(sem_function::compare_phi_node): Add argument about preserving order
2024-03-28 Richard Biener <>
PR middle-end/114480
* (compute_idf): Use simpler bitmap iteration,
touch work_set only when phi_insertion_points changed.
2024-03-28 Palmer Dabbelt <>
* config/riscv/riscv.h (REGISTER_NAMES): Add vxsat.
2024-03-27 Segher Boessenkool <>
PR rtl-optimization/101523
* (try_combine): Don't do a 2-insn combination if
it does not in fact change I2.
2024-03-27 Jakub Jelinek <>
* doc/invoke.texi (Spec Files): Use @var{S} instead of S,
@var{X} instead of X etc. for other placeholders.
2024-03-27 Richard Biener <>
PR tree-optimization/114057
* (vect_bb_slp_mark_live_stmts): Mark
BB reduction remain defs as scalar uses.
2024-03-27 Victor Do Nascimento <>
* config/aarch64/aarch64-option-extensions.def (rcpc3):
Fix FEATURE_STRING field to "lrcpc3".
2024-03-27 Victor Do Nascimento <>
* config/aarch64/aarch64-option-extensions.def: Add LSE128
AARCH64_OPT_EXTENSION, adding it as a dependency for the D128
* doc/invoke.texi (AArch64 Options): Document +lse128.
2024-03-26 Richard Sandiford <>
* config/aarch64/aarch64-feature-deps.h: Use constexpr for
out-of-line statics.
2024-03-26 Cupertino Miranda <>
PR target/114431
* (get_name_for_datasec_entry): Add function.
(btf_asm_datasec_entry): Print label when possible.
2024-03-26 Richard Ball <>
PR target/114272
* config/aarch64/aarch64-cores.def (AARCH64_CORE):
Change SCHEDULER_IDENT from cortexa55 to cortexa53
for Cortex-A510 and Cortex-A520.
2024-03-26 Jakub Jelinek <>
PR middle-end/111151
* (extract_muldiv_1) <case MAX_EXPR>: Punt for
MULT_EXPR altogether, or for MAX_EXPR if c is -1.
2024-03-26 Jakub Jelinek <>
PR sanitizer/111736
* (instrument_expr): Punt on non-generic address space
2024-03-26 Richard Biener <>
PR tree-optimization/114471
* (vectorizable_operation): Verify operand
types are compatible with the result type.
2024-03-26 Richard Biener <>
PR tree-optimization/114464
* (vectorizable_recurr): Verify the latch
vector type is compatible with what we chose for the recurrence.
2024-03-26 Jakub Jelinek <>
* (update_loop_exit_probability_scale_dom_bbs):
Fix comment typo - multple -> multiple.
* config/i386/x86-tune.def (X86_TUNE_ACCUMULATE_OUTGOING_ARGS):
2024-03-26 YunQiang Su <>
* config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Predefine
__mips_strict_alignment if STRICT_ALIGNMENT.
2024-03-25 Richard Biener <>
* config.gcc (amdgcn): Add gfx1036 entries.
* config/gcn/gcn-hsa.h (NO_XNACK): Likewise.
(gcn_local_sym_hash): Likewise.
* config/gcn/gcn-opts.h (enum processor_type): Likewise.
(TARGET_GFX1036): New macro.
* config/gcn/ (gcn_option_override): Handle gfx1036.
(gcn_omp_device_kind_arch_isa): Likewise.
(output_file_start): Likewise.
* config/gcn/gcn.h (TARGET_CPU_CPP_BUILTINS): Add __gfx1036__.
(TARGET_CPU_CPP_BUILTINS): Rename __gfx1030 to __gfx1030__.
* config/gcn/gcn.opt: Add gfx1036.
* config/gcn/ (EF_AMDGPU_MACH_AMDGCN_GFX1036): New.
(main): Handle gfx1036.
* config/gcn/t-omp-device: Add gfx1036 isa.
* doc/install.texi (amdgcn): Add gfx1036.
* doc/invoke.texi (-march): Likewise.
2024-03-25 Pan Li <>
* config/riscv/ (riscv_pragma_intrinsic): Remove error
when V is disabled and init the RVV types and intrinic APIs.
* config/riscv/ (expand_builtin): Report
error if V ext is disabled.
* config/riscv/ (riscv_return_value_is_vector_type_p):
(riscv_arguments_is_vector_type_p): Ditto.
(riscv_vector_cc_function_p): Ditto.
* config/riscv/riscv_vector.h: Remove error if V is disable.
2024-03-23 John David Anglin <>
* config/pa/ (pa_output_global_address): Handle
UNSPEC_DLTIND14R addresses.
* config/pa/pa.h (PRINT_OPERAND_ADDRESS): Output "RT'" for
2024-03-23 Jakub Jelinek <>
PR tree-optimization/114433
* (bitint_large_huge::handle_cast): For
m_bitfld_load check save_first rather than m_first.
2024-03-23 Jakub Jelinek <>
PR tree-optimization/114425
* (build_bitint_stmt_ssa_conflicts): Handle
_Complex large/huge _BitInt types like the large/huge _BitInt types.
2024-03-23 Jakub Jelinek <>
PR middle-end/111683
* (pcom_worker::suitable_component_p): If has_write
and comp_step is RS_NONZERO, return false if any reference in the
component doesn't have DR_STEP a multiple of access size.
2024-03-23 Takayuki 'January June' Suwa <>
* config/xtensa/ Add new split pattern described above.
2024-03-22 Georg-Johann Lay <>
* config/avr/ (avr_set_current_function): Adjust diagnostic
for deprecated SIGNAL and INTERRUPT usage without respective header.
2024-03-22 Andrew Stubbs <>
* config/gcn/ (*memory_barrier): Split into RDNA and !RDNA.
(atomic_load<mode>): Adjust RDNA cache settings.
(atomic_store<mode>): Likewise.
(atomic_exchange<mode>): Likewise.
2024-03-22 Andrew Stubbs <>
* config/gcn/ (gcn_vectorize_preferred_simd_mode): Prefer V32 on
RDNA devices.
2024-03-22 Andrew Stubbs <>
* config.gcc (amdgcn): Add gfx1103 entries.
* config/gcn/gcn-hsa.h (NO_XNACK): Likewise.
(gcn_local_sym_hash): Likewise.
* config/gcn/gcn-opts.h (enum processor_type): Likewise.
(TARGET_GFX1103): New macro.
* config/gcn/ (gcn_option_override): Handle gfx1103.
(gcn_omp_device_kind_arch_isa): Likewise.
(output_file_start): Likewise.
(gcn_hsa_declare_function_name): Use TARGET_RDNA3, not just gfx1100.
* config/gcn/gcn.h (TARGET_CPU_CPP_BUILTINS): Add __gfx1103__.
* config/gcn/gcn.opt: Add gfx1103.
* config/gcn/ (EF_AMDGPU_MACH_AMDGCN_GFX1103): New.
(main): Handle gfx1103.
* config/gcn/t-omp-device: Add gfx1103 isa.
* doc/install.texi (amdgcn): Add gfx1103.
* doc/invoke.texi (-march): Likewise.
2024-03-22 Andrew Stubbs <>
* (do_compare_rtx_and_jump): Clear excess bits in vector
(do_compare_and_jump): Remove now-redundant similar code.
* (expand_fn_using_insn): Clear excess bits in vector
(add_mask_and_len_args): Likewise.
2024-03-22 Pan Li <>
* config/riscv/ (riscv_cpu_cpp_builtins): Add pre-define
macro __riscv_v_fixed_vlen when zvl.
* config/riscv/ (riscv_handle_rvv_vector_bits_attribute):
New static func to take care of the RVV types decorated by
the attributes.
2024-03-22 Andrew Pinski <>
PR c/109619
* (fold_builtin_1): Use error_operand_p
instead of checking against ERROR_MARK.
(fold_builtin_2): Likewise.
(fold_builtin_3): Likewise.
2024-03-22 Jakub Jelinek <>
PR sanitizer/111736
* (ubsan_expand_null_ifn, instrument_mem_ref): Avoid
SANITIZE_NULL instrumentation for non-generic address spaces
for which targetm.addr_space.zero_address_valid (as) is true.
2024-03-22 Jakub Jelinek <>
PR tree-optimization/114405
* (bitint_large_huge::lower_mergeable_stmt):
Set rprec to limb_prec rather than 0 if tprec is divisible by
limb_prec. In the last bf_cur handling, set rprec to (tprec + bo_bit)
% limb_prec rather than tprec % limb_prec and use just rprec instead
of rprec + bo_bit. For build_bit_field_ref offset, divide
(tprec + bo_bit) by limb_prec rather than just tprec.
2024-03-22 Christoph Müllner <>
PR target/114194
* config/riscv/ Split VI into VI_FRAC and VI_NOFRAC.
2024-03-22 Jeff Law <>
* config/riscv/ (riscv_expand_prologue): Add missing stack
tie for scalable and final stack adjustment if needed.
Co-authored-by: Raphael Zinsly <>
2024-03-22 Pan Li <>
PR target/114352
* common/config/riscv/ (struct riscv_func_target_info):
New struct for func decl and target name.
(struct riscv_func_target_hasher): New hasher for hash table mapping
from the fn_decl to fn_target_name.
(riscv_func_decl_hash): New func to compute the hash for fn_decl.
(riscv_func_target_hasher::hash): New func to impl hash interface.
(riscv_func_target_hasher::equal): New func to impl equal interface.
(riscv_cmdline_subset_list): New static var for cmdline subset list.
(riscv_func_target_table_lazy_init): New func to lazy init the func
target hash table.
(riscv_func_target_get): New func to get target name from hash table.
(riscv_func_target_put): New func to put target name into hash table.
(riscv_func_target_remove_and_destory): New func to remove target
info from the hash table and destory it.
(riscv_parse_arch_string): Set the static var cmdline_subset_list.
* config/riscv/riscv-subset.h (riscv_cmdline_subset_list): New static
var for cmdline subset list.
(riscv_func_target_get): New func decl.
(riscv_func_target_put): Ditto.
(riscv_func_target_remove_and_destory): Ditto.
* config/riscv/ (riscv_target_attr_parser::parse_arch):
Take cmdline_subset_list instead of current_subset_list when clone.
(riscv_process_target_attr): Record the func target info to hash table.
(riscv_option_valid_attribute_p): Add new arg tree fndel.
* config/riscv/ (riscv_declare_function_name): Consume the
func target info and print the arch message.
2024-03-22 Pan Li <>
PR target/114352
* common/config/riscv/ (riscv_subset_list::parse):
Replace implied, combine and check to func finalize.
(riscv_subset_list::finalize): New func impl to take care of
implied, combine ext and related checks.
* config/riscv/riscv-subset.h: Add func decl for finalize.
* config/riscv/ (riscv_target_attr_parser::parse_arch):
Finalize the ext before return succeed.
* config/riscv/ (riscv_set_current_function): Reinit the
machine mode before when set cur function.
2024-03-21 Andrew Stubbs <>
* config/gcn/ (gcn_expand_builtin_1): Comment correction.
2024-03-21 Andrew Stubbs <>
* config/gcn/gcn-hsa.h (ASM_SPEC): Pass -mattr=+cumode.
2024-03-21 Andrew Stubbs <>
* config/gcn/ (main): Add an hsa_memory_free calls for each
device_malloc call.
2024-03-21 liuhongt <>
PR tree-optimization/114396
* (vect_peel_nonlinear_iv_init): Pass utype
and true to wi::from_mpz.
2024-03-21 Richard Biener <>
PR tree-optimization/111736
* (instrument_derefs): Do not instrument accesses
to non-generic address-spaces.
2024-03-21 Richard Biener <>
PR tree-optimization/113727
* (analyze_access_subtree): Do not allow
replacements in subtrees when grp_partial_lhs.
2024-03-21 liuhongt <>
PR middle-end/114347
* doc/invoke.texi: Document -fexcess-precision=16.
2024-03-20 Cupertino Miranda <>
* config/bpf/ (bpf_core_get_index): Check if
field contains a DECL_NAME.
2024-03-20 Cupertino Miranda <>
* config/bpf/ (cpf_core_reloc_add): Correct for new code.
Add assert to validate the string is set.
* config/bpf/ (cr_final): Make string struct
field as const.
(process_enum_value): Correct for field type change.
(process_type): Set access string to "0".
2024-03-20 Cupertino Miranda <>
* config/bpf/ (core_field_info): Add
support for POINTER_PLUS_EXPR in the root of the field expression.
(bpf_core_get_index): Likewise.
(pack_field_expr): Make the BTF type to point to the structure
related node, instead of its pointer type.
(make_core_safe_access_index): Correct to new code.
2024-03-20 Xi Ruoyao <>
PR target/114407
* config/loongarch/ (loongarch_config_target):
Fix typo in diagnostic message, enabing -> enabling.
2024-03-20 Jakub Jelinek <>
PR target/114175
* config/visium/ (visium_setup_incoming_varargs): Only skip
if arg.type is NULL.
2024-03-20 Jakub Jelinek <>
PR target/114175
* config/nios2/ (nios2_setup_incoming_varargs): Only skip
nios2_function_arg_advance for TYPE_NO_NAMED_ARGS_STDARG_P functions
if arg.type is NULL.
2024-03-20 Jakub Jelinek <>
PR target/114175
* config/nds32/ (nds32_setup_incoming_varargs): Only skip
function arg advance for TYPE_NO_NAMED_ARGS_STDARG_P functions
if arg.type is NULL.
2024-03-20 Jakub Jelinek <>
PR target/114175
* config/m32r/ (m32r_setup_incoming_varargs): Only skip
function arg advance for TYPE_NO_NAMED_ARGS_STDARG_P functions
if arg.type is NULL.
2024-03-20 Jakub Jelinek <>
PR target/114175
* config/ft32/ (ft32_setup_incoming_varargs): Only skip
function arg advance for TYPE_NO_NAMED_ARGS_STDARG_P functions
if arg.type is NULL.
2024-03-20 Jakub Jelinek <>
PR target/114175
* config/epiphany/ (epiphany_setup_incoming_varargs): Only
skip function arg advance for TYPE_NO_NAMED_ARGS_STDARG_P functions
if arg.type is NULL.
2024-03-20 Jakub Jelinek <>
PR target/114175
* config/csky/ (csky_setup_incoming_varargs): Only skip
csky_function_arg_advance for TYPE_NO_NAMED_ARGS_STDARG_P functions
if arg.type is NULL.
2024-03-20 Yury Khrustalev <>
* config/aarch64/aarch64-sys-regs.def: Copy from Binutils.
2024-03-20 Jakub Jelinek <>
PR tree-optimization/114365
* (bitint_large_huge::handle_load): When adding
a PHI node, set iv2 to its result afterwards.
2024-03-20 Jakub Jelinek <>
* (update_profile_after_ch): Fix comment typo:
probabbility -> probability.
(ch_base::copy_headers): Fix comment typo: itrations -> iterations.
2024-03-20 Jakub Jelinek <>
PR bootstrap/114369
* system.h (vec_step): Define to vec_step_ when compiling
with clang on PowerPC.
2024-03-20 demin.han <>
PR target/112651
* config/riscv/riscv-opts.h (enum riscv_autovec_lmul_enum): Rename
(enum rvv_max_lmul_enum): Ditto
* config/riscv/ (preferred_simd_mode): Ditto
* config/riscv/ (costs::record_potential_unexpected_spills): Ditto
(costs::better_main_loop_than_p): Ditto
* config/riscv/riscv.opt: Replace -param=riscv-autovec-lmul with -mrvv-max-lmul
2024-03-20 Richard Biener <>
PR middle-end/113396
* (get_ref_base_and_extent): Use index range
bounds only if they fit within the address-range constraints
of offset_int.
2024-03-20 Chenghui Pan <>
* config/loongarch/
(loongarch_hard_regno_mode_ok_uncached): Combine UNITS_PER_FP_REG and
(loongarch_hard_regno_nregs): Ditto.
(loongarch_class_max_nregs): Ditto.
(loongarch_get_separate_components): Ditto.
(loongarch_process_components): Ditto.
* config/loongarch/loongarch.h (UNITS_PER_FPREG): Ditto.
2024-03-20 Chenghui Pan <>
* config/loongarch/ (vec_cmp<mode><mode256_i>): Remove checking
of loongarch_expand_vec_cmp()'s return value.
(vec_cmpu<ILASX:mode><mode256_i>): Ditto.
* config/loongarch/ (vec_cmp<mode><mode_i>): Ditto.
(vec_cmpu<ILSX:mode><mode_i>): Ditto.
* config/loongarch/loongarch-protos.h
(loongarch_expand_vec_cmp): Change loongarch_expand_vec_cmp()'s return
type from bool to void.
* config/loongarch/ (loongarch_expand_vec_cmp): Ditto.
2024-03-20 Chenghui Pan <>
* config/loongarch/loongarch-protos.h
(loongarch_cfun_has_cprestore_slot_p): Delete.
(loongarch_adjust_insn_length): Delete.
(current_section_name): Delete.
(loongarch_split_symbol_type): Delete.
* config/loongarch/
(loongarch_case_values_threshold): Delete.
(loongarch_spill_class): Delete.
2024-03-20 Lewis Hyatt <>
PR c++/111918
* diagnostic-core.h (enum diagnostic_t): Add DK_ANY special flag.
* (diagnostic_option_classifier::classify_diagnostic):
Make use of DK_ANY to indicate a diagnostic was initially enabled.
(diagnostic_context::diagnostic_enabled): Do not change the type of
a diagnostic if the saved classification is type DK_ANY.
2024-03-19 Martin Jambor <>
PR ipa/108802
PR ipa/114254
* (ipa_get_stmt_member_ptr_load_param): Fix case looking
at COMPONENT_REFs directly from a PARM_DECL, also recognize loads from
a pointer parameter.
(ipa_analyze_indirect_call_uses): Also recognize loads from a pointer
parameter, also recognize the case when pfn pointer is loaded in its
own BB.
2024-03-19 Vladimir N. Makarov <>
PR target/99829
* (lra_constraints): Prevent removing insn
with reverse equivalence to memory if the memory was reloaded.
2024-03-19 David Malcolm <>
PR middle-end/114348
(json_stderr_output_format::machine_readable_stderr_p): New.
(json_file_output_format::machine_readable_stderr_p): New.
(sarif_stream_output_format::machine_readable_stderr_p): New.
(sarif_file_output_format::machine_readable_stderr_p): New.
* (diagnostic_context::action_after_output): Move
"fnotice" to before "finish" call, so that we still have the
(fnotice): Bail out if the user requested one of the
machine-readable diagnostic output formats on stderr.
* diagnostic.h
(diagnostic_output_format::machine_readable_stderr_p): New pure
virtual function.
(diagnostic_text_output_format::machine_readable_stderr_p): New.
(diagnostic_context::get_output_format): New accessor.
2024-03-19 Edwin Lu <>
PR target/114175
* config/riscv/ (riscv_setup_incoming_varargs): Only skip
riscv_funciton_arg_advance for TYPE_NO_NAMED_ARGS_STDARG_P functions
if arg.type is NULL
2024-03-19 Jonathan Wakely <>
* doc/install.texi (Prerequisites): Document use of autogen for
2024-03-19 Richard Biener <>
PR tree-optimization/114151
PR tree-optimization/114269
PR tree-optimization/114322
PR tree-optimization/114074
* (chrec_fold_multiply): Restrict the use of
unsigned arithmetic when actual overflow on constant operands
is observed.
2024-03-19 Jakub Jelinek <>
PR target/114175
* config/arc/ (arc_setup_incoming_varargs): Only skip
arc_function_arg_advance for TYPE_NO_NAMED_ARGS_STDARG_P functions
if arg.type is NULL.
2024-03-19 Xi Ruoyao <>
PR target/114175
* config/loongarch/
(loongarch_setup_incoming_varargs): Only skip
loongarch_function_arg_advance for TYPE_NO_NAMED_ARGS_STDARG_P
functions if arg.type is NULL.
2024-03-19 Christophe Lyon <>
PR target/114323
* config/arm/
(function_instance::reads_global_state_p): Take CP_READ_MEMORY
into account.
2024-03-19 Jakub Jelinek <>
PR target/114175
* config/alpha/ (alpha_setup_incoming_varargs): Only skip
function_arg_advance for TYPE_NO_NAMED_ARGS_STDARG_P functions
if arg.type is NULL.
2024-03-19 Jakub Jelinek <>
PR target/114175
* config/rs6000/ (setup_incoming_varargs): Only skip
rs6000_function_arg_advance_1 for TYPE_NO_NAMED_ARGS_STDARG_P functions
if arg.type is NULL.
2024-03-19 Richard Biener <>
PR tree-optimization/114375
* (vect_build_slp_tree_2): Compute the
load permutation for masked loads but reject it when any
such is necessary.
* (vectorizable_load): Reject masked
2024-03-19 Mary Bennett <>
* common/config/riscv/ Create XCVbi extension
* config/riscv/riscv.opt: Likewise.
* config/riscv/ Implement cv_branch<mode> pattern
for cv.beqimm and cv.bneimm.
* config/riscv/ Add CORE-V branch immediate to RISC-V
branch instruction pattern.
* config/riscv/ Implement constraints
cv_bi_s5 - signed 5-bit immediate.
* config/riscv/ Implement predicate
const_int5s_operand - signed 5 bit immediate.
* doc/sourcebuild.texi: Add XCVbi documentation.
2024-03-19 Chen Jiawei <>
* config/riscv/riscv-cores.def (RISCV_TUNE): New def.
(RISCV_CORE): Ditto.
* config/riscv/riscv-opts.h (enum riscv_microarchitecture_type): New
* config/riscv/ New def.
* config/riscv/ New include.
* config/riscv/ New file.
2024-03-18 David Malcolm <>
PR analyzer/110902
PR analyzer/110928
PR analyzer/111305
PR analyzer/111441
* selftest.h (ASSERT_NE_AT): New macro.
2024-03-18 Uros Bizjak <>
PR target/111822
* config/i386/ (smode_convert_cst): New function
to handle SImode, DImode and TImode immediates, generalized from
(timode_convert_cst): Remove.
(scalar_chain::convert_op): Unify from
general_scalar_chain::convert_op and timode_scalar_chain::convert_op.
(general_scalar_chain::convert_op): Remove.
(timode_scalar_chain::convert_op): Remove.
(timode_scalar_chain::convert_insn): Update the call to
renamed timode_convert_cst.
* config/i386/i386-features.h (class scalar_chain):
Redeclare convert_op as protected class member.
(class general_calar_chain): Remove convert_op.
(class timode_scalar_chain): Ditto.
2024-03-18 Jan Hubicka <>
* config/i386/ Add file missed in the previous commit.
2024-03-18 Jan Hubicka <>
Karthiban Anbazhagan <>
* common/config/i386/cpuinfo.h (get_amd_cpu): Recognize znver5.
* common/config/i386/ (processor_names): Add znver5.
(processor_alias_table): Likewise.
* common/config/i386/i386-cpuinfo.h (processor_types): Add new zen
(processor_subtypes): Add znver5.
* config.gcc (x86_64-*-* |...): Likewise.
* config/i386/ (host_detect_local_cpu): Let
march=native detect znver5 cpu's.
* config/i386/ (ix86_target_macros_internal): Add
* config/i386/ (m_ZNVER5): New definition
(processor_cost_table): Add znver5.
* config/i386/ (ix86_reassociation_width): Likewise.
* config/i386/i386.h (processor_type): Add PROCESSOR_ZNVER5
(PTA_ZNVER5): New definition.
* config/i386/ (define_attr "cpu"): Add znver5.
(Scheduling descriptions) Add
* config/i386/x86-tune-costs.h (znver5_cost): New definition.
* config/i386/ (ix86_issue_rate): Add znver5.
(ix86_adjust_cost): Likewise.
* config/i386/x86-tune.def (avx512_move_by_pieces): Add m_ZNVER5.
(avx512_store_by_pieces): Add m_ZNVER5.
* doc/extend.texi: Add znver5.
* doc/invoke.texi: Likewise.
* config/i386/ Rename to; combine znver4 and znver5 Scheduler.
2024-03-18 Georg-Johann Lay <>
* config/avr/ (CX2, CX3, CX4): New constraints.
* config/avr/avr-protos.h (avr_xor_noclobber_dconst): New proto.
* config/avr/ (avr_xor_noclobber_dconst): New function.
* config/avr/ (xorhi3, *xorhi3): Add "d,0,CX2,X" alternative.
(xorpsi3, *xorpsi3): Add "d,0,CX3,X" alternative.
(xorsi3, *xorsi3): Add "d,0,CX4,X" alternative.
2024-03-18 liuhongt <>
PR target/114334
* config/i386/ (mode): Add new number V8BF,V16BF,V32BF.
(MODEF248): New mode iterator.
(ssevecmodesuffix): Hanlde BF and HF.
* config/i386/ (andnot<mode>3): Extend to HF/BF.
(<code><mode>3): Ditto.
2024-03-18 John David Anglin <>
PR rtl-optimization/112415
* config/pa/ (pa_emit_move_sequence): Revise condition
for symbolic memory operands.
(pa_legitimate_address_p): Revise LO_SUM condition.
* config/pa/pa.h (INT14_OK_STRICT): Revise define. Move
comment about GNU linker to
* config/pa/ (floating_point_store_memory_operand):
Revise condition for symbolic memory operands. Update
2024-03-17 John David Anglin <>
* config/pa/ (pa_delegitimize_address): Delegitimize UNSPEC_TP.
2024-03-16 Jakub Jelinek <>
PR target/114175
* config/i386/ (ix86_setup_incoming_varargs): Only skip
ix86_function_arg_advance for TYPE_NO_NAMED_ARGS_STDARG_P functions
if arg.type is NULL.
2024-03-16 Jakub Jelinek <>
PR tree-optimization/114329
* (struct bitint_large_huge): Declare
build_bit_field_ref method.
(bitint_large_huge::build_bit_field_ref): New method.
(bitint_large_huge::lower_mergeable_stmt): Use it.
2024-03-15 YunQiang Su <>
* config/riscv/riscv.opt.urls: Regenerated.
* config/rs6000/sysv4.opt.urls: Likewise.
* config/xtensa/xtensa.opt.urls: Likewise.
2024-03-15 Jakub Jelinek <>
* (resolve_simple_move): Fix comment typo,
betwee -> between.
* (class line_event): Fix comment typo,
betweeen -> between.
2024-03-15 Jakub Jelinek <>
PR target/114339
* config/i386/ (ix86_expand_int_sse_cmp) <case LE>: Fix
a pasto, compare code against LE rather than GE.
2024-03-15 Joe Ramsay <>
* match.pd: Fix truncation pattern for -fno-signed-zeroes
2024-03-15 Jakub Jelinek <>
PR middle-end/114332
* (expand_expr_real_1): EXTEND_BITINT also CALL_EXPR results.
2024-03-15 Jakub Jelinek <>
PR tree-optimization/113466
* (bitint_large_huge): Add m_returns_twice_calls
(bitint_large_huge::bitint_large_huge): Initialize it.
(bitint_large_huge::~bitint_large_huge): Release it.
(bitint_large_huge::lower_call): Remember ECF_RETURNS_TWICE call stmts
before which at least one statement has been inserted.
(gimple_lower_bitint): Move argument loads before ECF_RETURNS_TWICE
calls to a different block and add corresponding PHIs.
2024-03-15 YunQiang Su <>
* config/mips/mips.opt: Support -mstrict-align, and use
TARGET_STRICT_ALIGN as the flag; keep -m(no-)unaligned-access
as alias.
* config/mips/mips.h: Use TARGET_STRICT_ALIGN.
* config/mips/mips.opt.urls: Regenerate.
* doc/invoke.texi: Document -m(no-)strict-algin for MIPSr6.
2024-03-15 Tejas Belagod <>
PR middle-end/114108
* (vect_recog_abd_pattern): Call
vect_convert_output with the correct vecitype.
2024-03-15 Chenghui Pan <>
* config/loongarch/ (lasx_xvpermi_q_<LASX:mode>):
Remove masking of operand 3.
2024-03-14 Jason Merrill <>
* tree-core.h (enum clobber_kind): Clarify CLOBBER_OBJECT_*
2024-03-14 John David Anglin <>
PR target/114288
* config/pa/ (pa_legitimate_address_p): Don't allow
14-bit displacements before reload for modes that may use
a floating-point load or store.
2024-03-14 David Faust <>
* config/bpf/bpf.h (INT8_TYPE): Change to signed char.
2024-03-14 Max Filippov <>
* config/xtensa/ (movsi_internal): Move l32i and s32i
patterns ahead of the l32i.n and s32i.n.
2024-03-14 Jakub Jelinek <>
* config/gcn/gcn-hsa.h (ABI_VERSION_SPEC): Fix comment typo.
2024-03-14 Jakub Jelinek <>
PR middle-end/113907
* (sem_item_optimizer::merge_classes): Reset
SSA_NAME_RANGE_INFO and SSA_NAME_PTR_INFO on successfully ICF merged
2024-03-14 Xi Ruoyao <>
* config/loongarch/ (any_ge): Remove.
(sge<u>_<X:mode><GPR:mode>): Remove.
2024-03-14 Jakub Jelinek <>
PR target/114310
* config/aarch64/ (aarch64_expand_compare_and_swap): For
TImode force newval into a register.
2024-03-14 Chung-Lin Tang <>
* tree.h (OMP_CLAUSE_MAP_READONLY): New macro.
* tree-core.h (struct GTY(()) tree_base): Adjust comments for new
uses of readonly_flag bit in OMP_CLAUSE_MAP_READONLY and
* (dump_omp_clause): Add support for printing
2024-03-14 Andreas Krebbel <>
* config/s390/ (s390_encode_section_info): Adjust the check
for misaligned symbols.
* config/s390/s390.opt: Improve documentation.
2024-03-14 Jakub Jelinek <>
* (edge_before_returns_twice_call): Copy all
flags and probability from ad_edge to e edge. If CDI_DOMINATORS
are computed, recompute immediate dominator of other_edge->src
and other_edge->dest.
(gsi_safe_insert_before, gsi_safe_insert_seq_before): Update *iter
for the returns_twice call case to the gsi_for_stmt (stmt) to deal
with update it for bb splitting.
2024-03-14 liuhongt <>
* config/i386/
(general_scalar_chain::convert_op): Handle REG_EH_REGION note.
(convert_scalars_to_vector): Ditto.
* config/i386/i386-features.h (class scalar_chain): New
memeber control_flow_insns.
2024-03-13 Jakub Jelinek <>
PR middle-end/114319
(imm_store_chain_info::try_coalesce_bswap): For 32-bit targets
allow matching __builtin_bswap64 if there is bswapsi2 optab.
2024-03-13 Stefan Schulze Frielinghaus <>
* config/s390/ (s390_secondary_reload): Guard
2024-03-13 Stefan Schulze Frielinghaus <>
* config/s390/s390-builtin-types.def: Update to reflect latest
* config/s390/s390-builtins.def: Streamline vector builtins with
2024-03-13 Stefan Schulze Frielinghaus <>
* config/s390/s390-builtins.def (vec_permi): Deprecate.
(vec_ctd): Deprecate.
(vec_ctd_s64): Deprecate.
(vec_ctd_u64): Deprecate.
(vec_ctsl): Deprecate.
(vec_ctul): Deprecate.
(vec_ld2f): Deprecate.
(vec_st2f): Deprecate.
(vec_insert): Deprecate overloads with bool vectors.
2024-03-13 Jakub Jelinek <>
PR middle-end/114313
* (bitint_large_huge::limb_access): Use
TYPE_SIZE of TREE_TYPE (var) rather than TYPE_SIZE of type.
(bitint_large_huge::handle_load): Pass NULL_TREE rather than
rhs_type to limb_access for the bitfield load cases.
(bitint_large_huge::lower_mergeable_stmt): Pass NULL_TREE rather than
lhs_type to limb_access if nlhs is non-NULL.
2024-03-13 Jakub Jelinek <>
PR sanitizer/112709
* (maybe_create_ssa_name, maybe_cast_to_ptrmode,
build_check_stmt, maybe_instrument_call, asan_expand_mark_ifn): Use
gsi_safe_insert_before instead of gsi_insert_before.
2024-03-13 Jakub Jelinek <>
PR sanitizer/112709
* gimple-iterator.h (gsi_safe_insert_before,
gsi_safe_insert_seq_before): Declare.
* Include gimplify.h.
(edge_before_returns_twice_call, adjust_before_returns_twice_call,
gsi_safe_insert_before, gsi_safe_insert_seq_before): New functions.
* (instrument_mem_ref, instrument_pointer_overflow,
instrument_nonnull_arg, instrument_nonnull_return): Use
gsi_safe_insert_before instead of gsi_insert_before.
(maybe_instrument_pointer_overflow): Use force_gimple_operand,
gimple_seq_add_seq_without_update and gsi_safe_insert_seq_before
instead of force_gimple_operand_gsi.
(instrument_object_size): Likewise. Use gsi_safe_insert_before
instead of gsi_insert_before.
2024-03-12 Richard Biener <>
PR tree-optimization/114121
* (chrec_fold_plus_1): Guard recursion with
converted operand properly.
(chrec_fold_multiply): Likewise. Handle missed recursion.
2024-03-12 Jakub Jelinek <>
PR sanitizer/112709
* (has_stmt_been_instrumented_p): Don't instrument call
stores on the caller side unless it is a call to a builtin or
internal function or function doesn't return by hidden reference.
(maybe_instrument_call): Likewise.
(instrument_derefs): Instrument stores to RESULT_DECL if
returning by hidden reference.
2024-03-12 Jakub Jelinek <>
PR tree-optimization/114293
* (strlen_pass::handle_builtin_strlen): If
max is smaller than min, set max to ~(size_t)0.
2024-03-12 Pan Li <>
* config/riscv/ (riscv_ext_version_value): Fix
code style greater than 80 chars.
(riscv_cpu_cpp_builtins): Fix useless empty line, indent
with 3 space(s) and argument unalignment.
2024-03-12 Richard Biener <>
PR tree-optimization/114297
* (vectorizable_live_operation): Pass in the
live stmts SLP node to vect_create_epilog_for_reduction.
2024-03-12 Andrew Pinski <>
PR driver/114314
* common.opt (fmultiflags): Add RejectNegative.
2024-03-11 Szabolcs Nagy <>
* config/aarch64/ Rename aarch_ to aarch64_.
* config/aarch64/aarch64.opt: Likewise.
* config/aarch64/ (aarch64_update_cpp_builtins): Likewise.
* config/aarch64/ (aarch64_expand_prologue): Likewise.
(aarch64_expand_epilogue): Likewise.
(aarch64_post_cfi_startproc): Likewise.
(aarch64_handle_no_branch_protection): Copy and rename.
(aarch64_handle_standard_branch_protection): Likewise.
(aarch64_handle_pac_ret_protection): Likewise.
(aarch64_handle_pac_ret_leaf): Likewise.
(aarch64_handle_pac_ret_b_key): Likewise.
(aarch64_handle_bti_protection): Likewise.
(aarch64_override_options): Update branch protection validation.
(aarch64_handle_attr_branch_protection): Likewise.
* config/arm/aarch-common-protos.h (aarch_validate_mbranch_protection):
Pass branch protection type description as argument.
(struct aarch_branch_protect_type): Move from aarch-common.h.
* config/arm/ (aarch_handle_no_branch_protection):
(aarch_handle_standard_branch_protection): Remove.
(aarch_handle_pac_ret_protection): Remove.
(aarch_handle_pac_ret_leaf): Remove.
(aarch_handle_pac_ret_b_key): Remove.
(aarch_handle_bti_protection): Remove.
(aarch_validate_mbranch_protection): Pass branch protection type
description as argument.
* config/arm/aarch-common.h (enum aarch_key_type): Remove.
(struct aarch_branch_protect_type): Remove.
* config/arm/ (arm_cpu_builtins): Remove aarch_ra_sign_key.
* config/arm/ (arm_handle_no_branch_protection): Copy and rename.
(arm_handle_standard_branch_protection): Likewise.
(arm_handle_pac_ret_protection): Likewise.
(arm_handle_pac_ret_leaf): Likewise.
(arm_handle_bti_protection): Likewise.
(arm_configure_build_target): Update branch protection validation.
* config/arm/arm.opt: Remove aarch_ra_sign_key.
2024-03-11 Richard Biener <>
PR middle-end/114299
* (internal_get_tmp_var): When gimplification
of VAL failed, return a decl.
2024-03-11 Jakub Jelinek <>
PR tree-optimization/114278
* (maybe_optimize_var): If large/huge _BitInt vars are no
longer addressable, set DECL_NOT_GIMPLE_REG_P on them.
2024-03-11 Eric Botcazou <>
PR debug/113519
PR debug/113777
* (gen_enumeration_type_die): In the reverse case,
generate the DIE with the same parent as in the regular case.
2024-03-11 Andrew Pinski <>
PR middle-end/95351
* (merge_truthop_with_opposite_arm): Use
the type of the operands of the comparison and not the type
of the comparison.
2024-03-10 jlaw <>
PR tree-optimization/110199
(avail_exprs_stack::simplify_binary_operation): Generalize handling
of MIN_EXPR/MAX_EXPR to allow additional simplifications. Canonicalize
comparison operands for other cases.
2024-03-10 Pan Li <>
* (vectorizable_store): Enable the assert
during transform process.
(vectorizable_load): Ditto.
2024-03-10 jlaw <>
PR target/102250
* doc/install.texi: Document need for python when building
RISC-V compilers.
2024-03-10 jlaw <>
PR target/111362
* (optimize_mode_switching): Only process
2024-03-09 Georg-Johann Lay <>
* config/avr/ Fix typos in comment, indentation glitches
and some other nits.
2024-03-09 Jakub Jelinek <>
PR target/114284
* (try_fwprop_subst_pattern): Don't propagate
src containing MEMs unless prop.likely_profitable_p ().
2024-03-09 Xi Ruoyao <>
* config/loongarch/ (loongarch_print_operand_reloc):
Support 'Q' for R_LARCH_RELAX for TLS IE.
(loongarch_output_move): Use 'Q' to print R_LARCH_RELAX for TLS
* config/loongarch/ (ld_from_got<mode>): Likewise.
2024-03-09 Georg-Johann Lay <>
* config/avr/ (avr_rtx_costs_1) [PLUS]: Determine cost for
usum_widenqihi and add_zero_extend1.
[MINUS]: Determine costs for udiff_widenqihi, sub+zero_extend,
* config/avr/ (*addhi3.sign_extend1, *subhi3.sign_extend2):
Compute exact insn lengths.
(*usum_widenqihi3): Allow input operands to commute.
2024-03-09 Jakub Jelinek <>
* config/i386/i386.opt.urls: Regenerate.
2024-03-09 Lulu Cheng <>
* config/loongarch/ (atomic_cas_value_strong<mode>):
In loongarch64, a sign extension operation is added when
operands[2] is a register operand and the mode is SImode.
2024-03-08 Martin Jambor <>
PR ipa/113757
* (redirect_all_calls): Remove code adding SSAs to
2024-03-08 Vladimir N. Makarov <>
PR target/113790
* (assign_by_spills): Set up all_spilled_pseudos
for non-reload pseudo too.
2024-03-08 David Faust <>
* config/bpf/ (bpf_expand_cpymem, bpf_expand_setmem): Do
not attempt inline expansion if size is above threshold.
* config/bpf/bpf.opt (-minline-memops-threshold): New option.
* doc/invoke.texi (eBPF Options) <-minline-memops-threshold>:
2024-03-08 Richard Biener <>
PR tree-optimization/114269
PR tree-optimization/114074
* (chrec_fold_plus_1): Handle sign-conversions
in the third CASE_CONVERT case as well.
(chrec_fold_multiply): Handle sign-conversions from unsigned
by performing the operation in the unsigned type.
2024-03-08 Georg-Johann Lay <>
* config/avr/ (*addhi3_zero_extend.ashift1): New pattern.
* config/avr/ (avr_rtx_costs_1) [PLUS]: Compute its cost.
2024-03-08 Jakub Jelinek <>
* (fix_up_fall_thru_edges): Fix up checking assert,
asm_noperands < 0 means it is not asm goto too.
2024-03-08 Jakub Jelinek <>
PR target/38534
* config/i386/i386.opt (mnoreturn-no-callee-saved-registers): New
* config/i386/ (ix86_set_func_type): Don't use
ix86_noreturn_no_callee_saved_registers is enabled.
* doc/invoke.texi (-mnoreturn-no-callee-saved-registers): Document.
2024-03-08 Jakub Jelinek <>
PR debug/113918
* (gen_field_die): Emit DW_AT_export_symbols
on anonymous unions or structs for -gdwarf-5 or -gno-strict-dwarf.
2024-03-08 demin.han <>
PR target/114264
* config/riscv/ Fix ICE
2024-03-08 Haochen Gui <>
* (forward_propagate_into): Return false for volatile set
source rtx.
2024-03-07 Wilco Dijkstra <>
PR target/113618
* config/aarch64/ (aarch64_copy_one_block): Remove.
(aarch64_expand_cpymem): Emit single load/store only.
(aarch64_set_one_block): Emit single stores only.
2024-03-07 Robin Dapp <>
PR middle-end/114196
* (vect_can_peel_nonlinear_iv_p): Merge
vectorization guards.
2024-03-07 Jonathan Wakely <>
* doc/cppopts.texi: Remove incorrect claim about -dD not
outputting predefined macros.
2024-03-07 Jeevitha Palanisamy <>
PR target/113950
* config/rs6000/ (vsx_splat_<mode>): Correct assignment to operand1
and simplify else if with else.
2024-03-07 Francois-Xavier Coudert <>
* system.h: Include safe-ctype.h after C++ standard headers.
2024-03-07 Jakub Jelinek <>
PR rtl-optimization/110079
* (fix_crossing_unconditional_branches): Don't adjust
asm goto.
2024-03-07 Jakub Jelinek <>
PR middle-end/105533
* (choose_mult_variant): Only try the val - 1 variant
if val is not HOST_WIDE_INT_MIN or if mode has exactly
HOST_BITS_PER_WIDE_INT precision. Avoid triggering UB while computing
val - 1.
2024-03-07 Jakub Jelinek <>
PR middle-end/105533
* (ao_ref_init_from_vn_reference) <case ARRAY_REF>:
Multiple op->off by BITS_PER_UNIT instead of shifting it left by
2024-03-07 Yang Yujie <>
* config.gcc: Add a case for loongarch*-*-linux-musl*.
* config/loongarch/linux.h: Disable the multilib-compatible
treatment for *musl* targets.
* config/loongarch/musl.h: New file.
2024-03-07 Jakub Jelinek <>
PR tree-optimization/114009
* (decision_tree::gen): Emit ARG_UNUSED for captures
argument even for GENERIC, not just for GIMPLE.
* match.pd (a * !a -> 0): New simplifications.
2024-03-07 demin.han <>
* config/riscv/riscv-protos.h (expand_vec_cmp): Change proto
* config/riscv/ (expand_vec_cmp): Use default arguments
(expand_vec_cmp_float): Adapt arguments
2024-03-06 Uros Bizjak <>
PR target/114232
* config/i386/ (negv2qi2): Enable for optimize_size instead
of optimize_function_for_size_p. Explictily enable for TARGET_SSE2.
(negv2qi SSE reg splitter): Enable for TARGET_SSE2 only.
(<plusminus:insn>v2qi3): Enable for optimize_size instead
of optimize_function_for_size_p. Explictily enable for TARGET_SSE2.
(<plusminus:insn>v2qi SSE reg splitter): Enable for TARGET_SSE2 only.
(<any_shift:insn>v2qi3): Enable for optimize_size instead
of optimize_function_for_size_p.
2024-03-06 Robin Dapp <>
PR target/114200
PR target/114202
* config/riscv/ Use vmv[1248]r.v instead of vmv.v.v.
2024-03-06 Robin Dapp <>
* config/riscv/ (adjust_stmt_cost): Move...
(costs::adjust_stmt_cost): ... to here and add vec_load/vec_store
offset handling.
(costs::add_stmt_cost): Also adjust cost for statements without
* config/riscv/riscv-vector-costs.h: Define zero constant.
2024-03-06 Wilco Dijkstra <>
PR target/113915
* config/arm/ (NOCOND): Improve comment.
(arm_rev*) Add predicable.
* config/arm/ (arm_final_prescan_insn): Add check for
2024-03-06 Jeff Law <>
PR target/113001
PR target/112871
* config/riscv/ (expand_conditional_move): Do not swap
operands when the comparison operand is the same as the false
arm for a NE test.
2024-03-06 Uros Bizjak <>
* config/i386/ (ix86_expand_move) [TARGET_MACHO]:
Eliminate common code and use generic code instead.
2024-03-06 Georg-Johann Lay <>
* config/avr/ (avr_rtx_costs_1) [PLUS+ZERO_EXTEND]: Adjust
rtx cost.
2024-03-06 Richard Biener <>
PR tree-optimization/114239
* (vect_get_vect_def): Remove.
(vect_create_epilog_for_reduction): The passed in stmt_info
should now be the live stmt that produces the scalar reduction
result. Revert PR114192 fix. Base reduction info off
info_for_reduction. Remove special handling of
early-break/peeled, restore original vector def gathering.
Make sure to pick the correct exit PHIs.
(vectorizable_live_operation): Pass in the proper stmt_info
for early break exits.
2024-03-06 Richard Sandiford <>
* config/aarch64/aarch64-feature-deps.h (feature_deps::info): Add
out-of-class definitions of static constants.
2024-03-06 Richard Biener <>
PR tree-optimization/114249
* (vect_build_slp_instance): Move making
a BB reduction lane number even ...
(vect_slp_check_for_roots): ... here to avoid leaking
pattern defs.
2024-03-06 Richard Biener <>
PR tree-optimization/114246
* (increment_start_addr): Strip useless
type conversions from the adjusted address.
2024-03-06 Jakub Jelinek <>
PR rtl-optimization/114190
* config/i386/ (rest_of_handle_insert_vzeroupper):
Call df_remove_problem for df_note before calling df_analyze.
2024-03-05 Cupertino Miranda <>
Indu Bhagat <>
PR debug/114186
* (gen_ctf_array_type): Invoke the ctf_add_array ()
in the correct order of the dimensions.
(gen_ctf_subrange_type): Refactor out handling of
DW_TAG_subrange_type DIE to here.
2024-03-05 Richard Sandiford <>
PR sanitizer/97696
* (asan_expand_mark_ifn): Allow the length to be a poly_int.
2024-03-05 Richard Sandiford <>
* config/aarch64/ (stride_type): Remove luti_consecutive
and luti_strided.
* config/aarch64/
(@aarch64_sme_lut<LUTI_BITS><mode>): Remove stride_type attribute.
(@aarch64_sme_lut<LUTI_BITS><mode>_strided2): Delete.
(@aarch64_sme_lut<LUTI_BITS><mode>_strided4): Likewise.
* config/aarch64/ (is_stride_candidate)
(early_ra::maybe_convert_to_strided_access): Remove support for
strided LUTI2 and LUTI4.
2024-03-05 Richard Earnshaw <>
PR target/113510
* config/arm/ (peephole2 to fuse mov imm/add SP): Use
2024-03-05 Georg-Johann Lay <>
* config/avr/ Add two RTL peepholes for PLUS, IOR and AND
in HI, PSI, SI that swap operation order from "X = CST, X o= Y"
to "X = Y, X o= CST".
2024-03-05 Xi Ruoyao <>
* config/loongarch/loongarch.h (ADDITIONAL_REGISTER_NAMES): Add
s9 as an alias of r22.
2024-03-05 Roger Sayle <>
* config/avr/avr-protos.h (avr_out_insv): New proto.
* config/avr/ (avr_out_insv): New function.
(avr_adjust_insn_length) [ADJUST_LEN_INSV]: Handle case.
(avr_cbranch_cost) [ZERO_EXTRACT]: Adjust rtx costs.
* config/avr/ (define_attr "adjust_len") Add insv.
(andhi3, *andhi3, andpsi3, *andpsi3, andsi3, *andsi3):
Add constraint alternative where the 3rd operand is a power
of 2, and the source register may differ from the destination.
(*insv.any_shift.<mode>_split): Call avr_out_insv to output
instructions. Set attr "length" to "insv".
* config/avr/ (Cb2, Cb3, Cb4): New constraints.
2024-03-05 Richard Biener <>
PR tree-optimization/114231
* (vect_analyze_slp): Lookup patterns when
processing a BB SLP root.
2024-03-05 Jakub Jelinek <>
PR rtl-optimization/114211
* (resolve_simple_move): For double-word
rotates by BITS_PER_WORD if there is overlap between source
and destination use a temporary.
2024-03-05 Jakub Jelinek <>
PR middle-end/114157
* Include stor-layout.h.
(mergeable_op): Return true for BIT_FIELD_REF.
(struct bitint_large_huge): Declare handle_bit_field_ref method.
(bitint_large_huge::handle_bit_field_ref): New method.
(bitint_large_huge::handle_stmt): Use it for BIT_FIELD_REF.
2024-03-05 Jakub Jelinek <>
PR target/114116
* config/i386/i386.h (enum call_saved_registers_type): Add
* config/i386/ (ix86_set_func_type): Remove
has_no_callee_saved_registers variable, add no_callee_saved_registers
instead, initialize it depending on whether it is
no_callee_saved_registers function or not. Don't set it if
no_caller_saved_registers attribute is present. Adjust users.
* config/i386/ (ix86_function_ok_for_sibcall): Handle
2024-03-05 Pan Li <>
* config/riscv/ (riscv_v_adjust_bytesize): Cleanup unused
mode_size related code.
2024-03-05 Patrick Palka <>
* doc/invoke.texi (-Wno-global-module): Document.
2024-03-04 David Faust <>
* config/bpf/bpf-protos.h (bpf_expand_setmem): New prototype.
* config/bpf/ (bpf_expand_setmem): New.
* config/bpf/ (setmemdi): New define_expand.
2024-03-04 Jakub Jelinek <>
PR rtl-optimization/113010
* (simplify_comparison): Guard the
WORD_REGISTER_OPERATIONS check on scalar_int_mode of SUBREG_REG
and initialize inner_mode.
2024-03-04 Andre Vieira <>
* config/arm/ (supf): Remove VMLALDAVXQ_U, VMLALDAVXQ_P_U,
(VMLALDAVXQ): Remove iterator.
(VMLALDAVXQ_P): Likewise.
(VMLALDAVAXQ): Likewise.
* config/arm/ (mve_vstrwq_p_fv4sf): Replace use of <MVE_VPRED>
mode iterator attribute with V4BI mode.
VMLALDAVAXQ_U): Remove unused unspecs.
2024-03-04 Andre Vieira <>
* config/arm/ (mve_safe_imp_xlane_pred): New attribute.
* config/arm/ (mve_vmaxmin_safe_imp): New iterator
* config/arm/ (vaddvq_s, vaddvq_u, vaddlvq_s, vaddlvq_u,
vaddvaq_s, vaddvaq_u, vmaxavq_s, vmaxvq_u, vmladavq_s, vmladavq_u,
vmladavxq_s, vmlsdavq_s, vmlsdavxq_s, vaddlvaq_s, vaddlvaq_u,
vmlaldavq_u, vmlaldavq_s, vmlaldavq_u, vmlaldavxq_s, vmlsldavq_s,
vmlsldavxq_s, vrmlaldavhq_u, vrmlaldavhq_s, vrmlaldavhxq_s,
vrmlsldavhq_s, vrmlsldavhxq_s, vrmlaldavhaq_s, vrmlaldavhaq_u,
vrmlaldavhaxq_s, vrmlsldavhaq_s, vrmlsldavhaxq_s, vabavq_s, vabavq_u,
vmladavaq_u, vmladavaq_s, vmladavaxq_s, vmlsdavaq_s, vmlsdavaxq_s,
vmlaldavaq_s, vmlaldavaq_u, vmlaldavaxq_s, vmlsldavaq_s,
vmlsldavaxq_s): Added mve_safe_imp_xlane_pred.
2024-03-04 Stam Markianos-Wright <>
* config/arm/ (mve_unpredicated_insn): New attribute.
* config/arm/arm.h (MVE_VPT_PREDICATED_INSN_P): New define.
* config/arm/ (mve_vshlq_<supf><mode>): Add attribute.
* config/arm/ (arm_vcx1q<a>_p_v16qi): Add attribute.
(arm_vcx1q<a>v16qi): Likewise.
(arm_vcx1qav16qi): Likewise.
(arm_vcx1qv16qi): Likewise.
(arm_vcx2q<a>_p_v16qi): Likewise.
(arm_vcx2q<a>v16qi): Likewise.
(arm_vcx2qav16qi): Likewise.
(arm_vcx2qv16qi): Likewise.
(arm_vcx3q<a>_p_v16qi): Likewise.
(arm_vcx3q<a>v16qi): Likewise.
(arm_vcx3qav16qi): Likewise.
(arm_vcx3qv16qi): Likewise.
(@mve_<mve_insn>q_<supf><mode>): Likewise.
(@mve_<mve_insn>q_int_<supf><mode>): Likewise.
(@mve_<mve_insn>q_<supf>v4si): Likewise.
(@mve_<mve_insn>q_n_<supf><mode>): Likewise.
(@mve_<mve_insn>q_r_<supf><mode>): Likewise.
(@mve_<mve_insn>q_f<mode>): Likewise.
(@mve_<mve_insn>q_m_<supf><mode>): Likewise.
(@mve_<mve_insn>q_m_n_<supf><mode>): Likewise.
(@mve_<mve_insn>q_m_r_<supf><mode>): Likewise.
(@mve_<mve_insn>q_m_f<mode>): Likewise.
(@mve_<mve_insn>q_int_m_<supf><mode>): Likewise.
(@mve_<mve_insn>q_p_<supf>v4si): Likewise.
(@mve_<mve_insn>q_p_<supf><mode>): Likewise.
(@mve_<mve_insn>q<mve_rot>_<supf><mode>): Likewise.
(@mve_<mve_insn>q<mve_rot>_f<mode>): Likewise.
(@mve_<mve_insn>q<mve_rot>_m_<supf><mode>): Likewise.
(@mve_<mve_insn>q<mve_rot>_m_f<mode>): Likewise.
(mve_v<absneg_str>q_f<mode>): Likewise.
(mve_<mve_addsubmul>q<mode>): Likewise.
(mve_<mve_addsubmul>q_f<mode>): Likewise.
(mve_vadciq_<supf>v4si): Likewise.
(mve_vadciq_m_<supf>v4si): Likewise.
(mve_vadcq_<supf>v4si): Likewise.
(mve_vadcq_m_<supf>v4si): Likewise.
(mve_vandq_<supf><mode>): Likewise.
(mve_vandq_f<mode>): Likewise.
(mve_vandq_m_<supf><mode>): Likewise.
(mve_vandq_m_f<mode>): Likewise.
(mve_vandq_s<mode>): Likewise.
(mve_vandq_u<mode>): Likewise.
(mve_vbicq_<supf><mode>): Likewise.
(mve_vbicq_f<mode>): Likewise.
(mve_vbicq_m_<supf><mode>): Likewise.
(mve_vbicq_m_f<mode>): Likewise.
(mve_vbicq_m_n_<supf><mode>): Likewise.
(mve_vbicq_n_<supf><mode>): Likewise.
(mve_vbicq_s<mode>): Likewise.
(mve_vbicq_u<mode>): Likewise.
(@mve_vclzq_s<mode>): Likewise.
(mve_vclzq_u<mode>): Likewise.
(@mve_vcmp_<mve_cmp_op>q_<mode>): Likewise.
(@mve_vcmp_<mve_cmp_op>q_n_<mode>): Likewise.
(@mve_vcmp_<mve_cmp_op>q_f<mode>): Likewise.
(@mve_vcmp_<mve_cmp_op>q_n_f<mode>): Likewise.
(@mve_vcmp_<mve_cmp_op1>q_m_f<mode>): Likewise.
(@mve_vcmp_<mve_cmp_op1>q_m_n_<supf><mode>): Likewise.
(@mve_vcmp_<mve_cmp_op1>q_m_<supf><mode>): Likewise.
(@mve_vcmp_<mve_cmp_op1>q_m_n_f<mode>): Likewise.
(mve_vctp<MVE_vctp>q<MVE_vpred>): Likewise.
(mve_vctp<MVE_vctp>q_m<MVE_vpred>): Likewise.
(mve_vcvtaq_<supf><mode>): Likewise.
(mve_vcvtaq_m_<supf><mode>): Likewise.
(mve_vcvtbq_f16_f32v8hf): Likewise.
(mve_vcvtbq_f32_f16v4sf): Likewise.
(mve_vcvtbq_m_f16_f32v8hf): Likewise.
(mve_vcvtbq_m_f32_f16v4sf): Likewise.
(mve_vcvtmq_<supf><mode>): Likewise.
(mve_vcvtmq_m_<supf><mode>): Likewise.
(mve_vcvtnq_<supf><mode>): Likewise.
(mve_vcvtnq_m_<supf><mode>): Likewise.
(mve_vcvtpq_<supf><mode>): Likewise.
(mve_vcvtpq_m_<supf><mode>): Likewise.
(mve_vcvtq_from_f_<supf><mode>): Likewise.
(mve_vcvtq_m_from_f_<supf><mode>): Likewise.
(mve_vcvtq_m_n_from_f_<supf><mode>): Likewise.
(mve_vcvtq_m_n_to_f_<supf><mode>): Likewise.
(mve_vcvtq_m_to_f_<supf><mode>): Likewise.
(mve_vcvtq_n_from_f_<supf><mode>): Likewise.
(mve_vcvtq_n_to_f_<supf><mode>): Likewise.
(mve_vcvtq_to_f_<supf><mode>): Likewise.
(mve_vcvttq_f16_f32v8hf): Likewise.
(mve_vcvttq_f32_f16v4sf): Likewise.
(mve_vcvttq_m_f16_f32v8hf): Likewise.
(mve_vcvttq_m_f32_f16v4sf): Likewise.
(mve_vdwdupq_m_wb_u<mode>_insn): Likewise.
(mve_vdwdupq_wb_u<mode>_insn): Likewise.
(mve_veorq_s><mode>): Likewise.
(mve_veorq_u><mode>): Likewise.
(mve_veorq_f<mode>): Likewise.
(mve_vidupq_m_wb_u<mode>_insn): Likewise.
(mve_vidupq_u<mode>_insn): Likewise.
(mve_viwdupq_m_wb_u<mode>_insn): Likewise.
(mve_viwdupq_wb_u<mode>_insn): Likewise.
(mve_vldrbq_<supf><mode>): Likewise.
(mve_vldrbq_gather_offset_<supf><mode>): Likewise.
(mve_vldrbq_gather_offset_z_<supf><mode>): Likewise.
(mve_vldrbq_z_<supf><mode>): Likewise.
(mve_vldrdq_gather_base_<supf>v2di): Likewise.
(mve_vldrdq_gather_base_wb_<supf>v2di_insn): Likewise.
(mve_vldrdq_gather_base_wb_z_<supf>v2di_insn): Likewise.
(mve_vldrdq_gather_base_z_<supf>v2di): Likewise.
(mve_vldrdq_gather_offset_<supf>v2di): Likewise.
(mve_vldrdq_gather_offset_z_<supf>v2di): Likewise.
(mve_vldrdq_gather_shifted_offset_<supf>v2di): Likewise.
(mve_vldrdq_gather_shifted_offset_z_<supf>v2di): Likewise.
(mve_vldrhq_<supf><mode>): Likewise.
(mve_vldrhq_fv8hf): Likewise.
(mve_vldrhq_gather_offset_<supf><mode>): Likewise.
(mve_vldrhq_gather_offset_fv8hf): Likewise.
(mve_vldrhq_gather_offset_z_<supf><mode>): Likewise.
(mve_vldrhq_gather_offset_z_fv8hf): Likewise.
(mve_vldrhq_gather_shifted_offset_<supf><mode>): Likewise.
(mve_vldrhq_gather_shifted_offset_fv8hf): Likewise.
(mve_vldrhq_gather_shifted_offset_z_<supf><mode>): Likewise.
(mve_vldrhq_gather_shifted_offset_z_fv8hf): Likewise.
(mve_vldrhq_z_<supf><mode>): Likewise.
(mve_vldrhq_z_fv8hf): Likewise.
(mve_vldrwq_<supf>v4si): Likewise.
(mve_vldrwq_fv4sf): Likewise.
(mve_vldrwq_gather_base_<supf>v4si): Likewise.
(mve_vldrwq_gather_base_fv4sf): Likewise.
(mve_vldrwq_gather_base_wb_<supf>v4si_insn): Likewise.
(mve_vldrwq_gather_base_wb_fv4sf_insn): Likewise.
(mve_vldrwq_gather_base_wb_z_<supf>v4si_insn): Likewise.
(mve_vldrwq_gather_base_wb_z_fv4sf_insn): Likewise.
(mve_vldrwq_gather_base_z_<supf>v4si): Likewise.
(mve_vldrwq_gather_base_z_fv4sf): Likewise.
(mve_vldrwq_gather_offset_<supf>v4si): Likewise.
(mve_vldrwq_gather_offset_fv4sf): Likewise.
(mve_vldrwq_gather_offset_z_<supf>v4si): Likewise.
(mve_vldrwq_gather_offset_z_fv4sf): Likewise.
(mve_vldrwq_gather_shifted_offset_<supf>v4si): Likewise.
(mve_vldrwq_gather_shifted_offset_fv4sf): Likewise.
(mve_vldrwq_gather_shifted_offset_z_<supf>v4si): Likewise.
(mve_vldrwq_gather_shifted_offset_z_fv4sf): Likewise.
(mve_vldrwq_z_<supf>v4si): Likewise.
(mve_vldrwq_z_fv4sf): Likewise.
(mve_vmvnq_s<mode>): Likewise.
(mve_vmvnq_u<mode>): Likewise.
(mve_vornq_<supf><mode>): Likewise.
(mve_vornq_f<mode>): Likewise.
(mve_vornq_m_<supf><mode>): Likewise.
(mve_vornq_m_f<mode>): Likewise.
(mve_vornq_s<mode>): Likewise.
(mve_vornq_u<mode>): Likewise.
(mve_vorrq_<supf><mode>): Likewise.
(mve_vorrq_f<mode>): Likewise.
(mve_vorrq_m_<supf><mode>): Likewise.
(mve_vorrq_m_f<mode>): Likewise.
(mve_vorrq_m_n_<supf><mode>): Likewise.
(mve_vorrq_n_<supf><mode>): Likewise.
(mve_vorrq_s<mode>): Likewise.
(mve_vorrq_s<mode>): Likewise.
(mve_vsbciq_<supf>v4si): Likewise.
(mve_vsbciq_m_<supf>v4si): Likewise.
(mve_vsbcq_<supf>v4si): Likewise.
(mve_vsbcq_m_<supf>v4si): Likewise.
(mve_vshlcq_<supf><mode>): Likewise.
(mve_vshlcq_m_<supf><mode>): Likewise.
(mve_vshrq_m_n_<supf><mode>): Likewise.
(mve_vshrq_n_<supf><mode>): Likewise.
(mve_vstrbq_<supf><mode>): Likewise.
(mve_vstrbq_p_<supf><mode>): Likewise.
(mve_vstrbq_scatter_offset_<supf><mode>_insn): Likewise.
(mve_vstrbq_scatter_offset_p_<supf><mode>_insn): Likewise.
(mve_vstrdq_scatter_base_<supf>v2di): Likewise.
(mve_vstrdq_scatter_base_p_<supf>v2di): Likewise.
(mve_vstrdq_scatter_base_wb_<supf>v2di): Likewise.
(mve_vstrdq_scatter_base_wb_p_<supf>v2di): Likewise.
(mve_vstrdq_scatter_offset_<supf>v2di_insn): Likewise.
(mve_vstrdq_scatter_offset_p_<supf>v2di_insn): Likewise.
(mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn): Likewise.
(mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn): Likewise.
(mve_vstrhq_<supf><mode>): Likewise.
(mve_vstrhq_fv8hf): Likewise.
(mve_vstrhq_p_<supf><mode>): Likewise.
(mve_vstrhq_p_fv8hf): Likewise.
(mve_vstrhq_scatter_offset_<supf><mode>_insn): Likewise.
(mve_vstrhq_scatter_offset_fv8hf_insn): Likewise.
(mve_vstrhq_scatter_offset_p_<supf><mode>_insn): Likewise.
(mve_vstrhq_scatter_offset_p_fv8hf_insn): Likewise.
(mve_vstrhq_scatter_shifted_offset_<supf><mode>_insn): Likewise.
(mve_vstrhq_scatter_shifted_offset_fv8hf_insn): Likewise.
(mve_vstrhq_scatter_shifted_offset_p_<supf><mode>_insn): Likewise.
(mve_vstrhq_scatter_shifted_offset_p_fv8hf_insn): Likewise.
(mve_vstrwq_<supf>v4si): Likewise.
(mve_vstrwq_fv4sf): Likewise.
(mve_vstrwq_p_<supf>v4si): Likewise.
(mve_vstrwq_p_fv4sf): Likewise.
(mve_vstrwq_scatter_base_<supf>v4si): Likewise.
(mve_vstrwq_scatter_base_fv4sf): Likewise.
(mve_vstrwq_scatter_base_p_<supf>v4si): Likewise.
(mve_vstrwq_scatter_base_p_fv4sf): Likewise.
(mve_vstrwq_scatter_base_wb_<supf>v4si): Likewise.
(mve_vstrwq_scatter_base_wb_fv4sf): Likewise.
(mve_vstrwq_scatter_base_wb_p_<supf>v4si): Likewise.
(mve_vstrwq_scatter_base_wb_p_fv4sf): Likewise.
(mve_vstrwq_scatter_offset_<supf>v4si_insn): Likewise.
(mve_vstrwq_scatter_offset_fv4sf_insn): Likewise.
(mve_vstrwq_scatter_offset_p_<supf>v4si_insn): Likewise.
(mve_vstrwq_scatter_offset_p_fv4sf_insn): Likewise.
(mve_vstrwq_scatter_shifted_offset_<supf>v4si_insn): Likewise.
(mve_vstrwq_scatter_shifted_offset_fv4sf_insn): Likewise.
(mve_vstrwq_scatter_shifted_offset_p_<supf>v4si_insn): Likewise.
(mve_vstrwq_scatter_shifted_offset_p_fv4sf_insn): Likewise.
2024-03-04 Marek Polacek <>
* doc/extend.texi: Update [[gnu::no_dangling]].
2024-03-04 Andrew Stubbs <>
* (do_compare_and_jump): Use full-width integers for shifts.
* (store_constructor): Likewise.
(do_store_flag): Likewise.
2024-03-04 Mark Wielaard <>
* common.opt.urls: Regenerate.
* config/avr/avr.opt.urls: Likewise.
* config/i386/i386.opt.urls: Likewise.
* config/pru/pru.opt.urls: Likewise.
* config/riscv/riscv.opt.urls: Likewise.
* config/rs6000/rs6000.opt.urls: Likewise.
2024-03-04 Richard Biener <>
PR tree-optimization/114197
* (bitfields_to_lower_p): Do not lower if
there are volatile bitfield accesses.
(pass_if_conversion::execute): Throw away result if the
if-converted and original loops are not nested as expected.
2024-03-04 Richard Biener <>
PR tree-optimization/114164
* (vectorizable_simd_clone_call): Fail if
the code generated for mask argument setup is not supported.
2024-03-04 Richard Biener <>
PR tree-optimization/114203
* (build_cltz_expr): Apply CTZ->CLZ
adjustment before making the result defined at zero.
2024-03-04 Richard Biener <>
PR tree-optimization/114192
* (vect_create_epilog_for_reduction): Use the
appropriate def for the live out stmt in case of an alternate
2024-03-04 Jakub Jelinek <>
PR middle-end/114209
* (bitint_large_huge::limb_access): Call
unshare_expr when creating a MEM_REF from MEM_REF.
(bitint_large_huge::lower_stmt): Call unshare_expr.
2024-03-04 Jakub Jelinek <>
PR target/114184
* config/i386/ (ix86_expand_move): If XFmode op1
is SUBREG of CONSTANT_P, force the SUBREG_REG into memory or
2024-03-04 Roger Sayle <>
PR target/114187
* (simplify_context::simplify_subreg): Call
lowpart_subreg to perform type conversion, to avoid confusion
over the offset to use in the call to simplify_reg_subreg.
2024-03-03 Greg McGary <>
PR rtl-optimization/113010
* (simplify_comparison): Simplify a SUBREG on
WORD_REGISTER_OPERATIONS targets only if it is a zero-extending
MEM load.
2024-03-03 Georg-Johann Lay <>
* config/avr/ Resolve ATTRIBUTE_UNUSED.
Use bool in place of int for boolean logic (if possible).
Move declarations to definitions (if possible).
* config/avr/ Use C++ comments. Fix some indentation glitches.
* config/avr/ Same.
* config/avr/ Same.
* config/avr/ Same.
2024-03-03 Uros Bizjak <>
PR target/113720
* config/alpha/ (umuldi3_highpart): Remove expander.
(*umuldi3_highpart_reg): Rename to umuldi3_highpart and
simplify insn RTX using UMUL_HIGHPART rtx_code.
(*umuldi3_highpart_const): Remove.
2024-03-03 Georg-Johann Lay <>
PR target/114100
* config/avr/avr-protos.h (_reg_unused_after): Remove proto.
* config/avr/ (_reg_unused_after): Make static. And
add 3rd argument to skip the current insn.
(reg_unused_after): Adjust call of reg_unused_after.
(avr_out_plus_1) [AVR_TINY && -mfuse-add >= 2]: Don't output
unneeded frame pointer adjustments.
2024-03-03 Georg-Johann Lay <>
PR target/92729
* config/avr/ (define_attr "cc"): Remove.
* config/avr/avr-protos.h (avr_out_plus): Remove pcc argument
from prototype.
* config/avr/ (avr_out_plus_1): Remove pcc argument and
its uses. Add insn argument.
(avr_out_plus_symbol): Remove pcc argument and its uses.
(avr_out_plus): Remove pcc argument and its uses.
Adjust calls of avr_out_plus_symbol and avr_out_plus_1.
(avr_out_round): Adjust call of avr_out_plus.
2024-03-03 Georg-Johann Lay <>
* config/avr/ (avr_init_cumulative_args): Fix a typo
from r14-9273.
2024-03-03 Oleg Endo <>
PR target/101737
* config/sh/ (sh_is_nott_insn): Handle case where the input
is not an insn, but e.g. a code label.
2024-03-02 Georg-Johann Lay <>
* config/avr/ (REG_0, ... REG_36): New define_constants.
* config/avr/ Use them instead of magic numbers when it
means a register number.
2024-03-02 Georg-Johann Lay <>
* config/avr/ Adjust some comments.
2024-03-02 Georg-Johann Lay <>
PR target/114100
* config/avr/ (avr_out_plus_1) [-mtiny-stack]: Only adjust
the low part of the frame pointer with 8-bit stack pointer.
2024-03-01 Patrick Palka <>
PR c++/104919
PR c++/106009
* (remap_decl): Handle copy_decl returning the
original decl.
(remap_decls): Handle remap_decl returning the original decl.
(copy_fn): Adjust copy_decl callback to skip TYPE_DECL and
2024-03-01 Jeff Law <>
* config/riscv/ (zero_extendqi<SUPERQI:mode>2_internal): Fix
type attribute.
(extendsidi2_internal, movhf_hardfloat, movhf_softfloat): Likewise.
(movdi_32bit, movdi_64bit, movsi_internal): Likewise.
(movhi_internal, movqi_internal): Likewise.
(movsf_softfloat, movsf_hardfloat): Likewise.
(movdf_hardfloat_rv32, movdf_hardfloat_rv64): Likewise.
(movdf_softfloat): Likewise.
2024-03-01 Marek Polacek <>
PR c++/110358
PR c++/109642
* doc/extend.texi: Document gnu::no_dangling.
* doc/invoke.texi: Mention that gnu::no_dangling disables
2024-03-01 Georg-Johann Lay <>
* config/avr/avr.opt: Overhaul help screen.
2024-03-01 Jakub Jelinek <>
Tobias Burnus <>
PR c++/110347
* (omp_notice_variable): Fix 'shared' arg to
lang_hooks.decls.omp_disregard_value_expr for
(first)private in target regions.
2024-03-01 Jakub Jelinek <>
PR middle-end/114136
* (expand_call): For TYPE_NO_NAMED_ARGS_STDARG_P set
n_named_args initially before INIT_CUMULATIVE_ARGS to
structure_value_addr_parm rather than 0, after it don't modify
it if strict_argument_naming and clear only if
2024-03-01 Jakub Jelinek <>
PR debug/114015
* (should_move_die_to_comdat): Return false for
aggregates without DW_AT_byte_size attribute or with non-constant
2024-03-01 Georg-Johann Lay <>
* doc/invoke.texi (AVR Options) <-mfuse-add=level>: Document
valid values for level.
2024-03-01 Richard Biener <>
PR middle-end/114070
* match.pd ((c ? a : b) op d --> c ? (a op d) : (b op d)):
Allow the folding if before lowering and the current IL
isn't supported with vcond_mask.
2024-03-01 xuli <>
* config/riscv/ (TARGET_GNU_ATTRIBUTES): Add riscv_vector_cc
attribute to riscv_attribute_table.
(riscv_vector_cc_function_p): Return true if FUNC is a riscv_vector_cc function.
(riscv_fntype_abi): Add riscv_vector_cc attribute check.
* doc/extend.texi: Add riscv_vector_cc attribute description.
2024-03-01 Pan Li <>
PR target/112817
* config/riscv/ (pass_avlprop::execute): Replace
* config/riscv/riscv-opts.h (enum riscv_autovec_preference_enum): Remove.
(enum rvv_vector_bits_enum): New enum for different RVV vector bits.
* config/riscv/ (riscv_run_selftests): Update
comments for option replacement.
* config/riscv/ (autovec_use_vlmax_p): Replace enum of
riscv_autovec_preference to rvv_vector_bits.
(vls_mode_valid_p): Ditto.
(estimated_poly_value): Ditto.
* config/riscv/ (riscv_convert_vector_chunks): Rename to
vector chunks and honor new option mrvv-vector-bits.
(riscv_override_options_internal): Update comments and rename the
vector chunks.
* config/riscv/riscv.opt: Add option mrvv-vector-bits and remove
internal option param=riscv-autovec-preference.
2024-03-01 Jakub Jelinek <>
* (assign_parms): Only call assign_parms_setup_varargs
early for TYPE_NO_NAMED_ARGS_STDARG_P functions if fnargs is empty.
2024-03-01 Jakub Jelinek <>
PR middle-end/114156
* (bitint_large_huge::lower_stmt): Allow
rhs1 of a VCE to have no underlying variable if it is a load and
handle that case.
2024-02-29 David Malcolm <>
PR analyzer/114159
* (function_name): Make param const.
* function.h (function_name): Likewise.
2024-02-29 Georg-Johann Lay <>
PR target/114100
* doc/invoke.texi (AVR Options) <-mfuse-add>: Document.
* config/avr/avr.opt (-mfuse-add=): New target option.
* common/config/avr/ (avr_option_optimization_table)
[OPT_LEVELS_1_PLUS]: Set -mfuse-add=1.
[OPT_LEVELS_2_PLUS]: Set -mfuse-add=2.
* config/avr/avr-passes.def (avr_pass_fuse_add): Insert new pass.
* config/avr/avr-protos.h (avr_split_tiny_move)
(make_avr_pass_fuse_add): New protos.
* config/avr/ [AVR_TINY]: New post-reload splitter uses
avr_split_tiny_move to split indirect memory accesses.
(gen_move_clobbercc): New define_expand helper.
* config/avr/ (avr_pass_data_fuse_add): New pass data.
(avr_pass_fuse_add): New class from rtl_opt_pass.
(make_avr_pass_fuse_add, avr_split_tiny_move): New functions.
(reg_seen_between_p, emit_move_ccc, emit_move_ccc_after): New functions.
(avr_legitimate_address_p) [AVR_TINY]: Don't restrict offsets
of PLUS addressing for AVR_TINY.
(avr_regno_mode_code_ok_for_base_p) [AVR_TINY]: Ignore -mstrict-X.
(avr_out_plus_1) [AVR_TINY]: Tweak ++Y and --Y.
(avr_mode_code_base_reg_class) [AVR_TINY]: Always return POINTER_REGS.
2024-02-29 Georg-Johann Lay <>
PR target/114132
* config/avr/avr.h (CUMULATIVE_ARGS) <has_stack_args>: New field.
* config/avr/ (avr_init_cumulative_args): Initialize it.
(avr_function_arg): Set it.
(avr_frame_pointer_required_p): Use it instead of .nregs.
2024-02-29 Andrew Pinski <>
PR target/108174
* config/aarch64/ (aarch64_memtag_builtin_data): Make
static and mark with GTY.
2024-02-29 Xi Ruoyao <>
* config/loongarch/
(loongarch_<crc>_w_<size>_w_extended): New define_insn.
2024-02-29 Xi Ruoyao <>
* config/loongarch/ (CRC): New define_int_iterator.
(crc): New define_int_attr.
(loongarch_crc_w_<size>_w, loongarch_crcc_w_<size>_w): Unify
into ...
(loongarch_<crc>_w_<size>_w): ... here.
2024-02-29 Kito Cheng <>
PR target/114130
* config/riscv/ (atomic_compare_and_swap<mode>): Sign
extend the expected value if needed.
2024-02-28 Cupertino Miranda <>
* config.gcc (target_gtfiles): Change coreout to btfext-out.
(extra_objs): Change coreout to btfext-out.
* config/bpf/ Rename to
* config/bpf/ Add.
* config/bpf/coreout.h: Rename to btfext-out.h.
* config/bpf/btfext-out.h: Add.
* config/bpf/ Change include.
* config/bpf/core-builtins.h: Change include.
* config/bpf/t-bpf: Accomodate renamed files.
2024-02-28 Cupertino Miranda <>
PR target/113453
* config/bpf/ (bpf_function_prologue): Define target
* config/bpf/ (brf_ext_info_section)
(btf_ext_info): Move from coreout.h
(btf_ext_funcinfo, btf_ext_lineinfo): Add struct.
(bpf_core_reloc): Rename to btf_ext_core_reloc.
(btf_ext): Add static variable.
(btfext_info_sec_find_or_add, SEARCH_NODE_AND_RETURN)
(bpf_create_or_find_funcinfo, bpt_create_core_reloc)
(btf_ext_add_string, btf_funcinfo_type_callback)
(btf_add_func_info_for, btf_validate_funcinfo)
(btf_ext_info_len, output_btfext_func_info): Add function.
(output_btfext_header, bpf_core_reloc_add)
(output_btfext_core_relocs, btf_ext_init, btf_ext_output):
Change to support new structs.
* config/bpf/coreout.h (btf_ext_funcinfo, btf_ext_lineinfo):
Move and change in
(btf_add_func_info_for, btf_ext_add_string): Add prototypes.
2024-02-28 Cupertino Miranda <>
* config/bpf/ (bpf_option_override): Make .BTF.ext
enabled by default for BPF.
(bpf_file_end): Call BTF deallocation.
(bpf_asm_init_sections): Correct condition.
* (ctf_debug_finalize): Conditionally execute BTF
(ctf_debuf_finish): Correct condition for calling
2024-02-28 Cupertino Miranda <>
* (output_btf_func_types): Use FOR_EACH_VEC_ELT.
(traverse_btf_func_types): Define function.
* ctfc.h (funcs_traverse_callback): Typedef for function
(traverse_btf_func_types): Add prototype.
2024-02-28 Cupertino Miranda <>
* (btf_collect_dataset): Corrects BTF type id.
2024-02-28 Richard Biener <>
PR tree-optimization/113831
PR tree-optimization/108355
* (copy_reference_ops_from_ref): Revert
PR113831 fix.
2024-02-28 Richard Biener <>
PR tree-optimization/114121
* tree-ssa-sccvn.h (vn_reference_s::offset,
vn_reference_s::max_size): New fields.
(vn_reference_insert_pieces): Adjust prototype.
* (phi_translate_1): Preserve offset/max_size.
* (vn_reference_eq): Compare offset and
size, allow using "don't know" state.
(vn_walk_cb_data::finish): Pass along offset/max_size.
(vn_reference_lookup_or_insert_for_pieces): Take offset and
max_size as argument and use it.
(vn_reference_lookup_3): Properly adjust offset and max_size
according to the adjusted ao_ref.
(vn_reference_lookup_pieces): Initialize offset and max_size.
(vn_reference_lookup): Likewise.
(vn_reference_lookup_call): Likewise.
(vn_reference_insert): Likewise.
(visit_reference_op_call): Likewise.
(vn_reference_insert_pieces): Take offset and max_size
as argument and use it.
2024-02-28 Juergen Christ <>
PR tree-optimization/114075
* (vectorizable_operation): Don't emulate floating
point vectors
2024-02-28 Jakub Jelinek <>
PR tree-optimization/114041
* (add_conditions_to_domain): Check for
2024-02-28 Jakub Jelinek <>
PR tree-optimization/113988
* stor-layout.h (bitwise_mode_for_size): Declare.
* (bitwise_mode_for_size): New function.
* (gimple_fold_builtin_memory_op): Use it.
Use bitwise_type_for_mode instead of build_nonstandard_integer_type.
Use BITS_PER_UNIT instead of 8.
2024-02-27 Uros Bizjak <>
PR target/113871
* config/i386/ (V248FI): Add V2BF mode.
(V24FI_32): Ditto.
2024-02-27 Eric Botcazou <>
* (compute_trims): Fix description. Return early
if either ref->offset is not byte aligned or ref->size is not known
to be equal to ref->max_size.
(maybe_trim_complex_store): Fix description.
(maybe_trim_constructor_store): Likewise.
(maybe_trim_partially_dead_store): Likewise.
2024-02-27 Richard Earnshaw <>
* config/arm/mmintrin.h: Warn if this header is included without
2024-02-27 Richard Biener <>
PR tree-optimization/114074
* tree-chrec.h (chrec_convert_rhs): Default at_stmt arg to NULL.
* (chrec_fold_multiply): Canonicalize inputs.
Handle poly vs. non-poly multiplication correctly with respect
to undefined behavior on overflow.
2024-02-27 Jakub Jelinek <>
PR rtl-optimization/114044
* internal-fn.def (CLRSB, CLZ, CTZ, FFS, PARITY): Use
* internal-fn.h (expand_CLRSB, expand_CLZ, expand_CTZ, expand_FFS,
expand_PARITY): Declare.
* (expand_bitquery, expand_CLRSB, expand_CLZ,
expand_CTZ, expand_FFS, expand_PARITY): New functions.
(expand_POPCOUNT): Use expand_bitquery.
2024-02-27 Richard Biener <>
PR tree-optimization/114081
* (slpeel_tree_duplicate_loop_to_edge_cfg):
Perform manual dominator update for prologue peeling.
(vect_do_peeling): Properly update dominators after adding the
prologue-around guard.
2024-02-26 Georg-Johann Lay <>
* config/avr/avr.opt (mcall-prologues, mrelax, maccumulate-args)
(mstrict-X): Tag as "Optimization".
2024-02-26 Georg-Johann Lay <>
* config/avr/ (avr_out_compare) [AVR_TINY]: Remove code in
an "if avr_adiw_reg_p()" block that's dead for AVR_TINY.
2024-02-26 Jakub Jelinek <>
H.J. Lu <>
PR rtl-optimization/113617
* (default_elf_select_rtx_section): For
references to private symbols in comdat sections
use .data.relro.local.pool.<comdat>, .data.relro.pool.<comdat>
or .rodata.<comdat> comdat sections.
2024-02-26 Richard Biener <>
PR tree-optimization/114099
* (slpeel_tree_duplicate_loop_to_edge_cfg):
Create and fill in a needed virtual LC PHI for the alternate
exits. Remove code dealing with that missing.
2024-02-26 Richard Biener <>
PR tree-optimization/114068
* (get_live_virtual_operand_on_edge):
New function.
(slpeel_tree_duplicate_loop_to_edge_cfg): Add a virtual LC PHI
on the main exit if needed. Remove band-aid for the case
it was missing.
2024-02-26 H.J. Lu <>
PR target/114097
* config/i386/ (ix86_set_func_type): Check
interrupt instead of noreturn attribute.
2024-02-26 Jakub Jelinek <>
* config/i386/ (ix86_bitint_type_info): Add support for
2024-02-26 Jakub Jelinek <>
PR tree-optimization/114090
* match.pd ((x >= 0 ? x : 0) + (x <= 0 ? -x : 0) -> abs x):
((x <= 0 ? -x : 0) -> max(-x, 0)): Likewise.
2024-02-26 Jakub Jelinek <>
PR middle-end/114084
* (fold_binary_loc): Avoid the final associate_trees
if all subtrees of var0 come from one of the op0 or op1 operands
and all subtrees of con0 come from the other one. Don't clear
variables which are never used afterwards.
2024-02-26 Richard Biener <>
PR middle-end/114070
* (parser::parse_c_expr): Do not record operand
lists but only mark operators used.
* match.pd ((c ? a : b) op (c ? d : e) --> c ? (a op d) : (b op e)):
Properly guard the case of tcc_comparison changing the VEC_COND
value operand type.
2024-02-26 Jakub Jelinek <>
PR target/114094
* config/i386/ (x86_function_profiler): Add missing new-line
to printed instruction.
2024-02-26 H.J. Lu <>
PR target/114098
* config/i386/amxtileintrin.h (_tile_loadconfig): Use
(_tile_storeconfig): Use __builtin_ia32_sttilecfg.
* config/i386/i386-builtin.def (BDESC): Add
__builtin_ia32_ldtilecfg and __builtin_ia32_sttilecfg.
* config/i386/ (ix86_expand_builtin): Handle
* config/i386/ (ldtilecfg): New pattern.
(sttilecfg): Likewise.
2024-02-24 Richard Sandiford <>
PR tree-optimization/113205
* (vect_optimize_slp_pass::forward_cost): Reject
the proposed layout if it does not allow a source partition with
layout 2 to keep that layout.
2024-02-24 Jakub Jelinek <>
* (fold_builtin_isascii): Use HOST_WIDE_INT_UC macro.
* (make_field_assignment): Use HOST_WIDE_INT_1U macro.
* (double_int::mask): Use HOST_WIDE_INT_UC macros.
* (attr_alt_complement): Use HOST_WIDE_INT_1 macro.
(mk_attr_alt): Use HOST_WIDE_INT_0 macro.
* (bitmap_set_bit, CLEAR_BIT): Use HOST_WIDE_INT_1
* (can_strub_internally_p): Use HOST_WIDE_INT_1 macro.
* (implies_p): Use HOST_WIDE_INT_1U macro.
* (test_pp_format): Use HOST_WIDE_INT_C and
* (nonzero_bits1): Use HOST_WIDE_INT_UC macro.
* (build_replicated_int_cst): Use HOST_WIDE_INT_1U macro.
* tree.h (DECL_OFFSET_ALIGN): Use HOST_WIDE_INT_1U macro.
* (dump_varinfo): Use ~HOST_WIDE_INT_0U
* (divmod_internal_2): Use HOST_WIDE_INT_1U macro.
* config/i386/ (define_constraint "L"): Use
* config/i386/ (movabsq split peephole2): Use HOST_WIDE_INT_C
(movl + movb peephole2): Likewise.
* config/i386/ (x86_64_zext_immediate_operand): Likewise.
(const_32bit_mask): Likewise.
2024-02-24 Jakub Jelinek <>
PR middle-end/114073
* (bitint_large_huge::lower_stmt): Handle
VIEW_CONVERT_EXPRs between large/huge _BitInt and non-integer/pointer
types like vector or complex types.
(gimple_lower_bitint): Don't merge VIEW_CONVERT_EXPRs to non-integral
types. Fix up VIEW_CONVERT_EXPR handling. Allow merging
VIEW_CONVERT_EXPR from non-integral/pointer types with a store.
2024-02-23 Robin Dapp <>
PR target/114028
* config/riscv/ (rvv_builder::can_duplicate_repeating_sequence_p):
Return false if inner mode is already Pmode.
(rvv_builder::is_all_same_sequence): New function.
(expand_vec_init): Emit broadcast if sequence is all same.
2024-02-23 Richard Sandiford <>
PR target/113613
* config/aarch64/
(early_ra::m_current_region): New member variable.
(early_ra::m_fpr_recency): Likewise.
(early_ra::start_new_region): Bump m_current_region.
(early_ra::allocate_colors): Prefer less recently used registers
in the event of a tie. Add a comment to explain why we prefer(ed)
higher-numbered registers.
(early_ra::find_oldest_color): Prefer less recently used registers
here too.
(early_ra::finalize_allocation): Update recency information for
allocated registers.
(early_ra::process_blocks): Initialize m_current_region and
2024-02-23 Richard Sandiford <>
PR target/113295
* config/aarch64/
(early_ra::test_strictness): New enum.
(early_ra::is_chain_candidate): Add a strictness parameter to
control whether only correctness matters, or whether both correctness
and heuristics should be used. Handle multiple levels of equivalence.
(early_ra::find_related_start): Update call accordingly.
(early_ra::strided_polarity_pref): Likewise.
(early_ra::form_chains): Likewise.
(early_ra::try_to_chain_allocnos): Use is_chain_candidate in
correctness mode rather than trying to inline the test.
2024-02-23 Richard Sandiford <>
PR target/113295
* config/aarch64/
(early_ra::find_related_start): Account for definitions by shared
registers when testing for a single register definition.
(early_ra::accumulate_defs): New function.
(early_ra::record_copy): If A shares B's register, fold A's
definition information into B's. Fold A's use information into B's.
2024-02-23 H.J. Lu <>
* (HAVE_AS_R_X86_64_CODE_6_GOTTPOFF): Defined as 1
if R_X86_64_CODE_6_GOTTPOFF is supported.
* Regenerated.
* configure: Likewise.
* config/i386/ (apx_ndd_add_memory_operand): Allow
UNSPEC_GOTNTPOFF if R_X86_64_CODE_6_GOTTPOFF is supported.
2024-02-23 Richard Earnshaw <>
PR target/108120
* config/arm/ (div<VCVTF:mode>3): Rename from div<mode>3.
2024-02-23 Jakub Jelinek <>
PR rtl-optimization/114054
* (expand_expr_real_2) <case MULT_EXPR>: Use
temp variable instead of target parameter for result.
2024-02-23 Jakub Jelinek <>
PR tree-optimization/114040
* (bitint_large_huge::lower_addsub_overflow):
Use EQ_EXPR rather than LT_EXPR for g2 condition and change its
probability from likely to unlikely. When handling the true true
store, first cast to limb_access_type and then to l's type.
2024-02-23 Richard Biener <>
PR target/90785
* config.gcc: Add ia64*-*-* to the list of obsoleted targets.
2024-02-23 Palmer Dabbelt <>
PR other/109668
* config/riscv/arch-canonicalize: Move to python3
* config/riscv/multilib-generator: Likewise
2024-02-23 Palmer Dabbelt <>
* doc/invoke.texi: Document -mcpu.
2024-02-23 Lulu Cheng <>
* configure: Regenerate.
* Add parameter "--fatal-warnings" to assemble
when checking whether the assemble support conditional branch
2024-02-22 Jakub Jelinek <>
PR c/114007
* doc/extend.texi: (__extension__): Remove comments about scope
tokens vs. two colons.
2024-02-22 Andrew Pinski <>
PR tree-optimization/109804
* (new_delete_mismatch_p): Handle
2024-02-22 Richard Biener <>
PR tree-optimization/114048
* (copy_reference_ops_from_ref): MEM_REF
can also produce -1 off.
2024-02-22 Richard Biener <>
PR tree-optimization/114027
* (vecctorizable_reduction): Use optimized
condition reduction classification only for single-element
2024-02-22 Jakub Jelinek <>
PR ipa/111960
* profile-count.h (profile_count::dump): Remove overload with
char * first argument.
* (profile_count::dump): Change overload with char *
first argument which uses sprintf into the overfload with FILE *
first argument and use fprintf instead. Remove overload which wrapped
2024-02-22 Jakub Jelinek <>
PR tree-optimization/113993
* (get_no_error_domain): Handle
BUILT_IN_{COSH,SINH,EXP{,M1,2}}{F32X,F64X}. Handle
REAL_MODE_FORMAT (TYPE_MODE (long_double_type_node))->emax == 16384
the as the F128 suffixed cases, otherwise as non-suffixed ones.
Handle BUILT_IN_{EXP,POW}10L for
REAL_MODE_FORMAT (TYPE_MODE (long_double_type_node))->emax == 16384
as (-inf, 4932).
2024-02-22 Jakub Jelinek <>
PR tree-optimization/114038
* (bitint_large_huge::lower_mul_overflow): Fix
loop exit condition if end is divisible by limb_prec.
2024-02-22 YunQiang Su <>
* doc/invoke.texi(MIPS Options): Fix skipping UrlSuffix
problem of mabi=, mno-flush-func, mexplicit-relocs;
add missing leading - of mbranch-cost option.
* config/mips/mips.opt.urls: Regenerate.
2024-02-22 Kewen Lin <>
PR target/109987
* config/rs6000/ (we): Update internal doc without
referring to option -mpower9-vector.
* config/rs6000/ (asm_names): Remove mpower9-vector
special handlings.
* config/rs6000/rs6000-cpus.def (OTHER_P9_VECTOR_MASKS,
OTHER_P8_VECTOR_MASKS): Merge to ...
* config/rs6000/ (rs6000_option_override_internal): Remove
some error message handlings and explicit option mask adjustments on
explicit option power{8,9}-vector conflicting with other options.
(rs6000_print_isa_options): Update comments.
(rs6000_disable_incompatible_switches): Remove power{8,9}-vector
related array items and handlings.
* config/rs6000/rs6000.h (ASM_CPU_SPEC): Remove mpower9-vector
special handlings.
* config/rs6000/rs6000.opt: Make option power{8,9}-vector as
* doc/extend.texi: Remove documentation referring to option
* doc/invoke.texi: Remove documentation for option
-mpower{8,9}-vector and adjust some documentation referring to them.
* doc/md.texi: Update documentation for constraint we.
* doc/sourcebuild.texi: Remove documentation for powerpc_p8vector_ok.
2024-02-22 Pan Li <>
PR target/114017
* config/riscv/ (riscv_cpu_cpp_builtins): Upgrade
the version to 0.12.
2024-02-21 Edwin Lu <>
* config/riscv/ (riscv_sched_variable_issue): Enable assert
2024-02-21 Edwin Lu <>
Robin Dapp <>
* config/riscv/ (generic_ooo): Move reservation
(generic_ooo_vec_load): Ditto
(generic_ooo_vec_store): Ditto
(generic_ooo_vec_loadstore_seg): Ditto
(generic_ooo_vec_alu): Ditto
(generic_ooo_vec_fcmp): Ditto
(generic_ooo_vec_imul): Ditto
(generic_ooo_vec_fadd): Ditto
(generic_ooo_vec_fmul): Ditto
(generic_ooo_crypto): Ditto
(generic_ooo_perm): Ditto
(generic_ooo_vec_reduction): Ditto
(generic_ooo_vec_ordered_reduction): Ditto
(generic_ooo_vec_idiv): Ditto
(generic_ooo_vec_float_divsqrt): Ditto
(generic_ooo_vec_mask): Ditto
(generic_ooo_vec_vesetvl): Ditto
(generic_ooo_vec_setrm): Ditto
(generic_ooo_vec_readlen): Ditto
* config/riscv/ Include generic-vector-ooo
* config/riscv/ New file. To here
2024-02-21 Edwin Lu <>
* config/riscv/ (generic_ooo_sfb_alu): Add reservation
(generic_ooo_branch): Ditto
* config/riscv/ (generic_sfb_alu): Ditto
(generic_fmul_half): Ditto
* config/riscv/ Remove cbo, pushpop, and rdfrm types
* config/riscv/ (sifive_7_hfma): Add reservation
(sifive_7_popcount): Ditto
* config/riscv/ (sifive_p400_clmul): Ditto
* config/riscv/ (sifive_p600_clmul): Ditto
* config/riscv/ Change rdfrm to fmove
* config/riscv/ Change pushpop to load/store
2024-02-21 Jonathan Wakely <>
* doc/invoke.texi (Warning Options): Fix typos.
2024-02-21 David Faust <>
* config/bpf/bpf-protos.h (bpf_expand_cpymem): New.
* config/bpf/ (emit_move_loop, bpf_expand_cpymem): New.
* config/bpf/ (cpymemdi, movmemdi): New define_expands.
2024-02-21 Martin Jambor <>
PR ipa/113476
* ipa-prop.h (ipa_node_params): Convert lattices to a vector, adjust
initializers in the contructor.
(ipa_node_params::~ipa_node_params): Release lattices as a vector.
* ipa-cp.h: New file.
* Include sreal.h and ipa-cp.h.
(ipcp_value_source): Move to ipa-cp.h.
(ipcp_value_base): Likewise.
(ipcp_value): Likewise.
(ipcp_lattice): Likewise.
(ipcp_agg_lattice): Likewise.
(ipcp_bits_lattice): Likewise.
(ipcp_vr_lattice): Likewise.
(ipcp_param_lattices): Likewise.
(ipa_get_parm_lattices): Remove assert latticess is non-NULL.
(ipa_value_from_jfunc): Adjust a check for empty lattices.
(ipa_context_from_jfunc): Likewise.
(ipa_agg_value_from_jfunc): Likewise.
(merge_agg_lats_step): Do not memset new aggregate lattices to zero.
(ipcp_propagate_stage): Allocate lattices in a vector as opposed to
just in contiguous memory.
(ipcp_store_vr_results): Adjust a check for empty lattices.
* Include sreal.h and ipa-cp.h.
* Likewise.
* Likewise.
* Likewise.
* config/aarch64/ Likewise.
* config/i386/ Likewise.
* config/i386/ Likewise.
* config/i386/ Likewise.
* config/i386/ Likewise.
* config/i386/ Likewise.
* config/rs6000/ Likewise.
* config/s390/ Likewise.
* (open_base_files): Added sreal.h and ipa-cp.h to the
files to be included in
* Include sreal.h and ipa-cp.h.
* Likewise.
* Likewise.
* Likewise.
* Likewise.
* Likewise.
* Include ipa-cp.h, move inclusion of sreal.h higher.
* Include sreal.h and ipa-cp.h.
* Likewise.
* Likewise.
* Likewise.
* Likewise.
(ipa_node_params_t::duplicate): Assert new lattices remain empty
instead of setting them to NULL.
* Include sreal.h and ipa-cp.h.
* Likewise.
* Likewise.
* Likewise.
* Likewise.
* Likewise.
* Likewise.
* Likewise.
* Likewise.
* Likewise.
2024-02-21 Tamar Christina <>
* config/aarch64/aarch64-arches.def (AARCH64_ARCH): Remove LS64 from
2024-02-21 Richard Sandiford <>
* config/aarch64/ (aarch64_mode_emit_local_sme_state):
Use aarch64_gen_compare_zero_and_branch rather than emitting
a CBZ directly.
2024-02-21 Richard Sandiford <>
* config/aarch64/ (aarch64_option_valid_attribute_p):
Remove duplicated call.
2024-02-21 Richard Sandiford <>
* config/aarch64/ (aarch64_function_ok_for_sibcall):
Check that each individual piece of state is shared in the same
way, rather than using an aggregate check for PSTATE.ZA.
2024-02-21 Richard Sandiford <>
* config/aarch64/ (aarch64_mode_emit_local_sme_state):
In the code that commits a lazy save, only zero ZA if the function
has ZA state. Similarly zero ZT0 if the function has ZT0 state.
2024-02-21 Richard Sandiford <>
* config/aarch64/ (aarch64_commit_lazy_save): Remove,
directly inserting the associated sequence
* config/aarch64/ (aarch64_mode_emit_local_sme_state): instead.
2024-02-21 Richard Sandiford <>
PR target/113995
* config/aarch64/ (aarch64_expand_prologue): Don't
fold the SVE allocation into the initial allocation if the
initial allocation includes a VG save.
2024-02-21 Richard Sandiford <>
PR target/113220
* (commit_one_edge_insertion): Handle sequences that
contain jumps even if called after initial RTL expansion.
* Include cfgbuild.h.
(optimize_mode_switching): Allow the sequence returned by the
emit hook to contain internal jumps. Record which blocks
contain such jumps and split the blocks at the end.
* config/aarch64/ (aarch64_mode_emit): Check for
non-debug insns when scanning the sequence.
2024-02-21 Tobias Burnus <>
* config/nvptx/ Add 'nvptx64' to arch.
* config/nvptx/ (nvptx_omp_device_kind_arch_isa): Likewise.
2024-02-21 Dimitar Dimitrov <>
* doc/invoke.texi (-mmcu): Add information about MCU specs.
2024-02-21 Dimitar Dimitrov <>
* doc/invoke.texi (-minrt): Clarify that main
must take no arguments.
2024-02-20 Georg-Johann Lay <>
* config/avr/builtins.def: Use function prototypes of given size
and signedness.
* config/avr/ (avr_init_builtins): Adjust types required
by builtins.def.
* doc/extend.texi (AVR Built-in Functions): Adjust accordingly.
2024-02-20 Georg-Johann Lay <>
* doc/extend.texi (AVR Built-in Functions): Use @defbuiltin
instead of @table.
2024-02-20 Will Hawkins <>
* config/bpf/bpf.opt: Add help information for -mcpu.
2024-02-20 Richard Sandiford <>
PR target/113805
* config/aarch64/aarch64-passes.def (pass_late_track_speculation):
New pass.
* config/aarch64/aarch64-protos.h (make_pass_late_track_speculation):
* config/aarch64/ (is_call): New attribute.
(*and<mode>3nr_compare0): Rename to...
(@aarch64_and<mode>3nr_compare0): ...this.
* config/aarch64/ (aarch64_get_sme_state)
(aarch64_tpidr2_save, aarch64_tpidr2_restore): Add is_call attributes.
* config/aarch64/ Update file comment to
describe the new late pass.
(aarch64_do_track_speculation): Handle is_call insns like other calls.
(pass_track_speculation): Add an is_late member variable.
(pass_track_speculation::gate): Run the late pass for streaming-
compatible functions and the early pass for other functions.
(make_pass_track_speculation): Update accordingly.
(make_pass_late_track_speculation): New function.
* config/aarch64/ (aarch64_gen_test_and_branch): New
(aarch64_guard_switch_pstate_sm): Use it.
2024-02-19 Iain Sandoe <>
* config/aarch64/ (aarch64_init_rng_builtins):
Register these builtins with a pointer to uint64_t rather than unsigned
DI mode.
2024-02-19 Thomas Schwinge <>
PR target/113615
* config/gcn/ (define_expand "reduc_<fexpander>_scal_<mode>"):
Conditionalize on '!TARGET_RDNA2_PLUS'.
* config/gcn/ (gcn_expand_dpp_shr_insn)
'gcc_checking_assert (!TARGET_RDNA2_PLUS);'.