blob: ce384108d2f52f5fb18660c96a3c54fd6b207349 [file] [log] [blame]
2022-09-27 Eugene Rozenfeld <>
* (good_cloning_opportunity_p): Fix profile count comparison.
2022-09-27 Kim Kuparinen <>
* doc/invoke.texi: Update ABI version info.
2022-09-27 Aldy Hernandez <>
* (cfn_popcount): Calculate the popcount of a
2022-09-27 Aldy Hernandez <>
* (irange::set_nonzero_bits): Set range when known.
2022-09-27 Aldy Hernandez <>
* value-range.h (irange::set): New version taking wide_int_ref.
2022-09-27 Jakub Jelinek <>
PR tree-optimization/107029
* (optimize_range_tests_cmp_bitwise): Treat
signed and so can trigger even the (b % 4) == 3 case.
2022-09-27 Jeff Law <>
* (fixup_reorder_chain): Verify that simple_return
and return are available before trying to use them.
2022-09-27 Jakub Jelinek <>
PR c++/106652
PR c++/85518
* tree-core.h (enum tree_index): Add TI_FLOAT128T_TYPE
* tree.h (float128t_type_node): Define.
* (build_common_tree_nodes): Initialize float128t_type_node.
* builtins.def (DEF_FLOATN_BUILTIN): Adjust comment now that
_Float<N> is supported in C++ too.
* config/i386/ (ix86_mangle_type): Only mangle as "g"
* config/i386/ (ix86_init_builtin_types): Use
float128t_type_node for __float128 instead of float128_type_node
and create it if NULL.
* config/i386/avx512fp16intrin.h (_mm_setzero_ph, _mm256_setzero_ph,
_mm512_setzero_ph, _mm_set_sh, _mm_load_sh): Use 0.0f16 instead of
* config/ia64/ (ia64_init_builtins): Use
float128t_type_node for __float128 instead of float128_type_node
and create it if NULL.
* config/rs6000/ (is_float128_p): Also return true
for float128t_type_node if non-NULL.
* config/rs6000/ (rs6000_mangle_type): Don't mangle
float128_type_node as "u9__ieee128".
* config/rs6000/ (rs6000_init_builtins): Use
float128t_type_node for __float128 instead of float128_type_node
and create it if NULL.
2022-09-26 Martin Liska <>
* doc/invoke.texi: Add missing dash for
2022-09-26 Aldy Hernandez <>
PR tree-optimization/107009
* (operator_bitwise_and::op1_range): Optimize 0 = x & MASK.
(range_op_bitwise_and_tests): New test.
2022-09-26 Aldy Hernandez <>
PR tree-optimization/107009
Iterate over exports.
2022-09-26 Thomas Schwinge <>
* config.gcc (with_arch) [nvptx]: Allow '--with-arch' to override
the default.
* config/nvptx/ New.
* doc/install.texi (Specific) <nvptx-*-none>: Document this.
* doc/invoke.texi (Nvidia PTX Options): Likewise.
2022-09-26 Thomas Schwinge <>
* config.gcc (TM_MULTILIB_CONFIG) [nvptx]: Set to '$with_arch'.
2022-09-26 Thomas Schwinge <>
* config.gcc (with_arch) [nvptx]: Set to 'sm_30'.
* config/nvptx/ (nvptx_option_override): Assert that
'-misa' appeared.
* config/nvptx/nvptx.h (OPTION_DEFAULT_SPECS): Define.
* config/nvptx/nvptx.opt (misa=): Remove 'Init'.
2022-09-26 Thomas Schwinge <>
* config/nvptx/nvptx.h (ASM_SPEC): Define.
2022-09-26 Jeff Law <>
* (bb_is_just_return): No longer static.
* cfgcleanup.h (bb_is_just_return): Add prototype.
* (fixup_reorder_chain): Do not create an
unconditional jump to a return block. Conditionally
remove unreachable blocks.
2022-09-26 Tobias Burnus <>
PR middle-end/106982
* (lower_oacc_reductions): Add some unshare_expr.
2022-09-26 Martin Liska <>
* config/s390/ (s390_rtx_costs): Remove dest variable
and use only dst.
2022-09-26 Kyrylo Tkachov <>
* config/aarch64/aarch64-arches.def (armv9.1-a): Define.
(armv9.2-a): Likewise.
(armv9.3-a): Likewise.
* config/aarch64/aarch64.h (AARCH64_FL_V9_1): Likewise.
(AARCH64_FL_V9_2): Likewise.
(AARCH64_FL_V9_3): Likewise.
(AARCH64_FL_FOR_ARCH9_1): Likewise.
(AARCH64_FL_FOR_ARCH9_2): Likewise.
(AARCH64_FL_FOR_ARCH9_3): Likewise.
(AARCH64_ISA_V9_1): Likewise.
(AARCH64_ISA_V9_2): Likewise.
(AARCH64_ISA_V9_3): Likewise.
* doc/invoke.texi (AArch64 Options): Document armv9.1-a, armv9.2-a,
armv9.3-a values to -march.
2022-09-26 Martin Liska <>
* (tree_compare): Remove unused function.
2022-09-26 Kewen Lin <>
PR target/96072
* config/rs6000/ (rs6000_emit_epilogue): Update the
condition for adding REG_CFA_DEF_CFA reg note with
2022-09-26 Kewen Lin <>
PR target/100645
* config/rs6000/ (vec_shr_<mode>): Replace condition
2022-09-26 Hongtao Liu <>
Liwei Xu <>
PR target/53346
* config/i386/ (expand_vec_perm_shufps_shufps):
New function.
(ix86_expand_vec_perm_const_1): Insert
expand_vec_perm_shufps_shufps at the end of 2-instruction
expand sequence.
2022-09-25 Torbjörn SVENSSON <>
* doc/sourcebuild.texi: Fix chapter level.
2022-09-24 Jakub Jelinek <>
PR c/107001
* (lower_omp_taskgroup): Don't add GOMP_RETURN statement
at the end.
* (build_omp_regions_1): Clarify GF_OMP_TARGET_KIND_DATA
is not stand-alone directive. For GIMPLE_OMP_TASKGROUP, also don't
update parent.
(omp_make_gimple_edges) <case GIMPLE_OMP_TASKGROUP>: Reset
cur_region back after new_omp_region.
2022-09-23 Vineet Gupta <>
* config/riscv/riscv.h (LOCAL_SYM_P): New.
(USE_LOAD_ADDRESS_MACRO): Simplify by calling LOCAL_SYM_P.
2022-09-23 zhongjuzhe <>
* config/riscv/riscv-modes.def (VECTOR_BOOL_MODE): Add RVV mask modes.
(ADJUST_NUNITS): Adjust nunits using riscv_vector_chunks.
(ADJUST_ALIGNMENT): Adjust alignment.
(ADJUST_BYTESIZE): Adjust bytesize using riscv_vector_chunks.
(RVV_MODES): New macro.
(VECTOR_MODE_WITH_PREFIX): Add RVV vector modes.
2022-09-23 zhongjuzhe <>
* common/config/riscv/ Change "static void" to "void".
* config.gcc: Add riscv-selftests.o
* config/riscv/ Allow const_poly_int.
* config/riscv/riscv-protos.h (riscv_reinit): New function.
(riscv_parse_arch_string): change as exten function.
(riscv_run_selftests): New function.
* config/riscv/ (riscv_cannot_force_const_mem): Don't allow poly
into const pool.
(riscv_report_v_required): New function.
(riscv_expand_op): New function.
(riscv_expand_mult_with_const_int): New function.
(riscv_legitimize_poly_move): Ditto.
(riscv_legitimize_move): New function.
(riscv_hard_regno_mode_ok): Add VL/VTYPE register allocation and fix
vector RA.
(riscv_convert_vector_bits): Fix riscv_vector_chunks configuration for
-marh no 'v'.
(riscv_reinit): New function.
(TARGET_RUN_TARGET_SELFTESTS): New target hook support.
* config/riscv/t-riscv: Add riscv-selftests.o.
* config/riscv/ New file.
2022-09-23 Richard Biener <>
PR tree-optimization/106922
* (vn_reference_lookup_3): Allow
an arbitrary number of same valued skipped stores.
2022-09-23 Aldy Hernandez <>
* (frange::set): Swap setters such that the one
accepting REAL_VALUE_TYPE does all the work.
2022-09-23 Kyrylo Tkachov <>
* config/aarch64/aarch64-cores.def (neoverse-v2): New entry.
(demeter): Update tunings to neoversev2.
* config/aarch64/ Regenerate.
* config/aarch64/ (demeter_addrcost_table): Rename to
(demeter_regmove_cost): Rename to neoversev2_addrcost_table.
(demeter_advsimd_vector_cost): Rename to neoversev2_advsimd_vector_cost.
(demeter_sve_vector_cost): Rename to neoversev2_sve_vector_cost.
(demeter_scalar_issue_info): Rename to neoversev2_scalar_issue_info.
(demeter_advsimd_issue_info): Rename to neoversev2_advsimd_issue_info.
(demeter_sve_issue_info): Rename to neoversev2_sve_issue_info.
(demeter_vec_issue_info): Rename to neoversev2_vec_issue_info.
Update references to above.
(demeter_vector_cost): Rename to neoversev2_vector_cost.
(demeter_tunings): Rename to neoversev2_tunings.
(aarch64_vec_op_count::rename_cycles_per_iter): Use
neoversev2_sve_issue_info instead of demeter_sve_issue_info.
* doc/invoke.texi (AArch64 Options): Document neoverse-v2.
2022-09-23 Aldy Hernandez <>
* (build_le): Use vrp_val_*.
(build_lt): Same.
(build_ge): Same.
(build_gt): Same.
* (frange::set): Chop ranges outside of the
representable numbers for -ffinite-math-only.
(frange::normalize_kind): Use vrp_val*.
(frange::verify_range): Same.
(frange::set_nonnegative): Same.
(range_tests_floats): Remove tests that depend on -INF and +INF.
* value-range.h (real_max_representable): Add prototype.
(real_min_representable): Same.
(vrp_val_max): Set max representable number for
(vrp_val_min): Same but for min.
(frange::set_varying): Use vrp_val*.
2022-09-23 Aldy Hernandez <>
* (debug): New.
2022-09-23 Aldy Hernandez <>
* (vrange_printer::print_real_value): New.
(vrange_printer::visit): Call print_real_value.
* value-range-pretty-print.h: New print_real_value.
2022-09-23 Martin Liska <>
* common.opt: Update -flto-compression-level documentation.
* (print_filtered_help): Do not append range to an
option that uses \t syntax.
2022-09-23 Jakub Jelinek <>
* (decl_attributes): Improve diagnostics, instead of
saying expected between 1 and 1, found 2 just say expected 1, found 2.
2022-09-23 Hu, Lin1 <>
PR target/94962
* config/i386/ (BH): New define_constraint.
* config/i386/ (standard_sse_constant_p): Add return
3/4 when operand matches new predicate.
(standard_sse_constant_opcode): Add new alternative branch to
return "vpcmpeqd".
* config/i386/
(vector_all_ones_zero_extend_half_operand): New define_predicate.
(vector_all_ones_zero_extend_quarter_operand): Ditto.
* config/i386/ Add constraint to insn "mov<mode>_internal".
2022-09-22 Andrew MacLeod <>
* (range_of_range_op): Handle no operands.
(range_of_call): Do not check for builtins.
(fold_using_range::range_of_builtin_call): Delete.
(fold_using_range::range_of_builtin_int_call): Delete.
* gimple-range-fold.h: Adjust prototypes.
* (class cfn_parity): New.
(gimple_range_op_handler::maybe_builtin_call): Set arguments.
2022-09-22 Andrew MacLeod <>
* (range_of_builtin_int_call): Remove case
* (class cfn_goacc_dim): New.
(gimple_range_op_handler::maybe_builtin_call): Set arguments.
2022-09-22 Andrew MacLeod <>
* (range_of_builtin_int_call): Remove case
* (class cfn_strlen): New.
(gimple_range_op_handler::maybe_builtin_call): Set arguments.
2022-09-22 Andrew MacLeod <>
* (range_of_builtin_ubsan_call): Delete.
(range_of_builtin_int_call): Remove cases for
* (class cfn_ubsan): New.
(gimple_range_op_handler::maybe_builtin_call): Set arguments.
2022-09-22 Andrew MacLeod <>
* (range_of_builtin_int_call): Remove case
* (class cfn_clrsb): New.
(gimple_range_op_handler::maybe_builtin_call): Set arguments.
2022-09-22 Andrew MacLeod <>
* (range_of_builtin_int_call): Remove case
for CFN_CTZ.
* (class cfn_ctz): New.
(gimple_range_op_handler::maybe_builtin_call): Set arguments.
2022-09-22 Andrew MacLeod <>
* (range_of_builtin_int_call): Remove case
for CFN_CLZ.
* (class cfn_clz): New.
(gimple_range_op_handler::maybe_builtin_call): Set arguments.
2022-09-22 Andrew MacLeod <>
* (range_of_builtin_int_call): Remove case
* (class cfn_pocount): New.
(gimple_range_op_handler::maybe_builtin_call): Set arguments.
2022-09-22 Andrew MacLeod <>
* (get_letter_range): Move to new class.
(range_of_builtin_int_call): Remove case for CFN_BUILT_IN_TOUPPER
* (class cfn_toupper_tolower): New.
(gimple_range_op_handler::maybe_builtin_call): Set arguments.
2022-09-22 Andrew MacLeod <>
* (range_of_builtin_int_call): Remove case
* (class cfn_signbit): New.
(gimple_range_op_handler::maybe_builtin_call): Set arguments.
2022-09-22 Andrew MacLeod <>
(fold_using_range::range_of_builtin_int_call): Remove case for
* (gimple_range_op_handler::supported_p):
Check if a call also creates a range-op object.
(gimple_range_op_handler): Also check builtin calls.
(class cfn_constant_float_p): New. Float CFN_BUILT_IN_CONSTANT_P.
(class cfn_constant_p): New. Integral CFN_BUILT_IN_CONSTANT_P.
(gimple_range_op_handler::maybe_builtin_call): Set arguments and
handler for supported built-in calls.
* gimple-range-op.h (maybe_builtin_call): New prototype.
2022-09-22 Andrew MacLeod <>
* (range_of_range_op): Set result to
VARYING if the call to fold_range fails.
* (compute_distributive_range): Ditto.
* (range_fold_binary_expr): Ditto.
(range_fold_unary_expr): Ditto.
* (range_query::get_tree_range): Ditto.
2022-09-22 Andrew MacLeod <>
* (range_operator_float::fold_range): New base
method for "int = float op int".
* (range_op_handler::fold_range): New case.
* range-op.h: Update prototypes.
2022-09-22 Andrew MacLeod <>
* (gimple_range_op_handler::calc_op1): Use
operand 1 for second range if there is no operand 2.
2022-09-22 Andrew MacLeod <>
* (OBJS): Add gimple-range-op.o.
* (gimple_outgoing_range_stmt_p): Use
* (gimple_range_base_of_assignment): Move
to a method in gimple_range_op_handler.
(gimple_range_operand1): Ditto.
(gimple_range_operand2): Ditto.
(fold_using_range::fold_stmt): Use gimple_range_op_handler.
(fold_using_range::range_of_range_op): Ditto.
(fold_using_range::relation_fold_and_or): Ditto.
(fur_source::register_outgoing_edges): Ditto.
(gimple_range_ssa_names): Relocate to
* gimple-range-fold.h: Adjust prototypes.
* (gimple_range_calc_op1): Move
to a method in gimple_range_op_handler.
(gimple_range_calc_op2): Ditto.
(gori_compute::compute_operand_range): Use
(gori_compute::compute_logical_operands): Ditto.
(compute_operand1_range): Ditto.
(gori_compute::compute_operand2_range): Ditto.
(gori_compute::compute_operand1_and_operand2_range): Ditto.
* gimple-range-gori.h: Adjust protoypes.
* New. Supply gimple_range_op_handler methods.
* gimple-range-op.h: New. Supply gimple_range_op_handler class.
* (gimple_ranger::prefill_name): Use
(gimple_ranger::prefill_stmt_dependencies): Ditto.
* gimple-range.h: Include gimple-range-op.h.
* (range_op_handler::range_op_handler): Adjust and
remove gimple * parameter option.
* range-op.h: Adjust prototypes.
2022-09-22 Andrew MacLeod <>
* (range_op_handler::set_op_handler): Set new fields.
(ange_op_handler::range_op_handler): Likewise.
(range_op_handler::operator bool): Remove.
(range_op_handler::fold_range): Use appropriate handler.
(range_op_handler::op1_range): Likewise.
(range_op_handler::op2_range): Likewise.
(range_op_handler::lhs_op1_relation): Likewise.
(range_op_handler::lhs_op2_relation): Likewise.
(range_op_handler::op1_op2_relation): Likewise.
* range-op.h (class range_op_handler): Store handler pointers.
(range_op_handler:: operator bool): Inline.
2022-09-22 Andrew MacLeod <>
(back_threader::find_paths_to_names): Replace sequence with
a call to gimple_range_ssa_names.
2022-09-22 Martin Liska <>
Fangrui Song <>
* configure: Regenerate.
* Simplify to gcc_cv_ld_compress_debug={0,1}
and gcc_cv_as_compress_debug={0,1}.
* doc/invoke.texi: Document the removal.
* (LINK_COMPRESS_DEBUG_SPEC): Simplify and ignore
2022-09-22 Richard Biener <>
PR tree-optimization/106922
* (vn_walk_cb_data::same_val): New member.
(vn_walk_cb_data::finish): Perform delayed verification of
a skipped may-alias.
(vn_reference_lookup_pieces): Likewise.
(vn_reference_lookup): Likewise.
(vn_reference_lookup_3): When skipping stores of the same
value also handle constant stores that are more than a
single VDEF away by delaying the verification.
2022-09-22 Max Filippov <>
* config/xtensa/ (TARGET_MAX_ANCHOR_OFFSET): New
2022-09-22 Max Filippov <>
* config/xtensa/ (xtensa_can_output_mi_thunk)
(xtensa_output_mi_thunk): New functions.
(TARGET_ASM_OUTPUT_MI_THUNK): New macro definitions.
(xtensa_prepare_expand_call): Use fixed register a8 as temporary
when called with reload_completed set to 1.
2022-09-22 Richard Biener <>
PR tree-optimization/99407
* (dse_stmt_to_dr_map): New global.
(dse_classify_store): Use data-ref analysis to disambiguate more uses.
(pass_dse::use_dr_analysis_p): New pass parameter.
(pass_dse::set_pass_param): Implement.
(pass_dse::execute): Allocate and deallocate dse_stmt_to_dr_map.
* passes.def: Allow DR analysis for the DSE pass before loop.
2022-09-22 Richard Biener <>
* (can_track_predicate_on_edge): New
function split out from ...
(vn_nary_op_insert_pieces_predicated): ... here.
2022-09-22 liuhongt <>
PR target/106994
* config/i386/ (floorv2sf2): Fix typo, use
register_operand instead of vector_operand for operands[1].
2022-09-21 Aldy Hernandez <>
PR tree-optimization/106967
* (frange::set): Set known NANs to undefined for
2022-09-21 Aldy Hernandez <>
* (frange::combine_zeros): Call set_undefined.
(frange::intersect_nans): Same.
(frange::intersect): Same.
(frange::verify_range): Undefined ranges do not have a type.
* value-range.h (frange::set_undefined): Clear NAN flags and type.
2022-09-21 Richard Biener <>
PR tree-optimization/106984
* (instrument_builtin_call): Build the COND_EXPR condition in
a separate statement.
2022-09-21 Kyrylo Tkachov <>
* config/aarch64/aarch64.h (HAVE_LOCAL_CPU_DETECT,
local_cpu_detect when rewriting -march=native and no -mcpu or -mtune
is given.
2022-09-21 Aldy Hernandez <>
PR tree-optimization/106967
* (foperator_equal::fold_range): Adjust for NAN.
(foperator_equal::op1_range): Same.
(foperator_not_equal::fold_range): Same.
(foperator_not_equal::op1_range): Same.
(foperator_lt::fold_range): Same.
(foperator_lt::op1_range): Same.
(foperator_lt::op2_range): Same.
(foperator_le::fold_range): Same.
(foperator_le::op1_range): Same.
(foperator_le::op2_range): Same.
(foperator_gt::fold_range): Same.
(foperator_gt::op1_range): Same.
(foperator_gt::op2_range): Same.
(foperator_ge::fold_range): Same.
(foperator_ge::op1_range): Same.
(foperator_ge::op2_range): Same.
(foperator_unordered::op1_range): Same.
(foperator_ordered::fold_range): Same.
(foperator_ordered::op1_range): Same.
(build_le): Assert that we don't have a NAN.
(build_lt): Same.
(build_gt): Same.
(build_ge): Same.
2022-09-21 liuhongt <>
PR tree-optimization/106963
* (vect_create_nonlinear_iv_init): Use
vec_gen_perm_mask_any instead of vec_gen_perm_mask_check.
2022-09-20 Aldy Hernandez <>
* value-range.h (frange::maybe_isnan): Return false for
undefined ranges.
2022-09-20 Aldy Hernandez <>
* (frange::set_nonnegative): Set +NAN.
(range_tests_signed_zeros): New test.
* value-range.h (frange::update_nan): New overload to set NAN sign.
2022-09-20 Richard Sandiford <>
PR target/106491
* config/aarch64/ (scalar_types)
(acle_vector_types, acle_svpattern, acle_svprfop): Add GTY
markup to (new) extern declarations instead of to the main
2022-09-20 Richard Sandiford <>
PR tree-optimization/106794
PR tree-optimization/106914
* (vect_optimize_slp_pass::internal_node_cost):
Only consider loads that already have a permutation.
(vect_optimize_slp_pass::start_choosing_layouts): Assert that
loads with permutations are leaf nodes. Prevent any kind of grouped
access from changing layout if it doesn't have a load permutation.
2022-09-20 Richard Sandiford <>
* (vect_check_gather_scatter): Restrict
early-out optimisation to SSA_NAMEs.
2022-09-20 Martin Liska <>
* (ctf_add_string): Replace "the the" with "the".
* doc/md.texi: Likewise.
* (non_null_loadstore): Likewise.
2022-09-20 liuhongt <>
PR target/106910
* config/i386/ (nearbyintv2sf2): New expander.
(rintv2sf2): Ditto.
(ceilv2sf2): Ditto.
(lceilv2sfv2si2): Ditto.
(floorv2sf2): Ditto.
(lfloorv2sfv2si2): Ditto.
(btruncv2sf2): Ditto.
(lrintv2sfv2si2): Ditto.
(roundv2sf2): Ditto.
(lroundv2sfv2si2): Ditto.
(*mmx_roundv2sf2): New define_insn.
2022-09-20 konglin1 <>
PR middle-end/105735
(analyze_and_compute_bitop_with_inv_effect): New function.
(final_value_replacement_loop): Enhanced to handle bitop
with inv induction.
2022-09-20 Xi Ruoyao <>
* config/loongarch/gnu-user.h (GNU_USER_TARGET_LINK_SPEC): For
-static-pie, pass -static -pie --no-dynamic-linker -z text to
the linker, and do not pass --dynamic-linker.
2022-09-20 Aldy Hernandez <>
* (frange::flush_denormals_to_zero): New.
(frange::set): Call flush_denormals_to_zero.
* value-range.h (class frange): Add flush_denormals_to_zero.
2022-09-20 liuhongt <>
* config/i386/ (ix86_issue_rate): Adjust for
latest Intel processors.
2022-09-20 konglin1 <>
PR target/106887
* config/i386/ (ix86_expand_vector_init_duplicate):
Fixed V16BF mode case.
2022-09-19 Torbjörn SVENSSON <>
* (default_zero_call_used_regs): Improve sorry
2022-09-18 Julian Brown <>
* (omp_segregate_mapping_groups): Update comment.
(gimplify_adjust_omp_clauses): Move ATTACH and
ATTACH_ZERO_LENGTH_ARRAY_SECTION nodes to the end of the clause list
for offloaded OpenMP regions.
2022-09-18 Jakub Jelinek <>
PR middle-end/106831
* (frange::singleton_p): Avoid propagating long
doubles that may have multiple representations.
2022-09-18 Aldy Hernandez <>
* (frange_add_zeros): Replace set_signbit with
union of zero.
* (range_query::get_tree_range): Remove set_signbit
* (vrange_printer::print_frange_prop):
(vrange_printer::print_frange_nan): New.
* value-range-pretty-print.h (print_frange_prop): Remove.
(print_frange_nan): New.
* (frange_storage_slot::set_frange): Set
kind and NAN fields.
(frange_storage_slot::get_frange): Restore kind and NAN fields.
* value-range-storage.h (class frange_storage_slot): Add kind and
NAN fields.
* (frange::update_nan): Remove.
(frange::set_signbit): Remove.
(frange::set): Adjust for NAN fields.
(frange::normalize_kind): Remove m_props.
(frange::combine_zeros): New.
(frange::union_nans): New.
(frange::union_): Handle new NAN fields.
(frange::intersect_nans): New.
(frange::intersect): Handle new NAN fields.
(frange::operator=): Same.
(frange::operator==): Same.
(frange::contains_p): Same.
(frange::singleton_p): Remove special case for signed zeros.
(frange::verify_range): Adjust for new NAN fields.
(frange::set_zero): Handle signed zeros.
(frange::set_nonnegative): Same.
(range_tests_nan): Adjust tests.
(range_tests_signed_zeros): Same.
(range_tests_signbit): Same.
(range_tests_floats): Same.
* value-range.h (class fp_prop): Remove.
(class frange_props): Remove
(frange::lower_bound): NANs don't have endpoints.
(frange::upper_bound): Same.
(frange_props::operator==): Remove.
(frange_props::union_): Remove.
(frange_props::intersect): Remove.
(frange::update_nan): New.
(frange::clear_nan): New.
(frange::undefined_p): New.
(frange::set_nan): New.
(frange::known_finite): Adjust for new NAN representation.
(frange::maybe_isnan): Same.
(frange::known_isnan): Same.
(frange::signbit_p): Same.
* (range_of_builtin_int_call): Rename
known_signbit_p into signbit_p.
2022-09-17 Jan-Benedict Glaw <>
* config/csky/csky.h (FUNCTION_ARG_REGNO_P): Cast REGNO to (int)
to prevent warning.
2022-09-17 Jakub Jelinek <>
PR tree-optimization/106958
* (optimize_range_tests_cmp_bitwise): If
id >= l, cast op to type1, otherwise to pointer_sized_int_node.
If type has pointer type, cast exp to pointer_sized_int_node
even when id < l.
2022-09-16 liuhongt <>
PR target/106910
* config/i386/
(ix86_builtin_vectorized_function): Modernized with
corresponding expanders.
* config/i386/ (lrint<mode><sseintvecmodelower>2): New
(floor<mode>2): Ditto.
(lfloor<mode><sseintvecmodelower>2): Ditto.
(ceil<mode>2): Ditto.
(lceil<mode><sseintvecmodelower>2): Ditto.
(btrunc<mode>2): Ditto.
(lround<mode><sseintvecmodelower>2): Ditto.
(exp2<mode>2): Ditto.
2022-09-15 Joseph Myers <>
* ginclude/float.h (INFINITY): Define only if
2022-09-15 Richard Biener <>
PR tree-optimization/106922
* (translate_vuse_through_block): Only
keep the VUSE if its def dominates PHIBLOCK.
(prune_clobbered_mems): Rewrite logic so we check whether
a value dies in a block when the VUSE def doesn't dominate it.
2022-09-15 Richard Biener <>
* (build_common_tree_nodes): Initialize void_list_node
2022-09-15 Jiufu Guo <>
PR target/106550
* config/rs6000/ (rs6000_emit_set_long_const): Use pli.
2022-09-14 Aldy Hernandez <>
* (frange_add_zeros): New.
(build_le): Call frange_add_zeros.
(build_ge): Same.
(foperator_equal::op1_range): Same.
(foperator_not_equal::op1_range): Same.
2022-09-14 Aldy Hernandez <>
* (build_le): Accept frange instead of number.
(build_lt): Same.
(build_ge): Same.
(build_gt): Same.
(foperator_lt::op1_range): Pass full range to build_*.
(foperator_lt::op2_range): Same.
(foperator_le::op1_range): Same.
(foperator_le::op2_range): Same.
(foperator_gt::op1_range): Same.
(foperator_gt::op2_range): Same.
(foperator_ge::op1_range): Same.
(foperator_ge::op2_range): Same.
2022-09-14 Aldy Hernandez <>
* (frange::set): Use set_nan.
* value-range.h (frange::set_nan): Inline code originally in
2022-09-14 Aldy Hernandez <>
* (frange_set_nan): Remove.
(build_lt): Use set_nan, update_nan, clear_nan.
(build_gt): Same.
(foperator_equal::op1_range): Same.
(foperator_not_equal::op1_range): Same.
(foperator_lt::op1_range): Same.
(foperator_lt::op2_range): Same.
(foperator_le::op1_range): Same.
(foperator_le::op2_range): Same.
(foperator_gt::op1_range): Same.
(foperator_gt::op2_range): Same.
(foperator_ge::op1_range): Same.
(foperator_ge::op2_range): Same.
(foperator_unordered::op1_range): Same.
(foperator_ordered::op1_range): Same.
* (range_query::get_tree_range): Same.
* (frange::set_nan): Same.
(frange::update_nan): Same.
(frange::union_): Same.
(frange::intersect): Same.
(range_tests_nan): Same.
(range_tests_signed_zeros): Same.
(range_tests_signbit): Same.
(range_tests_floats): Same.
* value-range.h (class frange): Add update_nan and clear_nan.
(frange::set_nan): New.
2022-09-14 Aldy Hernandez <>
* (range_query::get_tree_range): Remove check for overflow.
* (vrange_printer::visit): Move read
of type until after undefined_p is checked.
* (frange::set): Remove asserts for REAL_CST.
(frange::contains_p): Tidy up.
(range_tests_nan): Add comment.
* value-range.h (frange::type): Check for undefined_p.
(frange::set_undefined): Remove set of endpoints.
2022-09-14 Julian Brown <>
* (omp_group_last): Allow GOMP_MAP_ATTACH_DETACH after
GOMP_MAP_STRUCT (for reindexing).
(omp_gather_mapping_groups): Reimplement using...
(omp_gather_mapping_groups_1): This new function. Stop processing at
(omp_group_base): Allow GOMP_MAP_TO_PSET without any following node.
(omp_index_mapping_groups): Reimplement using...
(omp_index_mapping_groups_1): This new function. Handle
(omp_reindex_mapping_groups, omp_mapped_by_containing_struct): New
(omp_tsort_mapping_groups_1): Adjust handling of base group being the
same as current group. Use omp_mapped_by_containing_struct.
(omp_build_struct_sibling_lists): Use omp_mapped_by_containing_struct
and omp_reindex_mapping_groups. Robustify group deletion for reordered
(gimplify_scan_omp_clauses): Update calls to
2022-09-14 Julian Brown <>
* (gimplify_omp_var_data): Remove GOVD_MAP_HAS_ATTACHMENTS.
(insert_struct_comp_map): Refactor function into...
(build_omp_struct_comp_nodes): This new function. Remove list handling
and improve self-documentation.
(extract_base_bit_offset): Remove BASE_REF, OFFSETP parameters. Move
code to strip outer parts of address out of function, but strip no-op
(omp_mapping_group): Add DELETED field for use during reindexing.
(omp_strip_components_and_deref, omp_strip_indirections): New functions.
(omp_group_last, omp_group_base): Add GOMP_MAP_STRUCT handling.
(omp_gather_mapping_groups): Initialise DELETED field for new groups.
(omp_index_mapping_groups): Notice DELETED groups when (re)indexing.
(omp_siblist_insert_node_after, omp_siblist_move_node_after,
omp_siblist_move_nodes_after, omp_siblist_move_concat_nodes_after): New
helper functions.
(omp_accumulate_sibling_list): New function to build up GOMP_MAP_STRUCT
node groups for sibling lists. Outlined from gimplify_scan_omp_clauses.
(omp_build_struct_sibling_lists): New function.
(gimplify_scan_omp_clauses): Remove struct_map_to_clause,
struct_seen_clause, struct_deref_set. Call
omp_build_struct_sibling_lists as pre-pass instead of handling sibling
lists in the function's main processing loop.
(gimplify_adjust_omp_clauses_1): Remove GOVD_MAP_HAS_ATTACHMENTS
handling, unused now.
* (scan_sharing_clauses): Handle pointer-type indirect
struct references, and references to pointers to structs also.
2022-09-14 Richard Biener <>
PR tree-optimization/106938
* (execute_fixup_cfg): Purge dead abnormal
edges for all last stmts in a block. Do EH cleanup
only on the last stmt in a block.
2022-09-14 Aldy Hernandez <>
PR tree-optimization/106936
* (range_query::get_value_range): Remove assert.
2022-09-14 Jan-Benedict Glaw <>
* config/mips/ (mips_option_override): Drop unused variable.
2022-09-14 Julian Brown <>
* (is_or_contains_p, omp_target_reorder_clauses): Delete
(omp_tsort_mark): Add enum.
(omp_mapping_group): Add struct.
(debug_mapping_group, omp_get_base_pointer, omp_get_attachment,
omp_group_last, omp_gather_mapping_groups, omp_group_base,
omp_index_mapping_groups, omp_containing_struct,
omp_tsort_mapping_groups_1, omp_tsort_mapping_groups,
omp_segregate_mapping_groups, omp_reorder_mapping_groups): New
(gimplify_scan_omp_clauses): Call above functions instead of
omp_target_reorder_clauses, unless we've seen an error.
* (scan_sharing_clauses): Avoid strict test if we haven't
sorted mapping groups.
2022-09-14 Jakub Jelinek <>
PR tree-optimization/106878
* (verify_gimple_assign_binary): Disallow pointer,
reference or OFFSET_TYPE BIT_IOR_EXPR, BIT_XOR_EXPR or, unless
the second argument is INTEGER_CST, BIT_AND_EXPR.
* match.pd ((type) X op CST -> (type) (X op ((type-x) CST)),
(type) (((type2) X) op Y) -> (X op (type) Y)): Punt for
* (optimize_range_tests_cmp_bitwise): For
pointers cast them to pointer sized integers first.
2022-09-14 Richard Biener <>
PR tree-optimization/106934
* (non_rewritable_mem_ref_base): Avoid BIT_FIELD_REFs
of bitfields.
(maybe_rewrite_mem_ref_base): Likewise.
2022-09-14 liuhongt <>
PR tree-optimization/106905
* (vectorizable_nonlinear_induction): Return
false when !vect_use_loop_mask_for_alignment_p (loop_vinfo) &&
2022-09-13 Roger Sayle <>
PR target/106877
* (move_for_stack_reg): Check for any_malformed_asm
in gcc_assert.
2022-09-13 Max Filippov <>
2022-09-12 Takayuki 'January June' Suwa <>
* config/xtensa/ (TARGET_CONSTANT_OK_FOR_CPROP_P):
New macro definition.
Implement the hook as mentioned above.
2022-09-13 Kewen Lin <>
PR target/104482
* config/rs6000/ (altivec_resolve_overloaded_builtin): Fix
the equality check for argument number, and move this hunk ahead.
2022-09-13 Kewen.Lin <>
PR target/105485
* config/rs6000/ (rs6000_gimple_fold_builtin): Add
the handling for unresolved overloaded builtin function.
(rs6000_expand_builtin): Likewise.
2022-09-13 Kewen Lin <>
* config/rs6000/ (class rs6000_cost_data): Add new members
m_nstores, m_reduc_factor, m_gather_load and member function
(rs6000_cost_data::update_target_cost_per_stmt): Update for m_nstores,
m_reduc_factor and m_gather_load.
(rs6000_cost_data::determine_suggested_unroll_factor): New function.
(rs6000_cost_data::finish_cost): Use determine_suggested_unroll_factor.
* config/rs6000/rs6000.opt (rs6000-vect-unroll-limit): New parameter.
(rs6000-vect-unroll-issue): Likewise.
(rs6000-vect-unroll-reduc-threshold): Likewise.
* doc/invoke.texi (rs6000-vect-unroll-limit): Document new parameter.
2022-09-13 Richard Biener <>
PR middle-end/106909
* (gimple_fold_call): Clear the ctrl-altering
flag of a unreachable call.
2022-09-13 Richard Biener <>
PR tree-optimization/106913
* (warn_uninitialized_vars): Do not set
ft_reachable on EXIT_BLOCK.
2022-09-13 Richard Sandiford <>
* config/aarch64/ (aarch64_classify_vector_mode): Use
(aarch64_vectorize_related_mode): Restrict ADVSIMD handling to
(aarch64_hard_regno_mode_ok): Don't allow tuples of 2 64-bit vectors
in GPRs.
(aarch64_classify_address): Treat little-endian structure moves
like big-endian for TARGET_FLOAT && !TARGET_SIMD.
(aarch64_secondary_memory_needed): New function.
(aarch64_secondary_reload): Handle 128-bit Advanced SIMD vectors
in the same way as TF, TI and TD.
(aarch64_rtx_mult_cost): Restrict ADVSIMD handling to TARGET_SIMD.
(aarch64_rtx_costs): Likewise.
(aarch64_register_move_cost): Treat a pair of 64-bit vectors
separately from a single 128-bit vector. Handle the cost implied
by aarch64_secondary_memory_needed.
(aarch64_simd_valid_immediate): Restrict ADVSIMD handling to
(aarch64_expand_vec_perm_const_1): Likewise.
* config/aarch64/ (VTX): New iterator.
* config/aarch64/ (arches): Add fp_q as a synonym of simd.
(arch_enabled): Adjust accordingly.
(@aarch64_reload_mov<TX:mode>): Extend to...
(@aarch64_reload_mov<VTX:mode>): ...this.
* config/aarch64/ (mov<mode>): Require TARGET_FLOAT
rather than TARGET_SIMD.
(movmisalign<mode>): Likewise.
(load_pair<DREG:mode><DREG2:mode>): Likewise.
(vec_store_pair<DREG:mode><DREG2:mode>): Likewise.
(load_pair<VQ:mode><VQ2:mode>): Likewise.
(vec_store_pair<VQ:mode><VQ2:mode>): Likewise.
(@aarch64_split_simd_mov<mode>): Likewise.
(aarch64_get_low<mode>): Likewise.
(aarch64_get_high<mode>): Likewise.
(aarch64_get_half<mode>): Likewise. Canonicalize to a move for
lowpart extracts.
(*aarch64_simd_mov<VDMOV:mode>): Require TARGET_FLOAT rather than
TARGET_SIMD. Use different w<-w and r<-w instructions for
!TARGET_SIMD. Disable immediate moves for !TARGET_SIMD but
add an alternative specifically for w<-Z.
(*aarch64_simd_mov<VQMOV:mode>): Require TARGET_FLOAT rather than
TARGET_SIMD. Likewise for the associated define_splits. Disable
FPR moves and immediate moves for !TARGET_SIMD but add an alternative
specifically for w<-Z.
(aarch64_simd_mov_from_<mode>high): Require TARGET_FLOAT rather than
TARGET_SIMD. Restrict the existing alternatives to TARGET_SIMD
but add a new r<-w one for !TARGET_SIMD.
(*aarch64_get_high<mode>): New pattern.
(load_pair_lanes<mode>): Require TARGET_FLOAT rather than TARGET_SIMD.
(store_pair_lanes<mode>): Likewise.
(*aarch64_combine_internal<mode>): Likewise. Restrict existing
w<-w, w<-r and w<-m alternatives to TARGET_SIMD but add a new w<-r
alternative for !TARGET_SIMD.
(*aarch64_combine_internal_be<mode>): Likewise.
(aarch64_combinez<mode>): Require TARGET_FLOAT rather than TARGET_SIMD.
Remove bogus arch attribute.
(*aarch64_combinez_be<mode>): Likewise.
(@aarch64_vec_concat<mode>): Require TARGET_FLOAT rather than
(aarch64_combine<mode>): Likewise.
(aarch64_rev_reglist<mode>): Likewise.
(mov<mode>): Likewise.
(*aarch64_be_mov<VSTRUCT_2D:mode>): Extend to TARGET_FLOAT &&
!TARGET_SIMD, regardless of endianness. Extend associated
define_splits in the same way, both for this pattern and the
ones below.
(*aarch64_be_mov<VSTRUCT_2Qmode>): Likewise. Restrict w<-w
alternative to TARGET_SIMD.
(*aarch64_be_movoi): Likewise.
(*aarch64_be_movci): Likewise.
(*aarch64_be_movxi): Likewise.
(*aarch64_be_mov<VSTRUCT_4QD:mode>): Extend to TARGET_FLOAT
&& !TARGET_SIMD, regardless of endianness. Restrict w<-w alternative
to TARGET_SIMD for tuples of 128-bit vectors.
(*aarch64_be_mov<VSTRUCT_4QD:mode>): Likewise.
* config/aarch64/ Remove TARGET_SIMD condition
from DREG STP peephole. Change TARGET_SIMD to TARGET_FLOAT in
the VQ and VP_2E LDP and STP peepholes.
2022-09-13 Richard Sandiford <>
* config/aarch64/ (movv8di): Remove TARGET_SIMD
condition. Likewise for the related define_split. Tweak formatting.
2022-09-12 Takayuki 'January June' Suwa <>
* config/xtensa/ (TARGET_CONSTANT_OK_FOR_CPROP_P):
New macro definition.
Implement the hook as mentioned above.
2022-09-12 Joseph Myers <>
* ginclude/stdatomic.h [defined __STDC_VERSION__ &&
__STDC_VERSION__ > 201710L] (ATOMIC_VAR_INIT): Do not define.
2022-09-12 Tobias Burnus <>
* config/nvptx/ (process): Replace a fatal_error by
a warning + not enabling offloading if -misa=sm_30 prevents
reverse offload.
(main): Use tool_name as progname for diagnostic.
* config/gcn/ (main): Likewise.
2022-09-12 Aldy Hernandez <>
* (frange::set_signbit): Avoid changing sign when
already in the correct sign.
2022-09-12 Max Filippov <>
* config/xtensa/ (xtensa_function_value_regno_p):
Recognize all 4 return registers.
* config/xtensa/xtensa.h (GP_RETURN_REG_COUNT): New definition.
* config/xtensa/ (untyped_call): New pattern.
2022-09-12 Jonathan Wakely <>
* doc/extend.texi (Floating Types): Fix "_float128" typo.
2022-09-10 Takayuki 'January June' Suwa <>
* config/xtensa/ (xtensa_constantsynth):
Add new pattern for the abovementioned case.
2022-09-10 Akari Takahashi <>
Segher Boessenkool <>
* config/rs6000/ (get_memref_parts): Regularize some code.
2022-09-09 Takayuki 'January June' Suwa <>
* config/xtensa/ Rewrite the split pattern that performs
the abovementioned process so that insns that overwrite clobbered
register no longer need to be contiguous.
(DSC): Remove as no longer needed.
2022-09-09 Takayuki 'January June' Suwa <>
* config/xtensa/ (machine_function): New boolean member as
a flag that controls whether to emit the insns for stack pointer
adjustment inside of the pro/epilogue.
(xtensa_emit_adjust_stack_ptr): New function to share the common
codes and to emit insns if not inhibited.
(xtensa_expand_epilogue): Change to use the function mentioned
above when using the CALL0 ABI.
(xtensa_expand_prologue): Ditto.
And also change to set the inhibit flag used by
xtensa_emit_adjust_stack_ptr() to true if the stack pointer is only
used for its own adjustment.
2022-09-09 David Malcolm <>
* doc/invoke.texi (Static Analyzer Options): Add
2022-09-09 David Malcolm <>
2022-09-09 Tobias Burnus <>
* config/nvptx/ (struct id_map): Add 'dim' member.
(record_id): Store func name without quotes, store dim separately.
(process): For GOMP_REQUIRES_REVERSE_OFFLOAD, check that -march is
at least sm_35, create '$offload_func_table' global array and init
with reverse-offload function addresses.
* config/nvptx/ (write_fn_proto_1, write_fn_proto): New
force_public attribute to force .visible.
(nvptx_declare_function_name): For "omp target
device_ancestor_nohost" attribut, force .visible/TREE_PUBLIC.
2022-09-09 Tobias Burnus <>
* config/gcn/ (process_asm): Create .offload_func_table,
similar to pre-existing .offload_var_table.
2022-09-09 Joseph Myers <>
* ginclude/stddef.h [__STDC_VERSION__ > 201710L] (unreachable):
New macro.
2022-09-09 Kewen Lin <>
PR middle-end/106833
* (verify_opaque_type): New function.
(verify_type): Call verify_opaque_type for OPAQUE_TYPE.
2022-09-09 Kwok Cheung Yeung <>
* config/gcn/gcn-builtins.def (FABSVF, LDEXPVF, LDEXPV, FREXPVF_EXP,
* config/gcn/gcn-protos.h (gcn_dconst1over2pi): New prototype.
* config/gcn/ (MATH_UNOP_1OR2REG, MATH_UNOP_1REG,
MATH_UNOP_TRIG): New iterators.
(math_unop): New attributes.
(<math_unop><mode>2, <math_unop><mode>2<exec>,
<math_unop><mode>2, <math_unop><mode>2<exec>,
*<math_unop><mode>2_insn, *<math_unop><mode>2<exec>_insn,
ldexp<mode>3, ldexp<mode>3<exec>,
frexp<mode>_exp2, frexp<mode>_mant2,
frexp<mode>_exp2<exec>, frexp<mode>_mant2<exec>): New instructions.
(<math_unop><mode>2, <math_unop><mode>2<exec>): New expanders.
* config/gcn/ (init_ext_gcn_constants): Update definition of
(gcn_dconst1over2pi): New.
(gcn_builtin_type_index): Add entry for v64df type.
(v64df_type_node): New.
(gcn_init_builtin_types): Initialize v64df_type_node.
(gcn_expand_builtin_1): Expand new builtins to instructions.
(print_operand): Fix assembler output for 1/(2*PI) constant.
* config/gcn/ (unspec): Add new entries.
2022-09-09 Richard Biener <>
PR tree-optimization/106722
* (ref_at_iteration): Do not associate the
constant part of the offset into the MEM_REF offset
operand, across a non-zero offset.
2022-09-09 Kito Cheng <>
* common/config/riscv/ (RISCV_USE_CUSTOMISED_MULTI_LIB):
Move forward for cover all all necessary functions for suppress
unused function warnings.
(riscv_multi_lib_check): Move forward, and tweak message to suppress
-Werror=format-diag warning.
2022-09-09 Richard Biener <>
PR tree-optimization/106881
* (simple_control_dep_chain):
Add only non-fallthru edges and avoid the same set of edges
as compute_control_dep_chain_pdom does.
2022-09-09 Jan-Benedict Glaw <>
* doc/ (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): Document requirement
* doc/tm.texi: Regenerate.
2022-09-09 Martin Liska <>
* optc-save-gen.awk: Always compare array option values with memcmp.
2022-09-08 Jonathan Wakely <>
PR c++/106838
* doc/extend.texi (Type Traits): Fix requirements. Document
__is_aggregate and __is_final.
2022-09-08 Tim Lange <>
PR analyzer/106625
* doc/invoke.texi:
State that the checker also reasons about symbolic values.
2022-09-08 Richard Sandiford <>
PR tree-optimization/106886
* (vect_optimize_slp_pass::get_result_with_layout):
Fix copying of scalar stmts.
2022-09-08 Chung-Lin Tang <>
* config/nios2/linux.h (MUSL_DYNAMIC_LINKER): Add #undef before #define.
2022-09-08 Richard Biener <>
PR middle-end/106870
* (insert_check_and_trap):
Set the control-altering flag on the built IFN_TRAP.
* (gimple_build_builtin_unreachable): Likewise.
* (handle_abnormal_edges): Set the control-altering
flag on the .ABNORMAL_DISPATCHER call.
* (cleanup_call_ctrl_altering_flag): Avoid
resetting the control altering flag for ECF_NORETURN calls.
(cleanup_control_flow_bb): Set the control altering flag on
discovered noreturn calls.
* (expand_thunk): Set the control altering
flag for the noreturn tailcall case.
* (lower_resx): Likewisw for trap and unwind_resume
2022-09-08 Jakub Jelinek <>
* (expand_omp_ordered_sink): Add CONT_BB argument.
Add doacross(sink:omp_cur_iteration-1) support.
(expand_omp_ordered_source_sink): Clear counts[fd->ordered + 1].
Adjust expand_omp_ordered_sink caller.
(expand_omp_for_ordered_loops): If counts[fd->ordered + 1] is
non-NULL, set that variable to true at the start of outermost
non-collapsed loop and set it to false at the end of innermost
ordered loop.
(expand_omp_for_generic): If fd->ordered, allocate
1 + (fd->ordered - fd->collapse) further elements in counts array.
Copy to counts + 2 + fd->ordered the counts of fd->collapse ..
fd->ordered - 1 loop if any.
2022-09-08 Richard Biener <>
PR tree-optimization/106881
* (compute_control_dep_chain_pdom):
Add only non-fallthru edges and avoid the same set of edges
as the caller does.
2022-09-08 Aldy Hernandez <>
(fold_using_range::range_of_builtin_int_call): Use fpclassify like API.
* (finite_operand_p): Same.
(finite_operands_p): Same.
(foperator_lt::fold_range): Same.
(foperator_le::fold_range): Same.
(foperator_gt::fold_range): Same.
(foperator_ge::fold_range): Same.
(foperator_unordered::fold_range): Same.
(foperator_unordered::op1_range): Same.
(foperator_ordered::fold_range): Same.
* (frange::set_nan): Same.
(frange::set_signbit): Same.
(frange::union_): Same.
(frange::intersect): Same.
(frange::operator==): Same.
(frange::singleton_p): Same.
(frange::verify_range): Same.
(range_tests_nan): Same.
(range_tests_floats): Same.
* value-range.h(frange::known_finite): New.
(frange::maybe_inf): New.
(frange::known_inf): New.
(frange::maybe_nan): New.
(frange::known_nan): New.
(frange::known_signbit): New.
2022-09-08 Iain Buclaw <>
* config/ Include tm.h.
* config/ Likewise.
* config/ Remove memmodel.h.
* config/ Likewise.
* config/ Include tm.h.
* config/ Likewise.
* config/ Likewise.
2022-09-08 Christophe Lyon <>
* config/arm/ (mve_vqshluq_n_s<mode>): Use
MVE_pred/MVE_constraint instead of mve_imm_7/Ra.
(mve_vqshluq_m_n_s<mode>): Likewise.
(mve_vqrshrnbq_n_<supf><mode>): Use MVE_pred3/MVE_constraint3
instead of mve_imm_8/Rb.
(mve_vqrshrunbq_n_s<mode>): Likewise.
(mve_vqrshrntq_n_<supf><mode>): Likewise.
(mve_vqrshruntq_n_s<mode>): Likewise.
(mve_vrshrnbq_n_<supf><mode>): Likewise.
(mve_vrshrntq_n_<supf><mode>): Likewise.
(mve_vqrshrnbq_m_n_<supf><mode>): Likewise.
(mve_vqrshrntq_m_n_<supf><mode>): Likewise.
(mve_vrshrnbq_m_n_<supf><mode>): Likewise.
(mve_vrshrntq_m_n_<supf><mode>): Likewise.
(mve_vqrshrunbq_m_n_s<mode>): Likewise.
(mve_vsriq_n_<supf><mode): Use MVE_pred2/MVE_constraint2 instead
of mve_imm_selective_upto_8/Rg.
(mve_vsriq_m_n_<supf><mode>): Likewise.
2022-09-08 Jiufu Guo <>
* config/rs6000/ (splitter for set to and_mask constants):
Use int_reg_operand (instead of int_reg_operand_not_pseudo).
(splitter for multi-insn constant loads): Ditto.
2022-09-08 Sebastian Huber <>
* config/rs6000/rtems.h (CPP_OS_DEFAULT_SPEC): Define __PPC_VRSAVE__ if
-mvrsave is present.
* config/rs6000/t-rtems: Add -mvrsave multilib variants for
2022-09-07 Martin Liska <>
* Restore detection of HAVE_XCOFF_DWARF_EXTRAS.
* config/rs6000/ (HAVE_XCOFF_DWARF_EXTRAS): Reset it.
* configure: Regenerate.
* Regenerate.
2022-09-07 Surya Kumari Jangala <>
PR rtl-optimization/105586
* (save_state_for_fallthru_edge): New function.
(schedule_region): Use it for all blocks.
2022-09-07 Joseph Myers <>
* ginclude/stdalign.h [defined __STDC_VERSION__ &&
__STDC_VERSION__ > 201710L]: Disable all content.
* ginclude/stdbool.h [defined __STDC_VERSION__ && __STDC_VERSION__
> 201710L] (bool, true, false): Do not define.
2022-09-07 Martin Liska <>
PR bootstrap/106855
* (scan_prog_file): Restore if XCOFF_DEBUGGING_INFO.
* config/rs6000/ (rs6000_option_override_internal):
Restore usage of XCOFF_DEBUGGING_INFO.
* config/rs6000/xcoff.h (XCOFF_DEBUGGING_INFO): Restore.
* (XCOFF_DEBUGGING_INFO): Restore support for
(dw2_asm_output_nstring): Likewise.
(output_fde): Likewise.
(output_call_frame_info): Likewise.
(have_macinfo): Likewise.
(add_AT_loc_list): Likewise.
(add_AT_view_list): Likewise.
(output_compilation_unit_header): Likewise.
(output_pubnames): Likewise.
(output_aranges): Likewise.
(output_line_info): Likewise.
(output_macinfo): Likewise.
(dwarf2out_finish): Likewise.
(dwarf2out_early_finish): Likewise.
2022-09-07 Richard Biener <>
PR tree-optimization/106866
* (eliminate_unnecessary_stmts): When
we changed cfun->calls_setjmp make sure to purge all
abnormal call edges.
2022-09-07 Xianmiao Qu <>
* config/csky/ (csky_emit_compare_float): Fix the expanding of
float LE comparing with zero for fpuv3.
* config/csky/csky.h (TARGET_SUPPORT_FPV2): New, true if any fpuv2
features are enabled.
2022-09-07 Richard Biener <>
PR tree-optimization/106860
* (split_loop): Find the exit to
latch edge from the loop exit edge instead of from the
latch. Verify we're going to find it.
2022-09-07 Richard Biener <>
* (dfs_mark_dominating_region):
Adjust to take the region exit source as argument.
(uninit_analysis::init_from_phi_def): Adjust.
(uninit_analysis::init_use_preds): Mark the dominating region
before computing control dependences.
2022-09-07 Richard Sandiford <>
* config/aarch64/ (*mov<SHORT:mode>_aarch64): Extend
w<-w, r<-w and w<-r alternatives to !simd, using 32-bit moves
in that case. Extend w<-r to w<-Z.
(*mov<HFBF:mode>_aarch64): Likewise, but with Y instead of Z.
(*movti_aarch64): Use an FMOV from XZR for w<-Z if MOVI is not
(define_split): Do not apply the floating-point immediate-to-register
split to zeros, even if MOVI is not available.
2022-09-07 Richard Sandiford <>
* config/aarch64/ (aarch64_conditional_register_usage):
Disallow use of FPRs in register asms for !TARGET_FLOAT.
2022-09-07 Lulu Cheng <>
PR target/106828
* config/loongarch/ (loongarch_asan_shadow_offset): New.
2022-09-07 Jakub Jelinek <>
* doc/invoke.texi (-Wno-unicode): Document.
2022-09-07 Jiufu Guo <>
* config/rs6000/ (const_scalar_int splitter): Remove.
2022-09-07 Jiufu Guo <>
* config/rs6000/ (constant splitters): Use "(pc)" as the
2022-09-07 liuhongt <>
PR tree-optimization/103144
* (vect_is_nonlinear_iv_evolution): New function.
(vect_analyze_scalar_cycles_1): Detect nonlinear iv by upper function.
(vect_create_nonlinear_iv_init): New function.
(vect_peel_nonlinear_iv_init): Ditto.
(vect_create_nonlinear_iv_step): Ditto
(vect_create_nonlinear_iv_vec_step): Ditto
(vect_update_nonlinear_iv): Ditto
(vectorizable_nonlinear_induction): Ditto.
(vectorizable_induction): Call
vectorizable_nonlinear_induction when induction_type is not
* (vect_update_ivs_after_vectorizer):
Update nonlinear iv for epilogue loop.
* tree-vectorizer.h (enum vect_induction_op_type): New enum.
2022-09-06 Richard Biener <>
PR tree-optimization/106754
* (compute_control_dep_chain_pdom):
New function, split out from compute_control_dep_chain. Handle
loop-exit like conditions here by pushing to the control vector.
(compute_control_dep_chain): Adjust and streamline dumping.
In the wrapper perform a post-dominator walk as well.
(uninit_analysis::init_use_preds): Remove premature early exit.
2022-09-06 Max Filippov <>
* config/xtensa/linux.h (LINK_SPEC): Add static-pie.
2022-09-06 Aldy Hernandez <>
* (build_le): Handle NANs and going past infinity.
(build_lt): Same.
(build_ge): Same.
(build_gt): Same.
(foperator_lt::op1_range): Avoid adjustments to range if build_*
returned false.
(foperator_lt::op2_range): Same.
(foperator_le::op1_range): Same.
(foperator_le::op2_range): Same.
(foperator_gt::op1_range): Same.
(foperator_gt::op2_range): Same.
2022-09-06 Richard Biener <>
* (compute_control_dep_chain):
Add output flag to indicate whether we possibly have dropped
any chains. Return whether the info is complete from the
wrapping overload.
(uninit_analysis::init_use_preds): Adjust accordingly, with
a workaround for PR106754.
(uninit_analysis::init_from_phi_def): Properly guard the
case where we complete an empty chain.
2022-09-06 Jan-Benedict Glaw <>
* config/msp430/ (msp430_single_op_cost): Document unused argument.
2022-09-06 Prathamesh Kulkarni <>
* (simplify_permutation): Set res_type to a vector
type with same element type as arg0, and length as op2.
2022-09-06 Richard Biener <>
PR tree-optimization/106844
* (compute_control_dep_chain):
Return whether we found a chain.
2022-09-06 Richard Biener <>
PR tree-optimization/106841
* (vect_detect_hybrid_slp): Also process
scatter/gather offset.
2022-09-06 Jan-Benedict Glaw <>
* config/bpf/bpf.h (REGNO_REG_CLASS): Reference arguments as (void).
2022-09-06 Jakub Jelinek <>
* gimple.h (enum gf_mask): Add GF_OMP_ORDERED_STANDALONE enumerator.
(gimple_omp_subcode): Use GIMPLE_OMP_ORDERED instead of
GIMPLE_OMP_TEAMS as upper bound.
(gimple_omp_ordered_standalone_p, gimple_omp_ordered_standalone): New
inline functions.
* (find_standalone_omp_ordered): Look for OMP_ORDERED with
NULL OMP_ORDERED_BODY rather than with OMP_DOACROSS clause.
(gimplify_expr): Call gimple_omp_ordered_standalone for OMP_ORDERED
* (check_omp_nesting_restrictions): Use
gimple_omp_ordered_standalone_p test instead of
omp_find_clause (..., OMP_CLAUSE_DOACROSS).
(lower_omp_ordered): Likewise.
* (expand_omp, build_omp_regions_1,
omp_make_gimple_edges): Likewise.
2022-09-06 Xianmiao Qu <>
* config/csky/ (cskyv2_addcc): Fix missing operand.
(cskyv2_addcc_invert): Likewise.
2022-09-06 Jose E. Marchesi <>
* config/bpf/ (bpf_expand_prologue): Remove unused automatic
(bpf_expand_epilogue): Likewise.
2022-09-06 liuhongt <>
* config/i386/i386-builtin.def (IX86_BUILTIN_CVTPS2PH512):
Map to CODE_FOR_avx512f_vcvtps2ph512_mask_sae.
* config/i386/ (<mask_codefor>avx512f_vcvtps2ph512<mask_name>): Extend to ..
(<mask_codefor>avx512f_vcvtps2ph512<mask_name><round_saeonly_name>): .. this.
(avx512f_vcvtps2ph512_mask_sae): New expander
2022-09-05 Aldy Hernandez <>
(fold_using_range::range_of_builtin_int_call): Ignore sign bit
when there's the possibility of a NAN.
2022-09-05 Aldy Hernandez <>
(fold_using_range::range_of_builtin_int_call): Fold a set signbit
in __builtin_signbit to nonzero.
2022-09-05 Alexander Monakov <>
PR target/106453
* config/i386/ (sse4_2_crc32di): Model that only low 32
bits of operand 0 are consumed, and the result is zero-extended
to 64 bits.
2022-09-05 Aldy Hernandez <>
PR middle-end/106831
* value-range.h (frange::supports_p): Disable decimal floats.
* (frange_drop_inf): Remove DECIMAL_FLOAT_MODE_P
(frange_drop_ninf): Same.
2022-09-05 Aldy Hernandez <>
PR middle-end/106824
* (frange::set_nan): Set undefined when updating a
NAN to a non-NAN.
2022-09-05 Kito Cheng <>
* config/riscv/ (riscv_option_override): Fix wrong
condition for MASK_DIV and simplify incompatible checking.
* config/riscv/ (muldi3): Adding parentheses.
2022-09-05 Kyrylo Tkachov <>
* config/aarch64/ (aarch64_validate_march): Check if invalid arch
string is a valid -mcpu string and emit hint.
2022-09-05 LiaoShihua <>
* common/config/riscv/ Add Zmmul.
* config/riscv/riscv-opts.h (MASK_ZMMUL): New.
* config/riscv/ (riscv_option_override):Ditto.
* config/riscv/ Add Zmmul
* config/riscv/riscv.opt: Ditto.
2022-09-05 Richard Biener <>
* tree-cfg.h (get_cases_for_edge): Declare.
* (get_cases_for_edge): Export.
* (execute_late_warn_uninitialized):
Start and end recording case labels.
(predicate::init_from_control_deps): Use get_cases_for_edge.
2022-09-05 Richard Biener <>
(compute_control_dep_chain): Move uninit-control-dep-attempts
checking where it also counts the post-dominator check
2022-09-05 Richard Biener <>
* gimple-predicate-analysis.h (predicate::debug): New.
(predicate::dump): Add FILE * argument, add base overload.
* (debug): New.
(dump_pred_info): Add FILE * argument.
(dump_pred_chain): Likewise.
(predicate::dump): Split out preamble into overload. Add
FILE * argument.
(predicate::debug): New.
(predicate::simplify): Adjust.
(predicate::normalize): Likewise.
(predicate::init_from_control_deps): Likewise.
2022-09-05 Richard Sandiford <>
* config/aarch64/aarch64-protos.h
(aarch64_init_simd_builtins): Remove prototype.
* config/aarch64/
(aarch64_simd_builtins_initialized_p): Delete.
(aarch64_init_simd_builtins): Make static. Remove protection
against multiple calls.
* config/aarch64/ (aarch64_pragma_target_parse): Remove
lazy SIMD builtin initialization.
* config/aarch64/
(aarch64_option_valid_attribute_p): Likewise.
2022-09-05 Xi Ruoyao <>
* config/loongarch/genopts/ Add
-mdirect-extern-access option.
* config/loongarch/loongarch.opt: Regenerate.
* config/loongarch/
(loongarch_symbol_binds_local_p): Return true if
(loongarch_option_override_internal): Complain if
-mdirect-extern-access is used with -fPIC or -fpic.
* doc/invoke.texi: Document -mdirect-extern-access for
2022-09-05 Martin Liska <>
* doc/tm.texi: Regenerate.
2022-09-05 Martin Liska <>
* config/aarch64/aarch64-protos.h (aarch64_dbx_regno):
(aarch64_debugger_regno): Likewise.
* config/aarch64/ (aarch64_dbx_regno): Likewise.
(aarch64_debugger_regno): Likewise.
* config/aarch64/aarch64.h (DBX_REGISTER_NUMBER): Likewise.
* config/alpha/alpha.h (DWARF_FRAME_REGNUM): Likewise.
* config/arc/ (arc_init_reg_tables): Likewise.
* config/arc/arc.h (DBX_REGISTER_NUMBER): Likewise.
* config/arm/arm-protos.h (arm_dbx_regno): Likewise.
(arm_debugger_regno): Likewise.
* config/arm/ (arm_dbx_regno): Likewise.
(arm_debugger_regno): Likewise.
* config/arm/arm.h (DBX_REGISTER_NUMBER): Likewise.
* config/bfin/bfin.h (DBX_REGISTER_NUMBER): Likewise.
* config/c6x/ Likewise.
* config/c6x/c6x.h (DBX_REGISTER_NUMBER): Likewise.
* config/cris/cris.h (enum reg_class): Likewise.
* config/csky/ (enum reg_class): Likewise.
* config/csky/csky.h (DWARF_FRAME_REGNUM): Likewise.
* config/frv/frv.h (DBX_REGISTER_NUMBER): Likewise.
* config/gcn/gcn-hsa.h (DBX_REGISTER_NUMBER): Likewise.
* config/gcn/ (print_operand): Likewise.
* config/i386/bsd.h (ASM_QUAD): Likewise.
* config/i386/cygming.h (DBX_REGISTER_NUMBER): Likewise.
* config/i386/darwin.h (DBX_REGISTER_NUMBER): Likewise.
* config/i386/djgpp.h (DBX_REGISTER_NUMBER): Likewise.
* config/i386/dragonfly.h (DBX_REGISTER_NUMBER): Likewise.
* config/i386/freebsd.h (DBX_REGISTER_NUMBER): Likewise.
* config/i386/gas.h: Likewise.
* config/i386/gnu-user.h (DBX_REGISTER_NUMBER): Likewise.
* config/i386/ (enum reg_class): Likewise.
* config/i386/i386.h (DBX_REGISTER_NUMBER): Likewise.
* config/i386/i386elf.h (DBX_REGISTER_NUMBER): Likewise.
* config/i386/iamcu.h (DBX_REGISTER_NUMBER): Likewise.
* config/i386/lynx.h (DBX_REGISTER_NUMBER): Likewise.
* config/i386/netbsd-elf.h (DBX_REGISTER_NUMBER): Likewise.
* config/i386/nto.h (DBX_REGISTER_NUMBER): Likewise.
* config/i386/openbsdelf.h (DBX_REGISTER_NUMBER): Likewise.
* config/i386/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
* config/i386/vxworks.h (DBX_REGISTER_NUMBER): Likewise.
* config/i386/x86-64.h (DBX_REGISTER_NUMBER): Likewise.
* config/ia64/ia64-protos.h (ia64_dbx_regno): Likewise.
(ia64_debugger_regno): Likewise.
* config/ia64/ (ia64_output_function_prologue): Likewise.
(ia64_dbx_regno): Likewise.
(ia64_debugger_regno): Likewise.
(process_cfa_adjust_cfa): Likewise.
(process_cfa_register): Likewise.
(ia64_asm_unwind_emit): Likewise.
* config/ia64/ia64.h: Likewise.
* config/ia64/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
* config/lm32/lm32.h (DBX_REGISTER_NUMBER): Likewise.
* config/m32c/ (m32c_eh_return_stackadj_rtx): Likewise.
* config/m32c/m32c.h (DBX_REGISTER_NUMBER): Likewise.
* config/m68k/linux.h (DBX_REGISTER_NUMBER): Likewise.
* config/m68k/m68k.h (DBX_REGISTER_NUMBER): Likewise.
(__transfer_from_trampoline): Likewise.
* config/m68k/m68kelf.h (DBX_REGISTER_NUMBER): Likewise.
* config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
* config/microblaze/ (microblaze_option_override): Likewise.
* config/microblaze/microblaze.h (DBX_REGISTER_NUMBER): Likewise.
(GP_DBX_FIRST): Likewise.
* config/mips/vxworks.h (DBX_REGISTER_NUMBER): Likewise.
* config/mmix/mmix-protos.h (mmix_dbx_regno): Likewise.
(mmix_debugger_regno): Likewise.
* config/mmix/ (mmix_dbx_regno): Likewise.
(mmix_debugger_regno): Likewise.
* config/mmix/mmix.h (DBX_REGISTER_NUMBER): Likewise.
* config/nds32/nds32-protos.h (nds32_dbx_regno): Likewise.
(nds32_debugger_regno): Likewise.
* config/nds32/ (nds32_dbx_regno): Likewise.
(nds32_debugger_regno): Likewise.
(nds32_use_blocks_for_constant_p): Likewise.
* config/nds32/nds32.h (DBX_REGISTER_NUMBER): Likewise.
* config/nvptx/nvptx.h (DBX_REGISTER_NUMBER): Likewise.
* config/or1k/or1k.h (DBX_REGISTER_NUMBER): Likewise.
* config/pa/pa32-regs.h (DBX_REGISTER_NUMBER): Likewise.
* config/pa/pa64-regs.h (DBX_REGISTER_NUMBER): Likewise.
* config/rs6000/rs6000-protos.h (rs6000_dbx_regno): Likewise.
(rs6000_debugger_regno): Likewise.
* config/rs6000/ (rs6000_dbx_regno): Likewise.
(rs6000_debugger_regno): Likewise.
* config/rs6000/rs6000.h (DBX_REGISTER_NUMBER): Likewise.
* config/s390/s390.h (DBX_REGISTER_NUMBER): Likewise.
* config/sh/elf.h (DBX_REGISTER_NUMBER): Likewise.
* config/sh/linux.h (DBX_REGISTER_NUMBER): Likewise.
* config/sh/sh.h (DBX_REGISTER_NUMBER): Likewise.
* config/visium/visium.h (DBX_REGISTER_NUMBER): Likewise.
* config/xtensa/elf.h (DBX_REGISTER_NUMBER): Likewise.
* config/xtensa/linux.h (DBX_REGISTER_NUMBER): Likewise.
* config/xtensa/uclinux.h (DBX_REGISTER_NUMBER): Likewise.
* config/xtensa/xtensa-protos.h (xtensa_dbx_regno): Likewise.
(xtensa_debugger_regno): Likewise.
* config/xtensa/ (xtensa_dbx_regno): Likewise.
(xtensa_debugger_regno): Likewise.
* config/xtensa/xtensa.h (DBX_REGISTER_NUMBER): Likewise.
* defaults.h (DBX_REGISTER_NUMBER): Likewise.
* doc/tm.texi: Likewise.
* doc/ Likewise.
* (dbx_reg_number): Likewise.
(debugger_reg_number): Likewise.
(reg_loc_descriptor): Likewise.
(multiple_reg_loc_descriptor): Likewise.
(mem_loc_descriptor): Likewise.
* Likewise.
2022-09-05 konglin1 <>
PR target/106742
* config/i386/ (ix86_expand_vector_init_duplicate):
Handle V8BF mode.
(expand_vec_perm_broadcast_1): Ditto.
* config/i386/ (avx512fmaskhalfmode): Add BF vector mode.
(vec_set<mode>_0): Add @ to it.
(@vec_set<mode>_0): Ditto.
(vec_interleave_high<mode><mask_name>): Ditto.
(@vec_interleave_high<mode><mask_name>): Ditto.
(vec_interleave_low<mode><mask_name>): Ditto.
(@vec_interleave_low<mode><mask_name>): Ditto.
* config/i386/ (SUBST_V): Add BF vector mode.
2022-09-05 Aldy Hernandez <>
* (early_nan_resolve): Remove.
(frange::intersect): Handle NANs.
2022-09-04 Aldy Hernandez <>
* (frange::union_): Do not drop properties when
unioning a NAN with something else.
(range_tests_signed_zeros): Add tests.
2022-09-04 Aldy Hernandez <>
* (encode_ieee_single): Use real_isdenormal.
(encode_ieee_double): Same.
(encode_ieee_extended): Same.
(encode_ieee_quad): Same.
(encode_ieee_half): Same.
(encode_arm_bfloat_half): Same.
* real.h (real_isdenormal): New.
2022-09-03 Aldy Hernandez <>
* (frange::singleton_p): Move NAN check to the top.
2022-09-03 Jan-Benedict Glaw <>
* config/nvptx/nvptx.h (ASM_OUTPUT_DEF): Reference macro arguments.
2022-09-03 Jakub Jelinek <>
* tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_DOACROSS.
(enum omp_clause_depend_kind): Remove OMP_CLAUSE_DEPEND_SOURCE
(enum omp_clause_doacross_kind): New type.
(struct tree_omp_clause): Add subcode.doacross_kind member.
* (omp_clause_num_ops, omp_clause_code_name): Add
* (convert_nonlocal_omp_clauses,
convert_local_omp_clauses): Handle OMP_CLAUSE_DOACROSS.
* (dump_omp_clause): Don't handle
* (gimplify_omp_depend): Don't handle
(gimplify_scan_omp_clauses): Likewise. Handle OMP_CLAUSE_DOACROSS.
(gimplify_adjust_omp_clauses): Handle OMP_CLAUSE_DOACROSS.
(find_standalone_omp_ordered): New function.
(gimplify_omp_for): When OMP_CLAUSE_ORDERED is present, search
body for OMP_ORDERED with OMP_CLAUSE_DOACROSS and if found,
(gimplify_omp_ordered): Don't handle OMP_CLAUSE_DEPEND_SINK or
diagnostics that presence or absence of ordered clause parameter
is irrelevant. Handle doacross(sink:omp_cur_iteration-1). Use
actual user name of the clause - doacross or depend - in diagnostics.
* (omp_extract_for_data): Don't set fd->ordered
set fd->ordered to -1 and set it after the loop in that case to
* (check_omp_nesting_restrictions): Don't handle
OMP_CLAUSE_DOACROSS. Use actual user name of the clause - doacross
or depend - in diagnostics. Diagnose mixing of stand-alone and
block associated ordered constructs binding to the same loop.
(lower_omp_ordered_clauses): Don't handle OMP_CLAUSE_DEPEND_SINK,
instead handle OMP_CLAUSE_DOACROSS.
(lower_omp_ordered): Look for OMP_CLAUSE_DOACROSS instead of
(lower_depend_clauses): Don't handle OMP_CLAUSE_DEPEND_SOURCE and
* (expand_omp_ordered_sink): Emit a sorry for
(expand_omp_ordered_source_sink): Use
OMP_CLAUSE_DEPEND_SINK_NEGATIVE. Use actual user name of the clause
- doacross or depend - in diagnostics.
(expand_omp): Look for OMP_CLAUSE_DOACROSS clause instead of
(build_omp_regions_1): Likewise.
(omp_make_gimple_edges): Likewise.
* (hash_tree): Handle OMP_CLAUSE_DOACROSS.
* (unpack_ts_omp_clause_value_fields): Likewise.
* (pack_ts_omp_clause_value_fields): Likewise.
2022-09-02 David Malcolm <>
PR c/90885
* doc/invoke.texi (Warning Options): Add -Wxor-used-as-pow.
2022-09-02 Iain Buclaw <>
PR d/105659
* config.gcc: Set tm_d_file to ${cpu_type}/${cpu_type}-d.h.
* config/aarch64/ Include tm_d.h.
* config/aarch64/aarch64-protos.h (aarch64_d_target_versions): Move to
(aarch64_d_register_target_info): Likewise.
* config/aarch64/aarch64.h (TARGET_D_CPU_VERSIONS): Likewise.
* config/arm/ Include tm_d.h and arm-protos.h instead of
* config/arm/arm-protos.h (arm_d_target_versions): Move to
(arm_d_register_target_info): Likewise.
* config/arm/arm.h (TARGET_D_CPU_VERSIONS): Likewise.
* config/ Remove memmodel.h include.
* config/ Include tm_d.h instead of tm_p.h.
* config/ Likewise.
* config/i386/ Include tm_d.h.
* config/i386/i386-protos.h (ix86_d_target_versions): Move to
(ix86_d_register_target_info): Likewise.
(ix86_d_has_stdcall_convention): Likewise.
* config/i386/i386.h (TARGET_D_CPU_VERSIONS): Likewise.
* config/i386/ Include tm_d.h instead of tm_p.h.
* config/mips/ Include tm_d.h.
* config/mips/mips-protos.h (mips_d_target_versions): Move to
(mips_d_register_target_info): Likewise.
* config/mips/mips.h (TARGET_D_CPU_VERSIONS): Likewise.
* config/ Include tm_d.h instead of tm.h and memmodel.h.
* config/ Likewise.
* config/pa/ Include tm_d.h.
* config/pa/pa-protos.h (pa_d_target_versions): Move to
(pa_d_register_target_info): Likewise.
* config/pa/pa.h (TARGET_D_CPU_VERSIONS): Likewise.
* config/riscv/ Include tm_d.h.
* config/riscv/riscv-protos.h (riscv_d_target_versions): Move to
(riscv_d_register_target_info): Likewise.
* config/riscv/riscv.h (TARGET_D_CPU_VERSIONS): Likewise.
* config/rs6000/ Include tm_d.h.
* config/rs6000/rs6000-protos.h (rs6000_d_target_versions): Move to
(rs6000_d_register_target_info): Likewise.
* config/rs6000/rs6000.h (TARGET_D_CPU_VERSIONS) Likewise.:
* config/s390/ Include tm_d.h.
* config/s390/s390-protos.h (s390_d_target_versions): Move to
(s390_d_register_target_info): Likewise.
* config/s390/s390.h (TARGET_D_CPU_VERSIONS): Likewise.
* config/ Include tm_d.h instead of tm.h and memmodel.h.
* config/sparc/ Include tm_d.h.
* config/sparc/sparc-protos.h (sparc_d_target_versions): Move to
(sparc_d_register_target_info): Likewise.
* config/sparc/sparc.h (TARGET_D_CPU_VERSIONS): Likewise.
* configure: Regenerate.
* (tm_d_file): Remove defaults.h.
(tm_d_include_list): Remove options.h and insn-constants.h.
* config/aarch64/aarch64-d.h: New file.
* config/arm/arm-d.h: New file.
* config/i386/i386-d.h: New file.
* config/mips/mips-d.h: New file.
* config/pa/pa-d.h: New file.
* config/riscv/riscv-d.h: New file.
* config/rs6000/rs6000-d.h: New file.
* config/s390/s390-d.h: New file.
* config/sparc/sparc-d.h: New file.
2022-09-02 Aldy Hernandez <>
* (fold_builtin_inf): Convert use of real_info to dconstinf.
(fold_builtin_fpclassify): Same.
* (fold_const_call_cc): Same.
* match.pd: Same.
* (omp_reduction_init_op): Same.
* (real_from_mpfr): Same.
* (build_complex_inf): Same.
2022-09-02 Peter Bergner <>
* config/rs6000/ (rs6000_gimple_fold_mma_builtin): Use
NOP_EXPR for MMA pointer casting.
2022-09-02 Richard Sandiford <>
* (vect_optimize_slp_pass::internal_node_cost):
Reduce the fallback cost to 1. Only use it if the number of
input lanes is equal to the number of output lanes.
2022-09-02 Richard Sandiford <>
PR tree-optimization/106787
* (vect_map_to_instance): New function, split out
(vect_bb_partition_graph_r): Replace the visited set
with a map from nodes to instances. Ensure that a node only
appears in one partition.
(vect_bb_partition_graph): Update accordingly.
2022-09-02 Richard Biener <>
* timevar.def (TV_TREE_RPO_VN): New.
* tree-ssa-sccvn.h (do_rpo_vn): Remove one overload.
* (do_rpo_vn_1): Rename the worker.
(do_rpo_vn): Unify the public API, track with TV_TREE_RPO_VN.
(pass_fre::execute): Adjust.
* (execute_early_warn_uninitialized): Adjust.
2022-09-02 Richard Biener <>
PR tree-optimization/106809
* (dominaged_by_p_w_unex): Check we have
more than one successor before doing extra work.
2022-09-02 Kito Cheng <>
* common/config/riscv/ Include <vector>.
(struct riscv_multi_lib_info_t): New.
(riscv_subset_list::match_score): Ditto.
(find_last_appear_switch): Ditto.
(prefixed_with): Ditto.
(struct multi_lib_info_t): Ditto.
(riscv_current_arch_str): Ditto.
(riscv_current_abi_str): Ditto.
(riscv_multi_lib_info_t::parse): Ditto.
(riscv_check_cond): Ditto.
(riscv_check_conds): Ditto.
(riscv_compute_multilib): Ditto.
* config/riscv/elf.h (LIB_SPEC): Call riscv_multi_lib_check if
doing link.
* config/riscv/riscv.h (riscv_multi_lib_check): New.
(EXTRA_SPEC_FUNCTIONS): Add riscv_multi_lib_check.
* config/riscv/riscv-subset.h (riscv_subset_list::match_score): New.
2022-09-02 Kito Cheng <>
* common/common-target.def (compute_multilib): New.
* common/common-targhooks.h (default_compute_multilib): New.
* common/ (default_compute_multilib): New.
* doc/tm.texi: Regen.
* Include common/common-target.h.
(set_multilib_dir) Call targetm_common.compute_multilib.
(SWITCH_LIVE): Move to opts.h.
(struct switchstr): Ditto.
* opts.h (SWITCH_LIVE): Move from gcc.c.
(struct switchstr): Ditto.
2022-09-02 Martin Liska <>
* config/pdp11/pdp11.h (PREFERRED_DEBUGGING_TYPE): Disable
debugging format.
2022-09-02 Martin Liska <>
* Remove -gstabs option support, DBX-related
macros and DBX debugging info support.
* (scan_prog_file): Likewise.
* common.opt: Likewise.
* config.gcc: Likewise.
* Likewise.
* config/aarch64/aarch64-elf.h (DBX_DEBUGGING_INFO): Likewise.
* config/alpha/ Likewise.
* config/alpha/elf.h (ASM_SPEC): Likewise.
* config/arc/arc.h (DBX_DEBUGGING_INFO): Likewise.
* config/arm/aout.h (DBX_DEBUGGING_INFO): Likewise.
* config/arm/netbsd-elf.h (DBX_CONTIN_LENGTH): Likewise.
* config/darwin.h (DSYMUTIL_SPEC): Likewise.
(ASM_DEBUG_SPEC): Likewise.
(DBX_USE_BINCL): Likewise.
* config/epiphany/epiphany.h (DBX_DEBUGGING_INFO): Likewise.
* config/i386/bsd.h (DBX_NO_XREFS): Likewise.
* config/i386/gas.h (DBX_NO_XREFS): Likewise.
* config/ia64/ia64.h: Likewise.
* config/ia64/sysv4.h (DBX_DEBUGGING_INFO): Likewise.
* config/m68k/linux.h (DBX_CONTIN_LENGTH): Likewise.
* config/m68k/openbsd.h (DBX_DEBUGGING_INFO): Likewise.
(DBX_CONTIN_CHAR): Likewise.
* config/mips/ (mips_output_filename): Likewise.
(mips_option_override): Likewise.
* config/mips/mips.h (SUBTARGET_ASM_DEBUGGING_SPEC): Likewise.
(GP_DBX_FIRST): Likewise.
(FP_DBX_FIRST): Likewise.
(MD_DBX_FIRST): Likewise.
* config/nvptx/ Likewise.
* config/openbsd.h (DBX_NO_XREFS): Likewise.
* config/pa/pa-64.h (DBX_DEBUGGING_INFO): Likewise.
* config/pa/pa.h (ASSEMBLER_DIALECT): Likewise.
* config/pa/som.h (PREFERRED_DEBUGGING_TYPE): Likewise.
(DBX_USE_BINCL): Likewise.
* config/pdp11/ Likewise.
* config/pdp11/pdp11.h (DBX_DEBUGGING_INFO): Likewise.
* config/rs6000/ Likewise.
* config/rs6000/ Likewise.
* config/rs6000/ (defined): Likewise.
* config/rs6000/ (rs6000_option_override_internal): Likewise.
(rs6000_xcoff_declare_function_name): Likewise.
* config/rs6000/sysv4.h (DBX_DEBUGGING_INFO): Likewise.
* config/rs6000/xcoff.h (XCOFF_DEBUGGING_INFO): Likewise.
* config/rx/rx.h (DBX_DEBUGGING_INFO): Likewise.
* config/sh/elf.h (DBX_LINES_FUNCTION_RELATIVE): Likewise.
* config/sol2.h (NO_DBX_BNSYM_ENSYM): Likewise.
* config/sparc/freebsd.h (DBX_CONTIN_CHAR): Likewise.
* config/sparc/netbsd-elf.h (DBX_CONTIN_CHAR): Likewise.
* config/sparc/sparc.h (DBX_CONTIN_LENGTH): Likewise.
* config/vax/ (vax_file_start): Likewise.
* config/vax/vax.h (DBX_DEBUGGING_INFO): Likewise.
(DBX_CONTIN_CHAR): Likewise.
(DBX_NO_XREFS): Likewise.
* config/vx-common.h (DBX_DEBUGGING_INFO): Likewise.
* configure: Regenerate. Likewise.
* Likewise.
* debug.h: Likewise.
* doc/install.texi: Likewise.
* doc/invoke.texi: Likewise.
* doc/passes.texi: Likewise.
* doc/tm.texi: Likewise.
* doc/ Likewise.
(dw2_asm_output_nstring): Likewise.
(output_fde): Likewise.
(output_call_frame_info): Likewise.
(have_macinfo): Likewise.
(add_AT_loc_list): Likewise.
(add_AT_view_list): Likewise.
(output_compilation_unit_header): Likewise.
(output_pubnames): Likewise.
(output_aranges): Likewise.
(output_line_info): Likewise.
(output_macinfo): Likewise.
(dwarf2out_finish): Likewise.
(dwarf2out_early_finish): Likewise.
* (final_scan_insn_1): Likewise.
(rest_of_handle_final): Likewise.
* flag-types.h (enum debug_info_type): Likewise.
(DBX_DEBUG): Likewise.
(XCOFF_DEBUG): Likewise.
* (defined): Likewise.
* (defined): Likewise.
(ASM_DEBUG_SPEC): Likewise.
* (common_handle_option): Likewise.
(set_debug_level): Likewise.
* system.h (fancy_abort): Likewise.
* target-def.h (TARGET_ASM_CONSTRUCTOR): Likewise.
* (defined): Likewise.
* Likewise.
* config/dbxcoff.h: Removed.
* config/dbxelf.h: Removed.
* Removed.
* dbxout.h: Removed.
* gstab.h: Removed.
* stab.def: Removed.
* Removed.
* xcoffout.h: Removed.
2022-09-02 Simon Rainer <>
PR ipa/106627
* config/i386/ (ix86_get_function_versions_dispatcher):
Set TREE_NOTHROW correctly for dispatcher declaration.
* config/rs6000/ (rs6000_get_function_versions_dispatcher):
2022-09-01 Tamar Christina <>
PR other/106782
* config/aarch64/
(aarch64_vector_costs::prefer_unrolled_loop): Replace %u with
2022-09-01 Richard Sandiford <>
* (vect_build_slp_tree_2): When building a
VEC_PERM_EXPR of an existing vector, set the SLP_TREE_LANES
to the number of vector elements, if that's a known constant.
(vect_optimize_slp_pass::is_compatible_layout): Remove associated
comment about zero SLP_TREE_LANES.
(vect_optimize_slp_pass::start_choosing_layouts): Iterate over
all partition members when looking for potential layouts.
Handle existing permutes of fixed-length vectors.
2022-09-01 Uroš Bizjak <>
PR target/106707
* config/i386/ (moves to/from AX_REG into xchg peephole2):
Do not convert a move pattern where both operands are AX_REG.
2022-09-01 Aldy Hernandez <>
* (build_le): Convert to dconst*inf.
(build_ge): Same.
* (frange::set_signbit): Same.
(frange::normalize_kind): Same.
(range_tests_floats): Same.
* value-range.h (vrp_val_max): Same.
(vrp_val_min): Same.
(frange::set_varying): Same.
2022-09-01 Aldy Hernandez <>
* (init_emit_once): Initialize dconstinf and
* real.h: Add dconstinf and dconstninf.
2022-09-01 Richard Biener <>
* (compute_control_dep_chain):
Remove cycle detection, instead avoid walking backedges.
2022-09-01 Richard Biener <>
* (compute_control_dep_chain):
New wrapping overload.
(uninit_analysis::init_use_preds): Simplify.
(uninit_analysis::init_from_phi_def): Likewise.
2022-09-01 Aldy Hernandez <>
(fold_using_range::range_of_builtin_int_call): Add case for
2022-09-01 Aldy Hernandez <>
* (foperator_equal::op1_range): Do not copy sign
(foperator_not_equal::op1_range): Same.
* (range_query::get_tree_range): Set sign bit.
* (vrange_printer::visit): Dump sign bit.
* (frange::set_signbit): New.
(frange::set): Adjust for sign bit.
(frange::normalize_kind): Same.
(frange::union_): Remove useless comment.
(frange::intersect): Same.
(frange::contains_p): Adjust for sign bit.
(frange::singleton_p): Same.
(frange::verify_range): Same.
(range_tests_signbit): New tests.
(range_tests_floats): Call range_tests_signbit.
* value-range.h (class frange_props): Add signbit
(class frange): Same.
2022-09-01 Jakub Jelinek <>
PR other/106782
* dumpfile.h (dump_printf_loc): Use ATTRIBUTE_GCC_DUMP_PRINTF (3, 4)
instead of ATTRIBUTE_GCC_DUMP_PRINTF (3, 0).
* (parloops_is_slp_reduction): Cast pointers to
derived types of gimple to gimple * to avoid -Wformat warnings.
* (vect_set_loop_condition,
vect_update_ivs_after_vectorizer): Likewise.
* (vectorizable_load): Likewise.
* (vect_split_statement,
vect_recog_mulhs_pattern, vect_recog_average_pattern,
vect_determine_precisions_from_users): Likewise.
(loop_versioning::analyze_term_using_scevs): Likewise.
* (vect_build_slp_tree_1): Likewise.
(vect_build_slp_tree): Cast slp_tree to void * to avoid
-Wformat warnings.
(optimize_load_redistribution_1, vect_match_slp_patterns,
vect_build_slp_instance, vect_optimize_slp_pass::materialize,
vect_optimize_slp_pass::dump, vect_slp_convert_to_external,
vect_slp_analyze_node_operations, vect_bb_partition_graph): Likewise.
(vect_print_slp_tree): Likewise. Also use
* (vect_determine_vectorization_factor,
vect_analyze_scalar_cycles_1, vect_analyze_loop_operations,
vectorizable_induction, vect_transform_loop): Cast pointers to derived
types of gimple to gimple * to avoid -Wformat warnings.
(vect_analyze_loop_2): Cast slp_tree to void * to avoid
-Wformat warnings.
(vect_estimate_min_profitable_iters): Use HOST_WIDE_INT_PRINT_UNSIGNED
instead of %d.
* (vect_pattern_validate_optab): Use %G
instead of SLP_TREE_DEF_TYPE (node).
2022-09-01 Jakub Jelinek <>
PR c++/106655
* doc/invoke.texi (-Winvalid-utf8): Document it.
2022-09-01 Aldy Hernandez <>
PR tree-optimization/106785
* (range_tests_nan): Adjust tests for !HONOR_NANS.
(range_tests_floats): Same.
2022-09-01 konglin1 <>
* (is_cond_scalar_reduction): Add MULT_EXPR
2022-09-01 Peter Bergner <>
PR target/101322
* config/rs6000/ (rs6000_gimple_fold_mma_builtin):
Enforce the use of a valid MMA pointer type.
2022-09-01 zhongjuzhe <>
* config/riscv/ (riscv_conditional_register_usage): Add vector
2022-09-01 zhongjuzhe <>
* config/riscv/ (riscv_const_insns): Add cost of poly_int.
(riscv_output_move): Add csrr vlenb assembly.
* config/riscv/ (move_type): Add csrr vlenb type.
(ext): New attribute.
(ext_enabled): Ditto.
(enabled): Ditto.
2022-09-01 zhongjuzhe <>
* config/riscv/ (TARGET_VECTOR ? V_REGS : NO_REGS): Add
"vr" constraint.
(TARGET_VECTOR ? VD_REGS : NO_REGS): Add "vd" constraint.
(TARGET_VECTOR ? VM_REGS : NO_REGS): Add "vm" constraint.
(vp): Add poly constraint.
2022-09-01 zhongjuzhe <>
* config/riscv/riscv.h (enum reg_class): Change vype to vtype.
2022-09-01 zhongjuzhe <>
* config/riscv/ (riscv_convert_vector_bits): Change
configuration according to TARGET_MIN_VLEN.
* config/riscv/riscv.h (UNITS_PER_FP_REG): Fix comment.
2022-08-31 Martin Liska <>
* Remove deprecated ports.
* config.gcc: Likewise.
* Likewise.
* Likewise.
* configure: Regenerate.
* config/pa/pa-hpux10.h: Removed.
* config/pa/pa-hpux10.opt: Removed.
* config/pa/t-dce-thr: Removed.
2022-08-31 Martin Liska <>
* Always install limits.h and syslimits.h to
include folder.
* Assign STMP_FIXINC blank if
--disable-fixincludes is used.
* configure: Regenerate.
2022-08-31 Richard Biener <>
* (predicate::init_from_control_deps):
Assert the guard_bb isn't empty and has more than one successor.
Drop appropriate parts of the predicate when an edge fails to
register a predicate.
(predicate::dump): Dump empty predicate as TRUE.
2022-08-31 Richard Biener <>
PR tree-optimization/90994
* (predicate::init_from_control_deps):
Ignore exceptional control flow and skip the edge for the purpose of
predicate generation also for non-calls.
2022-08-31 Aldy Hernandez <>
* (frange_storage_slot::set_frange): Save
(frange_storage_slot::get_frange): Restore endpoints.
* value-range-storage.h (class frange_storage_slot): Add endpoint
2022-08-31 Martin Liska <>
PR tree-optimization/106789
* (default_frelop_fold_range): Remove the
2022-08-31 Martin Liska <>
* value-range.h: Add more override keywords.
2022-08-31 Martin Liska <>
* value-range.h: Add override.
2022-08-31 Richard Biener <>
PR tree-optimization/65244
* gimple-predicate-analysis.h (predicate::init_from_control_deps):
Add argument to specify whether the predicate is for the USE.
* (predicate::init_from_control_deps):
Also include predicates effective fallthru control edges when
the predicate is for the USE.
2022-08-31 Richard Biener <>
PR tree-optimization/73550
* (predicate::init_from_control_deps):
Sanitize debug dumping. Handle case labels with a CASE_HIGH.
(predicate::dump): Adjust for better readability.
2022-08-31 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Jakub Jelinek <>
* (simd_clone_adjust_return_type,
simd_clone_adjust_argument_types): Use known_eq (veclen, 0U)
instead of known_eq (veclen, 0) to avoid -Wsign-compare warnings.
2022-08-31 Richard Sandiford <>
* (vect_optimize_slp_pass::dump): Remove bogus
2022-08-31 zhongjuzhe <>
* (vect_gen_vector_loop_niters): Simply
initialize const_vf to 0.
2022-08-31 Martin Liska <>
* config.gcc: Remove cr16.
2022-08-30 Martin Jambor <>
* vec.h (array_slice): Add constructors for non-const reference to
heap vector and pointers to heap vectors.
2022-08-30 Aldy Hernandez <>
* (early_nan_resolve): Change comment.
(frange::union_): Handle union when one side is a NAN.
(range_tests_nan): Add tests for NAN union.
2022-08-30 Andrew Stubbs <>
* config/gcn/ (gcn_simd_clone_compute_vecsize_and_simdlen): New.
(gcn_simd_clone_adjust): New.
(gcn_simd_clone_usable): New.
2022-08-30 Andrew Stubbs <>
* doc/tm.texi: Regenerate.
* (simd_clone_adjust_return_type): Allow zero
(simd_clone_adjust_argument_types): Likewise.
* target.def (compute_vecsize_and_simdlen): Document the new
vecsize_int and vecsize_float semantics.
2022-08-30 Richard Sandiford <>
* (store_bit_field_1): Fix byte offset calculation
for undefined structures.
2022-08-30 Richard Sandiford <>
* params.opt (-param=vect-max-layout-candidates=): New parameter.
* doc/invoke.texi (vect-max-layout-candidates): Document it.
* tree-vectorizer.h (auto_lane_permutation_t): New typedef.
(auto_load_permutation_t): Likewise.
* (vect_slp_node_weight): New function.
(slpg_layout_cost): New class.
(slpg_vertex): Replace perm_in and perm_out with partition,
out_degree, weight and out_weight.
(slpg_partition_info, slpg_partition_layout_costs): New classes.
(vect_optimize_slp_pass): Likewise, cannibalizing some part of
the previous vect_optimize_slp.
(vect_optimize_slp): Use it.
2022-08-30 Richard Sandiford <>
* hash-traits.h (vec_hash_base): New class.
(vec_free_hash_base): Likewise.
2022-08-30 Richard Sandiford <>
* hash-traits.h (int_hash_base): New struct, split out from...
(int_hash): ...this class, which now inherits from int_hash_base.
* hash-map-traits.h (unbounded_hashmap_traits): Take a template
parameter for the key that provides hash and equality functions.
(unbounded_int_hashmap_traits): Turn into a type alias of
2022-08-30 Richard Sandiford <>
* (graphds_scc): Add a pass-back parameter for the
final node order.
* graphds.h (graphds_scc): Update prototype accordingly.
2022-08-30 Richard Sandiford <>
* (vect_transform_slp_perm_load_1): Split out from...
(vect_transform_slp_perm_load): Use SLP_TREE_VECTYPE instead
2022-08-30 Richard Sandiford <>
* (vectorizable_slp_permutation_1): Split out from...
2022-08-30 Richard Sandiford <>
* (get_related_vectype_for_scalar_type): Check
that the requested number of units is interoperable with the requested
prevailing mode.
2022-08-30 Martin Liska <>
* config.gcc: Remove the port.
* config/m32c/rtems.h: Removed.
2022-08-30 Richard Biener <>
PR tree-optimization/73550
* (predicate::init_from_control_deps):
Do not apply MAX_NUM_CHAINS again.
2022-08-30 Richard Biener <>
* (format_edge_vec): Dump
both source and destination.
(dump_dep_chains): Remove.
(uninit_analysis::init_use_preds): Remove redundant
dumping of chains.
2022-08-30 Aldy Hernandez <>
* (frange_storage_slot::get_frange): Use
* (frange::set_nan): New.
(frange_nan): Move to header file.
(range_tests_nan): Adjust frange_nan callers to pass type.
New test.
* value-range.h (FRANGE_PROP_ACCESSOR): Remove.
(frange_nan): New.
2022-08-30 Richard Biener <>
PR tree-optimization/67196
* (uninit_analysis::is_use_guarded):
Simplify and normalize use prediates before first use.
2022-08-30 Richard Biener <>
* (dump_pred_chain): Fix
parentizing and AND prepending.
(predicate::dump): Do not dump the GENERIC expanded
predicate, properly parentize and prepend ORs to the
piecewise predicate dump.
(build_pred_expr): Remove.
2022-08-30 Aldy Hernandez <>
* (finite_operand_p): New.
(build_le): New.
(build_lt): New.
(build_ge): New.
(build_gt): New.
(foperator_equal::fold_range): New implementation with endpoints.
(foperator_equal::op1_range): Same.
(foperator_not_equal::fold_range): Same.
(foperator_not_equal::op1_range): Same.
(foperator_lt::fold_range): Same.
(foperator_lt::op1_range): Same.
(foperator_lt::op2_range): Same.
(foperator_le::fold_range): Same.
(foperator_le::op1_range): Same.
(foperator_le::op2_range): Same.
(foperator_gt::fold_range): Same.
(foperator_gt::op1_range): Same.
(foperator_gt::op2_range): Same.
(foperator_ge::fold_range): Same.
(foperator_ge::op1_range): Same.
(foperator_ge::op2_range): Same.
2022-08-30 Aldy Hernandez <>
* (frange_set_nan): New.
(frange_drop_inf): New.
(frange_drop_ninf): New.
(foperator_equal::op1_range): Adjust for endpoints.
(foperator_lt::op1_range): Same.
(foperator_lt::op2_range): Same.
(foperator_gt::op1_range): Same.
(foperator_gt::op2_range): Same.
(foperator_unordered::op1_range): Same.
* (range_query::get_tree_range): Same.
* (vrange_printer::visit): Same.
* (frange_storage_slot::get_frange): Same.
* (frange::set): Same.
(frange::normalize_kind): Same.
(frange::union_): Same.
(frange::intersect): Same.
(frange::operator=): Same.
(early_nan_resolve): New.
(frange::contains_p): New.
(frange::singleton_p): New.
(frange::set_nonzero): New.
(frange::nonzero_p): New.
(frange::set_zero): New.
(frange::zero_p): New.
(frange::set_nonnegative): New.
(frange_float): New.
(frange_nan): New.
(range_tests_nan): New.
(range_tests_signed_zeros): New.
(range_tests_floats): New.
(range_tests): New.
* value-range.h (frange::lower_bound): New.
(frange::upper_bound): New.
(vrp_val_min): Use real_inf with a sign instead of negating inf.
(frange::frange): New.
(frange::set_varying): Adjust for endpoints.
(real_max_representable): New.
(real_min_representable): New.
2022-08-30 Aldy Hernandez <>
* match.pd ((cmp @0 zerop) real_zerop (negate@1 @0)): Add variant
for real zero.
2022-08-30 Martin Liska <>
* config/s390/ (s390_rtx_costs): Use proper type as
2022-08-30 Richard Biener <>
* (warn_uninitialized_vars): Pre-compute
the set of fallthru reachable blocks from function entry
and use that to determine wlims.always_executed.
2022-08-30 Richard Biener <>
PR tree-optimization/56654
* (cand_cmp): New.
(find_uninit_use): First process all PHIs and collect candidate
stmts, then sort those after RPO.
(warn_uninitialized_phi): Pass on bb_to_rpo.
(execute_late_warn_uninitialized): Compute and pass on
reverse lookup of RPO number from basic block index.
2022-08-30 Richard Biener <>
* gimple-predicate-analysis.h (uninit_analysis::operator()):
(uninit_analysis::collect_phi_def_edges): Use phi_arg_set,
simplify a bit.
* (defined_args): New global.
(compute_uninit_opnds_pos): Mask with the recorded set
of guarded maybe-uninitialized uses.
(uninit_undef_val_t::operator()): Remove.
(find_uninit_use): Process all PHI uses, recording the
guarded ones and marking the PHI result as uninitialized
(warn_uninitialized_phi): Adjust.
(execute_late_warn_uninitialized): Get rid of the PHI worklist
and instead walk the function in RPO order.
* spellcheck.h (best_match::m_best_candidate_len): Initialize.
2022-08-30 Tamar Christina <>
PR tree-optimization/106744
* (minmax_replacement): Correct arguments.
2022-08-30 Tamar Christina <>
* (store_bit_field_1): Initialize regnum to 0.
2022-08-29 David Faust <>
PR target/106745
* config/bpf/ (bpf_core_get_sou_member_index): Fix
computation of index for anonymous members.
2022-08-29 Jose E. Marchesi <>
* config/bpf/ (bpf_target_macros): Define __bpf__ as a
target macro.
2022-08-29 H.J. Lu <>
PR target/106748
* config/i386/
(ix86_avx256_split_vector_move_misalign): Handle E_V16BFmode.
* config/i386/ (V_256H): Add V16BF.
2022-08-29 Robin Dapp <>
* config/s390/ (s390_address_cost): Declare.
(s390_hard_regno_nregs): Declare.
(s390_rtx_costs): Add handling for REG and MEM in SET.
2022-08-29 Robin Dapp <>
* config/s390/ (expand_perm_with_vpdi): Recognize swap pattern.
(is_reverse_perm_mask): New function.
(expand_perm_with_rot): Recognize reverse pattern.
(expand_perm_with_vstbrq): New function.
(expand_perm_with_vster): Use vler/vster for element reversal on z15.
(vectorize_vec_perm_const_1): Use.
(s390_vectorize_vec_perm_const): Add expand functions.
* config/s390/ Prefer vster over vler.
2022-08-29 Robin Dapp <>
* config/s390/ Remove UNSPEC_VEC_EXTRACT.
* config/s390/ Rewrite patterns to use vec_select.
* config/s390/ (vec_scatter_element<V_HW_2:mode>_SI):
2022-08-29 Robin Dapp <>
PR target/100869
* config/s390/ (@vpdi4_2<mode>): New pattern.
(rotl<mode>3_di): New pattern.
* config/s390/ Use vpdi and verll for reversing
2022-08-29 Robin Dapp <>
* config/s390/ (s390_issue_rate): Add z15.
2022-08-29 Robin Dapp <>
* common/config/s390/ Enable -funroll-loops and
-munroll-only-small-loops for OPT_LEVELS_2_PLUS_SPEED_ONLY.
* config/s390/ (s390_loop_unroll_adjust): Do not unroll
loops larger than 12 instructions.
(s390_override_options_after_change): Set unroll options.
(s390_option_override_internal): Likewise.
* config/s390/s390.opt: Document munroll-only-small-loops.
2022-08-29 Richard Biener <>
* (is_loop_exit,
find_control_equiv_block): Inline into single caller ...
(uninit_analysis::init_use_preds): ... here and refactor.
2022-08-29 Richard Biener <>
* (compute_control_dep_chain):
Inline is_loop_exit and refactor, add comment about
loop exits.
2022-08-29 Kito Cheng <>
* config/riscv/ (riscv_frame_info): Introduce `reset(void)`;
(riscv_frame_info::reset(void)): New.
(riscv_compute_frame_info): Use riscv_frame_info::reset instead
of memset when clean frame.
2022-08-29 zhongjuzhe <>
* config/riscv/ (riscv_v_ext_vector_mode_p): New function.
(riscv_classify_address): Disallow PLUS/LO_SUM/CONST_INT address types for RVV.
(riscv_address_insns): Add RVV modes condition.
(riscv_binary_cost): Ditto.
(riscv_rtx_costs): Adjust cost for RVV.
(riscv_secondary_memory_needed): Add RVV modes condition.
(riscv_hard_regno_nregs): Add RVV register allocation.
(riscv_hard_regno_mode_ok): Add RVV register allocation.
(riscv_class_max_nregs): Add RVV register allocation.
* config/riscv/riscv.h (DWARF_FRAME_REGNUM): Add VL/VTYPE and vector registers in Dwarf.
(UNITS_PER_V_REG): New macro.
(FIRST_PSEUDO_REGISTER): Adjust first pseudo num for RVV.
(V_REG_FIRST): New macro.
(V_REG_LAST): Ditto.
(V_REG_NUM): Ditto.
(V_REG_P): Ditto.
(VL_REG_P): Ditto.
(VTYPE_REG_P): Ditto.
(enum reg_class): Add RVV register types.
(REG_CLASS_CONTENTS): Add RVV register types.
* config/riscv/ Add VL/VTYPE register number constants.
2022-08-29 zhongjuzhe <>
* config/riscv/ Add new type for vector instructions.
2022-08-28 Peter Bergner <>
PR target/106017
* config/rs6000/ (rs6000_invalid_conversion): Remove handling
of MMA pointer conversions.
2022-08-27 Xi Ruoyao <>
* config/i386/gcc-auto-profile: Regenerate.
2022-08-26 Aldy Hernandez <>
* (real_iszero): New.
* real.h (real_iszero): New.
2022-08-26 Aldy Hernandez <>
* (real_isinf): New overload.
(real_inf): Add sign argument.
* real.h (real_isinf): New overload.
(real_inf): Add sign argument.
2022-08-26 Marek Polacek <>
PR c++/81159
* doc/invoke.texi: Document -Wself-move.
2022-08-26 Aldy Hernandez <>
* (vrange::set): Set varying.
(vrange::set_nonzero): Same.
(vrange::set_zero): Same.
(vrange::set_nonnegative): Same.
2022-08-26 Aldy Hernandez <>
* (foperator_equal::op1_range): Do not blindly
copy op2 range when honoring signed zeros.
2022-08-26 Aldy Hernandez <>
* (possibly_profitable_path_p): Always
add newline.
(profitable_path_p): Same.
2022-08-26 Richard Biener <>
* gimple-predicate-analysis.h
(uninit_analysis::use_cannot_happen): Remove.
* (can_be_invalidated_p): Remove.
(uninit_analysis::use_cannot_happen): Likewise.
(uninit_analysis::is_use_guarded): Do not call
(dump_predicates): Remove.
(simple_control_dep_chain): Remove edge overload.
2022-08-26 Tobias Burnus <>
* (expand_GOMP_TARGET_REV): New.
* internal-fn.def (GOMP_TARGET_REV): New.
* (lto_output_node, verify_node_partition): Mark
'omp target device_ancestor_host' as in_other_partition and don't
error if absent.
* (create_omp_child_function): Mark as 'noclone'.
* (expand_omp_target): For reverse offload, remove
sorry, use device = GOMP_DEVICE_HOST_FALLBACK and create
empty-body nohost function.
* (execute_omp_device_lower): Handle
(pass_omp_target_link::execute): For ACCEL_COMPILER, don't
nullify fn argument for reverse offload
2022-08-26 Jakub Jelinek <>
* builtins.def (BUILT_IN_ISSIGNALING): New built-in.
* (expand_builtin_issignaling): New function.
(expand_builtin_signbit): Don't overwrite target.
(expand_builtin): Handle BUILT_IN_ISSIGNALING.
(fold_builtin_classify): Likewise.
(fold_builtin_1): Likewise.
* optabs.def (issignaling_optab): New.
* (fold_const_call_ss): Handle
* config/i386/ (issignalingxf2): New expander.
* doc/extend.texi (__builtin_issignaling): Document.
(__builtin_isinf, __builtin_isnan): Clarify behavior with
* doc/md.texi (issignaling<mode>2): Likewise.
2022-08-26 Jakub Jelinek <>
PR tree-optimization/106099
* internal-fn.def (TRAP): Add ECF_LOOPING_CONST_OR_PURE flag.
* (execute_fixup_cfg): Add IFN_TRAP instead of
__builtin_trap to avoid the need of vops.
2022-08-26 Richard Biener <>
* (dfs_mark_dominating_region):
New helper.
(compute_control_dep_chain): Adjust to honor marked region
if provided.
(uninit_analysis::init_from_phi_def): Pre-mark the dominating
region to improve compute_control_dep_chain walking.
* vec.h (vec<T, va_heap, vl_ptr>::allocated): Add forwarder.
2022-08-26 Richard Biener <>
(uninit_analysis::collect_phi_def_edges): Only expand a
PHI def edge when it is possibly undefined.
2022-08-26 Martin Liska <>
* doc/extend.texi: Remove cr16 related stuff.
* doc/install.texi: Likewise.
* doc/invoke.texi: Likewise.
* doc/md.texi: Likewise.
* (test_expansion_to_rtl): Likewise.
* common/config/cr16/ Removed.
* config/cr16/ Removed.
* config/cr16/cr16-protos.h: Removed.
* config/cr16/ Removed.
* config/cr16/cr16.h: Removed.
* config/cr16/ Removed.
* config/cr16/cr16.opt: Removed.
* config/cr16/ Removed.
* config/cr16/t-cr16: Removed.
2022-08-26 liuhongt <>
PR target/106704
* config/i386/i386-builtin.def (BDESC): Add
CODE_FOR_avx_blendvpd256/CODE_FOR_avx_blendvps256 to
corresponding builtins.
* config/i386/ (ix86_gimple_fold_builtin):
2022-08-25 Marek Polacek <>
* ginclude/stddef.h: Define nullptr_t.
2022-08-25 Joseph Myers <>
* (gimplify_modify_expr): Convert initialization from
a variable-size CONSTRUCTOR to memset before call to
2022-08-25 Jason Merrill <>
* (base_type_die): Also use DW_ATE_UTF for char8_t.
2022-08-25 Andreas Krebbel <>
PR target/106101
* config/s390/ (subreg_register_operand): New
* config/s390/s390-protos.h (s390_gen_lowpart_subreg): New
function prototype.
* config/s390/ (s390_gen_lowpart_subreg): New function.
(s390_expand_insv): Use s390_gen_lowpart_subreg instead of
* config/s390/ ("*get_tp_64", "*zero_extendhisi2_31")
("*zero_extendqisi2_31", "*zero_extendqihi2_31"): Likewise.
("movstrictqi", "movstricthi", "movstrictsi"): Use the
subreg_register_operand predicate instead of register_operand.
2022-08-25 Xi Ruoyao <>
* config/loongarch/loongarch-protos.h (loongarch_symbol_type):
Add SYMBOL_PCREL64 and change the description for SYMBOL_PCREL.
* config/loongarch/ (loongarch_attribute_table):
New attribute table.
(TARGET_ATTRIBUTE_TABLE): Define the target hook.
(loongarch_handle_model_attribute): New static function.
(loongarch_classify_symbol): Take TARGET_CMODEL_EXTREME and the
model attribute of SYMBOL_REF_DECL into account returning
(loongarch_use_anchors_for_symbol_p): New static function.
(TARGET_USE_ANCHORS_FOR_SYMBOL_P): Define the target hook.
(loongarch_symbol_extreme_p): New static function.
(loongarch_symbolic_constant_p): Handle SYMBOL_PCREL64.
(loongarch_symbol_insns): Likewise.
(loongarch_split_symbol_type): Likewise.
(loongarch_split_symbol): Check SYMBOL_PCREL64 instead of
TARGET_CMODEL_EXTREME for PC-relative addressing.
(loongarch_print_operand_reloc): Likewise.
* doc/extend.texi (Variable Attributes): Document new
LoongArch specific attribute.
2022-08-25 Xi Ruoyao <>
* config/loongarch/ (loongarch_classify_symbol):
Return early if the rtx is not SYMBOL_REF.
2022-08-25 Richard Biener <>
PR tree-optimization/106737
* (transform_to_exit_first_loop_alt): Do not
verify SSA form.
2022-08-25 Chenghua Xu <>
PR target/106459
* config/loongarch/ (loongarch_build_integer):
* config/loongarch/loongarch.h (IMM_REACH): Likewise.
(HWIT_1U): New Defined.
(LU32I_OPERAND): Likewise.
(LU52I_OPERAND): Likewise.
(HWIT_UC_0xFFF): Likwise.
2022-08-24 Andrew Pinski <>
PR target/106632
PR target/106588
* config/riscv/ (*shNadduw): Use n constraint
instead of i.
(*slliuw): Likewise.
(*bexti): Likewise. Also add a check for operands[2] to be less
than the mode bitsize.
2022-08-24 Andrew Pinski <>
* config/riscv/ (DbS): New constraint.
(DnS): New constraint.
* config/riscv/ (*bset<mode>_1_mask): Use new constraint.
(*bclr<mode>): Likewise.
(*binvi<mode>): Likewise.
2022-08-24 Andrew Pinski <>
PR target/106586
* config/riscv/ (single_bit_mask_operand):
Use SINGLE_BIT_MASK_OPERAND instead of directly calling pow2p_hwi.
(not_single_bit_mask_operand): Likewise.
* config/riscv/ (riscv_build_integer_1): Don't special case
1<<31 for 32bits as it is already handled.
Call trunc_int_for_mode on the upper part after the subtraction.
(riscv_move_integer): Call trunc_int_for_mode before generating
the integer just make sure the constant has been sign extended
(riscv_emit_int_compare): Call trunc_int_for_mode after doing the
addition for the new rhs.
* config/riscv/riscv.h (SINGLE_BIT_MASK_OPERAND): If !TARGET64BIT,
then mask off the upper 32bits of the HWI as it will be sign extended.
2022-08-24 Andrew Pinski <>
* config/riscv/ (DsS): New constraint.
(DsD): New constraint.
* config/riscv/ (shiftm1c): New iterator.
* config/riscv/ (*bset<mode>_mask):
Use shiftm1c.
(*bset<mode>_1_mask): Likewise.
2022-08-24 Andrew Pinski <>
* config/riscv/ (Ds3): New constraint.
* config/riscv/ (imm123_operand): New predicate.
* config/riscv/ (*shNadd): Use Ds3 and imm123_operand.
(*shNadduw): Likewise.
2022-08-24 Andrew Pinski <>
* config/riscv/ (riscv_print_operand):
Handle '~'.
(riscv_print_operand_punct_valid_p): New function
* config/riscv/ (<bitmanip_optab>si2/clz_ctz_pcnt):
Use %~ instead of conditional the pattern on TARGET_64BIT.
(rotrsi3): Likewise.
(rotlsi3): Likewise.
* config/riscv/ Add ~ to the list of modifiers.
(addsi3): Use %~ instead of conditional the pattern on TARGET_64BIT.
(subsi3): Likewise.
(negsi2): Likewise.
(mulsi3): Likewise.
(optab>si3/any_div): Likewise.
(*add<mode>hi3): Likewise.
(<optab>si3/any_shift): Likewise.
2022-08-24 Andrew Pinski <>
* config/riscv/ (riscv_print_operand): Make a mention to
keep the list in in sync with this list.
* config/riscv/ Add list of modifiers as comments.
2022-08-24 Andrew Pinski <>
* config/riscv/ (any_atomic, atomic_optab): Move to ...
* config/riscv/ Here.
2022-08-24 Andrew Pinski <>
* config/riscv/
(bitmanip_bitwise, bitmanip_minmax, clz_ctz_pcna,
tbitmanip_optab, bitmanip_insn, shiftm1): Move to ...
* config/riscv/ Here.
2022-08-24 Andrew Pinski <>
* config/riscv/ (GPR): Move to new file.
(P, X, BR): Likewise.
(MOVE32, MOVE64, SHORT): Likewise.
(HISI, SUPERQI, SUBX): Likewise.
(ANYI, ANYF, SOFTF): Likewise.
(size, load, default_load): Likewise.
(softload, store, softstore): Likewise.
(reg, fmt, ifmt, amo): Likewise.
(RINT, rint_pattern, rint_rm): Likewise.
(QUIET_COMPARISON, quiet_pattern, QUIET_PATTERN): Likewise.
(any_extend, any_shiftrt, any_shift): Likewise.
(any_bitwise): Likewise.
(any_div, any_mod): Likewise.
(any_gt, any_ge, any_lt, any_le): Likewise.
(u, su): Likewise.
(optab, insn): Likewise.
* config/riscv/ New file.
2022-08-24 Andrew Pinski <>
PR target/106601
* config/riscv/ (bswaphi2): New pattern.
2022-08-24 Andrew Pinski <>
PR target/106600
* config/riscv/ (bswap<mode>2): Remove
condition on TARGET_64BIT as X is already conditional there.
2022-08-24 Joseph Myers <>
* (build_real): Give DFP dconst0 the minimum quantum
exponent for the type.
2022-08-24 Jose E. Marchesi <>
PR target/106733
* config/bpf/ (bpf_legitimate_address_p): Recognize integer
constants as legitimate addresses for functions.
(bpf_small_register_classes_for_mode_p): Define target hook.
2022-08-24 Richard Biener <>
* Move predicate normalization
after the comment documenting it.
2022-08-24 Richard Biener <>
* gimple-predicate-analysis.h (predicate): Split out
non-predicate related functionality into ..
(uninit_analysis): .. this new class.
* Refactor into two classes.
* (find_uninit_use): Use uninit_analysis.
2022-08-24 Richard Biener <>
* (predicate::use_cannot_happen):
Do simple_control_dep_chain only up to cd_root, add the PHI
operand edge to the chains like init_from_phi_def does.
(predicate::is_use_guarded): Speedup early out, avoid half-way
initializing the PHI def predicate.
2022-08-24 Jakub Jelinek <>
PR target/106721
* config/i386/ (shuffletype): Add V32BF, V16BF and V8BF entries.
Change V32HF, V16HF and V8HF entries from "f" to "i".
(iptr): Add V32BF, V16BF, V8BF and BF entries.
(i128vldq): Add V16HF and V16BF entries.
(avx512er_vmrcp28<mode><mask_name><round_saeonly_name>): Fix typo,
mask_opernad3 -> mask_operand3.
2022-08-24 Martin Liska <>
Jørgen Kvalsvik <>
* (add_line_counts): Add group functions to coverage
(accumulate_line_counts): Similarly for files.
2022-08-24 Lulu Cheng <>
* config/loongarch/genopts/loongarch-strings: Support code model medium.
* config/loongarch/genopts/ Likewise.
* config/loongarch/loongarch-def.c: Likewise.
* config/loongarch/loongarch-def.h (CMODEL_LARGE): Likewise.
(N_CMODEL_TYPES): Likewise.
(CMODEL_MEDIUM): Likewise.
* config/loongarch/ Likewise.
* config/loongarch/loongarch-opts.h (TARGET_CMODEL_MEDIUM): Likewise.
* config/loongarch/loongarch-str.h (STR_CMODEL_MEDIUM): Likewise.
* config/loongarch/ (loongarch_call_tls_get_addr):
Tls symbol Loading support medium mode.
(loongarch_legitimize_call_address): When medium mode, make a symbolic
jump with two instructions.
(loongarch_option_override_internal): Support medium.
* config/loongarch/ (@pcalau12i<mode>): New template.
(@sibcall_internal_1<mode>): New function call templates added to support
medium mode.
(@sibcall_value_internal_1<mode>): Likewise.
(@sibcall_value_multiple_internal_1<mode>): Likewise.
(@call_internal_1<mode>): Likewise.
(@call_value_internal_1<mode>): Likewise.
(@call_value_multiple_internal_1<mode>): Likewise.
* config/loongarch/loongarch.opt: Support medium.
* config/loongarch/ Add processing about medium mode.
* doc/invoke.texi: Document for '-mcmodel=medium'.
2022-08-24 Richard Biener <>
* (predicate::use_cannot_happen):
Start the compute_control_dep_chain walk from the immediate
dominator of the PHI.
2022-08-23 H.J. Lu <>
PR target/106714
* config/i386/amxtileintrin.h (_tile_loadd_internal): Cast to
(_tile_stream_loadd_internal): Likewise.
(_tile_stored_internal): Likewise.
2022-08-23 Richard Biener <>
PR tree-optimization/106722
* gimple-predicate-analysis.h (MAX_NUM_CHAINS, MAX_CHAIN_LEN,
* ... here and document.
(simple_control_dep_chain): New function, factored from
(predicate::use_cannot_happen): Adjust.
(predicate::predicate): Use simple_control_dep_chain as fallback.
2022-08-23 Aldy Hernandez <>
* (foperator_equal::op1_range): Set range to
range of op2.
2022-08-23 Richard Biener <>
* (is_loop_exit): Split out
from ...
(is_non_loop_exit_postdominating): ... here. Remove after
inlining ...
(find_control_equiv_block): ... here.
(compute_control_dep_chain): ... and here.
(predicate::is_use_guarded): Do not excempt loop exits
from short-cutting the case of the use post-dominating the
PHI definition.
2022-08-23 Andrew MacLeod <>
PR tree-optimization/106687
* (operator_minus::lhs_op1_relation): Return VREL_LE
for the VREL_GT case as well.
2022-08-22 Dimitar Dimitrov <>
* config/pru/ (pru_<code>di3): New alternative for
two operands but without earlyclobber.
2022-08-22 Dimitar Dimitrov <>
* config/pru/ (prumov<mode>, mov<mode>): Add
variants for loading -1 consts.
2022-08-22 Dimitar Dimitrov <>
PR target/106564
* config/pru/ (Um): New constraint for -1.
(Uf): New constraint for IOR fill-bytes constants.
(Uz): New constraint for AND zero-bytes constants.
* config/pru/ (const_fillbytes_operand): New
predicate for IOR fill-bytes constants.
(const_zerobytes_operand): New predicate for AND zero-bytes
* config/pru/pru-protos.h (pru_output_sign_extend): Remove.
(struct pru_byterange): New struct to describe a byte range.
(pru_calc_byterange): New declaration.
* config/pru/ (pru_rtx_costs): Add penalty for
64-bit zero-extend.
(pru_output_sign_extend): Remove.
(pru_calc_byterange): New helper function to extract byte
range info from a constant.
(pru_print_operand): Remove 'y' and 'z' print modifiers.
* config/pru/ (zero_extendqidi2): New pattern.
(zero_extendhidi2): New pattern.
(zero_extendsidi2): New pattern.
(extend<EQS0:mode><EQD:mode>2): Rewrite as an expand.
(@pru_ior_fillbytes<mode>): New pattern.
(@pru_and_zerobytes<mode>): New pattern.
(<code>di3): Rewrite as an expand and handle ZERO and FILL
special cases.
(pru_<code>di3): New name for <code>di3.
(@cbranch_qbbx_const_<BIT_TEST:code><HIDI:mode>): New pattern to
handle bit-test for 64-bit registers.
2022-08-22 Richard Biener <>
* gimple-predicate-analysis.h (predicate::m_use_expr): Remove.
(predicate::def_expr): Likewise.
(predicate::use_expr): Likewise.
(predicate::expr): Likewise.
* (predicate::def_expr): Remove.
(predicate::use_expr): Likewise.
(predicate::expr): Likewise.
(predicate::is_use_guarded): Do not build m_use_expr.
2022-08-22 Martin Liska <>
PR lto/106700
* Detect O_NONBLOCK flag for open.
* Regenerate.
* configure: Regenerate.
* (jobserver_info::connect): Set is_connected
properly based on O_NONBLOCK.
* opts-jobserver.h (struct jobserver_info): Add is_connected
member variable.
2022-08-22 zhongjuzhe <>
* (test_vector_subregs_fore_back): Make first value
and repeat value different.
2022-08-22 Tobias Burnus <>
PR lto/106686
* (free_array_of_ptrs): Move before tool_cleanup.
(tool_cleanup): Unlink offload_names.
(compile_offload_image): Take filename argument to set it early.
(compile_images_for_offload_targets): Update call; set
offload_names to NULL after freeing the array.
2022-08-22 Richard Biener <>
PR tree-optimization/105937
* (find_uninit_use): Do not queue PHIs
on backedges.
(execute_late_warn_uninitialized): Mark backedges.
2022-08-22 Richard Biener <>
* (predicate::use_cannot_happen):
If the use is guarded with multiple predicate paths compute
the predicates intersection before going forward. When
compute_control_dep_chain wasn't able to come up with at
least one path from function entry to the PHI edge compute
a conservative sparse path instead.
2022-08-20 Lulu Cheng <>
* config/loongarch/ Allow cmodel to be extreme.
* config/loongarch/ (loongarch_call_tls_get_addr):
Add extreme support for TLS GD and LD types.
(loongarch_legitimize_tls_address): Add extreme support for TLS LE
and IE.
(loongarch_split_symbol): When compiling with -mcmodel=extreme,
the symbol address will be obtained through five instructions.
(loongarch_print_operand_reloc): Add support.
(loongarch_print_operand): Add support.
(loongarch_print_operand_address): Add support.
(loongarch_option_override_internal): Set '-mcmodel=extreme' option
incompatible with '-mno-explicit-relocs'.
* config/loongarch/ (@lui_l_hi20<mode>):
Loads bits 12-31 of data into registers.
(lui_h_lo20): Load bits 32-51 of the data and spell bits 0-31 of
the source register.
(lui_h_hi12): Load bits 52-63 of the data and spell bits 0-51 of
the source register.
* config/loongarch/ Symbols need to be decomposed
when defining the macro TARGET_CMODEL_EXTREME
* doc/invoke.texi: Modify the description information of cmodel in the document.
Document -W[no-]extreme-plt.
2022-08-19 Tobias Burnus <>
* config/gcn/ (main): Add omp_requires_file and dbgobj to
* config/i386/ (prepare_target_image): Add
omp_requires_file to temp_files.
* config/nvptx/ (omp_requires_file): New global static var.
(main): Remove local omp_requires_file var.
(tool_cleanup): Handle omp_requires_file.
2022-08-19 Aldy Hernandez <>
* (path_range_query::path_range_query):
Remove constructor that takes edge.
* gimple-range-path.h (class path_range_query): Same.
* (edge_range_query): New.
(entry_loop_condition_is_static): Call edge_range_query.
2022-08-18 Takayuki 'January June' Suwa <>
* config/xtensa/xtensa.h
Add new register class "ISC_REGS".
* config/xtensa/ (c): Add new register constraint.
* config/xtensa/ (define_constants): Remove "A11_REG".
(sibcall_internal, sibcall_value_internal):
Change to use the new register constraint, and remove two split
patterns for fixups that are no longer needed.
2022-08-18 Maciej W. Rozycki <>
* config/riscv/ (*mov<GPR:mode><X:mode>cc): Fix output
pattern formatting.
2022-08-18 Tim Lange <>
PR analyzer/106181
* doc/invoke.texi: Add Wanalyzer-imprecise-fp-arithmetic.
2022-08-18 Aldy Hernandez <>
* (path_range_query::path_range_query): Add
various constructors to take a path.
(path_range_query::~path_range_query): Remove m_alloced_ranger.
(path_range_query::range_on_path_entry): Adjust for m_ranger being
a reference.
(path_range_query::set_path): Rename to...
(path_range_query::reset_path): ...this and call compute_ranges.
(path_range_query::ssa_range_in_phi): Adjust for m_ranger
(path_range_query::range_defined_in_block): Same.
(path_range_query::compute_ranges_in_block): Same.
(path_range_query::adjust_for_non_null_uses): Same.
(path_range_query::compute_exit_dependencies): Use m_path instead
of argument.
(path_range_query::compute_ranges): Remove path argument.
(path_range_query::range_of_stmt): Adjust for m_ranger reference.
(path_range_query::compute_outgoing_relations): Same.
* gimple-range-path.h (class path_range_query): Add various
Make compute_ranges and compute_exit_dependencies private.
Rename set_path to reset_path.
Make m_ranger a reference.
Remove m_alloced_ranger.
* (pass_dominator::execute): Adjust constructor to
* (entry_loop_condition_is_static): Take a
ranger and instantiate a new path_range_query every time.
(ch_base::copy_headers): Pass ranger instead of path_range_query.
* (class back_threader): Remove m_solver.
(back_threader::~back_threader): Remove m_solver.
(back_threader::find_taken_edge_switch): Adjust for m_ranger
(back_threader::find_taken_edge_cond): Same.
(back_threader::dump): Remove m_solver.
(back_threader::back_threader): Move verify_marked_backedges
here from the path_range_query constructor.
* (hybrid_jt_simplifier::simplify): Move
some code from compute_ranges_from_state here.
(hybrid_jt_simplifier::compute_ranges_from_state): Rename...
(hybrid_jt_simplifier::compute_exit_dependencies): this.
* tree-ssa-threadedge.h (class hybrid_jt_simplifier): Rename
compute_ranges_from_state to compute_exit_dependencies.
Remove m_path.
2022-08-18 Richard Biener <>
PR middle-end/106617
* match.pd ((a ? b : c) > d -> a ? (b > d) : (c > d)): Fix
guard, disable on GENERIC to not cause quadratic behavior
with the implementation and the use of !
2022-08-18 Andrew Pinski <>
PR gcov-profile/106659
* (INCLUDE_VECTOR): Include vector.h with
2022-08-18 konglin1 <>
* config/i386/ (ix86_expand_sse_movcc): Handle vector
(ix86_expand_vector_init_duplicate): Support vector BFmode.
(ix86_expand_vector_init_one_nonzero): Ditto.
(ix86_expand_vector_init_one_var): Ditto.
(ix86_expand_vector_init_concat): Ditto.
(ix86_expand_vector_init_interleave): Ditto.
(ix86_expand_vector_init_general): Ditto.
(ix86_expand_vector_init): Ditto.
(ix86_expand_vector_set_var): Ditto.
(ix86_expand_vector_set): Ditto.
(ix86_expand_vector_extract): Ditto.
* config/i386/ (classify_argument): Add BF vector modes.
(function_arg_64): Ditto.
(ix86_gimplify_va_arg): Ditto.
(ix86_get_ssemov): Ditto.
* config/i386/i386.h (VALID_AVX256_REG_MODE): Add BF vector modes.
(host_detect_local_cpu): Ditto.
* config/i386/ Add BF vector modes.
(MODE_SIZE): Ditto.
(ssemodesuffix): Add bf suffix for BF vector modes.
(ssevecmode): Ditto.
* config/i386/ (VMOVE): Adjust for BF vector modes.
(VI12HFBF_AVX512VL): Ditto.
(V_256_512): Ditto.
(VF_AVX512HFBF16): Ditto.
(VF_AVX512BWHFBF16): Ditto.
(VIHFBF): Ditto.
(avx512): Ditto.
(VIHFBF_256): Ditto.
(VIHFBF_AVX512BW): Ditto.
(V16_256): Ditto.
(V32_512): Ditto.
(sseinsnmode): Ditto.
(sseconstm1): Ditto.
(sseintmodesuffix): New mode_attr.
(avx512fmaskmode): Ditto.
(avx512fmaskmodelower): Ditto.
(ssedoublevecmode): Ditto.
(ssehalfvecmode): Ditto.
(ssehalfvecmodelower): Ditto.
(ssescalarmode): Add vector BFmode mapping.
(ssescalarmodelower): Ditto.
(ssexmmmode): Ditto.
(ternlogsuffix): Ditto.
(ssescalarsize): Ditto.
(sseintprefix): Ditto.
(i128): Ditto.
(xtg_mode): Ditto.
(bcstscalarsuff): Ditto.
(<avx512>_blendm<mode>): New define_insn for BFmode.
(<avx512>_store<mode>_mask): Ditto.
(vcond_mask_<mode><avx512fmaskmodelower>): Ditto.
(vec_set<mode>_0): New define_insn for BF vector set.
(V8BFH_128): New mode_iterator for BFmode.
(avx512fp16_mov<mode>): Ditto.
(vec_set<mode>): New define_insn for BF vector set.
(@vec_extract_hi_<mode>): Ditto.
(@vec_extract_lo_<mode>): Ditto.
(vec_set_hi_<mode>): Ditto.
(vec_set_lo_<mode>): Ditto.
(*vec_extract<mode>_0): New define_insn_and_split for BF
vector extract.
(*vec_extract<mode>): New define_insn.
(VEC_EXTRACT_MODE): Add BF vector modes.
(sse2p4_1): Ditto.
(pinsr_evex_isa): Ditto.
(<sse2p4_1>_pinsr<ssemodesuffix>): Adjust to support
insert for V8BFmode.
(pbroadcast_evex_isa): Add BF vector modes.
(avx2_pbroadcast<mode>): Adjust to support BF vector mode
(avx2_pbroadcast<mode>_1): Ditto.
(<avx512>_vec_dup<mode>_1): Ditto.
2022-08-18 Martin Liska <>
* configure: Regenerate.
2022-08-18 Haochen Gui <>
PR target/103109
* config/rs6000/ (<u>maddditi4): New pattern for multiply-add.
(<u>madddi4_highpart): New.
(<u>madddi4_highpart_le): New.
2022-08-18 Aldy Hernandez <>
(path_range_query::compute_exit_dependencies): Use
2022-08-18 zhongjuzhe <>
* config/riscv/ Adjust runtime invariant.
* config/riscv/riscv-modes.def (MAX_BITSIZE_MODE_ANY_MODE): New.
* config/riscv/riscv-protos.h (riscv_initial_elimination_offset):Adjust
runtime invariant.
* config/riscv/ (riscv_remove_unneeded_save_restore_calls):
Adjust runtime invariant.
* config/riscv/ (struct riscv_frame_info): Adjust runtime
(enum riscv_microarchitecture_type): Ditto.
(riscv_valid_offset_p): Ditto.
(riscv_valid_lo_sum_p): Ditto.
(riscv_address_insns): Ditto.
(riscv_load_store_insns): Ditto.
(riscv_legitimize_move): Ditto.
(riscv_binary_cost): Ditto.
(riscv_rtx_costs): Ditto.
(riscv_output_move): Ditto.
(riscv_extend_comparands): Ditto.
(riscv_flatten_aggregate_field): Ditto.
(riscv_get_arg_info): Ditto.
(riscv_pass_by_reference): Ditto.
(riscv_elf_select_rtx_section): Ditto.
(riscv_stack_align): Ditto.
(riscv_compute_frame_info): Ditto.
(riscv_initial_elimination_offset): Ditto.
(riscv_set_return_address): Ditto.
(riscv_for_each_saved_reg): Ditto.
(riscv_first_stack_step): Ditto.
(riscv_expand_prologue): Ditto.
(riscv_expand_epilogue): Ditto.
(riscv_can_use_return_insn): Ditto.
(riscv_secondary_memory_needed): Ditto.
(riscv_hard_regno_nregs): Ditto.
(riscv_convert_vector_bits): New.
(riscv_option_override): Adjust runtime invariant.
(riscv_promote_function_mode): Ditto.
* config/riscv/riscv.h (POLY_SMALL_OPERAND_P): New.
* config/riscv/ Adjust runtime invariant.
2022-08-18 Lulu Cheng <>
* config/loongarch/ (loongarch_call_tls_get_addr):
Get __tls_get_addr address through got table when disable plt.
2022-08-18 Takayuki 'January June' Suwa <>
* config/xtensa/ (xtensa_expand_prologue):
Use an "addmi" machine instruction for updating the stack pointer
rather than addition/subtraction via hard register A9, if the amount
of change satisfies the literal value conditions of that instruction
when the CALL0 ABI is used.
(xtensa_expand_epilogue): Ditto.
And also inhibit the stack pointer addition of constant zero.
2022-08-17 Roger Sayle <>
PR target/106640
* config/i386/
(timde_scalar_chain::compute_convert_gain): Replace incorrect use
of XINT with INTVAL (XEXP (src, 1)).
2022-08-17 Aldy Hernandez <>
(path_range_query::compute_ranges_in_block): Remove
set_root_oracle call.
(path_range_query::compute_ranges): Pass ranger oracle to
* (path_oracle::reset_path): Set root oracle.
* value-relation.h (path_oracle::reset_path): Add root oracle
2022-08-17 Marek Polacek <>
PR c++/89780
* (nowarn_spec_t::nowarn_spec_t): Handle
OPT_Wpessimizing_move and OPT_Wredundant_move.
* diagnostic-spec.h (nowarn_spec_t): Add NW_REDUNDANT enumerator.
2022-08-17 Francois-Xavier Coudert <>
Jakub Jelinek <>
PR fortran/46539
* common.opt (static-libquadmath): New option.
* (driver_handle_option): Always accept -static-libquadmath.
* config/darwin.h (LINK_SPEC): Handle -static-libquadmath.
2022-08-17 Tobias Burnus <>
* (input_offload_tables): Improve requires diagnostic
when filenames come out identically.
2022-08-17 Tobias Burnus <>
PR middle-end/106548
* (lower_rec_input_clauses): Use build_outer_var_ref
for 'simd' linear-step values that are variable.
2022-08-17 Tobias Burnus <>
Chung-Lin Tang <>
PR c++/104493
* (omp_notice_variable): Call omp_mappable_type
instead of removed langhook.
* omp-general.h (omp_mappable_type): New prototype.
* (omp_mappable_type): New; moved from ...
* (lhd_omp_mappable_type): ... here.
* langhooks-def.h (lhd_omp_mappable_type,
* langhooks.h (struct lang_hooks_for_types): Remove
2022-08-17 Christophe Lyon <>
* config.gcc (arm): Define with_float to hard if target name ends
with 'hf'.
2022-08-17 Richard Biener <>
(back_threader_profitability): Split profitable_path_p
into possibly_profitable_path_p and itself, keep state
as new members.
(back_threader::m_profit): Remove.
(back_threader::find_paths): Likewise.
(back_threader::maybe_register_path): Take profitability
instance as parameter.
(back_threader::find_paths_to_names): Likewise. Use
possibly_profitable_path_p and avoid the path range query
when the path is currently too large.
(back_threader::find_paths): Fold into ...
(back_threader::maybe_thread_block): ... this.
(get_gimple_control_stmt): Remove.
Split out from profitable_path_p, do early profitability
(back_threader_profitability::profitable_path_p): Do final
profitability path after the taken edge has been determined.
2022-08-17 Xi Ruoyao <>
* config/loongarch/ (fmax<mode>3): New RTL pattern.
(fmin<mode>3): Likewise.
2022-08-17 Andrew MacLeod <>
* (gimple_range_ssa_names): New.
* gimple-range-fold.h (gimple_range_ssa_names): New prototype.
* (range_def_chain::get_def_chain): Move
code to new routine.
2022-08-16 Martin Liska <>
PR target/106637
* doc/install.texi: Remove link to
2022-08-16 Kito Cheng <>
* common/config/riscv/ (riscv_implied_info): Add
zfh and zfhmin.
(riscv_ext_version_table): Ditto.
(riscv_ext_flag_table): Ditto.
* config/riscv/riscv-opts.h (MASK_ZFHMIN): New.
(MASK_ZFH): Ditto.
(TARGET_ZFH): Ditto.
* config/riscv/ (riscv_output_move): Handle HFmode move
for zfh and zfhmin.
(riscv_emit_float_compare): Handle HFmode.
* config/riscv/ (ANYF): Add HF.
(SOFTF): Add HF.
(load): Ditto.
(store): Ditto.
(truncsfhf2): New.
(truncdfhf2): Ditto.
(extendhfsf2): Ditto.
(extendhfdf2): Ditto.
(*movhf_hardfloat): Ditto.
(*movhf_softfloat): Make sure not ZFHMIN.
* config/riscv/riscv.opt (riscv_zf_subext): New.
2022-08-16 Kito Cheng <>
* config/riscv/ include stringpool.h
(riscv_float16_type_node): New.
(riscv_init_builtin_types): Ditto.
(riscv_init_builtins): Call riscv_init_builtin_types.
* config/riscv/riscv-modes.def (HF): New.
* config/riscv/ (riscv_output_move): Handle HFmode.
(riscv_mangle_type): New.
(riscv_scalar_mode_supported_p): Ditto.
(riscv_libgcc_floating_mode_supported_p): Ditto.
(riscv_excess_precision): Ditto.
(riscv_floatn_mode): Ditto.
(riscv_init_libfuncs): Ditto.
* config/riscv/ (mode): Add HF.
(softload): Add HF.
(softstore): Ditto.
(fmt): Ditto.
(UNITMODE): Ditto.
(movhf): New.
(*movhf_softfloat): New.
2022-08-16 Richard Biener <>
* (back_threader::find_paths_to_names):
Do not walk further if we are leaving the current loop.
2022-08-16 Sergei Trofimovich <>
PR driver/106624
* (driver::detect_jobserver): Allocate storage xputenv()
argument using xstrdup().
2022-08-16 Aldy Hernandez <>
* (path_range_query::import_p): Rename to...
(path_range_query::exit_dependency_p): ...this.
(path_range_query::dump): Rename imports to exit dependencies.
(path_range_query::compute_ranges_in_phis): Same.
(path_range_query::compute_ranges_in_block): Same.
(path_range_query::adjust_for_non_null_uses): Same.
(path_range_query::compute_ranges): Same.
(path_range_query::compute_phi_relations): Same.
(path_range_query::add_to_imports): Rename to...
(path_range_query::add_to_exit_dependencies): ...this.
(path_range_query::compute_imports): Rename to...
(path_range_query::compute_exit_dependencies): ...this.
* gimple-range-path.h (class path_range_query): Rename imports to
exit dependencies.
2022-08-16 Martin Liska <>
* value-range-storage.h (class obstack_vrange_allocator): Mark
the class as final.
(class ggc_vrange_allocator): Likewise.
2022-08-16 Martin Liska <>
* value-range-equiv.h (class value_range_equiv): Add virtual
* value-range.h: Likewise.
2022-08-16 Richard Biener <>
PR middle-end/106630
* match.pd ((T)(x * CST) -> (T)x * CST): Restrict to
narrowing conversions.
2022-08-16 Martin Liska <>
* value-range-equiv.h (class value_range_equiv):
2022-08-16 Martin Liska <>
* config/i386/i386-features.h (class general_scalar_chain): Add
final override for a method.
(class timode_scalar_chain): Likewise.
2022-08-16 Richard Biener <>
* doc/invoke.texi (max-jump-thread-paths): Adjust.
2022-08-16 Martin Liska <>
* (jobserver_info::connect): Open fifo
in non-blocking mode.
2022-08-16 Kewen.Lin <>
PR target/103353
* config/rs6000/ (define_expand movoo): Move TARGET_MMA condition
check to preparation statements and add handlings for !TARGET_MMA.
(define_expand movxo): Likewise.
2022-08-16 Kewen Lin <>
PR tree-optimization/106322
* (vectorizable_call): Don't allow
vect_emulated_vector_p type for both vectype_in and vectype_out.
2022-08-16 Takayuki 'January June' Suwa <>
* common/config/xtensa/
(xtensa_option_optimization_table): Add OPT_fsplit_wide_types_early
for OPT_LEVELS_ALL in order to restore pre-GCC10 behavior.
2022-08-15 Andrew MacLeod <>
PR tree-optimization/106621
* (irange::set): Check for POLY_INT_CST early.
2022-08-15 Roger Sayle <>
* config/i386/
(timode_scalar_chain::compute_convert_gain): Provide costs for
shifts and rotates.
(timode_scalar_chain::convert_insn): Handle ASHIFTRT, ROTATERT
and ROTATE just like existing ASHIFT and LSHIFTRT cases.
(timode_scalar_to_vector_candidate_p): Handle all shifts and
rotates by integer constants between 0 and 127.
2022-08-15 Roger Sayle <>
* config/i386/
(timode_scalar_chain::compute_convert_gain): Provide gains for
comparisons against 0/-1, including "*testti" patterns.
2022-08-15 Roger Sayle <>
PR tree-optimization/64992
PR tree-optimization/98956
* match.pd (ne (lshift @0 @1) 0): Simplify (X << C) != 0 to X
when X is zero_one_valued_p and the shift constant C is valid.
(eq (lshift @0 @1) 0): Likewise, simplify (X << C) == 0 to !X
when X is zero_one_valued_p and the shift constant C is valid.
2022-08-15 Roger Sayle <>
Richard Biener <>
PR tree-optimization/71343
* match.pd (op (lshift @0 @1) (lshift @2 @1)): Optimize the
expression (X<<C) + (Y<<C) to (X+Y)<<C for multiple operators.
(op (rshift @0 @1) (rshift @2 @1)): Likewise, simplify (X>>C)^(Y>>C)
to (X^Y)>>C for binary logical operators, AND, IOR and XOR.
2022-08-15 Richard Biener <>
* (range_on_path_entry): Just
call range_on_entry.
2022-08-15 Jakub Jelinek <>
PR rtl-optimization/106590
* (check_for_cc_cmp_clobbers): New function.
(noce_convert_multiple_sets_1): If SEQ sets or clobbers any regs
mentioned in cc_cmp or rev_cc_cmp, don't consider seq2 for any
further conditional moves.
2022-08-15 konglin1 <>
* config/i386/i386-builtin-types.def (BFLOAT16): New primitive type.
* config/i386/ : Support __bf16 type for i386 backend.
(ix86_register_bf16_builtin_type): New function.
(ix86_bf16_type_node): New.
(ix86_bf16_ptr_type_node): Ditto.
(ix86_init_builtin_types): Add ix86_register_bf16_builtin_type function call.
* config/i386/i386-modes.def (FLOAT_MODE): Add BFmode.
* config/i386/ (classify_argument): Handle BFmode.
(construct_container): Ditto.
(function_value_32): Return __bf16 by %xmm0.
(function_value_64): Return __bf16 by SSE register.
(ix86_output_ssemov): Handle BFmode.
(ix86_legitimate_constant_p): Disable BFmode constant double.
(ix86_secondary_reload): Require gpr as intermediate register
to store __bf16 from sse register when sse4 is not available.
(ix86_scalar_mode_supported_p): Enable __bf16 under sse2.
(ix86_mangle_type): Add manlging for __bf16 type.
(ix86_invalid_conversion): New function for target hook.
(ix86_invalid_unary_op): Ditto.
(ix86_invalid_binary_op): Ditto.
(TARGET_INVALID_CONVERSION): New define for target hook.
* config/i386/i386.h (host_detect_local_cpu): Add BFmode.
* config/i386/ ("mode"): Add BFmode.
(MODE_SIZE): Ditto.
(X87MODEFH): Ditto.
(HFBF): Add new define_mode_iterator.
(*pushhf_rex64): Change for BFmode.
(*push<mode>_rex64): Ditto.
(*pushhf): Ditto.
(*push<mode>): Ditto.
(MODESH): Ditto.
(hfbfconstf): Add new define_mode_attr.
(*mov<mode>_internal): Add BFmode.
2022-08-13 Roger Sayle <>
Uroš Bizjak <>
* config/i386/ (const_0_to_255_not_mul_8_operand):
New predicate for values between 0/1 and 255, not multiples of 8.
* config/i386/ (ashlv1ti3): Delay lowering of logical left
shifts by constant bit counts.
(*ashlvti3_internal): New define_insn_and_split that lowers
logical left shifts by constant bit counts, that aren't multiples
of 8, before reload.
(lshrv1ti3): Delay lowering of logical right shifts by constant.
(*lshrv1ti3_internal): New define_insn_and_split that lowers
logical right shifts by constant bit counts, that aren't multiples
of 8, before reload.
(ashrv1ti3):: Delay lowering of arithmetic right shifts by
constant bit counts.
(*ashrv1ti3_internal): New define_insn_and_split that lowers
arithmetic right shifts by constant bit counts before reload.
(rotlv1ti3): Delay lowering of rotate left by constant.
(*rotlv1ti3_internal): New define_insn_and_split that lowers
rotate left by constant bits counts before reload.
(rotrv1ti3): Delay lowering of rotate right by constant.
(*rotrv1ti3_internal): New define_insn_and_split that lowers
rotate right by constant bits counts before reload.
2022-08-12 Srinath Parvathaneni <>
* doc/invoke.texi (Arm Options): Document -mcpu=cortex-m55 options.
2022-08-12 Jan Hubicka <>
PR middle-end/106057
* (type_or_derived_type_possibly_instantiated_p): New
(possible_polymorphic_call_targets): Use it.
2022-08-12 Andrew Carlotti <>
* tree-ssa-loop.h: Improve comment
2022-08-12 Jakub Jelinek <>
PR tree-optimization/106506
* (spaceship_replacement): Don't punt for
is_cast or orig_use_lhs cases if phi_bb has 3 predecessors.
2022-08-12 Richard Biener <>
PR tree-optimization/106593
* (back_threader::find_paths):
If the imports from the conditional do not satisfy
gimple_range_ssa_p don't try to thread anything.
2022-08-12 Tamar Christina <>
PR target/106524
* config/aarch64/ (*fcmuo<mode>_nor_combine,
*fcmuo<mode>_bic_combine): Don't accept comparisons against zero.
2022-08-12 Tim Lange <>
PR analyzer/106000
* doc/invoke.texi: Add Wanalyzer-out-of-bounds.
2022-08-12 Andrew Pinski <>
* config/aarch64/ Remove comment
about MD_INCLUDES as it is out of date and not needed.
2022-08-11 Richard Biener <>
* (path_range_query::compute_imports):
Restrict walking SSA defs to blocks inside the path. Track
the same operands as range_def_chain::get_def_chain does.
2022-08-11 Richard Biener <>
PR tree-optimization/106514
* (back_threader::find_paths_to_names):
Compute and unwind both m_imports and interesting on the fly during
path discovery.
(back_threader::find_paths): Compute the original m_imports
from just the SSA uses of the exit conditional. Drop
handling single_succ_to_potentially_threadable_block.
* (path_range_query::ssa_range_in_phi): Handle
constant PHI arguments without crashing. Use PHI_ARG_DEF_FROM_EDGE.
2022-08-11 Richard Biener <>
* gimple-range-path.h (path_range_query::compute_imports):
Take path as argument, not the exit block.
* (path_range_query::compute_imports):
Likewise, and adjust, avoiding possibly stale m_path.
(path_range_query::compute_outgoing_relations): Register
relations for all conditionals.
* (back_threader::find_paths):
2022-08-11 Kewen Lin <>
* config/rs6000/ (rs6000_init_builtins): Fix the