X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=gcc%2FChangeLog;h=95aa1b5654faccd9341c322535b873b3308e1ef0;hb=efe71fcc4cb0e9989b2655e034c57cc73ae679a9;hp=871b97c8543db3a97c3dd3ba93f0ee2d2ad27beb;hpb=bea7a39103a5a86d5daabfff746316dfd4e42b3d;p=gcc.git diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 871b97c8543..95aa1b5654f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8619 @@ +2020-10-23 Jan Hubicka + + * Makefile.in: Add symtab-thunks.o + (GTFILES): Add symtab-thunks.h and symtab-thunks.cc; remove cgraphunit.c + * cgraph.c: Include symtab-thunks.h. + (cgraph_node::create_thunk): Update + (symbol_table::create_edge): Update + (cgraph_node::dump): Update + (cgraph_node::call_for_symbol_thunks_and_aliases): Update + (set_nothrow_flag_1): Update + (set_malloc_flag_1): Update + (set_const_flag_1): Update + (collect_callers_of_node_1): Update + (clone_of_p): Update + (cgraph_node::verify_node): Update + (cgraph_node::function_symbol): Update + (cgraph_c_finalize): Call thunk_info::release. + (cgraph_node::has_thunk_p): Update + (cgraph_node::former_thunk_p): Move here from cgraph.h; reimplement. + * cgraph.h (struct cgraph_thunk_info): Rename to symtab-thunks.h. + (cgraph_node): Remove thunk field; add thunk bitfield. + (cgraph_node::expand_thunk): Move to symtab-thunks.h + (symtab_thunks_cc_finalize): Declare. + (cgraph_node::has_gimple_body_p): Update. + (cgraph_node::former_thunk_p): Update. + * cgraphclones.c: Include symtab-thunks.h. + (duplicate_thunk_for_node): Update. + (cgraph_edge::redirect_callee_duplicating_thunks): Update. + (cgraph_node::expand_all_artificial_thunks): Update. + (cgraph_node::create_edge_including_clones): Update. + * cgraphunit.c: Include symtab-thunks.h. + (vtable_entry_type): Move to symtab-thunks.c. + (cgraph_node::analyze): Update. + (analyze_functions): Update. + (mark_functions_to_output): Update. + (thunk_adjust): Move to symtab-thunks.c + (cgraph_node::expand_thunk): Move to symtab-thunks.c + (cgraph_node::assemble_thunks_and_aliases): Update. + (output_in_order): Update. + (cgraphunit_c_finalize): Do not clear vtable_entry_type. + (cgraph_node::create_wrapper): Update. + * gengtype.c (open_base_files): Add symtab-thunks.h + * ipa-comdats.c (propagate_comdat_group): UPdate. + (ipa_comdats): Update. + * ipa-cp.c (determine_versionability): UPdate. + (gather_caller_stats): Update. + (count_callers): Update + (set_single_call_flag): Update + (initialize_node_lattices): Update + (call_passes_through_thunk_p): Update + (call_passes_through_thunk): Update + (propagate_constants_across_call): Update + (find_more_scalar_values_for_callers_subset): Update + (has_undead_caller_from_outside_scc_p): Update + * ipa-fnsummary.c (evaluate_properties_for_edge): Update. + (compute_fn_summary): Update. + (inline_analyze_function): Update. + * ipa-icf.c: Include symtab-thunks.h. + (sem_function::equals_wpa): Update. + (redirect_all_callers): Update. + (sem_function::init): Update. + (sem_function::parse): Update. + * ipa-inline-transform.c: Include symtab-thunks.h. + (inline_call): Update. + (save_inline_function_body): Update. + (preserve_function_body_p): Update. + * ipa-inline.c (inline_small_functions): Update. + * ipa-polymorphic-call.c: Include alloc-pool.h, symbol-summary.h, + symtab-thunks.h + (ipa_polymorphic_call_context::ipa_polymorphic_call_context): Update. + * ipa-pure-const.c: Include symtab-thunks.h. + (analyze_function): Update. + * ipa-sra.c (check_for_caller_issues): Update. + * ipa-utils.c (ipa_reverse_postorder): Update. + (ipa_merge_profiles): Update. + * ipa-visibility.c (non_local_p): Update. + (cgraph_node::local_p): Update. + (function_and_variable_visibility): Update. + * ipa.c (symbol_table::remove_unreachable_nodes): Update. + * lto-cgraph.c: Include alloc-pool.h, symbol-summary.h and + symtab-thunks.h + (lto_output_edge): Update. + (lto_output_node): Update. + (compute_ltrans_boundary): Update. + (output_symtab): Update. + (verify_node_partition): Update. + (input_overwrite_node): Update. + (input_node): Update. + * lto-streamer-in.c (fixup_call_stmt_edges): Update. + * symtab-thunks.cc: New file. + * symtab-thunks.h: New file. + * toplev.c (toplev::finalize): Call symtab_thunks_cc_finalize. + * trans-mem.c (ipa_tm_mayenterirr_function): Update. + (ipa_tm_execute): Update. + * tree-inline.c (expand_call_inline): Update. + * tree-nested.c (create_nesting_tree): Update. + (convert_all_function_calls): Update. + (gimplify_all_functions): Update. + * tree-profile.c (tree_profiling): Update. + * tree-ssa-structalias.c (associate_varinfo_to_alias): Update. + * tree.c (free_lang_data_in_decl): Update. + * value-prof.c (init_node_map): Update. + +2020-10-23 Marek Polacek + + PR c++/91741 + * doc/invoke.texi: Document -Wsizeof-array-div. + +2020-10-23 Martin Sebor + + PR middle-end/97552 + * attribs.c (init_attr_rdwr_indices): Handle static VLA parameters. + +2020-10-23 Douglas Rupp + + * config/vxworks.h (VXWORKS_NET_LIBS_RTP): Use -lrtnet if + rtnetStackLib.h is available,fallback to -lnet otherwise. + +2020-10-23 Douglas Rupp + + * gcc.c (if-exists-then-else): New built-in spec function. + * doc/invoke.texi: Document it. + +2020-10-23 Tulio Magno Quites Machado Filho + + * doc/extend.texi (PowerPC Built-in Functions): Replace + extraneous characters with whitespace. + +2020-10-23 Martin Liska + + * gcov.c (read_count_file): Never call gcov_sync with a negative + value. + +2020-10-23 Jakub Jelinek + + * Makefile.in (PLUGIN_HEADERS): Add gomp-constants.h and $(EXPR_H). + (s-header-vars): Accept not just spaces but also tabs between *_H name + and =. Handle common/config/ headers similarly to config. Don't + throw away everything from first ... to last / on the remaining + string, instead skip just ... to corresponding last / without + intervening spaces and tabs. + (install-plugin): Treat common/config headers like config headers. + * config/i386/t-i386 (TM_H): Add + $(srcdir)/common/config/i386/i386-cpuinfo.h. + +2020-10-23 Jakub Jelinek + + PR tree-optimization/97164 + * stor-layout.c (layout_type): Also reject arrays where element size + is constant, but not a multiple of element alignment. + +2020-10-23 Eric Botcazou + + * tree-ssa-loop-ivopts.c (analyze_and_mark_doloop_use): Bail out if + the loop is subject to a pragma Unroll with no specific count. + +2020-10-23 Dennis Zhang + + * config/arm/mve.md (mve_vsubq): New entry for vsub instruction + using expression 'minus'. + (mve_vsubq_f): Use minus instead of VSUBQ_F unspec. + * config/arm/neon.md (sub3, sub3_fp16): Removed. + (neon_vsub): Use gen_sub3 instead of gen_sub3_fp16. + * config/arm/vec-common.md (sub3): Use the new mode macros + ARM_HAVE__ARITH. Use iterator VDQ instead of VALL. + +2020-10-23 Martin Liska + + PR lto/97524 + * lto-wrapper.c (make_exists): New function. + (run_gcc): Use it to check that make is present and working + for parallel execution. + +2020-10-23 Richard Biener + + Revert: + 2020-10-22 Richard Biener + + PR middle-end/97521 + * expr.c (expand_expr_real_1): Be more careful when + expanding a VECTOR_BOOLEAN_TYPE_P VECTOR_CSTs. + +2020-10-23 Kewen Lin + + * tree-vect-loop.c (vect_transform_loop): Remove the redundant + LOOP_VINFO_FULLY_MASKED_P check. + +2020-10-23 Dennis Zhang + + * config/arm/mve.md (mve_vsubq): New entry for vsub instruction + using expression 'minus'. + (mve_vsubq_f): Use minus instead of VSUBQ_F unspec. + * config/arm/neon.md (sub3, sub3_fp16): Removed. + (neon_vsub): Use gen_sub3 instead of gen_sub3_fp16. + * config/arm/vec-common.md (sub3): Use the new mode macros + ARM_HAVE__ARITH. Use iterator VDQ instead of VALL. + +2020-10-22 Alan Modra + + * config/rs6000/rs6000.c (rs6000_emit_xxspltidp_v2df): Delete + debug printf. Remove trailing ".\n" from inform message. + Break long line. + +2020-10-22 Andrew MacLeod + + * gimple-range-gori.cc (is_gimple_logical_p): Use types_compatible_p + for logical compatibility. + (logical_stmt_cache::cacheable_p): Ditto. + +2020-10-22 Jan Hubicka + + * cgraph.c (cgraph_node::get_untransformed_body): Perform lazy + clone materialization. + * cgraph.h (cgraph_node::materialize_clone): Declare. + (symbol_table::materialize_all_clones): Remove. + * cgraphclones.c (cgraph_materialize_clone): Turn to ... + (cgraph_node::materialize_clone): .. this one; move here + dumping from symbol_table::materialize_all_clones. + (symbol_table::materialize_all_clones): Remove. + * cgraphunit.c (mark_functions_to_output): Clear stmt references. + (cgraph_node::expand): Initialize bitmaps early; + do not call execute_all_ipa_transforms if there are no transforms. + * ipa-inline-transform.c (save_inline_function_body): Fix formating. + (inline_transform): Materialize all clones before function is modified. + * ipa-param-manipulation.c (ipa_param_adjustments::modify_call): + Materialize clone if needed. + * ipa.c (class pass_materialize_all_clones): Remove. + (make_pass_materialize_all_clones): Remove. + * passes.c (execute_all_ipa_transforms): Materialize all clones. + * passes.def: Remove pass_materialize_all_clones. + * tree-pass.h (make_pass_materialize_all_clones): Remove. + * tree-ssa-structalias.c (ipa_pta_execute): Clear refs. + +2020-10-22 Will Schmidt + + * config/rs6000/altivec.h (vec_xl_zext, vec_xl_sext, vec_xst_trunc): + New defines. + * config/rs6000/rs6000-builtin.def (BU_P10V_OVERLOAD_X): New builtin + macro. + (BU_P10V_AV_X): New builtin macro. + (se_lxvrhbx, se_lxrbhx, se_lxvrwx, se_lxvrdx): Define internal names + for load and sign extend vector element. + (ze_lxvrbx, ze_lxvrhx, ze_lxvrwx, ze_lxvrdx): Define internal names + for load and zero extend vector element. + (tr_stxvrbx, tr_stxvrhx, tr_stxvrwx, tr_stxvrdx): Define internal names + for truncate and store vector element. + (se_lxvrx, ze_lxvrx, tr_stxvrx): Define internal names for overloaded + load/store rightmost element. + * config/rs6000/rs6000-call.c (altivec_builtin_types): Define the + internal monomorphs P10_BUILTIN_SE_LXVRBX, P10_BUILTIN_SE_LXVRHX, + P10_BUILTIN_SE_LXVRWX, P10_BUILTIN_SE_LXVRDX, + P10_BUILTIN_ZE_LXVRBX, P10_BUILTIN_ZE_LXVRHX, P10_BUILTIN_ZE_LXVRWX, + P10_BUILTIN_ZE_LXVRDX, + P10_BUILTIN_TR_STXVRBX, P10_BUILTIN_TR_STXVRHX, P10_BUILTIN_TR_STXVRWX, + P10_BUILTIN_TR_STXVRDX, + (altivec_expand_lxvr_builtin): New expansion for load element builtins. + (altivec_expand_stv_builtin): Update to for truncate and store builtins. + (altivec_expand_builtin): Add clases for load/store rightmost builtins. + (altivec_init_builtins): Add def_builtin entries for + __builtin_altivec_se_lxvrbx, __builtin_altivec_se_lxvrhx, + __builtin_altivec_se_lxvrwx, __builtin_altivec_se_lxvrdx, + __builtin_altivec_ze_lxvrbx, __builtin_altivec_ze_lxvrhx, + __builtin_altivec_ze_lxvrwx, __builtin_altivec_ze_lxvrdx, + __builtin_altivec_tr_stxvrbx, __builtin_altivec_tr_stxvrhx, + __builtin_altivec_tr_stxvrwx, __builtin_altivec_tr_stxvrdx, + __builtin_vec_se_lxvrx, __builtin_vec_ze_lxvrx, __builtin_vec_tr_stxvrx. + * config/rs6000/vsx.md (vsx_lxvrx, vsx_stxvrx, vsx_stxvrx): + New define_insn entries. + * doc/extend.texi: Add documentation for vsx_xl_sext, vsx_xl_zext, + and vec_xst_trunc. + +2020-10-22 Will Schmidt + + * config/rs6000/vsx.md (enum unspec): Add + UNSPEC_EXTENDDITI2 and UNSPEC_MTVSRD_DITI_W1 entries. + (mtvsrdd_diti_w1, extendditi2_vector): New define_insns. + (extendditi2): New define_expand. + +2020-10-22 Alexandre Oliva + + * config/i386/mingw-w64.h (TARGET_LIBC_HAS_FUNCTION): Enable + sincos optimization. + +2020-10-22 Alan Modra + + * config/rs6000/vsx.md (vec_cntmb_, vec_extract_), + (vec_expand_): Replace with . + +2020-10-22 Richard Biener + + * tree-vect-slp.c (vect_analyze_slp_instance): Refactor so + computing a vector type early is not needed, for store group + splitting compute a new vector type based on the desired + group size. + +2020-10-22 Richard Biener + + PR middle-end/97521 + * expr.c (expand_expr_real_1): Be more careful when + expanding a VECTOR_BOOLEAN_TYPE_P VECTOR_CSTs. + +2020-10-22 David Malcolm + + * ipa-modref-tree.c (selftest::test_insert_search_collapse): Fix + leak. + (selftest::test_merge): Fix leaks. + +2020-10-22 Andreas Krebbel + + PR target/97502 + * config/s390/vector.md ("vec_cmp") + ("vec_cmpu"): New expanders. + +2020-10-22 Andreas Krebbel + + PR rtl-optimization/97439 + * dfp.c (decimal_real_maxval): Set the sign flag in the + generated number. + +2020-10-22 Martin Liska + + PR c/94722 + * cfgexpand.c (stack_protect_decl_phase): + Guard with lookup_attribute("no_stack_protector") at + various places. + (expand_used_vars): Likewise here. + * doc/extend.texi: Document no_stack_protector attribute. + +2020-10-22 Martin Liska + + * cfgexpand.c: Move the enum to ... + * coretypes.h (enum stack_protector): ... here. + * function.c (assign_parm_adjust_stack_rtl): Use the stack_protector + enum. + +2020-10-22 Kito Cheng + + * config/riscv/multilib-generator: Add TODO, import itertools + and functools.reduce. + Handle expantion operator. + (LONG_EXT_PREFIXES): New. + (arch_canonicalize): Update comment and improve python3 + debuggability/compatibility. + (add_underline_prefix): New. + (_expand_combination): Ditto. + (unique): Ditto. + (expand_combination): Ditto. + +2020-10-22 Jakub Jelinek + + * tree-ssa-phiopt.c (cond_removal_in_popcount_clz_ctz_pattern): + For CLZ and CTZ tests, use type temporary instead of mode. + +2020-10-22 Jakub Jelinek + + * config.gcc (x86_archs): Add samuel-2, nehemiah, c7 and esther. + (x86_64_archs): Add eden-x2, nano, nano-1000, nano-2000, nano-3000, + nano-x2, eden-x4, nano-x4, x86-64-v2, x86-64-v3 and x86-64-v4. + (i[34567]86-*-* | x86_64-*-*): Only allow x86-64-v* as argument + to --with-arch_64=. + +2020-10-22 Jan Hubicka + + * ipa-pure-const.c (funct_state_summary_t::insert): Free stale + summaries. + +2020-10-22 Jan Hubicka + + * cgraph.c: Include tree-nested.h + (cgraph_node::create): Call maybe_record_nested_function. + (cgraph_node::remove): Do not remove function from nested function + infos. + (cgraph_node::dump): Update. + (cgraph_node::unnest): Move to tree-nested.c + (cgraph_node::verify_node): Update. + (cgraph_c_finalize): Call nested_function_info::release. + * cgraph.h (struct symtab_node): Remove nested function info. + * cgraphclones.c (cgraph_node::create_clone): Do not clone nested + function info. + * cgraphunit.c (cgraph_node::analyze): Update. + (cgraph_node::expand): Do not worry about nested functions; they are + lowered. + (symbol_table::finalize_compilation_unit): Call + nested_function_info::release. + * gimplify.c: Include tree-nested.h + (unshare_body): Update. + (unvisit_body): Update. + * omp-offload.c (omp_discover_implicit_declare_target): Update. + * tree-nested.c: Include alloc-pool.h, tree-nested.h, symbol-summary.h + (nested_function_sum): New static variable. + (nested_function_info::get): New member function. + (nested_function_info::get_create): New member function. + (unnest_function): New function. + (nested_function_info::~nested_function_info): New member function. + (nested_function_info::release): New function. + (maybe_record_nested_function): New function. + (lookup_element_for_decl): Update. + (check_for_nested_with_variably_modified): Update. + (create_nesting_tree): Update. + (unnest_nesting_tree_1): Update. + (gimplify_all_functions): Update. + (lower_nested_functions): Update. + * tree-nested.h (class nested_function_info): New class. + (maybe_record_nested_function): Declare. + (unnest_function): Declare. + (first_nested_function): New inline function. + (next_nested_function): New inline function. + (nested_function_origin): New inline function. + +2020-10-22 liuhongt + + PR rtl-optimization/97249 + * simplify-rtx.c (simplify_binary_operation_1): Simplify + vec_select of a subreg of X to a vec_select of X. + +2020-10-22 liuhongt + + PR target/87767 + * config/i386/constraints.md ("Br"): New special memory + constraint. + * config/i386/i386-expand.c (ix86_binary_operator_ok): Both + source operand cannot be in memory or bcst_memory_operand. + * config/i386/i386.c (ix86_print_operand): Print bcst_mem_operand. + * config/i386/i386.h (VALID_BCST_MODE_P): New. + * config/i386/predicates.md (bcst_mem_operand): New predicate + for AVX512 embedding broadcast memory operand. + (bcst_vector_operand): New predicate, vector_operand or + bcst_mem_operand. + * config/i386/sse.md + (*3): Extend + predicate and constraints to handle bcst_mem_operand. + (*mul3): Ditto. + (_div3): Ditto. + (fma_fmadd_): + Ditto. + (fma_fmsub_): + Ditto. + (fma_fnmadd_): + Ditto. + (fma_fnmsub_): + Ditto. + (*3): Ditto. + (avx512dq_mul3): Ditto. + (*_mul3): Ditto. + (*andnot3): Ditto. + (3): Ditto. + (*sub3_bcst): Removed. + (*add3_bcst): Ditto. + (*mul3_bcst): Ditto. + (*_div3_bcst): Ditto. + (*fma_fmadd__bcst_1): + Ditto. + (*fma_fmadd__bcst_2): + Ditto. + (*fma_fmadd__bcst_3): + Ditto. + (*fma_fmsub__bcst_1): + Ditto. + (*fma_fmsub__bcst_2): + Ditto. + (*fma_fmsub__bcst_3): + Ditto. + (*fma_fnmadd__bcst_1): + Ditto. + (*fma_fnmadd__bcst_2): + Ditto. + (*fma_fnmadd__bcst_3): + Ditto. + (*fma_fnmsub__bcst_1): + Ditto. + (*fma_fnmsub__bcst_2): + Ditto. + (*fma_fnmsub__bcst_3): + Ditto. + (*sub3_bcst): Ditto. + (*add3_bcst): Ditto. + (*avx512dq_mul3_bcst): Ditto. + (*avx512f_mul3_bcst): Ditto. + (*andnot3_bcst): Ditto. + (*3_bcst): Ditto. + * config/i386/subst.md (bcst_round_constraint): New subst + attribute. + (bcst_round_nimm_predicate): Ditto. + (bcst_mask_prefix3): Ditto. + (bcst_mask_prefix4): Ditto. + +2020-10-22 liuhongt + + PR target/87767 + * ira-costs.c (record_operand_costs): Extract memory operand + from recog_data.operand[i] for record_address_regs. + (record_reg_classes): Extract memory operand from OP for + conditional judgement MEM_P. + * ira.c (ira_setup_alts): Ditto. + * lra-constraints.c (extract_mem_from_operand): New function. + (satisfies_memory_constraint_p): Extract memory operand from + OP for decompose_mem_address, return false when there's no + memory operand inside OP. + (process_alt_operands): Remove MEM_P (op) since it would be + judged in satisfies_memory_constraint_p. + * recog.c (asm_operand_ok): Extract memory operand from OP for + judgement of memory_operand (OP, VOIDmode). + (constrain_operands): Don't unwrapper unary operator when + there's memory operand inside. + * rtl.h (extract_mem_from_operand): New decl. + +2020-10-22 Dennis Zhang + + * config/arm/mve.md (mve_vmaxq_): Replace with ... + (mve_vmaxq_s, mve_vmaxq_u): ... these new insns to + use smax/umax instead of VMAXQ. + (mve_vminq_): Replace with ... + (mve_vminq_s, mve_vminq_u): ... these new insns to + use smin/umin instead of VMINQ. + (mve_vmaxnmq_f): Use smax instead of VMAXNMQ_F. + (mve_vminnmq_f): Use smin instead of VMINNMQ_F. + * config/arm/vec-common.md (smin3): Use the new mode macros + ARM_HAVE__ARITH. + (umin3, smax3, umax3): Likewise. + +2020-10-22 Andrew MacLeod + + PR tree-optimization/97520 + * gimple-range.cc (range_of_non_trivial_assignment): Handle x = &a + by returning a non-zero range. + +2020-10-22 Dennis Zhang + + * config/arm/mve.md (mve_vmulq): New entry for vmul instruction + using expression 'mult'. + (mve_vmulq_f): Use mult instead of VMULQ_F. + * config/arm/neon.md (mul3): Removed. + * config/arm/vec-common.md (mul3): Use the new mode macros + ARM_HAVE__ARITH. Use mode iterator VDQWH instead of VALLW. + +2020-10-22 Andrew MacLeod + + PR tree-optimization/97515 + * value-query.cc (range_query::value_of_expr): If the result is + UNDEFINED, check to see if the global value is a constant. + (range_query::value_on_edge): Ditto. + +2020-10-21 Jan Hubicka + + PR ipa/97445 + * ipa-inline.c (inline_insns_single): Add hint2 parameter. + (inline_insns_auto): Add hint2 parameter. + (can_inline_edge_by_limits_p): Update. + (want_inline_small_function_p): Update. + (wrapper_heuristics_may_apply): Update. + +2020-10-21 Richard Biener + Andrew MacLeod + Martin Liska + + PR target/97360 + * config/rs6000/rs6000-call.c (rs6000_init_builtins): Remove call to + build_distinct_type_copy(). + +2020-10-21 Jan Hubicka + + PR ipa/97445 + * ipa-fnsummary.c (ipa_dump_hints): Add INLINE_HINT_builtin_constant_p. + (ipa_fn_summary::~ipa_fn_summary): Free builtin_constant_p_parms. + (ipa_fn_summary_t::duplicate): Duplicate builtin_constant_p_parms. + (ipa_dump_fn_summary): Dump builtin_constant_p_parms. + (add_builtin_constant_p_parm): New function + (set_cond_stmt_execution_predicate): Update builtin_constant_p_parms. + (ipa_call_context::estimate_size_and_time): Set + INLINE_HINT_builtin_constant_p.. + (ipa_merge_fn_summary_after_inlining): Merge builtin_constant_p_parms. + (inline_read_section): Read builtin_constant_p_parms. + (ipa_fn_summary_write): Write builtin_constant_p_parms. + * ipa-fnsummary.h (enum ipa_hints_vals): Add + INLINE_HINT_builtin_constant_p. + * ipa-inline.c (want_inline_small_function_p): Use + INLINE_HINT_builtin_constant_p. + (edge_badness): Use INLINE_HINT_builtin_constant_p. + +2020-10-21 Douglas Rupp + + * config/vx-common.h (LINK_SPEC, LIB_SPEC): Remove #undef. + +2020-10-21 Douglas Rupp + Olivier Hainque + + * config.gcc (powerpc*-wrs-vxworks7r*): New case. + * config/rs6000/vxworks.h: Rework to handle VxWorks7. + Refactor as common bits + vx6 vs vx7 ones. For the + latter, rely essentially on the Linux configuration + and adjust CPU to _VX_CPU in CPP_SPEC. Add a case + for e6500. Use SUB3TARGET_OVERRIDE_OPTIONS for specifics + to preserve the Linux SUBSUBTARGET_OVERRIDE_OPTIONS + for vx7. + +2020-10-21 Richard Biener + + PR tree-optimization/97500 + * tree-vect-slp.c (vect_analyze_slp_backedges): Do not + fill backedges for inductions. + +2020-10-21 liuhongt + + PR target/97506 + * config/i386/i386-expand.c (ix86_expand_sse_movcc): Move + op_true to dest directly when op_true equals op_false. + +2020-10-21 Jakub Jelinek + + PR tree-optimization/97503 + * tree-ssa-phiopt.c: Include internal-fn.h. + (cond_removal_in_popcount_pattern): Rename to ... + (cond_removal_in_popcount_clz_ctz_pattern): ... this. Handle not just + popcount, but also clz and ctz if it has C?Z_DEFINED_VALUE_AT_ZERO 2. + +2020-10-21 Richard Biener + + * cfg.c (htab_bb_copy_original_entry): Remove. + (bb_copy_hasher): Likewise. + (bb_original, bb_copy, loop_copy): Use + hash_map, int>. + (original_copy_bb_pool): Remove. + (initialize_original_copy_tables): Adjust. + (reset_original_copy_tables): Likewise. + (free_original_copy_tables): Likewise. + (original_copy_tables_initialized_p): Likewise. + (copy_original_table_clear): Simplify. + (copy_original_table_set): Likewise. + (get_bb_original): Likewise. + (get_bb_copy): Likewise. + (get_loop_copy): Likewise. + +2020-10-21 Richard Biener + + * cfghooks.c (copy_bbs): Split out loop computing new_edges. + +2020-10-21 Aldy Hernandez + + * gimple-range.cc (gimple_ranger::range_of_ssa_name_with_loop_info): + Remove TREE_OVERFLOW special case. + * vr-values.c (bounds_of_var_in_loop): Adjust overflow for + invariants. + +2020-10-21 Aldy Hernandez + + * vr-values.h: Remove simplify_cond_using_ranges_2. + (range_fits_type_p): New. + * vr-values.c (range_fits_type_p): Remove static qualifier. + (vrp_simplify_cond_using_ranges): Move... + * tree-vrp.c (vrp_simplify_cond_using_ranges): ...to here. + +2020-10-22 Dennis Zhang + + * config/arm/mve.md (mve_vmaxq_): Replace with ... + (mve_vmaxq_s, mve_vmaxq_u): ... these new insns to + use smax/umax instead of VMAXQ. + (mve_vminq_): Replace with ... + (mve_vminq_s, mve_vminq_u): ... these new insns to + use smin/umin instead of VMINQ. + (mve_vmaxnmq_f): Use smax instead of VMAXNMQ_F. + (mve_vminnmq_f): Use smin instead of VMINNMQ_F. + * config/arm/vec-common.md (smin3): Use the new mode macros + ARM_HAVE__ARITH. + (umin3, smax3, umax3): Likewise. + +2020-10-22 Dennis Zhang + + * config/arm/mve.md (mve_vmulq): New entry for vmul instruction + using expression 'mult'. + (mve_vmulq_f): Use mult instead of VMULQ_F. + * config/arm/neon.md (mul3): Removed. + * config/arm/vec-common.md (mul3): Use the new mode macros + ARM_HAVE__ARITH. Use mode iterator VDQWH instead of VALLW. + +2020-10-20 Andrew MacLeod + + PR tree-optimization/97505 + * vr-values.c (vr_values::extract_range_basic): Trap if + vr_values version disagrees with range_of_builtin_call. + +2020-10-20 David Edelsohn + + * config/rs6000/rs6000.c (rs6000_option_override_internal): + Don't implcitly enable Altivec ABI if set on the command line. + +2020-10-20 Aldy Hernandez + + * calls.c (get_size_range): Adjust to work with ranger. + * calls.h (get_size_range): Add ranger argument to prototype. + * gimple-ssa-warn-restrict.c (class wrestrict_dom_walker): Remove. + (check_call): Pull out of wrestrict_dom_walker into a + static function. + (wrestrict_dom_walker::before_dom_children): Rename to... + (wrestrict_walk): ...this. + (pass_wrestrict::execute): Instantiate ranger. + (class builtin_memref): Add stmt and query fields. + (builtin_access::builtin_access): Add range_query field. + (builtin_memref::builtin_memref): Same. + (builtin_memref::extend_offset_range): Same. + (builtin_access::builtin_access): Make work with ranger. + (wrestrict_dom_walker::check_call): Pull out into... + (check_call): ...here. + (check_bounds_or_overlap): Add range_query argument. + * gimple-ssa-warn-restrict.h (check_bounds_or_overlap): + Add range_query and gimple stmt arguments. + +2020-10-20 Aldy Hernandez + + * gimple-ssa-warn-alloca.c (enum alloca_type): Remove + ALLOCA_BOUND_UNKNOWN and ALLOCA_CAST_FROM_SIGNED. + (warn_limit_specified_p): New. + (alloca_call_type_by_arg): Remove. + (cast_from_signed_p): Remove. + (is_max): Remove. + (alloca_call_type): Remove heuristics and replace with call into + ranger. + (pass_walloca::execute): Instantiate ranger. + +2020-10-20 Tobias Burnus + + * lto-wrapper.c (run_gcc): Use proper variable for + %u.ltrans_args dump suffix. + +2020-10-20 Zhiheng Xie + Nannan Zheng + + * config/aarch64/aarch64-simd-builtins.def: Add proper FLAG + for get/set reg intrinsics. + +2020-10-20 Aldy Hernandez + + * gimple-range.cc (gimple_ranger::range_of_builtin_ubsan_call): + Make externally visble... + (range_of_builtin_ubsan_call): ...here. Add range_query argument. + (gimple_ranger::range_of_builtin_call): Make externally visible... + (range_of_builtin_call): ...here. Add range_query argument. + * gimple-range.h (range_of_builtin_call): Move out from class and + make externally visible. + * vr-values.c (vr_values::extract_range_basic): Abstract out + builtin handling to... + (vr_values::range_of_expr): Handle non SSAs. + (vr_values::extract_range_builtin): ...here. + * vr-values.h (class vr_values): Add extract_range_builtin. + (range_of_expr): Rename NAME to EXPR. + +2020-10-20 Aldy Hernandez + + PR tree-optimization/97501 + * gimple-range.cc (gimple_ranger::range_of_ssa_name_with_loop_info): + Saturate overflows returned from SCEV. + +2020-10-20 Aldy Hernandez + + * value-range.cc (irange::operator=): Split up call to + copy_legacy_range into... + (irange::copy_to_legacy): ...this. + (irange::copy_legacy_to_multi_range): ...and this. + (irange::copy_legacy_range): Remove. + * value-range.h: Remove copoy_legacy_range. + Add copy_legacy_to_multi_range and copy_to_legacy. + +2020-10-20 Tobias Burnus + + * doc/invoke.texi (NVPTX options): Use @item not @itemx. + +2020-10-20 Richard Biener + + * tree-cfg.c (reinstall_phi_args): Remove. + (gimple_split_edge): Remove PHIs around the edge redirection + to avoid touching them at all. + +2020-10-20 Richard Biener + + * tree-vect-loop.c (vectorizable_reduction): Use the correct + loops latch edge for the PHI arg lookup. + +2020-10-20 Jozef Lawrynowicz + + * config/msp430/msp430.md (andneghi3): Allow general operand for + op1 and update output assembler template. + +2020-10-20 Tobias Burnus + + * collect-utils.c (collect_execute, fork_execute): Add at-file suffix + argument. + * collect-utils.h (collect_execute, fork_execute): Update prototype. + * collect2.c (maybe_run_lto_and_relink, do_link, main, do_dsymutil): + Update calls by passing NULL. + * config/i386/intelmic-mkoffload.c (compile_for_target, + generate_host_descr_file, prepare_target_image, main): Likewise. + * config/gcn/mkoffload.c (compile_native, main): Pass at-file suffix. + * config/nvptx/mkoffload.c (compile_native, main): Likewise. + * lto-wrapper.c (compile_offload_image): Likewise. + +2020-10-20 Aldy Hernandez + + * range-op.cc (operator_rshift::op1_range): Special case + shifting by zero. + +2020-10-20 Richard Biener + + PR tree-optimization/97496 + * tree-vect-slp.c (vect_get_and_check_slp_defs): Guard extern + promotion with not in pattern. + +2020-10-20 Stefan Schulze Frielinghaus + + * config/s390/s390.c (s390_expand_vec_strlen): Add alignment + for memory access inside loop. + +2020-10-19 Andrew MacLeod + + PR tree-optimization/97360 + * gimple-range.h (range_compatible_p): New. + * gimple-range-gori.cc (is_gimple_logical_p): Use range_compatible_p. + (range_is_either_true_or_false): Ditto. + (gori_compute::outgoing_edge_range_p): Cast result to the correct + type if necessary. + (logical_stmt_cache::cacheable_p): Use range_compatible_p. + * gimple-range.cc (gimple_ranger::calc_stmt): Check range_compatible_p + before casting the range. + (gimple_ranger::range_on_exit): Use range_compatible_p. + (gimple_ranger::range_on_edge): Ditto. + +2020-10-19 Martin Jambor + + PR tree-optimization/97456 + * tree-complex.c (set_component_ssa_name): Do not replace ignored decl + default definitions with new component vars. Reorder if conditions. + +2020-10-19 David Edelsohn + + * config/rs6000/vsx.md (vextract_fp_from_shorth): Fix vals_be. + (vextract_fp_from_shortl) Same. + +2020-10-19 Aldy Hernandez + + PR tree-optimization/97488 + * range-op.cc (operator_lshift::op1_range): Handle large right shifts. + +2020-10-19 Martin Liska + + * ipa-modref.c (compute_parm_map): Clear vector. + +2020-10-19 Richard Biener + + PR tree-optimization/97486 + * tree-vect-slp.c (vect_slp_function): Split after stmts + ending a BB. + +2020-10-19 Jonathan Wakely + + * doc/invoke.texi (OPptimize Options): Add missing closing + parenthesis. + +2020-10-19 Aldy Hernandez + + PR tree-optimization/97467 + * range-op.cc (operator_lshift::op1_range): Handle shifts by 0. + +2020-10-19 Richard Biener + + PR tree-optimization/97466 + * tree-vect-slp.c (vect_get_and_check_slp_defs): Remove + spurious assert, re-indent. + +2020-10-19 Li Jia He + + PR tree-optimization/66552 + * match.pd (x << (n % C) -> x << (n & C-1)): New simplification. + +2020-10-19 Richard Biener + + * tree-cfg.c (verify_gimple_comparison): Drop special-case + for pointer comparison. + +2020-10-16 Andrew MacLeod + + * vr-values.c (dump_all_value_ranges): Only dump names which are + still active. + +2020-10-16 Andrew MacLeod + + * range-op.cc (pointer_plus_operator::wi_fold): Make pointer_plus + [0, 0] + const return a [const, const] range. + +2020-10-16 Andrew MacLeod + + * gimple-ssa-evrp.c (hybrid_folder::value_on_edge): Call + evrp_folder::value_of_expr directly. + (hybrid_folder::value_of_stmt): Ditto. + +2020-10-16 Andrew MacLeod + + PR tree-optimization/97462 + * range-op.cc (operator_lshift::op1_range): Don't trap on negative + shifts. + +2020-10-16 Olivier Hainque + + * config/vxworks.h (VX_CRTBEGIN_SPEC): Likewise. + +2020-10-16 Olivier Hainque + + * config/vxworks/_vxworks-versions.h: Only include + version.h if _WRS_VXWORKS_MAJOR is not defined. + Provide a default _WRS_VXWORKS_MINOR (0). + +2020-10-16 Srinath Parvathaneni + + PR target/97327 + * config/arm/arm.c (fp_bitlist): Add isa_bit_mve_float to FP bits array. + +2020-10-16 Richard Biener + + * tree-vect-slp.c (vect_get_and_check_slp_defs): For BB + vectorization swap operands only if it helps, demote mismatches to + external. + +2020-10-16 Srinath Parvathaneni + + PR target/97291 + * config/arm/arm-builtins.c (arm_strsbwbs_qualifiers): Modify array. + (arm_strsbwbu_qualifiers): Likewise. + (arm_strsbwbs_p_qualifiers): Likewise. + (arm_strsbwbu_p_qualifiers): Likewise. + * config/arm/arm_mve.h (__arm_vstrdq_scatter_base_wb_s64): Modify + function definition. + (__arm_vstrdq_scatter_base_wb_u64): Likewise. + (__arm_vstrdq_scatter_base_wb_p_s64): Likewise. + (__arm_vstrdq_scatter_base_wb_p_u64): Likewise. + (__arm_vstrwq_scatter_base_wb_p_s32): Likewise. + (__arm_vstrwq_scatter_base_wb_p_u32): Likewise. + (__arm_vstrwq_scatter_base_wb_s32): Likewise. + (__arm_vstrwq_scatter_base_wb_u32): Likewise. + (__arm_vstrwq_scatter_base_wb_f32): Likewise. + (__arm_vstrwq_scatter_base_wb_p_f32): Likewise. + * config/arm/arm_mve_builtins.def (vstrwq_scatter_base_wb_add_u): Remove + expansion for the builtin. + (vstrwq_scatter_base_wb_add_s): Likewise. + (vstrwq_scatter_base_wb_add_f): Likewise. + (vstrdq_scatter_base_wb_add_u): Likewise. + (vstrdq_scatter_base_wb_add_s): Likewise. + (vstrwq_scatter_base_wb_p_add_u): Likewise. + (vstrwq_scatter_base_wb_p_add_s): Likewise. + (vstrwq_scatter_base_wb_p_add_f): Likewise. + (vstrdq_scatter_base_wb_p_add_u): Likewise. + (vstrdq_scatter_base_wb_p_add_s): Likewise. + * config/arm/mve.md (mve_vstrwq_scatter_base_wb_v4si): Remove + expand. + (mve_vstrwq_scatter_base_wb_add_v4si): Likewise. + (mve_vstrwq_scatter_base_wb_v4si_insn): Rename pattern to ... + (mve_vstrwq_scatter_base_wb_v4si): This. + (mve_vstrwq_scatter_base_wb_p_v4si): Remove expand. + (mve_vstrwq_scatter_base_wb_p_add_v4si): Likewise. + (mve_vstrwq_scatter_base_wb_p_v4si_insn): Rename pattern to ... + (mve_vstrwq_scatter_base_wb_p_v4si): This. + (mve_vstrwq_scatter_base_wb_fv4sf): Remove expand. + (mve_vstrwq_scatter_base_wb_add_fv4sf): Likewise. + (mve_vstrwq_scatter_base_wb_fv4sf_insn): Rename pattern to ... + (mve_vstrwq_scatter_base_wb_fv4sf): This. + (mve_vstrwq_scatter_base_wb_p_fv4sf): Remove expand. + (mve_vstrwq_scatter_base_wb_p_add_fv4sf): Likewise. + (mve_vstrwq_scatter_base_wb_p_fv4sf_insn): Rename pattern to ... + (mve_vstrwq_scatter_base_wb_p_fv4sf): This. + (mve_vstrdq_scatter_base_wb_v2di): Remove expand. + (mve_vstrdq_scatter_base_wb_add_v2di): Likewise. + (mve_vstrdq_scatter_base_wb_v2di_insn): Rename pattern to ... + (mve_vstrdq_scatter_base_wb_v2di): This. + (mve_vstrdq_scatter_base_wb_p_v2di): Remove expand. + (mve_vstrdq_scatter_base_wb_p_add_v2di): Likewise. + (mve_vstrdq_scatter_base_wb_p_v2di_insn): Rename pattern to ... + (mve_vstrdq_scatter_base_wb_p_v2di): This. + +2020-10-16 Kito Cheng + + * config/riscv/multilib-generator (IMPLIED_EXT): New. + (arch_canonicalize): Update comment and handle implied extensions. + +2020-10-16 Richard Biener + + * tree-vect-slp.c (vect_get_and_check_slp_defs): First analyze + all operands and fill in the def_stmts and ops entries. + (vect_def_types_match): New helper. + +2020-10-16 Martin Liska + + PR ipa/97404 + * ipa-prop.c (struct ipa_vr_ggc_hash_traits): + Compare types of VRP as we can merge ranges of different types. + +2020-10-16 Richard Biener + + PR tree-optimization/97428 + * tree-vect-slp.c (vect_analyze_slp_instance): Split store + groups also for loop vectorization. + +2020-10-15 Tom de Vries + + PR target/97436 + * config/nvptx/nvptx.opt (m32): Comment out. + * doc/invoke.texi (NVPTX options): Remove -m32. + +2020-10-15 Jan Hubicka + Richard Biener + + * attr-fnspec.h: Fix toplevel comment. + +2020-10-15 Richard Biener + + * tree-pretty-print.c (dump_mem_ref): Print constant offset + also for TARGET_MEM_REF. + +2020-10-15 Jan Hubicka + + * symtab.c (symtab_node::binds_to_current_def_p): Also accept symbols + defined in other partition. + +2020-10-15 Richard Biener + + * tree-vect-loop.c (vectorizable_live_operation): Adjust + dominance query. + +2020-10-15 Richard Biener + + PR tree-optimization/97482 + * tree-data-ref.c (split_constant_offset_1): Handle + trivial conversions better. + * fold-const.c (convert_to_ptrofftype_loc): Elide conversion + if the offset is already ptrofftype_p. + +2020-10-15 Martin Liska + + PR ipa/97295 + * profile-count.c (profile_count::to_frequency): Move part of + gcc_assert to STATIC_ASSERT. + * regs.h (REG_FREQ_FROM_BB): Do not use count.to_frequency for + a function that does not have count_max initialized. + +2020-10-15 Jakub Jelinek + + * params.opt (-param-ipa-jump-function-lookups=): Add full stop at + the end of the parameter description. + +2020-10-15 Kito Cheng + + * common/config/riscv/riscv-common.c (riscv_cpu_tables): New. + (riscv_arch_str): Return empty string if current_subset_list + is NULL. + (riscv_find_cpu): New. + (riscv_handle_option): Verify option value of -mcpu. + (riscv_expand_arch): Using std::string. + (riscv_default_mtune): New. + (riscv_expand_arch_from_cpu): Ditto. + * config/riscv/riscv-cores.def: New. + * config/riscv/riscv-protos.h (riscv_find_cpu): New. + (riscv_cpu_info): New. + * config/riscv/riscv.c (riscv_tune_info): Rename ... + (riscv_tune_param): ... to this. + (riscv_cpu_info): Rename ... + (riscv_tune_info): ... to this. + (tune_info): Rename ... + (tune_param): ... to this. + (rocket_tune_info): Update data type name. + (sifive_7_tune_info): Ditto. + (optimize_size_tune_info): Ditto. + (riscv_cpu_info_table): Rename ... + (riscv_tune_info_table): ... to this. + (riscv_parse_cpu): Rename ... + (riscv_parse_tune): ... to this, and translate valid -mcpu option to + -mtune option. + (riscv_rtx_costs): Rename tune_info to tune_param. + (riscv_class_max_nregs): Ditto. + (riscv_memory_move_cost): Ditto. + (riscv_init_machine_status): Use value of -mcpu if -mtune is not + given, and rename tune_info to tune_param. + * config/riscv/riscv.h (riscv_expand_arch_from_cpu): New. + (riscv_default_mtune): Ditto. + (EXTRA_SPEC_FUNCTIONS): Add riscv_expand_arch_from_cpu and + riscv_default_mtune. + (OPTION_DEFAULT_SPECS): Handle default value of -march/-mabi. + (DRIVER_SELF_SPECS): Expand -march from -mcpu if -march is not + given. + * config/riscv/riscv.opt (-mcpu): New option. + * config/riscv/t-riscv ($(common_out_file)): Add + riscv-cores.def to dependency. + * doc/invoke.texi (RISC-V Option): Add -mcpu, and update the + description of default value for -mtune and -march. + +2020-10-15 Hongyu Wang + + * common/config/i386/cpuinfo.h (get_available_features): + Detect HRESET. + * common/config/i386/i386-common.c (OPTION_MASK_ISA2_HRESET_SET, + OPTION_MASK_ISA2_HRESET_UNSET): New macros. + (ix86_handle_option): Handle -mhreset. + * common/config/i386/i386-cpuinfo.h (enum processor_features): + Add FEATURE_HRESET. + * common/config/i386/i386-isas.h: Add ISA_NAMES_TABLE_ENTRY + for hreset. + * config.gcc: Add hresetintrin.h + * config/i386/hresetintrin.h: New header file. + * config/i386/x86gprintrin.h: Include hresetintrin.h. + * config/i386/cpuid.h (bit_HRESET): New. + * config/i386/i386-builtin.def: Add new builtin. + * config/i386/i386-expand.c (ix86_expand_builtin): + Handle new builtin. + * config/i386/i386-c.c (ix86_target_macros_internal): Define + __HRESET__. + * config/i386/i386-options.c (isa2_opts): Add -mhreset. + (ix86_valid_target_attribute_inner_p): Handle hreset. + * config/i386/i386.h (TARGET_HRESET, TARGET_HRESET_P, + PTA_HRESET): New. + (PTA_ALDERLAKE): Add PTA_HRESET. + * config/i386/i386.opt: Add option -mhreset. + * config/i386/i386.md (UNSPECV_HRESET): New unspec. + (hreset): New define_insn. + * doc/invoke.texi: Document -mhreset. + * doc/extend.texi: Document hreset. + +2020-10-15 Hongtao Liu + + * common/config/i386/cpuinfo.h (get_available_features): + Detect UINTR. + * common/config/i386/i386-common.c (OPTION_MASK_ISA2_UINTR_SET + OPTION_MASK_ISA2_UINTR_UNSET): New. + (ix86_handle_option): Handle -muintr. + * common/config/i386/i386-cpuinfo.h (enum processor_features): + Add FEATURE_UINTR. + * common/config/i386/i386-isas.h: Add ISA_NAMES_TABLE_ENTRY + for uintr. + * config.gcc: Add uintrintrin.h to extra_headers. + * config/i386/uintrintrin.h: New. + * config/i386/cpuid.h (bit_UINTR): New. + * config/i386/i386-builtin-types.def: Add new types. + * config/i386/i386-builtin.def: Add new builtins. + * config/i386/i386-builtins.c (ix86_init_mmx_sse_builtins): Add + __builtin_ia32_testui. + * config/i386/i386-builtins.h (ix86_builtins): Add + IX86_BUILTIN_TESTUI. + * config/i386/i386-c.c (ix86_target_macros_internal): Define + __UINTR__. + * config/i386/i386-expand.c (ix86_expand_special_args_builtin): + Handle UINT8_FTYPE_VOID. + (ix86_expand_builtin): Handle IX86_BUILTIN_TESTUI. + * config/i386/i386-options.c (isa2_opts): Add -muintr. + (ix86_valid_target_attribute_inner_p): Handle UINTR. + (ix86_option_override_internal): Add TARGET_64BIT check for UINTR. + * config/i386/i386.h (TARGET_UINTR, TARGET_UINTR_P, PTA_UINTR): New. + (PTA_SAPPHIRRAPIDS): Add PTA_UINTR. + * config/i386/i386.opt: Add -muintr. + * config/i386/i386.md + (define_int_iterator UINTR_UNSPECV): New. + (define_int_attr uintr_unspecv): New. + (uintr_, uintr_senduipi, testui): + New define_insn patterns. + * config/i386/x86gprintrin.h: Include uintrintrin.h + * doc/invoke.texi: Document -muintr. + * doc/extend.texi: Document uintr. + +2020-10-14 Martin Sebor + + PR middle-end/97391 + * builtins.c (gimple_parm_array_size): Peel off one less layer + of array types. + +2020-10-14 Martin Sebor + + PR c/97413 + * attribs.c (init_attr_rdwr_indices): Unwrap extra list layer. + +2020-10-14 Sunil K Pandey + + PR target/95483 + * config/i386/avx2intrin.h (_mm_broadcastsi128_si256): New intrinsics. + (_mm_broadcastsd_pd): Ditto. + * config/i386/avx512bwintrin.h (_mm512_loadu_epi16): New intrinsics. + (_mm512_storeu_epi16): Ditto. + (_mm512_loadu_epi8): Ditto. + (_mm512_storeu_epi8): Ditto. + * config/i386/avx512dqintrin.h (_mm_reduce_round_sd): New intrinsics. + (_mm_mask_reduce_round_sd): Ditto. + (_mm_maskz_reduce_round_sd): Ditto. + (_mm_reduce_round_ss): Ditto. + (_mm_mask_reduce_round_ss): Ditto. + (_mm_maskz_reduce_round_ss): Ditto. + (_mm512_reduce_round_pd): Ditto. + (_mm512_mask_reduce_round_pd): Ditto. + (_mm512_maskz_reduce_round_pd): Ditto. + (_mm512_reduce_round_ps): Ditto. + (_mm512_mask_reduce_round_ps): Ditto. + (_mm512_maskz_reduce_round_ps): Ditto. + * config/i386/avx512erintrin.h + (_mm_mask_rcp28_round_sd): New intrinsics. + (_mm_maskz_rcp28_round_sd): Ditto. + (_mm_mask_rcp28_round_ss): Ditto. + (_mm_maskz_rcp28_round_ss): Ditto. + (_mm_mask_rsqrt28_round_sd): Ditto. + (_mm_maskz_rsqrt28_round_sd): Ditto. + (_mm_mask_rsqrt28_round_ss): Ditto. + (_mm_maskz_rsqrt28_round_ss): Ditto. + (_mm_mask_rcp28_sd): Ditto. + (_mm_maskz_rcp28_sd): Ditto. + (_mm_mask_rcp28_ss): Ditto. + (_mm_maskz_rcp28_ss): Ditto. + (_mm_mask_rsqrt28_sd): Ditto. + (_mm_maskz_rsqrt28_sd): Ditto. + (_mm_mask_rsqrt28_ss): Ditto. + (_mm_maskz_rsqrt28_ss): Ditto. + * config/i386/avx512fintrin.h (_mm_mask_sqrt_sd): New intrinsics. + (_mm_maskz_sqrt_sd): Ditto. + (_mm_mask_sqrt_ss): Ditto. + (_mm_maskz_sqrt_ss): Ditto. + (_mm_mask_scalef_sd): Ditto. + (_mm_maskz_scalef_sd): Ditto. + (_mm_mask_scalef_ss): Ditto. + (_mm_maskz_scalef_ss): Ditto. + (_mm_mask_cvt_roundsd_ss): Ditto. + (_mm_maskz_cvt_roundsd_ss): Ditto. + (_mm_mask_cvt_roundss_sd): Ditto. + (_mm_maskz_cvt_roundss_sd): Ditto. + (_mm_mask_cvtss_sd): Ditto. + (_mm_maskz_cvtss_sd): Ditto. + (_mm_mask_cvtsd_ss): Ditto. + (_mm_maskz_cvtsd_ss): Ditto. + (_mm512_cvtsi512_si32): Ditto. + (_mm_cvtsd_i32): Ditto. + (_mm_cvtss_i32): Ditto. + (_mm_cvti32_sd): Ditto. + (_mm_cvti32_ss): Ditto. + (_mm_cvtsd_i64): Ditto. + (_mm_cvtss_i64): Ditto. + (_mm_cvti64_sd): Ditto. + (_mm_cvti64_ss): Ditto. + * config/i386/avx512vlbwintrin.h (_mm256_storeu_epi8): New intrinsics. + (_mm_storeu_epi8): Ditto. + (_mm256_loadu_epi16): Ditto. + (_mm_loadu_epi16): Ditto. + (_mm256_loadu_epi8): Ditto. + (_mm_loadu_epi8): Ditto. + (_mm256_storeu_epi16): Ditto. + (_mm_storeu_epi16): Ditto. + * config/i386/avx512vlintrin.h (_mm256_load_epi64): New intrinsics. + (_mm_load_epi64): Ditto. + (_mm256_load_epi32): Ditto. + (_mm_load_epi32): Ditto. + (_mm256_store_epi32): Ditto. + (_mm_store_epi32): Ditto. + (_mm256_loadu_epi64): Ditto. + (_mm_loadu_epi64): Ditto. + (_mm256_loadu_epi32): Ditto. + (_mm_loadu_epi32): Ditto. + (_mm256_mask_cvt_roundps_ph): Ditto. + (_mm256_maskz_cvt_roundps_ph): Ditto. + (_mm_mask_cvt_roundps_ph): Ditto. + (_mm_maskz_cvt_roundps_ph): Ditto. + * config/i386/avxintrin.h (_mm256_cvtsi256_si32): New intrinsics. + * config/i386/emmintrin.h (_mm_loadu_si32): New intrinsics. + (_mm_loadu_si16): Ditto. + (_mm_storeu_si32): Ditto. + (_mm_storeu_si16): Ditto. + * config/i386/i386-builtin-types.def + (V8DF_FTYPE_V8DF_INT_V8DF_UQI_INT): Add new type. + (V16SF_FTYPE_V16SF_INT_V16SF_UHI_INT): Ditto. + (V4SF_FTYPE_V4SF_V2DF_V4SF_UQI_INT): Ditto. + (V2DF_FTYPE_V2DF_V4SF_V2DF_UQI_INT): Ditto. + * config/i386/i386-builtin.def + (__builtin_ia32_cvtsd2ss_mask_round): New builtin. + (__builtin_ia32_cvtss2sd_mask_round): Ditto. + (__builtin_ia32_rcp28sd_mask_round): Ditto. + (__builtin_ia32_rcp28ss_mask_round): Ditto. + (__builtin_ia32_rsqrt28sd_mask_round): Ditto. + (__builtin_ia32_rsqrt28ss_mask_round): Ditto. + (__builtin_ia32_reducepd512_mask_round): Ditto. + (__builtin_ia32_reduceps512_mask_round): Ditto. + (__builtin_ia32_reducesd_mask_round): Ditto. + (__builtin_ia32_reducess_mask_round): Ditto. + * config/i386/i386-expand.c + (ix86_expand_round_builtin): Expand round builtin for new type. + (V8DF_FTYPE_V8DF_INT_V8DF_UQI_INT) + (V16SF_FTYPE_V16SF_INT_V16SF_UHI_INT) + (V4SF_FTYPE_V4SF_V2DF_V4SF_UQI_INT) + (V2DF_FTYPE_V2DF_V4SF_V2DF_UQI_INT) + * config/i386/mmintrin.h () + Define datatype __m32 and __m16. + Define datatype __m32_u and __m16_u. + * config/i386/sse.md: Adjust pattern. + (reducep): Adjust. + (reduces): Ditto. + (sse2_cvtsd2ss): Ditto. + (sse2_cvtss2sd): Ditto. + (avx512er_vmrcp28): Ditto. + (avx512er_vmrsqrt28): Ditto. + +2020-10-14 Olivier Hainque + + * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Fix + the VX_CPU selection for -mcpu=xscale on arm-vxworks. + +2020-10-14 Olivier Hainque + + * config/rs6000/vxworks.h (TARGET_OS_CPP_BUILTINS): Accommodate + expectations from different versions of VxWorks, for 32 or 64bit + configurations. + +2020-10-14 Olivier Hainque + + * config/vxworks.h: #undef CPLUSPLUS_CPP_SPEC. + +2020-10-14 Olivier Hainque + + * config/t-vxworks: Adjust the VxWorks alternative LIMITS_H guard + for glimits.h, make it both closer to the previous one and easier to + search for. + +2020-10-14 Jakub Jelinek + + PR target/97387 + * config/i386/i386.md (CC_CCC): New mode iterator. + (*setcc_qi_addqi3_cconly_overflow_1_): New + define_insn_and_split. + * config/i386/i386.c (ix86_cc_mode): Return CCCmode + for *setcc_qi_addqi3_cconly_overflow_1_ pattern operands. + (ix86_rtx_costs): Return true and *total = 0; + for *setcc_qi_addqi3_cconly_overflow_1_ pattern. Use op0 and + op1 temporaries to simplify COMPARE checks. + +2020-10-14 Aldy Hernandez + + PR tree-optimization/97396 + * gimple-range.cc (gimple_ranger::range_of_phi): Do not call + range_of_ssa_name_with_loop_info with the loop tree root. + +2020-10-14 Richard Biener + + * tree-vect-slp.c (vect_get_and_check_slp_defs): Split out + test for compatible operand types. + +2020-10-14 Olivier Hainque + + * config/vxworks.c (vxworks_override_options): Guard pic checks with + flag_pic > 0 instead of just flag_pic. + +2020-10-14 Jan Hubicka + + * ipa-fnsummary.c (remap_edge_summaries): Make offset_map HOST_WIDE_INT. + (remap_freqcounting_predicate): Likewise. + (ipa_merge_fn_summary_after_inlining): Likewise. + * ipa-predicate.c (predicate::remap_after_inlining): Likewise + * ipa-predicate.h (remap_after_inlining): Update. + +2020-10-14 Jan Hubicka + + * ipa-modref.c (compute_parm_map): Handle POINTER_PLUS_EXPR in + PASSTHROUGH. + +2020-10-14 Richard Biener + + * tree-vect-slp.c (vect_get_and_check_slp_defs): Move + check for duplicate/interleave of variable size constants + to a place done once and early. + (vect_build_slp_tree_2): Adjust heuristics when to build + a BB SLP node from scalars. + +2020-10-14 Tom de Vries + + * tracer.c (cached_can_duplicate_bb_p, analyze_bb): Use + can_duplicate_block_p. + (can_duplicate_insn_p, can_duplicate_bb_no_insn_iter_p) + (can_duplicate_bb_p): Move and merge ... + * tree-cfg.c (gimple_can_duplicate_bb_p): ... here. + +2020-10-14 Jan Hubicka + + * doc/invoke.texi: (ipa-jump-function-lookups): Document param. + * ipa-modref.c (merge_call_side_effects): Use + unadjusted_ptr_and_unit_offset. + * ipa-prop.c (unadjusted_ptr_and_unit_offset): New function. + * ipa-prop.h (unadjusted_ptr_and_unit_offset): Declare. + * params.opt: (-param-ipa-jump-function-lookups): New. + +2020-10-14 Jan Hubicka + + PR bootstrap/97350 + * ipa-modref.c (ignore_edge): Do not ignore inlined edes. + (ipa_merge_modref_summary_after_inlining): Improve debug output and + fix parameter of ignore_stores_p. + +2020-10-14 Kito Cheng + + PR target/96759 + * expr.c (expand_assignment): Handle misaligned stores with PARALLEL + value. + +2020-10-13 Jakub Jelinek + + PR rtl-optimization/97386 + * combine.c (simplify_shift_const_1): Don't optimize nested ROTATEs if + they have different modes. + +2020-10-13 Aldy Hernandez + + PR tree-optimization/97379 + * gimple-range-edge.cc (outgoing_range::calc_switch_ranges): Do + not save hash slot across calls to hash_table<>::get_or_insert. + +2020-10-13 Tobias Burnus + + * lto-wrapper.c (find_crtoffloadtable): Fix last commit + by adding NULL as last argument to concat. + +2020-10-13 Kyrylo Tkachov + + * config/aarch64/aarch64.c (neoversen2_tunings): Define. + * config/aarch64/aarch64-cores.def (neoverse-n2): Use it. + +2020-10-13 Tobias Burnus + + * lto-wrapper.c (find_crtoffloadtable): With -save-temps, + use non-temp file name utilizing the dump prefix. + (run_gcc): Update call. + +2020-10-13 Richard Biener + + PR tree-optimization/97382 + * tree-vectorizer.h (_stmt_vec_info::same_align_refs): Remove. + (STMT_VINFO_SAME_ALIGN_REFS): Likewise. + * tree-vectorizer.c (vec_info::new_stmt_vec_info): Do not + allocate STMT_VINFO_SAME_ALIGN_REFS. + (vec_info::free_stmt_vec_info): Do not release + STMT_VINFO_SAME_ALIGN_REFS. + * tree-vect-data-refs.c (vect_analyze_data_ref_dependences): + Do not compute self and read-read dependences. + (vect_dr_aligned_if_related_peeled_dr_is): New helper. + (vect_dr_aligned_if_peeled_dr_is): Likewise. + (vect_update_misalignment_for_peel): Use it instead of + iterating over STMT_VINFO_SAME_ALIGN_REFS. + (dr_align_group_sort_cmp): New function. + (vect_enhance_data_refs_alignment): Count the number of + same aligned refs here and elide uses of STMT_VINFO_SAME_ALIGN_REFS. + (vect_find_same_alignment_drs): Remove. + (vect_analyze_data_refs_alignment): Do not call it. + * vec.h (auto_vec::auto_vec): Adjust CTOR to take + a vec<>&&, assert it isn't using auto storage. + (auto_vec& operator=): Apply a similar change. + +2020-10-13 Tobias Burnus + + * config/nvptx/mkoffload.c (main): Add missing fclose (in). + +2020-10-13 Zhiheng Xie + Nannan Zheng + + * config/aarch64/aarch64-simd-builtins.def: Add proper FLAG + for mul/mla/mls intrinsics. + +2020-10-13 Jakub Jelinek + + * omp-low.c (add_taskreg_looptemp_clauses): For triangular loops + with non-constant number of iterations add another 4 _looptemp_ + clauses before the (optional) one for lastprivate. + (lower_omp_for_lastprivate): Skip those clauses when looking for + the lastprivate clause. + (lower_omp_for): For triangular loops with non-constant number of + iterations add another 4 _looptemp_ clauses. + * omp-expand.c (expand_omp_for_init_counts): For triangular loops + with non-constant number of iterations set counts[0], + fd->first_inner_iterations, fd->factor and fd->adjn1 from the newly + added _looptemp_ clauses. + (expand_omp_for_init_vars): Initialize the newly added _looptemp_ + clauses. + (find_lastprivate_looptemp): New function. + (expand_omp_for_static_nochunk, expand_omp_for_static_chunk, + expand_omp_taskloop_for_outer): Use it instead of manually skipping + _looptemp_ clauses. + +2020-10-13 Jan Hubicka + + PR ipa/97389 + * ipa-modref.c (dump_lto_records): Fix formating of dump file. + (modref_summary::dump): Do not check loads to be non-null. + (modref_summary_lto::dump): Do not check loads to be non-null. + (merge_call_side_effects): Improve debug output. + (analyze_call): Crash when cur_summary->loads is NULL. + (analyze_function): Update. + (modref_summaries::insert): Insert only into summaries, not + optimization_summaries. + (modref_summaries::duplicate): Likewise; crash when load or sotres + are NULL. + (modref_summaries_lto::duplicate): Crash when loads or stores are NULL. + (write_modref_records): param_index is signed. + (read_modref_records): param_index is signed. + (modref_write): Crash when loads or stores are NULL. + (read_section): Compensate previous change. + (pass_modref::execute): Do not check optimization_summaries t be + non-NULL. + (ignore_edge): Fix. + (compute_parm_map): Fix formating. + (modref_propagate_in_scc): Do not expect loads/stores to be NULL. + +2020-10-12 Alexandre Oliva + + * builtins.c (mathfn_built_in_type): Use CFN_ enumerators. + +2020-10-12 Andrew MacLeod + + PR tree-optimization/97381 + * gimple-range-gori.cc (gori_compute::compute_operand2_range): If a range cannot be + calculated through operand 2, return false. + +2020-10-12 Aldy Hernandez + + PR tree-optimization/97378 + * range-op.cc (operator_trunc_mod::wi_fold): Return VARYING for mod by zero. + +2020-10-12 David Malcolm + + * doc/invoke.texi: Document -Wanalyzer-write-to-const and + -Wanalyzer-write-to-string-literal. + +2020-10-12 Martin Sebor + + PR middle-end/97342 + PR middle-end/97023 + PR middle-end/96384 + * builtins.c (access_ref::access_ref): Initialize new member. Use + new enum. + (access_ref::size_remaining): Define new member function. + (inform_access): Handle expressions referencing objects. + (gimple_call_alloc_size): Call get_size_range instead of get_range. + (gimple_call_return_array): New function. + (get_range): Rename... + (get_offset_range): ...to this. Improve detection of ranges from + types of expressions. + (gimple_call_return_array): Adjust calls to get_range per above. + (compute_objsize): Same. Set maximum size or offset instead of + failing for unknown objects and handle more kinds of expressions. + (compute_objsize): Call access_ref::size_remaining. + (compute_objsize): Have transitional wrapper fail for pointers + into unknown objects. + (expand_builtin_strncmp): Call access_ref::size_remaining and + handle new cases. + * builtins.h (access_ref::size_remaining): Declare new member function. + (access_ref::set_max_size_range): Define new member function. + (access_ref::add_ofset, access_ref::add_max_ofset): Same. + (access_ref::add_base0): New data member. + * calls.c (get_size_range): Change argument type. Handle new + condition. + * calls.h (get_size_range): Adjust signature. + (enum size_range_flags): Define new type. + * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Correct + argument to get_size_range. + * tree-ssa-strlen.c (get_range): Handle anti-ranges. + (maybe_warn_overflow): Check DECL_P before assuming it's one. + +2020-10-12 Martin Sebor + + PR c++/96511 + PR middle-end/96384 + * builtins.c (get_range): Return full range of type when neither + value nor its range is available. Fail for ranges inverted due + to the signedness of offsets. + (compute_objsize): Handle more special array members. Handle + POINTER_PLUS_EXPR and VIEW_CONVERT_EXPR that come up in front end + code. + (access_ref::offset_bounded): Define new member function. + * builtins.h (access_ref::eval): New data member. + (access_ref::offset_bounded): New member function. + (access_ref::offset_zero): New member function. + (compute_objsize): Declare a new overload. + * gimple-array-bounds.cc (array_bounds_checker::check_array_ref): Use + enum special_array_member. + * tree.c (component_ref_size): Use special_array_member. + * tree.h (special_array_member): Define a new type. + (component_ref_size): Change signature. + +2020-10-12 Jan Hubicka + + * ipa-modref.c (modref_summaries): Remove field IPA. + (class modref_summary_lto): New global variable. + (class modref_summaries_lto): New. + (modref_summary::modref_summary): Remove loads_lto and stores_lto. + (modref_summary::~modref_summary): Remove loads_lto and stores_lto. + (modref_summary::useful_p): Do not use lto_useful. + (modref_records_lto): New typedef. + (struct modref_summary_lto): New type. + (modref_summary_lto::modref_summary_lto): New member function. + (modref_summary_lto::~modref_summary_lto): New member function. + (modref_summary_lto::useful_p): New member function. + (modref_summary::dump): Do not handle lto. + (modref_summary_lto::dump): New member function. + (get_modref_function_summary): Use optimization_summary. + (merge_call_side_effects): Use optimization_summary. + (analyze_call): Use optimization_summary. + (struct summary_ptrs): New struture. + (analyze_load): Update to handle separate lto and non-lto summaries. + (analyze_store): Likewise. + (analyze_stmt): Likewise. + (remove_summary): Break out from ... + (analyze_function): ... here; update to handle seprated summaries. + (modref_summaries::insert): Do not handle lto summary. + (modref_summaries_lto::insert): New member function. + (modref_summaries::duplicate): Do not handle lto summary. + (modref_summaries_lto::duplicate): New member function. + (read_modref_records): Expect nolto_ret or lto_ret to be NULL> + (modref_write): Write lto summary. + (read_section): Handle separated summaries. + (modref_read): Initialize separated summaries. + (modref_transform): Handle separated summaries. + (pass_modref::execute): Turn summary to optimization_summary; handle + separate summaries. + (ignore_edge): Handle separate summaries. + (ipa_merge_modref_summary_after_inlining): Likewise. + (collapse_loads): Likewise. + (modref_propagate_in_scc): Likewise. + (pass_ipa_modref::execute): Likewise. + (ipa_modref_c_finalize): Likewise. + * ipa-modref.h (modref_records_lto): Remove typedef. + (struct modref_summary): Remove stores_lto, loads_lto and finished + fields; remove lto_useful_p member function. + +2020-10-12 Richard Biener + + * tree-vect-data-refs.c (vect_slp_analyze_instance_dependence): + Use SLP_TREE_REPRESENTATIVE. + * tree-vectorizer.h (_slp_tree::vertex): New member used + for graphds interfacing. + * tree-vect-slp.c (vect_build_slp_tree_2): Allocate space + for PHI SLP children. + (vect_analyze_slp_backedges): New function filling in SLP + node children for PHIs that correspond to backedge values. + (vect_analyze_slp): Call vect_analyze_slp_backedges for the + graph. + (vect_slp_analyze_node_operations): Deal with a cyclic graph. + (vect_schedule_slp_instance): Likewise. + (vect_schedule_slp): Likewise. + (slp_copy_subtree): Remove. + (vect_slp_rearrange_stmts): Likewise. + (vect_attempt_slp_rearrange_stmts): Likewise. + (vect_slp_build_vertices): New functions. + (vect_slp_permute): Likewise. + (vect_slp_perms_eq): Likewise. + (vect_optimize_slp): Remove special code to elide + permutations with SLP reductions. Implement generic + permute optimization. + +2020-10-12 Christophe Lyon + + * config/arm/arm.c (arm_preferred_simd_mode): Use E_FOOmode + instead of FOOmode. + +2020-10-12 Martin Liska + + PR tree-optimization/97079 + * internal-fn.c (internal_fn_stored_value_index): Handle also + .MASK_STORE_LANES. + * tree-vect-patterns.c (vect_recog_over_widening_pattern): Bail + out for unsupported TREE_TYPE. + +2020-10-12 Richard Biener + + * tree-vect-slp.c (vect_bb_partition_graph_r): Use visited + hash-map. + (vect_bb_partition_graph): Likewise. + +2020-10-12 Duan bo + + PR target/96757 + * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): Add + the identification and handling of the dropped situation in the + cond expression processing phase. + +2020-10-12 Tobias Burnus + + * doc/invoke.texi (nvptx's -misa): Update default to sm_35. + +2020-10-12 Kyrylo Tkachov + + PR target/97349 + * config/aarch64/arm_neon.h (vdupq_n_p8, vdupq_n_p16, + vdupq_n_p64, vdupq_n_s8, vdupq_n_s16, vdupq_n_u8, vdupq_n_u16): + Fix argument type. + +2020-10-12 Ilya Leoshkevich + + * config/s390/s390-protos.h (s390_build_signbit_mask): New + function. + * config/s390/s390.c (s390_contiguous_bitmask_vector_p): + Bitcast the argument to an integral mode. + (s390_expand_vec_init): Do not call + s390_contiguous_bitmask_vector_p with a scalar argument. + (s390_build_signbit_mask): New function. + * config/s390/vector.md (copysign3): Use bitwise + operations. + +2020-10-12 Aldy Hernandez + + PR tree-optimization/97371 + * range-op.cc (operator_rshift::op1_range): Ignore shifts larger than + or equal to type precision. + +2020-10-12 Martin Liska + + * ipa-modref.c (merge_call_side_effects): Clear modref_parm_map + fields in the vector. + +2020-10-12 Richard Biener + + * tree-vect-slp.c (vect_analyze_slp_instance): Set matches to true + after successful discovery but forced split. + +2020-10-12 Tom de Vries + + * config/nvptx/nvptx.opt (-msoft-stack-reserve-local): Rename to ... + (-msoft-stack-reserve-local=): ... this. + +2020-10-12 Richard Biener + + PR tree-optimization/97357 + * tree-ssa-loop-split.c (ssa_semi_invariant_p): Abnormal + SSA names are not semi invariant. + +2020-10-11 Iain Sandoe + + * config/darwin.c (darwin_globalize_label): Make a subset of + metadate symbols global. + (darwin_label_is_anonymous_local_objc_name): Make a subset of + metadata symbols linker-visible. + (darwin_override_options): Track more target OS versions, make + the next_runtime version track this (unless it's set to 0 for + GNU runtime). + +2020-10-11 Iain Sandoe + + * config/darwin.c (darwin_globalize_label): Add protocol + meta-data labels to the set that are global. + (darwin_label_is_anonymous_local_objc_name): Arrange for meta- + data start labels to be linker-visible. + +2020-10-11 Iain Sandoe + + * config/darwin.c (darwin_objc2_section): Allow for + values > 1 to represent the next runtime. + (darwin_objc1_section): Likewise. + * config/darwin.h (NEXT_OBJC_RUNTIME): Set the default + next runtime value to be 10.5.8. + +2020-10-10 Jan Hubicka + + * ipa-modref.c (modref_transform): Fix parameter map computation. + +2020-10-10 Tom de Vries + + PR target/97318 + * config/nvptx/nvptx.c (nvptx_replace_dot): New function. + (write_fn_proto, write_fn_proto_from_insn, nvptx_output_call_insn): + Use nvptx_replace_dot. + +2020-10-10 Tom de Vries + + * config/nvptx/nvptx.c (write_fn_proto_1): New function, factored out + of ... + (write_fn_proto): ... here. Return void. + +2020-10-10 Jan Hubicka + + * ipa-modref.c (remap_arguments): Check range in map access. + +2020-10-10 Jan Hubicka + + * ipa-modref.c (modref_transform): Use reserve instead of safe_grow. + +2020-10-10 Jan Hubicka + + * ipa-modref.c (modref_transform): Check that summaries are allocated. + +2020-10-10 Jan Hubicka + + * ipa-modref-tree.h (struct modref_tree): Revert prevoius change. + * ipa-modref.c (analyze_function): Dump original summary. + (modref_read): Only set IPA if streaming summary (not optimization + summary). + (remap_arguments): New function. + (modref_transform): New function. + (compute_parm_map): Fix offset calculation. + (ipa_merge_modref_summary_after_inlining): Do not merge stores when + they can be ignored. + +2020-10-10 Jan Hubicka + + * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Improve debug dumps. + (call_may_clobber_ref_p_1): Improve debug dumps. + +2020-10-10 Iain Sandoe + + * config/darwin.c (output_objc_section_asm_op): Avoid extra + objective-c section switches unless the linker needs them. + +2020-10-10 Iain Sandoe + + * config/darwin-sections.def (objc2_data_section): New. + (objc2_ivar_section): New. + * config/darwin.c (darwin_objc2_section): Act on Protocol and + ivar refs. + +2020-10-10 Iain Sandoe + + * config/darwin-sections.def (objc2_class_names_section, + objc2_method_names_section, objc2_method_types_section): New + * config/darwin.c (output_objc_section_asm_op): Output new + sections. (darwin_objc2_section): Select new sections where + used. + +2020-10-10 Iain Sandoe + + * config/darwin.c (darwin_emit_local_bss): Amend section names to + match system tools. (darwin_output_aligned_bss): Likewise. + +2020-10-10 Aldy Hernandez + + PR tree-optimization/97359 + * gimple-range-gori.cc (logical_stmt_cache::cacheable_p): Only + handle ANDs and ORs. + (gori_compute_cache::cache_stmt): Adjust comment. + +2020-10-09 Vladimir Makarov + + PR rtl-optimization/97313 + * lra-constraints.c (match_reload): Don't keep strict_low_part in + reloads for non-registers. + +2020-10-09 H.J. Lu + + PR target/97148 + * config.gcc (extra_headers): Add x86gprintrin.h. + * config/i386/adxintrin.h: Check _X86GPRINTRIN_H_INCLUDED for + . + * config/i386/bmi2intrin.h: Likewise. + * config/i386/bmiintrin.h: Likewise. + * config/i386/cetintrin.h: Likewise. + * config/i386/cldemoteintrin.h: Likewise. + * config/i386/clflushoptintrin.h: Likewise. + * config/i386/clwbintrin.h: Likewise. + * config/i386/enqcmdintrin.h: Likewise. + * config/i386/fxsrintrin.h: Likewise. + * config/i386/ia32intrin.h: Likewise. + * config/i386/lwpintrin.h: Likewise. + * config/i386/lzcntintrin.h: Likewise. + * config/i386/movdirintrin.h: Likewise. + * config/i386/pconfigintrin.h: Likewise. + * config/i386/pkuintrin.h: Likewise. + * config/i386/rdseedintrin.h: Likewise. + * config/i386/rtmintrin.h: Likewise. + * config/i386/serializeintrin.h: Likewise. + * config/i386/tbmintrin.h: Likewise. + * config/i386/tsxldtrkintrin.h: Likewise. + * config/i386/waitpkgintrin.h: Likewise. + * config/i386/wbnoinvdintrin.h: Likewise. + * config/i386/xsavecintrin.h: Likewise. + * config/i386/xsaveintrin.h: Likewise. + * config/i386/xsaveoptintrin.h: Likewise. + * config/i386/xsavesintrin.h: Likewise. + * config/i386/xtestintrin.h: Likewise. + * config/i386/immintrin.h: Include instead of + , , , + , , , + , , , , + , , + , , , + , , , + , , and + . + (_wbinvd): Moved to config/i386/x86gprintrin.h. + (_rdrand16_step): Likewise. + (_rdrand32_step): Likewise. + (_rdpid_u32): Likewise. + (_readfsbase_u32): Likewise. + (_readfsbase_u64): Likewise. + (_readgsbase_u32): Likewise. + (_readgsbase_u64): Likewise. + (_writefsbase_u32): Likewise. + (_writefsbase_u64): Likewise. + (_writegsbase_u32): Likewise. + (_writegsbase_u64): Likewise. + (_rdrand64_step): Likewise. + (_ptwrite64): Likewise. + (_ptwrite32): Likewise. + * config/i386/x86gprintrin.h: New file. + * config/i386/x86intrin.h: Include . Don't + include , , , + , and . + +2020-10-09 Tom de Vries + + PR target/97348 + * config/nvptx/nvptx.h (ASM_SPEC): Also pass -m to nvptx-as if + default is used. + * config/nvptx/nvptx.opt (misa): Init with PTX_ISA_SM35. + +2020-10-09 Richard Biener + + * doc/sourcebuild.texi (vect_masked_load): Document. + +2020-10-09 Richard Biener + + PR tree-optimization/97334 + * tree-vect-slp.c (vect_build_slp_tree_1): Do not fatally + fail lanes other than zero when BB vectorizing. + +2020-10-09 Jan Hubicka + + PR ipa/97292 + PR ipa/97335 + * ipa-modref-tree.h (copy_from): Drop summary in a + clone. + +2020-10-09 Richard Biener + + PR tree-optimization/97347 + * tree-vect-slp.c (vect_create_constant_vectors): Use + edge insertion when inserting on the fallthru edge, + appropriately insert at the start of BBs when inserting + after PHIs. + +2020-10-09 Andrew MacLeod + + PR tree-optimization/97317 + * range-op.cc (operator_cast::op1_range): Handle casts where the precision + of the RHS is only 1 greater than the precision of the LHS. + +2020-10-09 Richard Biener + + * cgraphunit.c (expand_all_functions): Free tp_first_run_order. + * ipa-modref.c (pass_ipa_modref::execute): Free order. + * tree-ssa-loop-niter.c (estimate_numbers_of_iterations): Free + loop body. + * tree-vect-data-refs.c (vect_find_stmt_data_reference): Free + data references upon failure. + * tree-vect-loop.c (update_epilogue_loop_vinfo): Free BBs + array of the original loop. + * tree-vect-slp.c (vect_slp_bbs): Use an auto_vec for + dataref_groups to release its memory. + +2020-10-09 Jakub Jelinek + + PR tree-optimization/94801 + PR target/97312 + * vr-values.c (vr_values::extract_range_basic) : When stmt is not an internal-fn call or + C?Z_DEFINED_VALUE_AT_ZERO is not 2, assume argument is not zero + and thus use [0, prec-1] range unless it can be further improved. + For CTZ, don't update maxi from upper bound if it was previously prec. + * gimple-range.cc (gimple_ranger::range_of_builtin_call) : Likewise. + +2020-10-09 Jakub Jelinek + + PR tree-optimization/97325 + * match.pd (FFS(nonzero) -> CTZ(nonzero) + 1): Cast argument to + corresponding unsigned type. + +2020-10-09 Richard Biener + + * tree-vect-slp.c (vect_create_constant_vectors): Properly insert + after PHIs. + +2020-10-08 Alexandre Oliva + + * builtins.c (mathfn_built_in_type): New. + * builtins.h (mathfn_built_in_type): Declare. + * tree-ssa-math-opts.c (execute_cse_sincos_1): Use it to + obtain the type expected by the intrinsic. + +2020-10-08 Will Schmidt + + * config/rs6000/rs6000-builtin.def (BU_P10_MISC_2): Rename + to BU_P10_POWERPC64_MISC_2. + CFUGED, CNTLZDM, CNTTZDM, PDEPD, PEXTD): Call renamed macro. + +2020-10-08 Jan Hubicka + + * tree-nrv.c (dest_safe_for_nrv_p): Disable tbaa in + call_may_clobber_ref_p and ref_maybe_used_by_stmt_p. + * tree-tailcall.c (find_tail_calls): Likewise. + * tree-ssa-alias.c (call_may_clobber_ref_p): Add tbaa_p parameter. + * tree-ssa-alias.h (call_may_clobber_ref_p): Update prototype. + * tree-ssa-sccvn.c (vn_reference_lookup_3): Pass data->tbaa_p + to call_may_clobber_ref_p_1. + +2020-10-08 Mark Wielaard + + * dwarf2out.c (dwarf2out_finish): Emit .file 0 entry when + generating DWARF5 .debug_line table through gas. + +2020-10-08 John Henning + + PR other/97309 + * doc/invoke.texi: Improve documentation of + -fallow-store-data-races. + +2020-10-08 Christophe Lyon + + PR target/96914 + * config/arm/arm_mve.h (__arm_vcvtnq_u32_f32): New. + +2020-10-08 Martin Liska + Richard Biener + + * tree-vectorizer.h (_bb_vec_info::const_iterator): Remove. + (_bb_vec_info::const_reverse_iterator): Likewise. + (_bb_vec_info::region_stmts): Likewise. + (_bb_vec_info::reverse_region_stmts): Likewise. + (_bb_vec_info::_bb_vec_info): Adjust. + (_bb_vec_info::bb): Remove. + (_bb_vec_info::region_begin): Remove. + (_bb_vec_info::region_end): Remove. + (_bb_vec_info::bbs): New vector of BBs. + (vect_slp_function): Declare. + * tree-vect-patterns.c (vect_determine_precisions): Use + regular stmt iteration. + (vect_pattern_recog): Likewise. + * tree-vect-slp.c: Include cfganal.h, tree-eh.h and tree-cfg.h. + (vect_build_slp_tree_1): Properly refuse to vectorize + volatile and throwing stmts. + (vect_build_slp_tree_2): Pass group-size down to + get_vectype_for_scalar_type. + (_bb_vec_info::_bb_vec_info): Use regular stmt iteration, + adjust for changed region specification. + (_bb_vec_info::~_bb_vec_info): Likewise. + (vect_slp_check_for_constructors): Likewise. + (vect_slp_region): Likewise. + (vect_slp_bbs): New worker operating on a vector of BBs. + (vect_slp_bb): Wrap it. + (vect_slp_function): New function splitting the function + into multi-BB regions. + (vect_create_constant_vectors): Handle the case of inserting + after a throwing def. + (vect_schedule_slp_instance): Adjust. + * tree-vectorizer.c (vec_info::remove_stmt): Simplify again. + (vec_info::insert_seq_on_entry): Adjust. + (pass_slp_vectorize::execute): Also init PHIs. Call + vect_slp_function. + +2020-10-08 Richard Biener + + PR tree-optimization/97330 + * tree-ssa-sink.c (statement_sink_location): Avoid skipping + PHIs when they dominate the insert location. + +2020-10-08 Jan Hubicka + + * ipa-modref.c (get_access): Fix handling of offsets. + * tree-ssa-alias.c (modref_may_conflict): Watch for overflows. + +2020-10-08 Martin Liska + + * dbgcnt.def (DEBUG_COUNTER): Add ipa_mod_ref debug counter. + * tree-ssa-alias.c (modref_may_conflict): Handle the counter. + +2020-10-08 Richard Biener + + * tree-vectorizer.c (try_vectorize_loop_1): Do not dump + "basic block vectorized". + (pass_slp_vectorize::execute): Likewise. + * tree-vect-slp.c (vect_analyze_slp_instance): Avoid + re-analyzing split single stmts. + +2020-10-08 Christophe Lyon + + PR target/96914 + * config/arm/arm_mve.h (vqrdmlashq_n_u8, vqrdmlashq_n_u16) + (vqrdmlashq_n_u32, vqrdmlahq_n_u8, vqrdmlahq_n_u16) + (vqrdmlahq_n_u32, vqdmlahq_n_u8, vqdmlahq_n_u16, vqdmlahq_n_u32) + (vmlaldavaxq_p_u16, vmlaldavaxq_p_u32): Remove. + * config/arm/arm_mve_builtins.def (vqrdmlashq_n_u, vqrdmlahq_n_u) + (vqdmlahq_n_u, vmlaldavaxq_p_u): Remove. + * config/arm/unspecs.md (VQDMLAHQ_N_U, VQRDMLAHQ_N_U) + (VQRDMLASHQ_N_U) + (VMLALDAVAXQ_P_U): Remove unspecs. + * config/arm/iterators.md (VQDMLAHQ_N_U, VQRDMLAHQ_N_U) + (VQRDMLASHQ_N_U, VMLALDAVAXQ_P_U): Remove attributes. + (VQDMLAHQ_N, VQRDMLAHQ_N, VQRDMLASHQ_N, VMLALDAVAXQ_P): Remove + unsigned variants from iterators. + * config/arm/mve.md (mve_vqdmlahq_n_) + (mve_vqrdmlahq_n_) + (mve_vqrdmlashq_n_, mve_vmlaldavaxq_p_): + Update comment. + +2020-10-08 Christophe Lyon + + PR target/96914 + * config/arm/arm_mve.h (vqdmlashq, vqdmlashq_m): Define. + * config/arm/arm_mve_builtins.def (vqdmlashq_n_s) + (vqdmlashq_m_n_s,): New. + * config/arm/unspecs.md (VQDMLASHQ_N_S, VQDMLASHQ_M_N_S): New + unspecs. + * config/arm/iterators.md (VQDMLASHQ_N_S, VQDMLASHQ_M_N_S): New + attributes. + (VQDMLASHQ_N): New iterator. + * config/arm/mve.md (mve_vqdmlashq_n_, mve_vqdmlashq_m_n_s): New + patterns. + +2020-10-08 Jakub Jelinek + + PR target/97322 + * config/arm/arm.c (arm_expand_divmod_libfunc): Pass mode instead of + GET_MODE (op0) or GET_MODE (op1) to emit_library_call_value. + +2020-10-08 Aldy Hernandez + + PR tree-optimization/97325 + * gimple-range.cc (gimple_ranger::range_of_builtin_call): Handle + negative numbers in __builtin_ffs and __builtin_popcount. + +2020-10-08 Aldy Hernandez + + PR tree-optimization/97315 + * range-op.cc (value_range_with_overflow): Change any + non-overflow calculation in which both bounds are + overflow/underflow to be undefined. + +2020-10-08 Aldy Hernandez + + PR tree-optimization/97315 + * gimple-ssa-evrp.c (hybrid_folder::choose_value): Removes the + trap and instead annotates the listing. + +2020-10-08 Jakub Jelinek + + PR sanitizer/97294 + * tree-cfg.c (move_block_to_fn): Call notice_special_calls on + call stmts being moved into dest_cfun. + * omp-low.c (lower_rec_input_clauses): Set cfun->calls_alloca when + adding __builtin_alloca_with_align call without gimplification. + +2020-10-07 Aldy Hernandez + + * common.opt (-fevrp-mode): Rename and move... + * params.opt (--param=evrp-mode): ...here. + * gimple-range.h (DEBUG_RANGE_CACHE): Use param_evrp_mode instead + of flag_evrp_mode. + * gimple-ssa-evrp.c (rvrp_folder): Same. + (hybrid_folder): Same. + (execute_early_vrp): Same. + +2020-10-07 Richard Biener + + PR tree-optimization/97307 + * tree-ssa-sink.c (statement_sink_location): Change heuristic + for not skipping stores to look for virtual definitions + rather than uses. + +2020-10-07 Andrew MacLeod + + * value-range.h (irange_allocator::allocate): Allocate in two hunks + instead of using the variably-sized trailing array approach. + +2020-10-07 David Malcolm + + * doc/invoke.texi (-fdiagnostics-plain-output): Add + -fdiagnostics-path-format=separate-events to list of + options injected by -fdiagnostics-plain-output. + * opts-common.c (decode_cmdline_options_to_array): Likewise. + +2020-10-07 Martin Jambor + + PR ipa/96394 + * ipa-prop.c (update_indirect_edges_after_inlining): Do not add + resolved speculation edges to vector of new direct edges even in + presence of multiple speculative direct edges for a single call. + +2020-10-07 Andrew Stubbs + + * config/gcn/gcn.md (unspec): Add UNSPEC_ADDPTR. + (addptrdi3): Add SGPR alternative. + +2020-10-07 Mark Wielaard + + * dwarf2out.c (add_filepath_AT_string): New function. + (asm_outputs_debug_line_str): Likewise. + (add_filename_attribute): Likewise. + (add_comp_dir_attribute): Call add_filepath_AT_string. + (gen_compile_unit_die): Call add_filename_attribute for name. + (init_sections_and_labels): Init debug_line_str_section when + asm_outputs_debug_line_str return true. + (dwarf2out_early_finish): Remove DW_AT_name and DW_AT_comp_dir + hack and call add_filename_attribute for the remap_debug_filename. + +2020-10-07 Jakub Jelinek + + * configure.ac (HAVE_AS_GDWARF_5_DEBUG_FLAG, + HAVE_AS_WORKING_DWARF_4_FLAG): New tests. + * gcc.c (ASM_DEBUG_DWARF_OPTION): Define. + (ASM_DEBUG_SPEC): Use ASM_DEBUG_DWARF_OPTION instead of + "--gdwarf2". Use %{cond:opt1;:opt2} style. + (ASM_DEBUG_OPTION_DWARF_OPT): Define. + (ASM_DEBUG_OPTION_SPEC): Define. + (asm_debug_option): New variable. + (asm_options): Add "%(asm_debug_option)". + (static_specs): Add asm_debug_option entry. + (static_spec_functions): Add dwarf-version-gt. + (debug_level_greater_than_spec_func): New function. + * config/darwin.h (ASM_DEBUG_OPTION_SPEC): Define. + * config/darwin9.h (ASM_DEBUG_OPTION_SPEC): Redefine. + * config.in: Regenerated. + * configure: Regenerated. + +2020-10-07 Jakub Jelinek + + PR bootstrap/97305 + * optc-save-gen.awk: Don't declare mask variable if explicit_mask + array is not present. + +2020-10-07 Jakub Jelinek + + * omp-expand.c (expand_omp_simd): Don't emit MIN_EXPR and PLUS_EXPR + at the end of entry_bb and innermost init_bb, instead force arguments + for MIN_EXPR into temporaries in both cases and jump to a new bb that + performs MIN_EXPR and PLUS_EXPR. + +2020-10-07 Tom de Vries + + * tree-ssa-loop-ch.c (ch_base::copy_headers): Add missing NULL test + for dump_file. + +2020-10-06 Andrew MacLeod + + * flag-types.h (enum evrp_mode): New enumerated type EVRP_MODE_*. + * common.opt (fevrp-mode): New undocumented flag. + * gimple-ssa-evrp.c: Include gimple-range.h + (class rvrp_folder): EVRP folding using ranger exclusively. + (rvrp_folder::rvrp_folder): New. + (rvrp_folder::~rvrp_folder): New. + (rvrp_folder::value_of_expr): New. Use rangers value_of_expr. + (rvrp_folder::value_on_edge): New. Use rangers value_on_edge. + (rvrp_folder::value_of_Stmt): New. Use rangers value_of_stmt. + (rvrp_folder::fold_stmt): New. Call the simplifier. + (class hybrid_folder): EVRP folding using both engines. + (hybrid_folder::hybrid_folder): New. + (hybrid_folder::~hybrid_folder): New. + (hybrid_folder::fold_stmt): New. Simplify with one engne, then the + other. + (hybrid_folder::value_of_expr): New. Use both value routines. + (hybrid_folder::value_on_edge): New. Use both value routines. + (hybrid_folder::value_of_stmt): New. Use both value routines. + (hybrid_folder::choose_value): New. Choose between range_analzyer and + rangers values. + (execute_early_vrp): Choose a folder based on flag_evrp_mode. + * vr-values.c (simplify_using_ranges::fold_cond): Try range_of_stmt + first to see if it returns a value. + (simplify_using_ranges::simplify_switch_using_ranges): Return true if + any changes were made to the switch. + +2020-10-06 Andrew MacLeod + + * Makefile.in (OBJS): Add gimple-range*.o. + * gimple-range.h: New file. + * gimple-range.cc: New file. + * gimple-range-cache.h: New file. + * gimple-range-cache.cc: New file. + * gimple-range-edge.h: New file. + * gimple-range-edge.cc: New file. + * gimple-range-gori.h: New file. + * gimple-range-gori.cc: New file. + +2020-10-06 Dennis Zhang + + * config/arm/arm.c (arm_preferred_simd_mode): Enable MVE SIMD modes. + +2020-10-06 Tom de Vries + + PR middle-end/90861 + * gimplify.c (gimplify_bind_expr): Handle lookup in + oacc_declare_returns using key with decl-expr. + +2020-10-06 Srinath Parvathaneni + + * config/arm/iterators.md (MVE_types): Move mode iterator from mve.md to + iterators.md. + (MVE_VLD_ST): Likewise. + (MVE_0): Likewise. + (MVE_1): Likewise. + (MVE_3): Likewise. + (MVE_2): Likewise. + (MVE_5): Likewise. + (MVE_6): Likewise. + (MVE_CNVT): Move mode attribute iterator from mve.md to iterators.md. + (MVE_LANES): Likewise. + (MVE_constraint): Likewise. + (MVE_constraint1): Likewise. + (MVE_constraint2): Likewise. + (MVE_constraint3): Likewise. + (MVE_pred): Likewise. + (MVE_pred1): Likewise. + (MVE_pred2): Likewise. + (MVE_pred3): Likewise. + (MVE_B_ELEM): Likewise. + (MVE_H_ELEM): Likewise. + (V_sz_elem1): Likewise. + (V_extr_elem): Likewise. + (earlyclobber_32): Likewise. + (supf): Move int attribute from mve.md to iterators.md. + (mode1): Likewise. + (VCVTQ_TO_F): Move int iterator from mve.md to iterators.md. + (VMVNQ_N): Likewise. + (VREV64Q): Likewise. + (VCVTQ_FROM_F): Likewise. + (VREV16Q): Likewise. + (VCVTAQ): Likewise. + (VMVNQ): Likewise. + (VDUPQ_N): Likewise. + (VCLZQ): Likewise. + (VADDVQ): Likewise. + (VREV32Q): Likewise. + (VMOVLBQ): Likewise. + (VMOVLTQ): Likewise. + (VCVTPQ): Likewise. + (VCVTNQ): Likewise. + (VCVTMQ): Likewise. + (VADDLVQ): Likewise. + (VCTPQ): Likewise. + (VCTPQ_M): Likewise. + (VCVTQ_N_TO_F): Likewise. + (VCREATEQ): Likewise. + (VSHRQ_N): Likewise. + (VCVTQ_N_FROM_F): Likewise. + (VADDLVQ_P): Likewise. + (VCMPNEQ): Likewise. + (VSHLQ): Likewise. + (VABDQ): Likewise. + (VADDQ_N): Likewise. + (VADDVAQ): Likewise. + (VADDVQ_P): Likewise. + (VANDQ): Likewise. + (VBICQ): Likewise. + (VBRSRQ_N): Likewise. + (VCADDQ_ROT270): Likewise. + (VCADDQ_ROT90): Likewise. + (VCMPEQQ): Likewise. + (VCMPEQQ_N): Likewise. + (VCMPNEQ_N): Likewise. + (VEORQ): Likewise. + (VHADDQ): Likewise. + (VHADDQ_N): Likewise. + (VHSUBQ): Likewise. + (VHSUBQ_N): Likewise. + (VMAXQ): Likewise. + (VMAXVQ): Likewise. + (VMINQ): Likewise. + (VMINVQ): Likewise. + (VMLADAVQ): Likewise. + (VMULHQ): Likewise. + (VMULLBQ_INT): Likewise. + (VMULLTQ_INT): Likewise. + (VMULQ): Likewise. + (VMULQ_N): Likewise. + (VORNQ): Likewise. + (VORRQ): Likewise. + (VQADDQ): Likewise. + (VQADDQ_N): Likewise. + (VQRSHLQ): Likewise. + (VQRSHLQ_N): Likewise. + (VQSHLQ): Likewise. + (VQSHLQ_N): Likewise. + (VQSHLQ_R): Likewise. + (VQSUBQ): Likewise. + (VQSUBQ_N): Likewise. + (VRHADDQ): Likewise. + (VRMULHQ): Likewise. + (VRSHLQ): Likewise. + (VRSHLQ_N): Likewise. + (VRSHRQ_N): Likewise. + (VSHLQ_N): Likewise. + (VSHLQ_R): Likewise. + (VSUBQ): Likewise. + (VSUBQ_N): Likewise. + (VADDLVAQ): Likewise. + (VBICQ_N): Likewise. + (VMLALDAVQ): Likewise. + (VMLALDAVXQ): Likewise. + (VMOVNBQ): Likewise. + (VMOVNTQ): Likewise. + (VORRQ_N): Likewise. + (VQMOVNBQ): Likewise. + (VQMOVNTQ): Likewise. + (VSHLLBQ_N): Likewise. + (VSHLLTQ_N): Likewise. + (VRMLALDAVHQ): Likewise. + (VBICQ_M_N): Likewise. + (VCVTAQ_M): Likewise. + (VCVTQ_M_TO_F): Likewise. + (VQRSHRNBQ_N): Likewise. + (VABAVQ): Likewise. + (VSHLCQ): Likewise. + (VRMLALDAVHAQ): Likewise. + (VADDVAQ_P): Likewise. + (VCLZQ_M): Likewise. + (VCMPEQQ_M_N): Likewise. + (VCMPEQQ_M): Likewise. + (VCMPNEQ_M_N): Likewise. + (VCMPNEQ_M): Likewise. + (VDUPQ_M_N): Likewise. + (VMAXVQ_P): Likewise. + (VMINVQ_P): Likewise. + (VMLADAVAQ): Likewise. + (VMLADAVQ_P): Likewise. + (VMLAQ_N): Likewise. + (VMLASQ_N): Likewise. + (VMVNQ_M): Likewise. + (VPSELQ): Likewise. + (VQDMLAHQ_N): Likewise. + (VQRDMLAHQ_N): Likewise. + (VQRDMLASHQ_N): Likewise. + (VQRSHLQ_M_N): Likewise. + (VQSHLQ_M_R): Likewise. + (VREV64Q_M): Likewise. + (VRSHLQ_M_N): Likewise. + (VSHLQ_M_R): Likewise. + (VSLIQ_N): Likewise. + (VSRIQ_N): Likewise. + (VMLALDAVQ_P): Likewise. + (VQMOVNBQ_M): Likewise. + (VMOVLTQ_M): Likewise. + (VMOVNBQ_M): Likewise. + (VRSHRNTQ_N): Likewise. + (VORRQ_M_N): Likewise. + (VREV32Q_M): Likewise. + (VREV16Q_M): Likewise. + (VQRSHRNTQ_N): Likewise. + (VMOVNTQ_M): Likewise. + (VMOVLBQ_M): Likewise. + (VMLALDAVAQ): Likewise. + (VQSHRNBQ_N): Likewise. + (VSHRNBQ_N): Likewise. + (VRSHRNBQ_N): Likewise. + (VMLALDAVXQ_P): Likewise. + (VQMOVNTQ_M): Likewise. + (VMVNQ_M_N): Likewise. + (VQSHRNTQ_N): Likewise. + (VMLALDAVAXQ): Likewise. + (VSHRNTQ_N): Likewise. + (VCVTMQ_M): Likewise. + (VCVTNQ_M): Likewise. + (VCVTPQ_M): Likewise. + (VCVTQ_M_N_FROM_F): Likewise. + (VCVTQ_M_FROM_F): Likewise. + (VRMLALDAVHQ_P): Likewise. + (VADDLVAQ_P): Likewise. + (VABAVQ_P): Likewise. + (VSHLQ_M): Likewise. + (VSRIQ_M_N): Likewise. + (VSUBQ_M): Likewise. + (VCVTQ_M_N_TO_F): Likewise. + (VHSUBQ_M): Likewise. + (VSLIQ_M_N): Likewise. + (VRSHLQ_M): Likewise. + (VMINQ_M): Likewise. + (VMULLBQ_INT_M): Likewise. + (VMULHQ_M): Likewise. + (VMULQ_M): Likewise. + (VHSUBQ_M_N): Likewise. + (VHADDQ_M_N): Likewise. + (VORRQ_M): Likewise. + (VRMULHQ_M): Likewise. + (VQADDQ_M): Likewise. + (VRSHRQ_M_N): Likewise. + (VQSUBQ_M_N): Likewise. + (VADDQ_M): Likewise. + (VORNQ_M): Likewise. + (VRHADDQ_M): Likewise. + (VQSHLQ_M): Likewise. + (VANDQ_M): Likewise. + (VBICQ_M): Likewise. + (VSHLQ_M_N): Likewise. + (VCADDQ_ROT270_M): Likewise. + (VQRSHLQ_M): Likewise. + (VQADDQ_M_N): Likewise. + (VADDQ_M_N): Likewise. + (VMAXQ_M): Likewise. + (VQSUBQ_M): Likewise. + (VMLASQ_M_N): Likewise. + (VMLADAVAQ_P): Likewise. + (VBRSRQ_M_N): Likewise. + (VMULQ_M_N): Likewise. + (VCADDQ_ROT90_M): Likewise. + (VMULLTQ_INT_M): Likewise. + (VEORQ_M): Likewise. + (VSHRQ_M_N): Likewise. + (VSUBQ_M_N): Likewise. + (VHADDQ_M): Likewise. + (VABDQ_M): Likewise. + (VMLAQ_M_N): Likewise. + (VQSHLQ_M_N): Likewise. + (VMLALDAVAQ_P): Likewise. + (VMLALDAVAXQ_P): Likewise. + (VQRSHRNBQ_M_N): Likewise. + (VQRSHRNTQ_M_N): Likewise. + (VQSHRNBQ_M_N): Likewise. + (VQSHRNTQ_M_N): Likewise. + (VRSHRNBQ_M_N): Likewise. + (VRSHRNTQ_M_N): Likewise. + (VSHLLBQ_M_N): Likewise. + (VSHLLTQ_M_N): Likewise. + (VSHRNBQ_M_N): Likewise. + (VSHRNTQ_M_N): Likewise. + (VSTRWSBQ): Likewise. + (VSTRBSOQ): Likewise. + (VSTRBQ): Likewise. + (VLDRBGOQ): Likewise. + (VLDRBQ): Likewise. + (VLDRWGBQ): Likewise. + (VLD1Q): Likewise. + (VLDRHGOQ): Likewise. + (VLDRHGSOQ): Likewise. + (VLDRHQ): Likewise. + (VLDRWQ): Likewise. + (VLDRDGBQ): Likewise. + (VLDRDGOQ): Likewise. + (VLDRDGSOQ): Likewise. + (VLDRWGOQ): Likewise. + (VLDRWGSOQ): Likewise. + (VST1Q): Likewise. + (VSTRHSOQ): Likewise. + (VSTRHSSOQ): Likewise. + (VSTRHQ): Likewise. + (VSTRWQ): Likewise. + (VSTRDSBQ): Likewise. + (VSTRDSOQ): Likewise. + (VSTRDSSOQ): Likewise. + (VSTRWSOQ): Likewise. + (VSTRWSSOQ): Likewise. + (VSTRWSBWBQ): Likewise. + (VLDRWGBWBQ): Likewise. + (VSTRDSBWBQ): Likewise. + (VLDRDGBWBQ): Likewise. + (VADCIQ): Likewise. + (VADCIQ_M): Likewise. + (VSBCQ): Likewise. + (VSBCQ_M): Likewise. + (VSBCIQ): Likewise. + (VSBCIQ_M): Likewise. + (VADCQ): Likewise. + (VADCQ_M): Likewise. + (UQRSHLLQ): Likewise. + (SQRSHRLQ): Likewise. + (VSHLCQ_M): Likewise. + * config/arm/mve.md (MVE_types): Move mode iterator to iterators.md from mve.md. + (MVE_VLD_ST): Likewise. + (MVE_0): Likewise. + (MVE_1): Likewise. + (MVE_3): Likewise. + (MVE_2): Likewise. + (MVE_5): Likewise. + (MVE_6): Likewise. + (MVE_CNVT): Move mode attribute iterator to iterators.md from mve.md. + (MVE_LANES): Likewise. + (MVE_constraint): Likewise. + (MVE_constraint1): Likewise. + (MVE_constraint2): Likewise. + (MVE_constraint3): Likewise. + (MVE_pred): Likewise. + (MVE_pred1): Likewise. + (MVE_pred2): Likewise. + (MVE_pred3): Likewise. + (MVE_B_ELEM): Likewise. + (MVE_H_ELEM): Likewise. + (V_sz_elem1): Likewise. + (V_extr_elem): Likewise. + (earlyclobber_32): Likewise. + (supf): Move int attribute to iterators.md from mve.md. + (mode1): Likewise. + (VCVTQ_TO_F): Move int iterator to iterators.md from mve.md. + (VMVNQ_N): Likewise. + (VREV64Q): Likewise. + (VCVTQ_FROM_F): Likewise. + (VREV16Q): Likewise. + (VCVTAQ): Likewise. + (VMVNQ): Likewise. + (VDUPQ_N): Likewise. + (VCLZQ): Likewise. + (VADDVQ): Likewise. + (VREV32Q): Likewise. + (VMOVLBQ): Likewise. + (VMOVLTQ): Likewise. + (VCVTPQ): Likewise. + (VCVTNQ): Likewise. + (VCVTMQ): Likewise. + (VADDLVQ): Likewise. + (VCTPQ): Likewise. + (VCTPQ_M): Likewise. + (VCVTQ_N_TO_F): Likewise. + (VCREATEQ): Likewise. + (VSHRQ_N): Likewise. + (VCVTQ_N_FROM_F): Likewise. + (VADDLVQ_P): Likewise. + (VCMPNEQ): Likewise. + (VSHLQ): Likewise. + (VABDQ): Likewise. + (VADDQ_N): Likewise. + (VADDVAQ): Likewise. + (VADDVQ_P): Likewise. + (VANDQ): Likewise. + (VBICQ): Likewise. + (VBRSRQ_N): Likewise. + (VCADDQ_ROT270): Likewise. + (VCADDQ_ROT90): Likewise. + (VCMPEQQ): Likewise. + (VCMPEQQ_N): Likewise. + (VCMPNEQ_N): Likewise. + (VEORQ): Likewise. + (VHADDQ): Likewise. + (VHADDQ_N): Likewise. + (VHSUBQ): Likewise. + (VHSUBQ_N): Likewise. + (VMAXQ): Likewise. + (VMAXVQ): Likewise. + (VMINQ): Likewise. + (VMINVQ): Likewise. + (VMLADAVQ): Likewise. + (VMULHQ): Likewise. + (VMULLBQ_INT): Likewise. + (VMULLTQ_INT): Likewise. + (VMULQ): Likewise. + (VMULQ_N): Likewise. + (VORNQ): Likewise. + (VORRQ): Likewise. + (VQADDQ): Likewise. + (VQADDQ_N): Likewise. + (VQRSHLQ): Likewise. + (VQRSHLQ_N): Likewise. + (VQSHLQ): Likewise. + (VQSHLQ_N): Likewise. + (VQSHLQ_R): Likewise. + (VQSUBQ): Likewise. + (VQSUBQ_N): Likewise. + (VRHADDQ): Likewise. + (VRMULHQ): Likewise. + (VRSHLQ): Likewise. + (VRSHLQ_N): Likewise. + (VRSHRQ_N): Likewise. + (VSHLQ_N): Likewise. + (VSHLQ_R): Likewise. + (VSUBQ): Likewise. + (VSUBQ_N): Likewise. + (VADDLVAQ): Likewise. + (VBICQ_N): Likewise. + (VMLALDAVQ): Likewise. + (VMLALDAVXQ): Likewise. + (VMOVNBQ): Likewise. + (VMOVNTQ): Likewise. + (VORRQ_N): Likewise. + (VQMOVNBQ): Likewise. + (VQMOVNTQ): Likewise. + (VSHLLBQ_N): Likewise. + (VSHLLTQ_N): Likewise. + (VRMLALDAVHQ): Likewise. + (VBICQ_M_N): Likewise. + (VCVTAQ_M): Likewise. + (VCVTQ_M_TO_F): Likewise. + (VQRSHRNBQ_N): Likewise. + (VABAVQ): Likewise. + (VSHLCQ): Likewise. + (VRMLALDAVHAQ): Likewise. + (VADDVAQ_P): Likewise. + (VCLZQ_M): Likewise. + (VCMPEQQ_M_N): Likewise. + (VCMPEQQ_M): Likewise. + (VCMPNEQ_M_N): Likewise. + (VCMPNEQ_M): Likewise. + (VDUPQ_M_N): Likewise. + (VMAXVQ_P): Likewise. + (VMINVQ_P): Likewise. + (VMLADAVAQ): Likewise. + (VMLADAVQ_P): Likewise. + (VMLAQ_N): Likewise. + (VMLASQ_N): Likewise. + (VMVNQ_M): Likewise. + (VPSELQ): Likewise. + (VQDMLAHQ_N): Likewise. + (VQRDMLAHQ_N): Likewise. + (VQRDMLASHQ_N): Likewise. + (VQRSHLQ_M_N): Likewise. + (VQSHLQ_M_R): Likewise. + (VREV64Q_M): Likewise. + (VRSHLQ_M_N): Likewise. + (VSHLQ_M_R): Likewise. + (VSLIQ_N): Likewise. + (VSRIQ_N): Likewise. + (VMLALDAVQ_P): Likewise. + (VQMOVNBQ_M): Likewise. + (VMOVLTQ_M): Likewise. + (VMOVNBQ_M): Likewise. + (VRSHRNTQ_N): Likewise. + (VORRQ_M_N): Likewise. + (VREV32Q_M): Likewise. + (VREV16Q_M): Likewise. + (VQRSHRNTQ_N): Likewise. + (VMOVNTQ_M): Likewise. + (VMOVLBQ_M): Likewise. + (VMLALDAVAQ): Likewise. + (VQSHRNBQ_N): Likewise. + (VSHRNBQ_N): Likewise. + (VRSHRNBQ_N): Likewise. + (VMLALDAVXQ_P): Likewise. + (VQMOVNTQ_M): Likewise. + (VMVNQ_M_N): Likewise. + (VQSHRNTQ_N): Likewise. + (VMLALDAVAXQ): Likewise. + (VSHRNTQ_N): Likewise. + (VCVTMQ_M): Likewise. + (VCVTNQ_M): Likewise. + (VCVTPQ_M): Likewise. + (VCVTQ_M_N_FROM_F): Likewise. + (VCVTQ_M_FROM_F): Likewise. + (VRMLALDAVHQ_P): Likewise. + (VADDLVAQ_P): Likewise. + (VABAVQ_P): Likewise. + (VSHLQ_M): Likewise. + (VSRIQ_M_N): Likewise. + (VSUBQ_M): Likewise. + (VCVTQ_M_N_TO_F): Likewise. + (VHSUBQ_M): Likewise. + (VSLIQ_M_N): Likewise. + (VRSHLQ_M): Likewise. + (VMINQ_M): Likewise. + (VMULLBQ_INT_M): Likewise. + (VMULHQ_M): Likewise. + (VMULQ_M): Likewise. + (VHSUBQ_M_N): Likewise. + (VHADDQ_M_N): Likewise. + (VORRQ_M): Likewise. + (VRMULHQ_M): Likewise. + (VQADDQ_M): Likewise. + (VRSHRQ_M_N): Likewise. + (VQSUBQ_M_N): Likewise. + (VADDQ_M): Likewise. + (VORNQ_M): Likewise. + (VRHADDQ_M): Likewise. + (VQSHLQ_M): Likewise. + (VANDQ_M): Likewise. + (VBICQ_M): Likewise. + (VSHLQ_M_N): Likewise. + (VCADDQ_ROT270_M): Likewise. + (VQRSHLQ_M): Likewise. + (VQADDQ_M_N): Likewise. + (VADDQ_M_N): Likewise. + (VMAXQ_M): Likewise. + (VQSUBQ_M): Likewise. + (VMLASQ_M_N): Likewise. + (VMLADAVAQ_P): Likewise. + (VBRSRQ_M_N): Likewise. + (VMULQ_M_N): Likewise. + (VCADDQ_ROT90_M): Likewise. + (VMULLTQ_INT_M): Likewise. + (VEORQ_M): Likewise. + (VSHRQ_M_N): Likewise. + (VSUBQ_M_N): Likewise. + (VHADDQ_M): Likewise. + (VABDQ_M): Likewise. + (VMLAQ_M_N): Likewise. + (VQSHLQ_M_N): Likewise. + (VMLALDAVAQ_P): Likewise. + (VMLALDAVAXQ_P): Likewise. + (VQRSHRNBQ_M_N): Likewise. + (VQRSHRNTQ_M_N): Likewise. + (VQSHRNBQ_M_N): Likewise. + (VQSHRNTQ_M_N): Likewise. + (VRSHRNBQ_M_N): Likewise. + (VRSHRNTQ_M_N): Likewise. + (VSHLLBQ_M_N): Likewise. + (VSHLLTQ_M_N): Likewise. + (VSHRNBQ_M_N): Likewise. + (VSHRNTQ_M_N): Likewise. + (VSTRWSBQ): Likewise. + (VSTRBSOQ): Likewise. + (VSTRBQ): Likewise. + (VLDRBGOQ): Likewise. + (VLDRBQ): Likewise. + (VLDRWGBQ): Likewise. + (VLD1Q): Likewise. + (VLDRHGOQ): Likewise. + (VLDRHGSOQ): Likewise. + (VLDRHQ): Likewise. + (VLDRWQ): Likewise. + (VLDRDGBQ): Likewise. + (VLDRDGOQ): Likewise. + (VLDRDGSOQ): Likewise. + (VLDRWGOQ): Likewise. + (VLDRWGSOQ): Likewise. + (VST1Q): Likewise. + (VSTRHSOQ): Likewise. + (VSTRHSSOQ): Likewise. + (VSTRHQ): Likewise. + (VSTRWQ): Likewise. + (VSTRDSBQ): Likewise. + (VSTRDSOQ): Likewise. + (VSTRDSSOQ): Likewise. + (VSTRWSOQ): Likewise. + (VSTRWSSOQ): Likewise. + (VSTRWSBWBQ): Likewise. + (VLDRWGBWBQ): Likewise. + (VSTRDSBWBQ): Likewise. + (VLDRDGBWBQ): Likewise. + (VADCIQ): Likewise. + (VADCIQ_M): Likewise. + (VSBCQ): Likewise. + (VSBCQ_M): Likewise. + (VSBCIQ): Likewise. + (VSBCIQ_M): Likewise. + (VADCQ): Likewise. + (VADCQ_M): Likewise. + (UQRSHLLQ): Likewise. + (SQRSHRLQ): Likewise. + (VSHLCQ_M): Likewise. + (define_c_enum "unspec"): Move MVE enumerator to unspecs.md from mve.md. + * config/arm/unspecs.md (define_c_enum "unspec"): Move MVE enumerator from + mve.md to unspecs.md. + +2020-10-06 Martin Liska + + * common.opt: Remove -fdbg-cnt-list from deferred options. + * dbgcnt.c (dbg_cnt_set_limit_by_index): Make a copy + to original_limits. + (dbg_cnt_list_all_counters): Print also current counter value + and print to stderr. + * opts-global.c (handle_common_deferred_options): Do not handle + -fdbg-cnt-list. + * opts.c (common_handle_option): Likewise. + * toplev.c (finalize): Handle it after compilation here. + +2020-10-06 Martin Liska + + * dbgcnt.c (dbg_cnt): Report also upper limit. + +2020-10-06 Tom de Vries + + * tracer.c (count_insns): Rename to ... + (analyze_bb): ... this. + (cache_can_duplicate_bb_p, cached_can_duplicate_bb_p): New function. + (ignore_bb_p): Use cached_can_duplicate_bb_p. + (tail_duplicate): Call cache_can_duplicate_bb_p. + +2020-10-06 Tom de Vries + + * tracer.c (can_duplicate_insn_p, can_duplicate_bb_no_insn_iter_p) + (can_duplicate_bb_p): New function, factored out of ... + (ignore_bb_p): ... here. + +2020-10-06 Jakub Jelinek + + PR rtl-optimization/97282 + * tree-ssa-math-opts.c (divmod_candidate_p): Don't return false for + constant op2 if it is not a power of two and the type has precision + larger than HOST_BITS_PER_WIDE_INT or BITS_PER_WORD. + * internal-fn.c (contains_call_div_mod): New function. + (expand_DIVMOD): If last argument is a constant, try to expand it as + TRUNC_DIV_EXPR followed by TRUNC_MOD_EXPR, but if the sequence + contains any calls or {,U}{DIV,MOD} rtxes, throw it away and use + divmod optab or divmod libfunc. + +2020-10-06 Aldy Hernandez + + * value-range.h (irange_allocator::allocate): Increase + newir storage by one. + +2020-10-06 Jakub Jelinek + + PR middle-end/97289 + * omp-offload.c (omp_discover_declare_target_tgt_fn_r): Only follow + node->alias_target if it is a FUNCTION_DECL. + +2020-10-06 Joe Ramsay + + * config/arm/arm-cpus.in: + (ALL_FPU_INTERNAL): Remove vfp_base. + (VFPv2): Remove vfp_base. + (MVE): Remove vfp_base. + (vfp_base): Redefine as implied bit dependent on MVE or FP + (cortex-m55): Add flags to disable MVE, MVE FP, FP and DSP extensions. + * config/arm/arm.c (arm_configure_build_target): Add implied bits to ISA. + * config/arm/parsecpu.awk: + (gen_isa): Print implied bits and their dependencies to ISA header. + (gen_data): Add parsing for implied feature bits. + +2020-10-06 Andreas Krebbel + + * doc/invoke.texi: Add z15/arch13 to the list of documented + -march/-mtune options. + +2020-10-05 Dennis Zhang + + * config/arm/arm.c (arm_preferred_simd_mode): Enable MVE SIMD modes. + +2020-10-05 Aldy Hernandez + + * value-range.cc (irange::legacy_intersect): Only handle + legacy ranges. + (irange::legacy_union): Same. + (irange::union_): When unioning legacy with non-legacy, + first convert to legacy and do everything in legacy mode. + (irange::intersect): Same, but for intersect. + * range-op.cc (range_tests): Adjust for above changes. + +2020-10-05 Aldy Hernandez + + * range-op.cc (operator_div::wi_fold): Return varying for + division by zero. + (class operator_rshift): Move class up. + (operator_abs::wi_fold): Return [-MIN,-MIN] for ABS([-MIN,-MIN]). + (operator_tests): Adjust tests. + +2020-10-05 Tom de Vries + + * tracer.c (ignore_bb_p): Ignore GOMP_SIMT_XCHG_*. + +2020-10-05 Alex Coplan + + * config/arm/arm-cpus.in (neoverse-v1): Add missing vendor and + part numbers. + +2020-10-05 Tom de Vries + + * tracer.c (ignore_bb_p): Remove incorrect suggestion. + +2020-10-05 Jakub Jelinek + + * opth-gen.awk: Don't emit explicit_mask array if n_target_explicit + is equal to n_target_explicit_mask. + * optc-save-gen.awk: Compute has_target_explicit_mask and if false, + don't emit code iterating over explicit_mask array elements. Stream + also explicit_mask_* target members. + +2020-10-05 Jakub Jelinek + + * gimple-ssa-store-merging.c + (imm_store_chain_info::output_merged_store): Use ~0U instead of ~0 in + unsigned int array initializer. + +2020-10-05 Tom de Vries + + PR fortran/95654 + * tracer.c (ignore_bb_p): Ignore GOMP_SIMT_ENTER_ALLOC, + GOMP_SIMT_VOTE_ANY and GOMP_SIMT_EXIT. + +2020-10-03 Jakub Jelinek + + * opth-gen.awk: For variables referenced in Mask and InverseMask, + don't use the explicit_mask bitmask array, but add separate + explicit_mask_* members with the same types as the variables. + * optc-save-gen.awk: Save, restore, compare and hash the separate + explicit_mask_* members. + +2020-10-03 Jan Hubicka + + * ipa-modref-tree.c (test_insert_search_collapse): Update andling + of accesses. + (test_merge): Likewise. + * ipa-modref-tree.h (struct modref_access_node): Add offset, size, + max_size, parm_offset and parm_offset_known. + (modref_access_node::useful_p): Constify. + (modref_access_node::range_info_useful_p): New predicate. + (modref_access_node::operator==): New. + (struct modref_parm_map): New structure. + (modref_tree::merge): Update for racking parameters) + * ipa-modref.c (dump_access): Dump new fields. + (get_access): Fill in new fields. + (merge_call_side_effects): Update handling of parm map. + (write_modref_records): Stream new fields. + (read_modref_records): Stream new fields. + (compute_parm_map): Update for new parm map. + (ipa_merge_modref_summary_after_inlining): Update. + (modref_propagate_in_scc): Update. + * tree-ssa-alias.c (modref_may_conflict): Handle known ranges. + +2020-10-03 H.J. Lu + + PR other/97280 + * doc/extend.texi: Replace roudnevenl with roundevenl + +2020-10-02 David Edelsohn + Andrew MacLeod + + * config/rs6000/rs6000.c: Include ssa.h. Reorder some headers. + * config/rs6000/rs6000-call.c: Same. + +2020-10-02 Martin Jambor + + * params.opt (ipa-cp-large-unit-insns): New parameter. + * ipa-cp.c (get_max_overall_size): Use the new parameter. + +2020-10-02 Martin Jambor + + * ipa-cp.c (estimate_local_effects): Add overeall_size to dumped + string. + (decide_about_value): Add dumping new overall_size. + +2020-10-02 Martin Jambor + + * ipa-fnsummary.h (ipa_freqcounting_predicate): New type. + (ipa_fn_summary): Change the type of loop_iterations and loop_strides + to vectors of ipa_freqcounting_predicate. + (ipa_fn_summary::ipa_fn_summary): Construct the new vectors. + (ipa_call_estimates): New fields loops_with_known_iterations and + loops_with_known_strides. + * ipa-cp.c (hint_time_bonus): Multiply param_ipa_cp_loop_hint_bonus + with the expected frequencies of loops with known iteration count or + stride. + * ipa-fnsummary.c (add_freqcounting_predicate): New function. + (ipa_fn_summary::~ipa_fn_summary): Release the new vectors instead of + just two predicates. + (remap_hint_predicate_after_duplication): Replace with function + remap_freqcounting_preds_after_dup. + (ipa_fn_summary_t::duplicate): Use it or duplicate new vectors. + (ipa_dump_fn_summary): Dump the new vectors. + (analyze_function_body): Compute the loop property vectors. + (ipa_call_context::estimate_size_and_time): Calculate also + loops_with_known_iterations and loops_with_known_strides. Adjusted + dumping accordinly. + (remap_hint_predicate): Replace with function + remap_freqcounting_predicate. + (ipa_merge_fn_summary_after_inlining): Use it. + (inline_read_section): Stream loopcounting vectors instead of two + simple predicates. + (ipa_fn_summary_write): Likewise. + * params.opt (ipa-max-loop-predicates): New parameter. + * doc/invoke.texi (ipa-max-loop-predicates): Document new param. + +2020-10-02 Martin Jambor + + * ipa-inline-analysis.c (do_estimate_edge_time): Adjusted to use + ipa_call_estimates. + (do_estimate_edge_size): Likewise. + (do_estimate_edge_hints): Likewise. + * ipa-fnsummary.h (struct ipa_call_estimates): New type. + (ipa_call_context::estimate_size_and_time): Adjusted declaration. + (estimate_ipcp_clone_size_and_time): Likewise. + * ipa-cp.c (hint_time_bonus): Changed the type of the second argument + to ipa_call_estimates. + (perform_estimation_of_a_value): Adjusted to use ipa_call_estimates. + (estimate_local_effects): Likewise. + * ipa-fnsummary.c (ipa_call_context::estimate_size_and_time): Adjusted + to return estimates in a single ipa_call_estimates parameter. + (estimate_ipcp_clone_size_and_time): Likewise. + +2020-10-02 Martin Jambor + + * ipa-fnsummary.h (ipa_cached_call_context): New forward declaration + and class. + (class ipa_call_context): Make friend ipa_cached_call_context. Moved + methods duplicate_from and release to it too. + * ipa-fnsummary.c (ipa_call_context::duplicate_from): Moved to class + ipa_cached_call_context. + (ipa_call_context::release): Likewise, removed the parameter. + * ipa-inline-analysis.c (node_context_cache_entry): Change the type of + ctx to ipa_cached_call_context. + (do_estimate_edge_time): Remove parameter from the call to + ipa_cached_call_context::release. + +2020-10-02 Martin Jambor + + * ipa-prop.h (ipa_auto_call_arg_values): New type. + (class ipa_call_arg_values): Likewise. + (ipa_get_indirect_edge_target): Replaced vector arguments with + ipa_call_arg_values in declaration. Added an overload for + ipa_auto_call_arg_values. + * ipa-fnsummary.h (ipa_call_context): Removed members m_known_vals, + m_known_contexts, m_known_aggs, duplicate_from, release and equal_to, + new members m_avals, store_to_cache and equivalent_to_p. Adjusted + construcotr arguments. + (estimate_ipcp_clone_size_and_time): Replaced vector arguments + with ipa_auto_call_arg_values in declaration. + (evaluate_properties_for_edge): Likewise. + * ipa-cp.c (ipa_get_indirect_edge_target): Adjusted to work on + ipa_call_arg_values rather than on separate vectors. Added an + overload for ipa_auto_call_arg_values. + (devirtualization_time_bonus): Adjusted to work on + ipa_auto_call_arg_values rather than on separate vectors. + (gather_context_independent_values): Adjusted to work on + ipa_auto_call_arg_values rather than on separate vectors. + (perform_estimation_of_a_value): Likewise. + (estimate_local_effects): Likewise. + (modify_known_vectors_with_val): Adjusted both variants to work on + ipa_auto_call_arg_values and rename them to + copy_known_vectors_add_val. + (decide_about_value): Adjusted to work on ipa_call_arg_values rather + than on separate vectors. + (decide_whether_version_node): Likewise. + * ipa-fnsummary.c (evaluate_conditions_for_known_args): Likewise. + (evaluate_properties_for_edge): Likewise. + (ipa_fn_summary_t::duplicate): Likewise. + (estimate_edge_devirt_benefit): Adjusted to work on + ipa_call_arg_values rather than on separate vectors. + (estimate_edge_size_and_time): Likewise. + (estimate_calls_size_and_time_1): Likewise. + (summarize_calls_size_and_time): Adjusted calls to + estimate_edge_size_and_time. + (estimate_calls_size_and_time): Adjusted to work on + ipa_call_arg_values rather than on separate vectors. + (ipa_call_context::ipa_call_context): Construct from a pointer to + ipa_auto_call_arg_values instead of inividual vectors. + (ipa_call_context::duplicate_from): Adjusted to access vectors within + m_avals. + (ipa_call_context::release): Likewise. + (ipa_call_context::equal_to): Likewise. + (ipa_call_context::estimate_size_and_time): Adjusted to work on + ipa_call_arg_values rather than on separate vectors. + (estimate_ipcp_clone_size_and_time): Adjusted to work with + ipa_auto_call_arg_values rather than on separate vectors. + (ipa_merge_fn_summary_after_inlining): Likewise. Adjusted call to + estimate_edge_size_and_time. + (ipa_update_overall_fn_summary): Adjusted call to + estimate_edge_size_and_time. + * ipa-inline-analysis.c (do_estimate_edge_time): Adjusted to work with + ipa_auto_call_arg_values rather than with separate vectors. + (do_estimate_edge_size): Likewise. + (do_estimate_edge_hints): Likewise. + * ipa-prop.c (ipa_auto_call_arg_values::~ipa_auto_call_arg_values): + New destructor. + +2020-10-02 Joe Ramsay + + * config/arm/arm_mve.h (__arm_vmaxnmavq): Remove coercion of scalar + argument. + (__arm_vmaxnmvq): Likewise. + (__arm_vminnmavq): Likewise. + (__arm_vminnmvq): Likewise. + (__arm_vmaxnmavq_p): Likewise. + (__arm_vmaxnmvq_p): Likewise (and delete duplicate definition). + (__arm_vminnmavq_p): Likewise. + (__arm_vminnmvq_p): Likewise. + (__arm_vmaxavq): Likewise. + (__arm_vmaxavq_p): Likewise. + (__arm_vmaxvq): Likewise. + (__arm_vmaxvq_p): Likewise. + (__arm_vminavq): Likewise. + (__arm_vminavq_p): Likewise. + (__arm_vminvq): Likewise. + (__arm_vminvq_p): Likewise. + +2020-10-02 Kyrylo Tkachov + + * config/aarch64/aarch64.c (neoversev1_tunings): Define. + * config/aarch64/aarch64-cores.def (zeus): Use it. + (neoverse-v1): Likewise. + +2020-10-02 Jan Hubicka + + * attr-fnspec.h: Update documentation. + (attr_fnsec::return_desc_size): Set to 2 + (attr_fnsec::arg_desc_size): Set to 2 + * builtin-attrs.def (STR1): Update fnspec. + * internal-fn.def (UBSAN_NULL): Update fnspec. + (UBSAN_VPTR): Update fnspec. + (UBSAN_PTR): Update fnspec. + (ASAN_CHECK): Update fnspec. + (GOACC_DIM_SIZE): Remove fnspec. + (GOACC_DIM_POS): Remove fnspec. + * tree-ssa-alias.c (attr_fnspec::verify): Update verification. + +2020-10-02 Jan Hubicka + + * attr-fnspec.h: New file. + * calls.c (decl_return_flags): Use attr_fnspec. + * gimple.c (gimple_call_arg_flags): Use attr_fnspec. + (gimple_call_return_flags): Use attr_fnspec. + * tree-into-ssa.c (pass_build_ssa::execute): Use attr_fnspec. + * tree-ssa-alias.c (attr_fnspec::verify): New member fuction. + +2020-10-02 Jan Hubicka + + * tree-ssa-alias.c (ao_ref_init_from_ptr_and_range): Break out from ... + (ao_ref_init_from_ptr_and_size): ... here. + +2020-10-02 Jan Hubicka + + * data-streamer-in.c (streamer_read_poly_int64): New function. + * data-streamer-out.c (streamer_write_poly_int64): New function. + * data-streamer.h (streamer_write_poly_int64): Declare. + (streamer_read_poly_int64): Declare. + +2020-10-02 Richard Sandiford + + * config/aarch64/aarch64-protos.h (aarch64_sve_pred_dominates_p): + Delete. + * config/aarch64/aarch64.c (aarch64_sve_pred_dominates_p): Likewise. + * config/aarch64/aarch64-sve.md: Add banner comment describing + how merging predicated FP operations are represented. + (*cond__2): Split into... + (*cond__2_relaxed): ...this and... + (*cond__2_strict): ...this. + (*cond__any): Split into... + (*cond__any_relaxed): ...this and... + (*cond__any_strict): ...this. + (*cond__2): Split into... + (*cond__2_relaxed): ...this and... + (*cond__2_strict): ...this. + (*cond__any): Split into... + (*cond__any_relaxed): ...this + and... + (*cond__any_strict): ...this. + (*cond__2): Split into... + (*cond__2_relaxed): ...this and... + (*cond__2_strict): ...this. + (*cond__2_const): Split into... + (*cond__2_const_relaxed): ...this + and... + (*cond__2_const_strict): ...this. + (*cond__3): Split into... + (*cond__3_relaxed): ...this and... + (*cond__3_strict): ...this. + (*cond__any): Split into... + (*cond__any_relaxed): ...this and... + (*cond__any_strict): ...this. + (*cond__any_const): Split into... + (*cond__any_const_relaxed): ...this + and... + (*cond__any_const_strict): ...this. + (*cond_add_2_const): Split into... + (*cond_add_2_const_relaxed): ...this and... + (*cond_add_2_const_strict): ...this. + (*cond_add_any_const): Split into... + (*cond_add_any_const_relaxed): ...this and... + (*cond_add_any_const_strict): ...this. + (*cond__2): Split into... + (*cond__2_relaxed): ...this and... + (*cond__2_strict): ...this. + (*cond__any): Split into... + (*cond__any_relaxed): ...this and... + (*cond__any_strict): ...this. + (*cond_sub_3_const): Split into... + (*cond_sub_3_const_relaxed): ...this and... + (*cond_sub_3_const_strict): ...this. + (*aarch64_pred_abd): Split into... + (*aarch64_pred_abd_relaxed): ...this and... + (*aarch64_pred_abd_strict): ...this. + (*aarch64_cond_abd_2): Split into... + (*aarch64_cond_abd_2_relaxed): ...this and... + (*aarch64_cond_abd_2_strict): ...this. + (*aarch64_cond_abd_3): Split into... + (*aarch64_cond_abd_3_relaxed): ...this and... + (*aarch64_cond_abd_3_strict): ...this. + (*aarch64_cond_abd_any): Split into... + (*aarch64_cond_abd_any_relaxed): ...this and... + (*aarch64_cond_abd_any_strict): ...this. + (*cond__2): Split into... + (*cond__2_relaxed): ...this and... + (*cond__2_strict): ...this. + (*cond__4): Split into... + (*cond__4_relaxed): ...this and... + (*cond__4_strict): ...this. + (*cond__any): Split into... + (*cond__any_relaxed): ...this and... + (*cond__any_strict): ...this. + (*cond__4): Split into... + (*cond__4_relaxed): ...this and... + (*cond__4_strict): ...this. + (*cond__any): Split into... + (*cond__any_relaxed): ...this and... + (*cond__any_strict): ...this. + (*aarch64_pred_fac): Split into... + (*aarch64_pred_fac_relaxed): ...this and... + (*aarch64_pred_fac_strict): ...this. + (*cond__nontrunc): Split + into... + (*cond__nontrunc_relaxed): + ...this and... + (*cond__nontrunc_strict): + ...this. + (*cond__nonextend): Split + into... + (*cond__nonextend_relaxed): + ...this and... + (*cond__nonextend_strict): + ...this. + * config/aarch64/aarch64-sve2.md + (*cond_): Split into... + (*cond__relaxed): ...this and... + (*cond__strict): ...this. + (*cond__any): Split into... + (*cond__any_relaxed): ...this + and... + (*cond__any_strict): ...this. + (*cond_): Split into... + (*cond__relaxed): ...this and... + (*cond__strict): ...this. + +2020-10-02 Richard Sandiford + + * config/arm/neon.md (*sub3_neon): Use the new mode macros + for the insn condition. + (sub3, *mul3_neon): Likewise. + (mul3add_neon): Likewise. + (mul3add_neon): Likewise. + (mul3negadd_neon): Likewise. + (fma4, fma4, *fmsub4): Likewise. + (quad_halves_v4sf, reduc_plus_scal_): Likewise. + (reduc_plus_scal_, reduc_smin_scal_): Likewise. + (reduc_smin_scal_, reduc_smax_scal_): Likewise. + (reduc_smax_scal_, mul3): Likewise. + (neon_vabd_2, neon_vabd_3): Likewise. + (fma4_intrinsic): Delete. + (neon_vadd): Use the new mode macros to decide which + form of instruction to generate. + (neon_vmla, neon_vmls): Likewise. + (neon_vsub): Likewise. + (neon_vfma): Generate the main fma4 form instead + of using fma4_intrinsic. + +2020-10-02 Martin Liska + + PR gcov-profile/97193 + * coverage.c (coverage_init): GCDA note files should not be + mangled and should end in output directory. + +2020-10-02 Jason Merril + + * gimple.h (gimple_call_operator_delete_p): Rename from + gimple_call_replaceable_operator_delete_p. + * gimple.c (gimple_call_operator_delete_p): Likewise. + * tree.h (DECL_IS_REPLACEABLE_OPERATOR_DELETE_P): Remove. + * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Adjust. + (propagate_necessity): Likewise. + (eliminate_unnecessary_stmts): Likewise. + * tree-ssa-structalias.c (find_func_aliases_for_call): Likewise. + +2020-10-02 Richard Biener + + * gimple.h (GF_CALL_FROM_NEW_OR_DELETE): New call flag. + (gimple_call_set_from_new_or_delete): New. + (gimple_call_from_new_or_delete): Likewise. + * gimple.c (gimple_build_call_from_tree): Set + GF_CALL_FROM_NEW_OR_DELETE appropriately. + * ipa-icf-gimple.c (func_checker::compare_gimple_call): + Compare gimple_call_from_new_or_delete. + * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Make + sure to only consider new/delete calls from new or delete + expressions. + (propagate_necessity): Likewise. + (eliminate_unnecessary_stmts): Likewise. + * tree-ssa-structalias.c (find_func_aliases_for_call): + Likewise. + +2020-10-02 Jason Merril + + * tree.h (CALL_FROM_NEW_OR_DELETE_P): Move from cp-tree.h. + * tree-core.h: Document new usage of protected_flag. + +2020-10-02 Aldy Hernandez + + * value-range.h (irange::fits_p): New. + +2020-10-01 Alan Modra + + * config/rs6000/rs6000.c (rs6000_legitimize_address): Use + gen_int_mode for high part of address constant. + +2020-10-01 Alan Modra + + * config/rs6000/rs6000.c (rs6000_linux64_override_options): + Formatting. Correct setting of TARGET_NO_FP_IN_TOC and + TARGET_NO_SUM_IN_TOC. + +2020-10-01 Alan Modra + + * config/rs6000/freebsd64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use + rs6000_linux64_override_options. + * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Break + out to.. + * config/rs6000/rs6000.c (rs6000_linux64_override_options): ..this, + new function. Tweak non-biarch test and clearing of + profile_kernel to work with freebsd64.h. + +2020-10-01 Martin Liska + + * config/rs6000/rs6000-call.c: Include value-range.h. + * config/rs6000/rs6000.c: Likewise. + +2020-10-01 Tom de Vries + + PR target/80845 + * config/nvptx/nvptx.md (define_insn "truncsi2"): Emit mov.u32 + instead of cvt.u32.u32. + +2020-10-01 Richard Sandiford + + PR target/96528 + PR target/97288 + * config/arm/arm-protos.h (arm_expand_vector_compare): Declare. + (arm_expand_vcond): Likewise. + * config/arm/arm.c (arm_expand_vector_compare): New function. + (arm_expand_vcond): Likewise. + * config/arm/neon.md (vec_cmp): New pattern. + (vec_cmpu): Likewise. + (vcond): Require operand 5 to be a register + or zero. Use arm_expand_vcond. + (vcond): New pattern. + (vcondu): Generalize to... + (vcondu): New pattern. + (neon_vc, neon_vc_insn): Add "@" marker. + (neon_vbsl): Likewise. + (neon_vcu): Reexpress as... + (@neon_vc): ...this. + +2020-10-01 Michael Davidsaver + + * config/i386/t-rtems: Change from mtune to march when building + multilibs. The mtune argument tunes or optimizes for a specific + CPU model but does not ensure the generated code is appropriate + for the CPU model. Prior to this patch, i386 compatible code + was always generated but tuned for later models. + +2020-10-01 Aldy Hernandez + + * builtins.c (compute_objsize): Replace vr_values with range_query. + (get_range): Same. + (gimple_call_alloc_size): Same. + * builtins.h (class vr_values): Remove. + (gimple_call_alloc_size): Replace vr_values with range_query. + * gimple-ssa-sprintf.c (get_int_range): Same. + (struct directive): Pass gimple context to fmtfunc callback. + (directive::set_width): Replace inline with out-of-line version. + (directive::set_precision): Same. + (format_none): New gimple argument. + (format_percent): New gimple argument. + (format_integer): New gimple argument. + (format_floating): New gimple argument. + (get_string_length): Use range_query API. + (format_character): New gimple argument. + (format_string): New gimple argument. + (format_plain): New gimple argument. + (format_directive): New gimple argument. + (parse_directive): Replace vr_values with range_query. + (compute_format_length): Same. + (handle_printf_call): Same. Adjust for range_query API. + * tree-ssa-strlen.c (get_range): Same. + (compare_nonzero_chars): Same. + (get_addr_stridx) Replace vr_values with range_query. + (get_stridx): Same. + (dump_strlen_info): Same. + (get_range_strlen_dynamic): Adjust for range_query API. + (set_strlen_range): Same + (maybe_warn_overflow): Replace vr_values with range_query. + (handle_builtin_strcpy): Same. + (maybe_diag_stxncpy_trunc): Add FIXME comment. + (handle_builtin_memcpy): Replace vr_values with range_query. + (handle_builtin_memset): Same. + (get_len_or_size): Same. + (strxcmp_eqz_result): Same. + (handle_builtin_string_cmp): Same. + (count_nonzero_bytes_addr): Same, plus adjust for range_query API. + (count_nonzero_bytes): Replace vr_values with range_query. + (handle_store): Same. + (strlen_check_and_optimize_call): Same. + (handle_integral_assign): Same. + (check_and_optimize_stmt): Same. + * tree-ssa-strlen.h (class vr_values): Remove. + (get_range): Replace vr_values with range_query. + (get_range_strlen_dynamic): Same. + (handle_printf_call): Same. + +2020-10-01 Aldy Hernandez + + * gimple-loop-versioning.cc (lv_dom_walker::before_dom_children): + Pass m_range_analyzer instead of get_vr_values. + (loop_versioning::name_prop::get_value): Rename to... + (loop_versioning::name_prop::value_of_expr): ...this. + * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::evrp_range_analyzer): + Adjust for evrp_range_analyzer + inheriting from vr_values. + (evrp_range_analyzer::try_find_new_range): Same. + (evrp_range_analyzer::record_ranges_from_incoming_edge): Same. + (evrp_range_analyzer::record_ranges_from_phis): Same. + (evrp_range_analyzer::record_ranges_from_stmt): Same. + (evrp_range_analyzer::push_value_range): Same. + (evrp_range_analyzer::pop_value_range): Same. + * gimple-ssa-evrp-analyze.h (class evrp_range_analyzer): Inherit from + vr_values. Adjust accordingly. + * gimple-ssa-evrp.c: Adjust for evrp_range_analyzer inheriting from + vr_values. + (evrp_folder::value_of_evrp): Rename from get_value. + * tree-ssa-ccp.c (class ccp_folder): Rename get_value to + value_of_expr. + (ccp_folder::get_value): Rename to... + (ccp_folder::value_of_expr): ...this. + * tree-ssa-copy.c (class copy_folder): Rename get_value to + value_of_expr. + (copy_folder::get_value): Rename to... + (copy_folder::value_of_expr): ...this. + * tree-ssa-dom.c (dom_opt_dom_walker::after_dom_children): Adjust + for evrp_range_analyzer inheriting from vr_values. + (dom_opt_dom_walker::optimize_stmt): Same. + * tree-ssa-propagate.c (substitute_and_fold_engine::replace_uses_in): + Call value_of_* instead of get_value. + (substitute_and_fold_engine::replace_phi_args_in): Same. + (substitute_and_fold_engine::propagate_into_phi_args): Same. + (substitute_and_fold_dom_walker::before_dom_children): Same. + * tree-ssa-propagate.h: Include value-query.h. + (class substitute_and_fold_engine): Inherit from value_query. + * tree-ssa-strlen.c (strlen_dom_walker::before_dom_children): + Adjust for evrp_range_analyzer inheriting from vr_values. + * tree-ssa-threadedge.c (record_temporary_equivalences_from_phis): + Same. + * tree-vrp.c (class vrp_folder): Same. + (vrp_folder::get_value): Rename to value_of_expr. + * vr-values.c (vr_values::get_lattice_entry): Adjust for + vr_values inheriting from range_query. + (vr_values::range_of_expr): New. + (vr_values::value_of_expr): New. + (vr_values::value_on_edge): New. + (vr_values::value_of_stmt): New. + (simplify_using_ranges::op_with_boolean_value_range_p): Call + get_value_range through query. + (check_for_binary_op_overflow): Rename store to query. + (vr_values::vr_values): Remove vrp_value_range_pool. + (vr_values::~vr_values): Same. + (simplify_using_ranges::get_vr_for_comparison): Call get_value_range + through query. + (simplify_using_ranges::compare_names): Same. + (simplify_using_ranges::vrp_evaluate_conditional): Same. + (simplify_using_ranges::vrp_visit_cond_stmt): Same. + (simplify_using_ranges::simplify_abs_using_ranges): Same. + (simplify_using_ranges::simplify_cond_using_ranges_1): Same. + (simplify_cond_using_ranges_2): Same. + (simplify_using_ranges::simplify_switch_using_ranges): Same. + (simplify_using_ranges::two_valued_val_range_p): Same. + (simplify_using_ranges::simplify_using_ranges): Rename store to query. + (simplify_using_ranges::simplify): Assert that we have a query. + * vr-values.h (class range_query): Remove. + (class simplify_using_ranges): Remove inheritance of range_query. + (class vr_values): Add virtuals for range_of_expr, value_of_expr, + value_on_edge, value_of_stmt, and get_value_range. + Call range_query allocator instead of using vrp_value_range_pool. + Remove vrp_value_range_pool. + (simplify_using_ranges::get_value_range): Remove. + +2020-10-01 Richard Biener + + PR tree-optimization/97236 + * tree-vect-stmts.c (get_group_load_store_type): Keep + VMAT_ELEMENTWISE for single-element vectors. + +2020-10-01 Jan Hubicka + + * ipa-modref.c (compute_parm_map): Be ready for callee_pi to be NULL. + +2020-10-01 Jan Hubicka + + PR ipa/97244 + * ipa-fnsummary.c (pass_free_fnsummary::execute): Free + also indirect inlining datastructure. + * ipa-modref.c (pass_ipa_modref::execute): Do not free them here. + * ipa-prop.c (ipa_free_all_node_params): Do not crash when info does + not exist. + (ipa_unregister_cgraph_hooks): Likewise. + +2020-10-01 Jan Hubicka + + * internal-fn.c (DEF_INTERNAL_FN): Fix handling of fnspec + +2020-10-01 Aldy Hernandez + + * Makefile.in: Add value-query.o. + * value-query.cc: New file. + * value-query.h: New file. + +2020-10-01 Alex Coplan + + * config/arm/arm-cpus.in: Fix ordering, move Neoverse N2 down. + * config/arm/arm-tables.opt: Regenerate. + * config/arm/arm-tune.md: Regenerate. + +2020-10-01 Jakub Jelinek + + * config/s390/s390.c (s390_atomic_assign_expand_fenv): Use + TARGET_EXPR instead of MODIFY_EXPR for the first assignments to + fenv_var and old_fpc. Formatting fixes. + +2020-10-01 Richard Biener + + * tree-vect-patterns.c (vect_recog_bool_pattern): Also handle + VIEW_CONVERT_EXPR. + +2020-10-01 Florian Weimer + + PR target/97250 + * config/i386/i386.h (PTA_NO_TUNE, PTA_X86_64_BASELINE) + (PTA_X86_64_V2, PTA_X86_64_V3, PTA_X86_64_V4): New. + * common/config/i386/i386-common.c (processor_alias_table): + Add "x86-64-v2", "x86-64-v3", "x86-64-v4". + * config/i386/i386-options.c (ix86_option_override_internal): + Handle new PTA_NO_TUNE processor table entries. + * doc/invoke.texi (x86 Options): Document new -march values. + +2020-10-01 Alan Modra + + * config/rs6000/ppc-asm.h: Support __PCREL__ code. + +2020-10-01 Alan Modra + + * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Don't + set -mcmodel=small for -mno-minimal-toc when pcrel. + +2020-09-30 Martin Sebor + + PR middle-end/97189 + * attribs.c (attr_access::array_as_string): Avoid assuming a VLA + access specification string contains a closing bracket. + +2020-09-30 Martin Sebor + + PR c/97206 + * attribs.c (attr_access::array_as_string): Avoid modifying a shared + type in place and use build_type_attribute_qual_variant instead. + +2020-09-30 Przemyslaw Wirkus + + * config/arm/arm-cpus.in: Add Cortex-A78 and Cortex-A78AE cores. + * config/arm/arm-tables.opt: Regenerate. + * config/arm/arm-tune.md: Regenerate. + * doc/invoke.texi: Update docs. + +2020-09-30 Przemyslaw Wirkus + + * config/aarch64/aarch64-cores.def: Add Cortex-A78 and Cortex-A78AE cores. + * config/aarch64/aarch64-tune.md: Regenerate. + * doc/invoke.texi: Add -mtune=cortex-a78 and -mtune=cortex-a78ae. + +2020-09-30 Srinath Parvathaneni + + PR target/96795 + * config/arm/arm_mve.h (__ARM_mve_coerce2): Define. + (__arm_vaddq): Correct the scalar argument. + (__arm_vaddq_m): Likewise. + (__arm_vaddq_x): Likewise. + (__arm_vcmpeqq_m): Likewise. + (__arm_vcmpeqq): Likewise. + (__arm_vcmpgeq_m): Likewise. + (__arm_vcmpgeq): Likewise. + (__arm_vcmpgtq_m): Likewise. + (__arm_vcmpgtq): Likewise. + (__arm_vcmpleq_m): Likewise. + (__arm_vcmpleq): Likewise. + (__arm_vcmpltq_m): Likewise. + (__arm_vcmpltq): Likewise. + (__arm_vcmpneq_m): Likewise. + (__arm_vcmpneq): Likewise. + (__arm_vfmaq_m): Likewise. + (__arm_vfmaq): Likewise. + (__arm_vfmasq_m): Likewise. + (__arm_vfmasq): Likewise. + (__arm_vmaxnmavq): Likewise. + (__arm_vmaxnmavq_p): Likewise. + (__arm_vmaxnmvq): Likewise. + (__arm_vmaxnmvq_p): Likewise. + (__arm_vminnmavq): Likewise. + (__arm_vminnmavq_p): Likewise. + (__arm_vminnmvq): Likewise. + (__arm_vminnmvq_p): Likewise. + (__arm_vmulq_m): Likewise. + (__arm_vmulq): Likewise. + (__arm_vmulq_x): Likewise. + (__arm_vsetq_lane): Likewise. + (__arm_vsubq_m): Likewise. + (__arm_vsubq): Likewise. + (__arm_vsubq_x): Likewise. + +2020-09-30 Joel Hutton + + PR target/96837 + * tree-vect-slp.c (vect_analyze_slp): Do not call + vect_attempt_slp_rearrange_stmts for vector constructors. + +2020-09-30 Tamar Christina + + * tree-vectorizer.h (SLP_TREE_REF_COUNT): New. + * tree-vect-slp.c (_slp_tree::_slp_tree, _slp_tree::~_slp_tree, + vect_free_slp_tree, vect_build_slp_tree, vect_print_slp_tree, + slp_copy_subtree, vect_attempt_slp_rearrange_stmts): Use it. + +2020-09-30 Tobias Burnus + + * omp-offload.c (omp_discover_implicit_declare_target): Also + handled nested functions. + +2020-09-30 Tobias Burnus + Tom de Vries + + * builtins.c (expand_builtin_cexpi, fold_builtin_sincos): Update + targetm.libc_has_function call. + * builtins.def (DEF_C94_BUILTIN, DEF_C99_BUILTIN, DEF_C11_BUILTIN): + (DEF_C2X_BUILTIN, DEF_C99_COMPL_BUILTIN, DEF_C99_C90RES_BUILTIN): + Same. + * config/darwin-protos.h (darwin_libc_has_function): Update prototype. + * config/darwin.c (darwin_libc_has_function): Add arg. + * config/linux-protos.h (linux_libc_has_function): Update prototype. + * config/linux.c (linux_libc_has_function): Add arg. + * config/i386/i386.c (ix86_libc_has_function): Update + targetm.libc_has_function call. + * config/nvptx/nvptx.c (nvptx_libc_has_function): New function. + (TARGET_LIBC_HAS_FUNCTION): Redefine to nvptx_libc_has_function. + * convert.c (convert_to_integer_1): Update targetm.libc_has_function + call. + * match.pd: Same. + * target.def (libc_has_function): Add arg. + * doc/tm.texi: Regenerate. + * targhooks.c (default_libc_has_function, gnu_libc_has_function) + (no_c99_libc_has_function): Add arg. + * targhooks.h (default_libc_has_function, no_c99_libc_has_function) + (gnu_libc_has_function): Update prototype. + * tree-ssa-math-opts.c (pass_cse_sincos::execute): Update + targetm.libc_has_function call. + +2020-09-30 H.J. Lu + + PR target/97184 + * config/i386/i386.md (UNSPECV_MOVDIRI): Renamed to ... + (UNSPEC_MOVDIRI): This. + (UNSPECV_MOVDIR64B): Renamed to ... + (UNSPEC_MOVDIR64B): This. + (movdiri): Use SET operation. + (@movdir64b_): Likewise. + +2020-09-30 Florian Weimer + + * config/i386/i386-c.c (ix86_target_macros_internal): Define + __LAHF_SAHF__ and __MOVBE__ based on ISA flags. + +2020-09-30 Kyrylo Tkachov + + PR target/97150 + * config/aarch64/arm_neon.h (vqrshlb_u8): Make second argument + signed. + (vqrshlh_u16): Likewise. + (vqrshls_u32): Likewise. + (vqrshld_u64): Likewise. + (vqshlb_u8): Likewise. + (vqshlh_u16): Likewise. + (vqshls_u32): Likewise. + (vqshld_u64): Likewise. + (vshld_u64): Likewise. + +2020-09-30 Kyrylo Tkachov + + PR target/96313 + * config/aarch64/aarch64-simd-builtins.def (sqmovun): Use UNOPUS + qualifiers. + * config/aarch64/arm_neon.h (vqmovun_s16): Adjust builtin call. + Remove unnecessary result cast. + (vqmovun_s32): Likewise. + (vqmovun_s64): Likewise. + (vqmovunh_s16): Likewise. Fix return type. + (vqmovuns_s32): Likewise. + (vqmovund_s64): Likewise. + +2020-09-30 Richard Sandiford + + * config/aarch64/aarch64.c (aarch64_split_128bit_move_p): Add a + function comment. Tighten check for FP moves. + * config/aarch64/aarch64.md (*movti_aarch64): Add a w<-Z alternative. + (*movtf_aarch64): Handle r<-Y like r<-r. Remove unnecessary + earlyclobber. Change splitter predicate from aarch64_reg_or_imm + to nonmemory_operand. + +2020-09-30 Alex Coplan + + PR target/97251 + * config/arm/arm.md (movsf): Relax TARGET_HARD_FLOAT to + TARGET_VFP_BASE. + (movdf): Likewise. + * config/arm/vfp.md (no_literal_pool_df_immediate): Likewise. + (no_literal_pool_sf_immediate): Likewise. + +2020-09-30 Alan Modra + + * configure.ac (--with-long-double-format): Typo fix. + * configure: Regenerate. + +2020-09-30 Alan Modra + + * config/rs6000/rs6000.md (@tablejump_normal): Don't use + non-existent operands[]. + (@tablejump_nospec): Likewise. + +2020-09-30 Segher Boessenkool + + * config/rs6000/rs6000.md (tablejump): Simplify. + (tablejumpsi): Merge this ... + (tablejumpdi): ... and this ... + (@tablejump_normal): ... into this. + (tablejumpsi_nospec): Merge this ... + (tablejumpdi_nospec): ... and this ... + (@tablejump_nospec): ... into this. + (*tablejump_internal1): Delete, rename to ... + (@tablejump_insn_normal): ... this. + (*tablejump_internal1_nospec): Delete, rename to ... + (@tablejump_insn_nospec): ... this. + +2020-09-29 Martin Sebor + + PR middle-end/97188 + * calls.c (maybe_warn_rdwr_sizes): Simplify warning messages. + Correct handling of VLA argumments. + +2020-09-29 Marek Polacek + + PR c++/94695 + * doc/invoke.texi: Document -Wrange-loop-construct. + +2020-09-29 Jim Wilson + + PR bootstrap/97183 + * configure.ac (gcc_cv_header_zstd_h): Check ZSTD_VERISON_NUMBER. + * configure: Regenerated. + +2020-09-29 Przemyslaw Wirkus + + * config/arm/arm-cpus.in: Add Cortex-X1 core. + * config/arm/arm-tables.opt: Regenerate. + * config/arm/arm-tune.md: Regenerate. + * doc/invoke.texi: Update docs. + +2020-09-29 Przemyslaw Wirkus + + * config/aarch64/aarch64-cores.def: Add Cortex-X1 Arm core. + * config/aarch64/aarch64-tune.md: Regenerate. + * doc/invoke.texi: Add -mtune=cortex-x1 docs. + +2020-09-29 H.J. Lu + + PR target/97247 + * config/i386/enqcmdintrin.h: Replace with + . Replace _ENQCMDNTRIN_H_INCLUDED with + _ENQCMDINTRIN_H_INCLUDED. + +2020-09-29 Richard Biener + + PR tree-optimization/97241 + * tree-vect-loop.c (vectorizable_reduction): Move finding + the SLP node for the reduction stmt to a better place. + +2020-09-29 Richard Biener + + * tree-vect-slp.c (vect_analyze_slp): Move SLP reduction + re-arrangement and SLP graph load gathering... + (vect_optimize_slp): ... here. + * tree-vectorizer.h (vec_info::slp_loads): Remove. + +2020-09-29 Hongyu Wang + + PR target/97231 + * config/i386/amxbf16intrin.h: Add FSF copyright notes. + * config/i386/amxint8intrin.h: Ditto. + * config/i386/amxtileintrin.h: Ditto. + * config/i386/avx512vp2intersectintrin.h: Ditto. + * config/i386/avx512vp2intersectvlintrin.h: Ditto. + * config/i386/pconfigintrin.h: Ditto. + * config/i386/tsxldtrkintrin.h: Ditto. + * config/i386/wbnoinvdintrin.h: Ditto. + +2020-09-29 Richard Biener + + PR tree-optimization/97238 + * tree-ssa-reassoc.c (ovce_extract_ops): Fix typo. + +2020-09-29 Richard Sandiford + + * config/arm/arm.h (ARM_HAVE_NEON_V8QI_ARITH, ARM_HAVE_NEON_V4HI_ARITH) + (ARM_HAVE_NEON_V2SI_ARITH, ARM_HAVE_NEON_V16QI_ARITH): New macros. + (ARM_HAVE_NEON_V8HI_ARITH, ARM_HAVE_NEON_V4SI_ARITH): Likewise. + (ARM_HAVE_NEON_V2DI_ARITH, ARM_HAVE_NEON_V4HF_ARITH): Likewise. + (ARM_HAVE_NEON_V8HF_ARITH, ARM_HAVE_NEON_V2SF_ARITH): Likewise. + (ARM_HAVE_NEON_V4SF_ARITH, ARM_HAVE_V8QI_ARITH, ARM_HAVE_V4HI_ARITH) + (ARM_HAVE_V2SI_ARITH, ARM_HAVE_V16QI_ARITH, ARM_HAVE_V8HI_ARITH) + (ARM_HAVE_V4SI_ARITH, ARM_HAVE_V2DI_ARITH, ARM_HAVE_V4HF_ARITH) + (ARM_HAVE_V2SF_ARITH, ARM_HAVE_V8HF_ARITH, ARM_HAVE_V4SF_ARITH): + Likewise. + * config/arm/iterators.md (VNIM, VNINOTM): Delete. + * config/arm/vec-common.md (add3, addv8hf3) + (add3): Replace with... + (add3): ...this new expander. + * config/arm/neon.md (*add3_neon): Use the new + ARM_HAVE_NEON__ARITH macros as the C condition. + (addv8hf3_neon, addv4hf3, add3_fp16): Delete in + favor of the above. + (neon_vadd): Use gen_add3 instead of + gen_add3_fp16. + +2020-09-29 Kito Cheng + + * config/riscv/riscv-c.c (riscv_cpu_cpp_builtins): Define + __riscv_cmodel_medany when PIC mode. + +2020-09-29 Alex Coplan + + * config/aarch64/aarch64-cores.def: Move neoverse-n2 after saphira. + * config/aarch64/aarch64-tune.md: Regenerate. + +2020-09-29 Martin Liska + + PR tree-optimization/96979 + * tree-switch-conversion.c (jump_table_cluster::can_be_handled): + Make a fast bail out. + (bit_test_cluster::can_be_handled): Likewise here. + * tree-switch-conversion.h (get_range): Use wi::to_wide instead + of a folding. + +2020-09-29 Martin Liska + + Revert: + 2020-09-22 Martin Liska + + PR tree-optimization/96979 + * doc/invoke.texi: Document new param max-switch-clustering-attempts. + * params.opt: Add new parameter. + * tree-switch-conversion.c (jump_table_cluster::find_jump_tables): + Limit number of attempts. + (bit_test_cluster::find_bit_tests): Likewise. + +2020-09-28 Aldy Hernandez + + * value-range.h (class irange): Add irange_allocator friend. + (class irange_allocator): New. + +2020-09-28 Tobias Burnus + + PR middle-end/96390 + * omp-offload.c (omp_discover_declare_target_tgt_fn_r): Handle + alias nodes. + +2020-09-28 Paul A. Clarke + + * config/rs6000/smmintrin.h (_mm_insert_epi8): New. + (_mm_insert_epi32): New. + (_mm_insert_epi64): New. + +2020-09-28 liuhongt + + * common/config/i386/i386-common.c (OPTION_MASK_ISA2_AMX_TILE_SET, + OPTION_MASK_ISA2_AMX_INT8_SET, OPTION_MASK_ISA2_AMX_BF16_SET, + OPTION_MASK_ISA2_AMX_TILE_UNSET, OPTION_MASK_ISA2_AMX_INT8_UNSET, + OPTION_MASK_ISA2_AMX_BF16_UNSET, OPTION_MASK_ISA2_XSAVE_UNSET): + New marcos. + (ix86_handle_option): Hanlde -mamx-tile, -mamx-int8, -mamx-bf16. + * common/config/i386/i386-cpuinfo.h (processor_types): Add + FEATURE_AMX_TILE, FEATURE_AMX_INT8, FEATURE_AMX_BF16. + * common/config/i386/cpuinfo.h (XSTATE_TILECFG, + XSTATE_TILEDATA, XCR_AMX_ENABLED_MASK): New macro. + (get_available_features): Enable AMX features only if + their states are suoorited by OSXSAVE. + * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY + for amx-tile, amx-int8, amx-bf16. + * config.gcc: Add amxtileintrin.h, amxint8intrin.h, + amxbf16intrin.h to extra headers. + * config/i386/amxbf16intrin.h: New file. + * config/i386/amxint8intrin.h: Ditto. + * config/i386/amxtileintrin.h: Ditto. + * config/i386/cpuid.h (bit_AMX_BF16, bit_AMX_TILE, bit_AMX_INT8): + New macro. + * config/i386/i386-c.c (ix86_target_macros_internal): Define + __AMX_TILE__, __AMX_INT8__, AMX_BF16__. + * config/i386/i386-options.c (ix86_target_string): Add + -mamx-tile, -mamx-int8, -mamx-bf16. + (ix86_option_override_internal): Handle AMX-TILE, + AMX-INT8, AMX-BF16. + * config/i386/i386.h (TARGET_AMX_TILE, TARGET_AMX_TILE_P, + TARGET_AMX_INT8, TARGET_AMX_INT8_P, TARGET_AMX_BF16_P, + PTA_AMX_TILE, PTA_AMX_INT8, PTA_AMX_BF16): New macros. + * config/i386/i386.opt: Add -mamx-tile, -mamx-int8, -mamx-bf16. + * config/i386/immintrin.h: Include amxtileintrin.h, + amxint8intrin.h, amxbf16intrin.h. + * doc/invoke.texi: Document -mamx-tile, -mamx-int8, -mamx-bf16. + * doc/extend.texi: Document amx-tile, amx-int8, amx-bf16. + * doc/sourcebuild.texi ((Effective-Target Keywords, Other + hardware attributes): Document amx_int8, amx_tile, amx_bf16. + +2020-09-28 Andrea Corallo + + * config/aarch64/aarch64-builtins.c + (aarch64_general_expand_builtin): Do not alter value on a + force_reg returned rtx. + +2020-09-28 Eric Botcazou + + * tree-eh.c (lower_try_finally_dup_block): Revert latest change. + +2020-09-27 Jan Hubicka + + * ipa-modref.c (modref_summary::useful_p): Fix testing of stores. + +2020-09-27 Jakub Jelinek + + PR middle-end/97073 + * optabs.c (expand_binop, expand_absneg_bit, expand_unop, + expand_copysign_bit): Check reg_overlap_mentioned_p between target + and operand(s) and if it returns true, force a pseudo as target. + +2020-09-27 Xionghu Luo + + * gimple-isel.cc (gimple_expand_vec_set_expr): New function. + (gimple_expand_vec_cond_exprs): Rename to ... + (gimple_expand_vec_exprs): ... this and call + gimple_expand_vec_set_expr. + * internal-fn.c (vec_set_direct): New define. + (expand_vec_set_optab_fn): New function. + (direct_vec_set_optab_supported_p): New define. + * internal-fn.def (VEC_SET): New DEF_INTERNAL_OPTAB_FN. + * optabs.c (can_vec_set_var_idx_p): New function. + * optabs.h (can_vec_set_var_idx_p): New declaration. + +2020-09-26 Jan Hubicka + + * ipa-modref.c (analyze_stmt): Do not skip clobbers in early pass. + * ipa-pure-const.c (analyze_stmt): Update comment. + +2020-09-26 David Edelsohn + Clement Chigot + + * collect2.c (visibility_flag): New. + (main): Detect -fvisibility. + (write_c_file_stat): Push and pop default visibility. + +2020-09-26 Jan Hubicka + + * ipa-inline-transform.c: Include ipa-modref-tree.h and ipa-modref.h. + (inline_call): Call ipa_merge_modref_summary_after_inlining. + * ipa-inline.c (ipa_inline): Do not free summaries. + * ipa-modref.c (dump_records): Fix formating. + (merge_call_side_effects): Break out from ... + (analyze_call): ... here; record recursive calls. + (analyze_stmt): Add new parameter RECURSIVE_CALLS. + (analyze_function): Do iterative dataflow on recursive calls. + (compute_parm_map): New function. + (ipa_merge_modref_summary_after_inlining): New function. + (collapse_loads): New function. + (modref_propagate_in_scc): Break out from ... + (pass_ipa_modref::execute): ... here; Do iterative dataflow. + * ipa-modref.h (ipa_merge_modref_summary_after_inlining): Declare. + +2020-09-26 Jakub Jelinek + + * omp-expand.c (expand_omp_simd): Help vectorizer for the collapse == 1 + and non-composite collapse > 1 case with non-constant innermost loop + step by precomputing number of iterations before loop and using an + alternate IV from 0 to number of iterations - 1 with step of 1. + +2020-09-26 Jan Hubicka + + * ipa-fnsummary.c (dump_ipa_call_summary): Dump + points_to_local_or_readonly_memory flag. + (analyze_function_body): Compute points_to_local_or_readonly_memory + flag. + (remap_edge_change_prob): Rename to ... + (remap_edge_params): ... this one; update + points_to_local_or_readonly_memory. + (remap_edge_summaries): Update. + (read_ipa_call_summary): Stream the new flag. + (write_ipa_call_summary): Likewise. + * ipa-predicate.h (struct inline_param_summary): Add + points_to_local_or_readonly_memory. + (inline_param_summary::equal_to): Update. + (inline_param_summary::useless_p): Update. + +2020-09-26 Jan Hubicka + + * ipa-modref-tree.h (modref_ref_node::insert_access): Track if something + changed. + (modref_base_node::insert_ref): Likewise (and add a new optional + argument) + (modref_tree::insert): Likewise. + (modref_tree::merge): Rewrite + +2020-09-25 Jan Hubicka + + * doc/invoke.texi: Add -fno-ipa-modref to flags disabled by + -flive-patching. + * opts.c (control_options_for_live_patching): Disable ipa-modref. + +2020-09-25 Jan Hubicka + + * ipa-modref.c (analyze_stmt): Fix return value for gimple_clobber. + +2020-09-25 Kyrylo Tkachov + + * config/aarch64/aarch64-option-extensions.def (rng): Add + cpuinfo string. + +2020-09-25 Alex Coplan + + * config/arm/arm-cpus.in (neoverse-v1): Add FP16. + +2020-09-25 Martin Liska + + PR gcov-profile/64636 + * value-prof.c (stream_out_histogram_value): Allow negative + values for HIST_TYPE_IOR. + +2020-09-25 Tom de Vries + + * config/nvptx/nvptx.c (nvptx_assemble_integer, nvptx_print_operand): + Use gcc_fallthrough (). + +2020-09-25 Richard Biener + + PR middle-end/96814 + * expr.c (store_constructor): Handle VECTOR_BOOLEAN_TYPE_P + CTORs correctly. + +2020-09-25 Richard Biener + + PR middle-end/97207 + * vec.h (auto_vec::operator=(auto_vec&&)): Implement. + +2020-09-25 Richard Sandiford + + * config/arm/arm-protos.h (arm_mve_mode_and_operands_type_check): + Delete. + * config/arm/arm.c (arm_coproc_mem_operand_wb): Use a scale factor + of 2 rather than 4 for 16-bit modes. + (arm_mve_mode_and_operands_type_check): Delete. + * config/arm/constraints.md (Uj): Allow writeback for Neon, + but continue to disallow it for MVE. + * config/arm/arm.md (*arm32_mov): Add !TARGET_HAVE_MVE. + * config/arm/vfp.md (*mov_load_vfp_hf16, *mov_store_vfp_hf16): Fold + back into... + (*mov_vfp_16): ...here but use Uj for the FPR memory + constraints. Use for base MVE too. + +2020-09-25 Richard Biener + + PR tree-optimization/97199 + * tree-if-conv.c (combine_blocks): Remove edges only + after looking at virtual PHI args. + +2020-09-25 Jakub Jelinek + + * omp-low.c (scan_omp_1_stmt): Don't call scan_omp_simd for + collapse > 1 loops as simt doesn't support collapsed loops yet. + * omp-expand.c (expand_omp_for_init_counts, expand_omp_for_init_vars): + Small tweaks to function comment. + (expand_omp_simd): Rewritten collapse > 1 support to only attempt + to vectorize the innermost loop and emit set of outer loops around it. + For non-composite simd with collapse > 1 without broken loop don't + even try to compute number of iterations first. Add support for + non-rectangular simd loops. + (expand_omp_for): Don't sorry_at on non-rectangular simd loops. + +2020-09-25 Martin Liska + + * cgraph.c (cgraph_edge::debug): New. + * cgraph.h (cgraph_edge::debug): New. + +2020-09-25 Martin Liska + + * cgraph.c (cgraph_node::dump): Always print space at the end + of a message. Remove one extra space. + +2020-09-24 Alex Coplan + + * config/arm/arm-cpus.in (neoverse-n2): New. + * config/arm/arm-tables.opt: Regenerate. + * config/arm/arm-tune.md: Regenerate. + * doc/invoke.texi: Document support for Neoverse N2. + +2020-09-24 Alex Coplan + + * config/aarch64/aarch64-cores.def: Add Neoverse N2. + * config/aarch64/aarch64-tune.md: Regenerate. + * doc/invoke.texi: Document AArch64 support for Neoverse N2. + +2020-09-24 Richard Biener + + * vec.h (auto_vec::auto_vec (auto_vec &&)): New move CTOR. + (auto_vec::operator=(auto_vec &&)): Delete. + * hash-table.h (hash_table::expand): Use std::move when expanding. + * cfgloop.h (get_loop_exit_edges): Return auto_vec. + * cfgloop.c (get_loop_exit_edges): Adjust. + * cfgloopmanip.c (fix_loop_placement): Likewise. + * ipa-fnsummary.c (analyze_function_body): Likewise. + * ira-build.c (create_loop_tree_nodes): Likewise. + (create_loop_tree_node_allocnos): Likewise. + (loop_with_complex_edge_p): Likewise. + * ira-color.c (ira_loop_edge_freq): Likewise. + * loop-unroll.c (analyze_insns_in_loop): Likewise. + * predict.c (predict_loops): Likewise. + * tree-predcom.c (last_always_executed_block): Likewise. + * tree-ssa-loop-ch.c (ch_base::copy_headers): Likewise. + * tree-ssa-loop-im.c (store_motion_loop): Likewise. + * tree-ssa-loop-ivcanon.c (loop_edge_to_cancel): Likewise. + (canonicalize_loop_induction_variables): Likewise. + * tree-ssa-loop-manip.c (get_loops_exits): Likewise. + * tree-ssa-loop-niter.c (find_loop_niter): Likewise. + (finite_loop_p): Likewise. + (find_loop_niter_by_eval): Likewise. + (estimate_numbers_of_iterations): Likewise. + * tree-ssa-loop-prefetch.c (emit_mfence_after_loop): Likewise. + (may_use_storent_in_loop_p): Likewise. + +2020-09-24 Jan Hubicka + + * doc/invoke.texi: Document -fipa-modref, ipa-modref-max-bases, + ipa-modref-max-refs, ipa-modref-max-accesses, ipa-modref-max-tests. + * ipa-modref-tree.c (test_insert_search_collapse): Update. + (test_merge): Update. + (gt_ggc_mx): New function. + * ipa-modref-tree.h (struct modref_access_node): New structure. + (struct modref_ref_node): Add every_access and accesses array. + (modref_ref_node::modref_ref_node): Update ctor. + (modref_ref_node::search): New member function. + (modref_ref_node::collapse): New member function. + (modref_ref_node::insert_access): New member function. + (modref_base_node::insert_ref): Do not collapse base if ref is 0. + (modref_base_node::collapse): Copllapse also refs. + (modref_tree): Add accesses. + (modref_tree::modref_tree): Initialize max_accesses. + (modref_tree::insert): Add access parameter. + (modref_tree::cleanup): New member function. + (modref_tree::merge): Add parm_map; merge accesses. + (modref_tree::copy_from): New member function. + (modref_tree::create_ggc): Add max_accesses. + * ipa-modref.c (dump_access): New function. + (dump_records): Dump accesses. + (dump_lto_records): Dump accesses. + (get_access): New function. + (record_access): Record access. + (record_access_lto): Record access. + (analyze_call): Compute parm_map. + (analyze_function): Update construction of modref records. + (modref_summaries::duplicate): Likewise; use copy_from. + (write_modref_records): Stream accesses. + (read_modref_records): Sream accesses. + (pass_ipa_modref::execute): Update call of merge. + * params.opt (-param=modref-max-accesses): New. + * tree-ssa-alias.c (alias_stats): Add modref_baseptr_tests. + (dump_alias_stats): Update. + (base_may_alias_with_dereference_p): New function. + (modref_may_conflict): Check accesses. + (ref_maybe_used_by_call_p_1): Update call to modref_may_conflict. + (call_may_clobber_ref_p_1): Update call to modref_may_conflict. + +2020-09-24 Richard Sandiford + + * config/arm/arm.md (*stack_protect_combined_set_insn): For non-PIC, + load the address of the canary rather than the address of the + constant pool entry that points to it. + (*stack_protect_combined_test_insn): Likewise. + +2020-09-24 Richard Biener + + PR tree-optimization/97085 + * match.pd (mask ? { false,..} : { true, ..} -> ~mask): New. + +2020-09-24 Jan Hubicka + + * ipa-modref-tree.h (modref_base::collapse): Release memory. + (modref_tree::create_ggc): New member function. + (modref_tree::colapse): Release memory. + (modref_tree::~modref_tree): New destructor. + * ipa-modref.c (modref_summaries::create_ggc): New function. + (analyze_function): Use create_ggc. + (modref_summaries::duplicate): Likewise. + (read_modref_records): Likewise. + (modref_read): Likewise. + +2020-09-24 Alan Modra + + * config/rs6000/rs6000.c (rs6000_rtx_costs): Pass mode to + reg_or_add_cint_operand and reg_or_sub_cint_operand. + +2020-09-24 Alan Modra + + PR target/93012 + * config/rs6000/rs6000.c (num_insns_constant_gpr): Count rldimi + constants correctly. + +2020-09-24 Alan Modra + + * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): + Conditionally define __PCREL__. + +2020-09-24 Alan Modra + + PR target/97107 + * config/rs6000/rs6000-internal.h (struct rs6000_stack): Improve + calls_p comment. + * config/rs6000/rs6000-logue.c (rs6000_stack_info): Likewise. + (rs6000_expand_split_stack_prologue): Emit the prologue for + functions that make a sibling call. + +2020-09-24 David Malcolm + + * doc/analyzer.texi (Analyzer Paths): Add note about + -fno-analyzer-feasibility. + * doc/invoke.texi (Static Analyzer Options): Add + -fno-analyzer-feasibility. + +2020-09-24 Paul A. Clarke + + * doc/extend.texi: Add 'd' for doubleword variant of + vector insert instruction. + +2020-09-23 Martin Sebor + + * gimple-array-bounds.cc (build_zero_elt_array_type): New function. + (array_bounds_checker::check_mem_ref): Call it. + +2020-09-23 Martin Sebor + + PR middle-end/97175 + * builtins.c (maybe_warn_for_bound): Handle both DECLs and EXPRESSIONs + in pad->dst.ref, same is pad->src.ref. + +2020-09-23 Jan Hubicka + + * ipa-fnsummary.c (refs_local_or_readonly_memory_p): New function. + (points_to_local_or_readonly_memory_p): New function. + * ipa-fnsummary.h (refs_local_or_readonly_memory_p): Declare. + (points_to_local_or_readonly_memory_p): Declare. + * ipa-modref.c (record_access_p): Use refs_local_or_readonly_memory_p. + * ipa-pure-const.c (check_op): Likewise. + +2020-09-23 Tom de Vries + + * config/nvptx/nvptx.md: Don't allow operand containing sum of + function ref and const. + +2020-09-23 Richard Sandiford + + * config/aarch64/aarch64-protos.h (aarch64_salt_type): New enum. + (aarch64_stack_protect_canary_mem): Declare. + * config/aarch64/aarch64.md (UNSPEC_SALT_ADDR): New unspec. + (stack_protect_set): Forward to stack_protect_combined_set. + (stack_protect_combined_set): New pattern. Use + aarch64_stack_protect_canary_mem. + (reg_stack_protect_address_): Add a salt operand. + (stack_protect_test): Forward to stack_protect_combined_test. + (stack_protect_combined_test): New pattern. Use + aarch64_stack_protect_canary_mem. + * config/aarch64/aarch64.c (strip_salt): New function. + (strip_offset_and_salt): Likewise. + (tls_symbolic_operand_type): Use strip_offset_and_salt. + (aarch64_stack_protect_canary_mem): New function. + (aarch64_cannot_force_const_mem): Use strip_offset_and_salt. + (aarch64_classify_address): Likewise. + (aarch64_symbolic_address_p): Likewise. + (aarch64_print_operand): Likewise. + (aarch64_output_addr_const_extra): New function. + (aarch64_tls_symbol_p): Use strip_salt. + (aarch64_classify_symbol): Likewise. + (aarch64_legitimate_pic_operand_p): Use strip_offset_and_salt. + (aarch64_legitimate_constant_p): Likewise. + (aarch64_mov_operand_p): Use strip_salt. + (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Override. + +2020-09-23 Kyrylo Tkachov + + PR target/71233 + * config/aarch64/arm_neon.h (vreinterpretq_f64_p128, + vreinterpretq_p128_f64): Define. + +2020-09-23 Alex Coplan + + * config/arm/arm-cpus.in (neoverse-v1): New. + * config/arm/arm-tables.opt: Regenerate. + * config/arm/arm-tune.md: Regenerate. + * doc/invoke.texi: Document support for Neoverse V1. + +2020-09-23 Alex Coplan + + * config/aarch64/aarch64-cores.def: Add Neoverse V1. + * config/aarch64/aarch64-tune.md: Regenerate. + * doc/invoke.texi: Document support for Neoverse V1. + +2020-09-23 Richard Biener + + PR middle-end/96453 + * gimple-isel.cc (gimple_expand_vec_cond_expr): Remove + LT_EXPR -> NE_EXPR verification and also apply it for + non-constant masks. + +2020-09-23 Jan Hubicka + + * ipa-modref.c (modref_summary::lto_useful_p): New member function. + (modref_summary::useful_p): New member function. + (analyze_function): Drop useless summaries. + (modref_write): Skip useless summaries. + (pass_ipa_modref::execute): Drop useless summaries. + * ipa-modref.h (struct GTY): Declare useful_p and lto_useful_p. + * tree-ssa-alias.c (dump_alias_stats): Fix. + (modref_may_conflict): Fix stats. + +2020-09-23 Richard Biener + + PR middle-end/96466 + * internal-fn.c (expand_vect_cond_mask_optab_fn): Use + appropriate mode for force_reg. + * tree.c (build_truth_vector_type_for): Pass VOIDmode to + make_vector_type. + +2020-09-23 Richard Sandiford + + * tree-vectorizer.h (determine_peel_for_niter): Delete in favor of... + (vect_determine_partial_vectors_and_peeling): ...this new function. + * tree-vect-loop-manip.c (vect_update_epilogue_niters): New function. + Reject using vector epilogue loops for single iterations. Install + the constant number of epilogue loop iterations in the associated + loop_vinfo. Rely on vect_determine_partial_vectors_and_peeling + to do the main part of the test. + (vect_do_peeling): Use vect_update_epilogue_niters to handle + epilogue loops with a known number of iterations. Skip recomputing + the number of iterations later in that case. Otherwise, use + vect_determine_partial_vectors_and_peeling to decide whether the + epilogue loop needs to use partial vectors or peeling. + * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Set the + default can_use_partial_vectors_p to false if partial-vector-usage=0. + (determine_peel_for_niter): Remove in favor of... + (vect_determine_partial_vectors_and_peeling): ...this new function, + split out from... + (vect_analyze_loop_2): ...here. Reflect the vect_verify_full_masking + and vect_verify_loop_lens results in CAN_USE_PARTIAL_VECTORS_P + rather than USING_PARTIAL_VECTORS_P. + +2020-09-23 Kyrylo Tkachov + + PR target/71233 + * config/aarch64/aarch64-simd-builtins.def (frintn): Use BUILTIN_VHSDF_HSDF + for modes. Remove explicit hf instantiation. + * config/aarch64/arm_neon.h (vrndns_f32): Define. + +2020-09-23 Richard Biener + + PR tree-optimization/97173 + * tree-vect-loop.c (vectorizable_live_operation): Extend + assert to also conver element conversions. + +2020-09-23 Kyrylo Tkachov + + PR target/71233 + * config/aarch64/arm_neon.h (vtrn1q_p64, vtrn2q_p64, vuzp1q_p64, + vuzp2q_p64, vzip1q_p64, vzip2q_p64): Define. + +2020-09-23 Kyrylo Tkachov + + PR target/71233 + * config/aarch64/arm_neon.h (vldrq_p128): Define. + +2020-09-23 Kyrylo Tkachov + + PR target/71233 + * config/aarch64/arm_neon.h (vstrq_p128): Define. + +2020-09-23 Richard Biener + + PR tree-optimization/97151 + * tree-ssa-structalias.c (find_func_aliases_for_call): + DECL_IS_REPLACEABLE_OPERATOR_DELETE_P has no effect on + arguments. + +2020-09-23 Richard Biener + + PR middle-end/97162 + * alias.c (compare_base_decls): Use DECL_HARD_REGISTER + and guard with VAR_P. + +2020-09-23 Martin Liska + + PR gcov-profile/97069 + * profile.c (branch_prob): Line number must be at least 1. + +2020-09-23 Tom de Vries + + PR target/97158 + * config/nvptx/nvptx.c (nvptx_output_mov_insn): Handle move from + DF subreg to DF reg. + +2020-09-23 David Malcolm + + * Makefile.in: Add $(ZLIBINC) to CFLAGS-analyzer/engine.o. + +2020-09-22 Jan Hubicka + + * ipa-modref.c (analyze_stmt): Ignore gimple clobber. + +2020-09-22 Jan Hubicka + + * ipa-modref-tree.c: Add namespace selftest. + (modref_tree_c_tests): Rename to ... + (ipa_modref_tree_c_tests): ... this. + * ipa-modref.c (pass_modref): Remove destructor. + (ipa_modref_c_finalize): New function. + * ipa-modref.h (ipa_modref_c_finalize): Declare. + * selftest-run-tests.c (selftest::run_tests): Call + ipa_modref_c_finalize. + * selftest.h (ipa_modref_tree_c_tests): Declare. + * toplev.c: Include ipa-modref-tree.h and ipa-modref.h + (toplev::finalize): Call ipa_modref_c_finalize. + +2020-09-22 David Malcolm + + * doc/analyzer.texi (Other Debugging Techniques): Mention + -fdump-analyzer-json. + * doc/invoke.texi (Static Analyzer Options): Add + -fdump-analyzer-json. + +2020-09-22 David Faust + + * config/bpf/bpf.md: Add defines for signed div and mod operators. + +2020-09-22 Martin Liska + + PR tree-optimization/96979 + * doc/invoke.texi: Document new param max-switch-clustering-attempts. + * params.opt: Add new parameter. + * tree-switch-conversion.c (jump_table_cluster::find_jump_tables): + Limit number of attempts. + (bit_test_cluster::find_bit_tests): Likewise. + +2020-09-22 Stefan Schulze Frielinghaus + + * config/s390/s390.md ("*cmp_ccs_0", "*cmp_ccz_0", + "*cmp_ccs_0_fastmath"): Basically change "*cmp_ccs_0" into + "*cmp_ccz_0" and for fast math add "*cmp_ccs_0_fastmath". + +2020-09-22 Kyrylo Tkachov + + PR target/71233 + * config/aarch64/arm_neon.h (vcls_u8, vcls_u16, vcls_u32, + vclsq_u8, vclsq_u16, vclsq_u32): Define. + +2020-09-22 Kyrylo Tkachov + + PR target/71233 + * config/aarch64/arm_neon.h (vceqq_p64, vceqz_p64, vceqzq_p64): Define. + +2020-09-22 Kyrylo Tkachov + + PR target/71233 + * config/aarch64/arm_neon.h (vadd_p8, vadd_p16, vadd_p64, vaddq_p8, + vaddq_p16, vaddq_p64, vaddq_p128): Define. + +2020-09-22 Jakub Jelinek + + * params.opt (--param=modref-max-tests=): Fix typo in help text: + perofmed -> performed. + * common.opt: Fix typo: incrmeental -> incremental. + * ipa-modref.c: Fix typos: recroding -> recording, becaue -> because, + analsis -> analysis. + (class modref_summaries): Fix typo: betweehn -> between. + (analyze_call): Fix typo: calle -> callee. + (read_modref_records): Fix typo: expcted -> expected. + (pass_ipa_modref::execute): Fix typo: calle -> callee. + +2020-09-22 Jakub Jelinek + + * common.opt (-fipa-modref): Add dot at the end of option help. + * params.opt (--param=modref-max-tests=): Likewise. + +2020-09-21 Marek Polacek + + * doc/invoke.texi: Document -Wctad-maybe-unsupported. + +2020-09-21 Richard Biener + + PR tree-optimization/97139 + * tree-vect-slp.c (vect_bb_slp_mark_live_stmts): Only mark the + pattern root, track visited vectorized stmts. + +2020-09-21 Jakub Jelinek + + * configure.ac: Use mallinfo mallinfo2 as first operand of + gcc_AC_CHECK_DECLS rather than [mallinfo, mallinfo2]. + * configure: Regenerated. + * config.in: Regenerated. + +2020-09-21 Andrea Corallo + + * config/aarch64/aarch64-builtins.c + (aarch64_general_expand_builtin): Use expand machinery not to + alter the value of an rtx returned by force_reg. + +2020-09-21 Richard Biener + + PR tree-optimization/97135 + * tree-ssa-loop-im.c (sm_seq_push_down): Do not ignore + self-dependences. + +2020-09-21 Martin Liska + + PR tree-optimization/96915 + * tree-switch-conversion.c (switch_conversion::expand): Accept + also integer constants. + +2020-09-21 Martin Liska + + * print-tree.c (print_node): Remove extra space. + +2020-09-21 Andrea Corallo + + PR target/96968 + * config/aarch64/aarch64-builtins.c + (aarch64_expand_fpsr_fpcr_setter): Fix comment nit. + (aarch64_expand_fpsr_fpcr_getter): New function, expand these + getters using expand_insn machinery. + (aarch64_general_expand_builtin): Make use of. + +2020-09-21 Martin Liska + + * ggc-common.c (ggc_rlimit_bound): Use ONE_? macro. + (ggc_min_expand_heuristic): Likewise. + (ggc_min_heapsize_heuristic): Likewise. + * ggc-page.c (ggc_collect): Likewise. + * system.h (ONE_G): Likewise. + +2020-09-21 Martin Liska + + * ggc-common.c (ggc_prune_overhead_list): Use SIZE_AMOUNT. + * ggc-page.c (release_pages): Likewise. + (ggc_collect): Likewise. + (ggc_trim): Likewise. + (ggc_grow): Likewise. + * timevar.c (timer::print): Likewise. + +2020-09-21 Martin Liska + + * config.in: Regenerate. + * configure: Likewise. + * configure.ac: Detect for mallinfo2. + * ggc-common.c (defined): Use it. + * system.h: Handle also HAVE_MALLINFO2. + +2020-09-20 John David Anglin < danglin@gcc.gnu.org> + + * config/pa/pa-hpux11.h (LINK_GCC_C_SEQUENCE_SPEC): Delete. + * config/pa/pa64-hpux.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise. + (ENDFILE_SPEC): Link with libgcc_stub.a and mill.a. + * config/pa/pa32-linux.h (ENDFILE_SPEC): Link with libgcc.a. + +2020-09-20 Jan Hubicka + + * ipa-modref.c (dump_lto_records): Fix ICE. + +2020-09-20 David Cepelik + Jan Hubicka + + * Makefile.in: Add ipa-modref.c and ipa-modref-tree.c. + * alias.c: (reference_alias_ptr_type_1): Export. + * alias.h (reference_alias_ptr_type_1): Declare. + * common.opt (fipa-modref): New. + * gengtype.c (open_base_files): Add ipa-modref-tree.h and ipa-modref.h + * ipa-modref-tree.c: New file. + * ipa-modref-tree.h: New file. + * ipa-modref.c: New file. + * ipa-modref.h: New file. + * lto-section-in.c (lto_section_name): Add ipa_modref. + * lto-streamer.h (enum lto_section_type): Add LTO_section_ipa_modref. + * opts.c (default_options_table): Enable ipa-modref at -O1+. + * params.opt (-param=modref-max-bases, -param=modref-max-refs, + -param=modref-max-tests): New params. + * passes.def: Schedule pass_modref and pass_ipa_modref. + * timevar.def (TV_IPA_MODREF): New timevar. + (TV_TREE_MODREF): New timevar. + * tree-pass.h (make_pass_modref): Declare. + (make_pass_ipa_modref): Declare. + * tree-ssa-alias.c (dump_alias_stats): Include ipa-modref-tree.h + and ipa-modref.h + (alias_stats): Add modref_use_may_alias, modref_use_no_alias, + modref_clobber_may_alias, modref_clobber_no_alias, modref_tests. + (dump_alias_stats): Dump new stats. + (nonoverlapping_array_refs_p): Fix formating. + (modref_may_conflict): New function. + (ref_maybe_used_by_call_p_1): Use it. + (call_may_clobber_ref_p_1): Use it. + (call_may_clobber_ref_p): Update. + (stmt_may_clobber_ref_p_1): Update. + * tree-ssa-alias.h (call_may_clobber_ref_p_1): Update. + +2020-09-19 Martin Sebor + + PR middle-end/82608 + PR middle-end/94195 + PR c/50584 + PR middle-end/84051 + * gimple-array-bounds.cc (get_base_decl): New function. + (get_ref_size): New function. + (trailing_array): New function. + (array_bounds_checker::check_array_ref): Call them. Handle arrays + declared in function parameters. + (array_bounds_checker::check_mem_ref): Same. Handle references to + dynamically allocated arrays. + +2020-09-19 Martin Sebor + + PR c/50584 + * builtins.c (warn_for_access): Add argument. Distinguish between + reads and writes. + (check_access): Add argument. Distinguish between reads and writes. + (gimple_call_alloc_size): Set range even on failure. + (gimple_parm_array_size): New function. + (compute_objsize): Call it. + (check_memop_access): Pass check_access an additional argument. + (expand_builtin_memchr, expand_builtin_strcat): Same. + (expand_builtin_strcpy, expand_builtin_stpcpy_1): Same. + (expand_builtin_stpncpy, check_strncat_sizes): Same. + (expand_builtin_strncat, expand_builtin_strncpy): Same. + (expand_builtin_memcmp): Same. + * builtins.h (compute_objsize): Declare a new overload. + (gimple_parm_array_size): Declare. + (check_access): Add argument. + * calls.c (append_attrname): Simplify. + (maybe_warn_rdwr_sizes): Handle internal attribute access. + * tree-ssa-uninit.c (maybe_warn_pass_by_reference): Avoid adding + quotes. + +2020-09-19 Martin Sebor + + * tree-ssa-uninit.c (maybe_warn_pass_by_reference): Handle attribute + access internal representation of arrays. + +2020-09-19 Martin Sebor + + PR c/50584 + * attribs.c (decl_attributes): Also pass decl along with type + attributes to handlers. + (init_attr_rdwr_indices): Change second argument to attribute chain. + Handle internal attribute representation in addition to external. + (get_parm_access): New function. + (attr_access::to_internal_string): Define new member function. + (attr_access::to_external_string): Define new member function. + (attr_access::vla_bounds): Define new member function. + * attribs.h (struct attr_access): Declare new members. + (attr_access::from_mode_char): Define new member function. + (get_parm_access): Declare new function. + * calls.c (initialize_argument_information): Pass function type + attributes to init_attr_rdwr_indices. + * doc/invoke.texi (-Warray-parameter, -Wvla-parameter): Document. + * tree-pretty-print.c (dump_generic_node): Correct handling of + qualifiers. + * tree-ssa-uninit.c (maybe_warn_pass_by_reference): Same. + * tree.h (access_mode): Add new enumerator. + +2020-09-19 Sandra Loosemore + + * doc/generic.texi (Basic Statements): Document SWITCH_EXPR here, + not SWITCH_STMT. + (Statements for C and C++): Rename node to reflect what + the introduction already says about sharing between C and C++ + front ends. Copy-edit and correct documentation for structured + loops and switch. + +2020-09-19 liuhongt + + PR target/96861 + * config/i386/x86-tune-costs.h (skylake_cost): increase rtx + cost of sse_to_integer from 2 to 6. + +2020-09-18 Sudi Das + Omar Tahir + + * config/arm/thumb2.md (*thumb2_csneg): New. + (*thumb2_negscc): Don't match if TARGET_COND_ARITH. + * config/arm/arm.md (*if_neg_move): Don't match if TARGET_COND_ARITH. + +2020-09-18 Sudi Das + Omar Tahir + + * config/arm/thumb2.md (*thumb2_csinc): New. + (*thumb2_cond_arith): Generate CINC where possible. + +2020-09-18 Sudi Das + Omar Tahir + + * config/arm/arm.h (TARGET_COND_ARITH): New macro. + * config/arm/arm.c (arm_have_conditional_execution): Return false if + TARGET_COND_ARITH before reload. + * config/arm/predicates.md (arm_comparison_operation): Returns true if + comparing CC_REGNUM with constant zero. + * config/arm/thumb2.md (*thumb2_csinv): New. + (*thumb2_movcond): Don't match if TARGET_COND_ARITH. + +2020-09-18 Richard Sandiford + + PR middle-end/91957 + * ira.c (ira_setup_eliminable_regset): Skip the special elimination + handling of the hard frame pointer if the hard frame pointer is fixed. + +2020-09-18 Richard Biener + + PR tree-optimization/97081 + * tree-vect-patterns.c (vect_recog_rotate_pattern): Use the + precision of the shifted operand to determine the mask. + +2020-09-18 Jozef Lawrynowicz + + * config/msp430/msp430.c (msp430_print_operand): Update comment. + Cast to long when printing values formatted as long. + Support 'd', 'e', 'f' and 'g' modifiers. + Extract operand value with a single operation for all modifiers. + * doc/extend.texi (msp430Operandmodifiers): New. + +2020-09-18 Jozef Lawrynowicz + + * config/msp430/msp430.c (increment_stack): Mark insns which increment + the stack as frame_related. + (msp430_expand_prologue): Add comments. + (msp430_expand_epilogue): Mark insns which decrement + the stack as frame_related. + Add reg_note to stack pop insns describing position of register + variables on the stack. + +2020-09-18 Andrew Stubbs + + * config/gcn/gcn-tree.c (execute_omp_gcn): Delete. + (make_pass_omp_gcn): Delete. + * config/gcn/t-gcn-hsa (PASSES_EXTRA): Delete. + * config/gcn/gcn-passes.def: Removed. + +2020-09-18 Alex Coplan + + * cfgloop.h (nb_iter_bound): Reword comment describing is_exit. + +2020-09-18 Richard Biener + + PR tree-optimization/97095 + * tree-vect-loop.c (vectorizable_live_operation): Get + the SLP vector type from the correct object. + +2020-09-18 Richard Biener + + PR tree-optimization/97089 + * tree-ssa-sccvn.c (visit_nary_op): Do not replace unsigned + divisions. + +2020-09-18 Richard Biener + + PR tree-optimization/97098 + * tree-vect-slp.c (vect_bb_slp_mark_live_stmts): Do not + recurse to children when all stmts were already visited. + +2020-09-17 Sergei Trofimovich + + * profile.c (sort_hist_values): Clarify hist format: + start with a value, not counter. + +2020-09-17 Yeting Kuo + + * config/riscv/riscv.h (CSW_MAX_OFFSET): Fix typo. + +2020-09-17 Patrick Palka + + PR c/80076 + * gensupport.c (alter_attrs_for_subst_insn) : + Reduce indentation of misleadingly indented code fragment. + * lra-constraints.c (multi_block_pseudo_p): Likewise. + * sel-sched-ir.c (merge_fences): Likewise. + +2020-09-17 Martin Sebor + + * doc/invoke.texi (-Wuninitialized): Document -Wuninitialized for + allocated objects. + (-Wmaybe-uninitialized): Same. + +2020-09-17 Richard Biener + + * tree-ssa-sccvn.c (visit_nary_op): Value-number multiplications + and divisions to negates of available negated forms. + +2020-09-17 Eric Botcazou + + PR middle-end/97078 + * function.c (use_register_for_decl): Test cfun->tail_call_marked + for a parameter here instead of... + (assign_parm_setup_reg): ...here. + +2020-09-17 Aldy Hernandez + + * range-op.cc (multi_precision_range_tests): Normalize symbolics when copying to a + multi-range. + * value-range.cc (irange::copy_legacy_range): Add test. + +2020-09-17 Jan Hubicka + + * cgraph.c (cgraph_node::get_availability): Fix availability of + functions in other partitions + * varpool.c (varpool_node::get_availability): Likewise. + +2020-09-17 Jojo R + + * config/csky/csky.opt (msim): New. + * doc/invoke.texi (C-SKY Options): Document -msim. + * config/csky/csky-elf.h (LIB_SPEC): Add simulator runtime. + +2020-09-17 Sergei Trofimovich + + * doc/cppenv.texi: Use @code{} instead of @samp{@command{}} + around 'date %s'. + +2020-09-17 liuhongt + + * common/config/i386/i386-common.c + (OPTION_MASK_ISA_AVX_UNSET): Remove OPTION_MASK_ISA_XSAVE_UNSET. + (OPTION_MASK_ISA_XSAVE_UNSET): Add OPTION_MASK_ISA_AVX_UNSET. + +2020-09-16 Alexandre Oliva + + * config/rs6000/rs6000.c (have_compare_and_set_mask): Use + E_*mode in cases. + +2020-09-16 Bill Schmidt + + * config/rs6000/predicates.md (current_file_function_operand): + Remove argument from rs6000_pcrel_p call. + * config/rs6000/rs6000-logue.c (rs6000_decl_ok_for_sibcall): + Likewise. + (rs6000_global_entry_point_prologue_needed_p): Likewise. + (rs6000_output_function_prologue): Likewise. + * config/rs6000/rs6000-protos.h (rs6000_function_pcrel_p): New + prototype. + (rs6000_pcrel_p): Remove argument. + * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove + argument from rs6000_pcrel_p call. + (rs6000_call_template_1): Likewise. + (rs6000_indirect_call_template_1): Likewise. + (rs6000_longcall_ref): Likewise. + (rs6000_call_aix): Likewise. + (rs6000_sibcall_aix): Likewise. + (rs6000_function_pcrel_p): Rename from rs6000_pcrel_p. + (rs6000_pcrel_p): Rewrite. + * config/rs6000/rs6000.md (*pltseq_plt_pcrel): Remove + argument from rs6000_pcrel_p call. + (*call_local): Likewise. + (*call_value_local): Likewise. + (*call_nonlocal_aix): Likewise. + (*call_value_nonlocal_aix): Likewise. + (*call_indirect_pcrel): Likewise. + (*call_value_indirect_pcrel): Likewise. + +2020-09-16 Marek Polacek + + PR preprocessor/96935 + * input.c (get_substring_ranges_for_loc): Return if start.column + is less than 1. + +2020-09-16 Martin Sebor + + PR middle-end/96295 + * tree-ssa-uninit.c (maybe_warn_operand): Work harder to avoid + warning for objects of empty structs + +2020-09-16 Eric Botcazou + + * tree-eh.c (lower_try_finally_dup_block): Backward propagate slocs + to stack restore builtin calls. + (cleanup_all_empty_eh): Do again a post-order traversal of the EH + region tree. + +2020-09-16 Andrea Corallo + + * tree-vect-loop.c (vect_need_peeling_or_partial_vectors_p): New + function. + (vect_analyze_loop_2): Make use of it not to select partial + vectors if no peel is required. + (determine_peel_for_niter): Move out some logic into + 'vect_need_peeling_or_partial_vectors_p'. + +2020-09-16 H.J. Lu + + PR target/97032 + * cfgexpand.c (asm_clobber_reg_kind): Set sp_is_clobbered_by_asm + to true if the stack pointer is clobbered by asm statement. + * emit-rtl.h (rtl_data): Add sp_is_clobbered_by_asm. + * config/i386/i386.c (ix86_get_drap_rtx): Set need_drap to true + if the stack pointer is clobbered by asm statement. + +2020-09-16 Ilya Leoshkevich + + * config/s390/vector.md(*vec_tf_to_v1tf): Use "f" instead of "v" + for the source operand. + +2020-09-16 Jojo R + + * config.gcc (C-SKY): Set use_gcc_stdint=wrap for elf target. + +2020-09-16 Richard Biener + + * tree-vectorizer.h (_stmt_vec_info::num_slp_uses): Remove. + (STMT_VINFO_NUM_SLP_USES): Likewise. + (vect_free_slp_instance): Adjust. + (vect_update_shared_vectype): Declare. + * tree-vectorizer.c (vec_info::~vec_info): Adjust. + * tree-vect-loop.c (vect_analyze_loop_2): Likewise. + (vectorizable_live_operation): Use vector type from + SLP_TREE_REPRESENTATIVE. + (vect_transform_loop): Adjust. + * tree-vect-data-refs.c (vect_slp_analyze_node_alignment): + Set the shared vector type. + * tree-vect-slp.c (vect_free_slp_tree): Remove final_p + parameter, remove STMT_VINFO_NUM_SLP_USES updating. + (vect_free_slp_instance): Adjust. + (vect_create_new_slp_node): Remove STMT_VINFO_NUM_SLP_USES + updating. + (vect_update_shared_vectype): Always compare with the + present vector type, update if NULL. + (vect_build_slp_tree_1): Do not update the shared vector + type here. + (vect_build_slp_tree_2): Adjust. + (slp_copy_subtree): Likewise. + (vect_attempt_slp_rearrange_stmts): Likewise. + (vect_analyze_slp_instance): Likewise. + (vect_analyze_slp): Likewise. + (vect_slp_analyze_node_operations_1): Update the shared + vector type. + (vect_slp_analyze_operations): Adjust. + (vect_slp_analyze_bb_1): Likewise. + +2020-09-16 Jojo R + + * config/csky/t-csky-linux (CSKY_MULTILIB_OSDIRNAMES): Use mfloat-abi. + (MULTILIB_OPTIONS): Likewise. + * config/csky/t-csky-elf (MULTILIB_OPTIONS): Likewise. + (MULTILIB_EXCEPTIONS): Likewise. + +2020-09-16 Jakub Jelinek + + * config/arm/arm.c (arm_option_restore): Comment out opts argument + name to avoid unused parameter warnings. + +2020-09-16 Jakub Jelinek + + * optc-save-gen.awk: In cl_optimization_stream_out use + bp_pack_var_len_{int,unsigned} instead of bp_pack_value. In + cl_optimization_stream_in use bp_unpack_var_len_{int,unsigned} + instead of bp_unpack_value. Formatting fix. + +2020-09-16 Jakub Jelinek + + PR tree-optimization/97053 + * gimple-ssa-store-merging.c (check_no_overlap): Add FIRST_ORDER, + START, FIRST_EARLIER and LAST_EARLIER arguments. Return false if + any stores between FIRST_EARLIER inclusive and LAST_EARLIER exclusive + has order in between FIRST_ORDER and LAST_ORDER and overlaps the to + be merged store. + (imm_store_chain_info::try_coalesce_bswap): Add FIRST_EARLIER argument. + Adjust check_no_overlap caller. + (imm_store_chain_info::coalesce_immediate_stores): Add first_earlier + and last_earlier variables, adjust them during iterations. Adjust + check_no_overlap callers, call check_no_overlap even when extending + overlapping stores by extra INTEGER_CST stores. + +2020-09-16 Jojo R + + * config/csky/csky-linux-elf.h (GLIBC_DYNAMIC_LINKER): Use mfloat-abi. + +2020-09-16 Kewen Lin + + PR target/97019 + * config/rs6000/rs6000-p8swap.c (find_alignment_op): Adjust to + support multiple defintions which are all AND operations with + the mask -16B. + (recombine_lvx_pattern): Adjust to handle multiple AND operations + from find_alignment_op. + (recombine_stvx_pattern): Likewise. + +2020-09-16 Jojo R + + * config/csky/csky.md (CSKY_NPARM_FREGS): New. + (call_value_internal_vs/d): New. + (untyped_call): New. + * config/csky/csky.h (TARGET_SINGLE_FPU): New. + (TARGET_DOUBLE_FPU): New. + (FUNCTION_VARG_REGNO_P): New. + (CSKY_VREG_MODE_P): New. + (FUNCTION_VARG_MODE_P): New. + (CUMULATIVE_ARGS): Add extra regs info. + (INIT_CUMULATIVE_ARGS): Use csky_init_cumulative_args. + (FUNCTION_ARG_REGNO_P): Use FUNCTION_VARG_REGNO_P. + * config/csky/csky-protos.h (csky_init_cumulative_args): Extern. + * config/csky/csky.c (csky_cpu_cpp_builtins): Support TARGET_HARD_FLOAT_ABI. + (csky_function_arg): Likewise. + (csky_num_arg_regs): Likewise. + (csky_function_arg_advance): Likewise. + (csky_function_value): Likewise. + (csky_libcall_value): Likewise. + (csky_function_value_regno_p): Likewise. + (csky_arg_partial_bytes): Likewise. + (csky_setup_incoming_varargs): Likewise. + (csky_init_cumulative_args): New. + +2020-09-16 Bill Schmidt + + * config/rs6000/rs6000-call.c (altivec_init_builtins): Fix name + of __builtin_altivec_xst_len_r. + +2020-09-15 Ilya Leoshkevich + + * rtlanal.c (set_noop_p): Treat subregs of registers in + different modes conservatively. + +2020-09-15 Richard Biener + + * tree-vect-slp.c (vect_get_and_check_slp_defs): Make swap + argument by-value and do not change it. + (vect_build_slp_tree_2): Adjust, set swap to NULL after last + use. + +2020-09-15 Feng Xue + + PR tree-optimization/94234 + * match.pd (T)(A) +- (T)(B) -> (T)(A +- B): New simplification. + +2020-09-15 Segher Boessenkool + + PR rtl-optimization/96475 + * bb-reorder.c (duplicate_computed_gotos): If we did anything, run + cleanup_cfg. + +2020-09-15 Richard Biener + + * tree-vect-slp.c (vect_build_slp_tree_2): Also consider + building an operand from scalars when building it did not + fail fatally but avoid messing with the upcall splitting + of groups. + +2020-09-15 Andre Vieira + + * config/arm/arm.c (arm_options_perform_arch_sanity_checks): Do not + check +D32 for CMSE if -mfloat-abi=soft + +2020-09-15 liuhongt + + PR target/96744 + * config/i386/x86-tune-costs.h (struct processor_costs): + Increase mask <-> integer cost for non AVX512 target to avoid + spill gpr to mask. Also retune mask <-> integer and + mask_load/store for skylake_cost. + +2020-09-15 Jakub Jelinek + + PR target/97028 + * config/i386/sse.md (mul3_bcs, + _div3_bcst): Use instead of + <>. + +2020-09-15 Tobias Burnus + + PR fortran/96668 + * gimplify.c (gimplify_omp_for): Add 'bool openacc' argument; + update omp_finish_clause calls. + (gimplify_adjust_omp_clauses_1, gimplify_adjust_omp_clauses, + gimplify_expr, gimplify_omp_loop): Update omp_finish_clause + and/or gimplify_for calls. + * langhooks-def.h (lhd_omp_finish_clause): Add bool openacc arg. + * langhooks.c (lhd_omp_finish_clause): Likewise. + * langhooks.h (lhd_omp_finish_clause): Likewise. + * omp-low.c (scan_sharing_clauses): Keep GOMP_MAP_TO_PSET cause for + 'declare target' vars. + +2020-09-15 Feng Xue + + PR tree-optimization/94234 + * genmatch.c (dt_simplify::gen_1): Emit check on final simplification + result when "!" is specified on toplevel output expr. + * match.pd ((A * C) +- (B * C) -> (A +- B) * C): Allow folding on expr + with multi-use operands if final result is a simple gimple value. + +2020-09-14 Sergei Trofimovich + + * doc/invoke.texi: fix '-fprofile-reproducibility' option + spelling in manual. + +2020-09-14 Jose E. Marchesi + + * config/bpf/bpf.md ("nop"): Re-define as `ja 0'. + +2020-09-14 Eric Botcazou + + * cgraphunit.c (cgraph_node::expand_thunk): Make sure to set + cfun->tail_call_marked when forcing a tail call. + * function.c (assign_parm_setup_reg): Always use a register to + load a parameter passed by reference if cfun->tail_call_marked. + +2020-09-14 Pat Haugen + + * config/rs6000/power10.md (power10-mffgpr, power10-mftgpr): Rename to + power10-mtvsr/power10-mfvsr. + * config/rs6000/power6.md (X2F_power6, power6-mftgpr, power6-mffgpr): + Remove. + * config/rs6000/power8.md (power8-mffgpr, power8-mftgpr): Rename to + power8-mtvsr/power8-mfvsr. + * config/rs6000/power9.md (power9-mffgpr, power9-mftgpr): Rename to + power9-mtvsr/power9-mfvsr. + * config/rs6000/rs6000.c (rs6000_adjust_cost): Remove Power6 + TYPE_MFFGPR cases. + * config/rs6000/rs6000.md (mffgpr, mftgpr, zero_extendsi2, + extendsi2, @signbit2_dm, lfiwax, lfiwzx, *movsi_internal1, + movsi_from_sf, *movdi_from_sf_zero_ext, *mov_internal, + movsd_hardfloat, movsf_from_si, *mov_hardfloat64, p8_mtvsrwz, + p8_mtvsrd_df, p8_mtvsrd_sf, p8_mfvsrd_3_, *movdi_internal64, + unpack_dm): Rename mffgpr/mftgpr to mtvsr/mfvsr. + * config/rs6000/vsx.md (vsx_mov_64bit, vsx_extract_, + vsx_extract_si, *vsx_extract__p8): Likewise. + +2020-09-14 Jakub Jelinek + + * config/arm/arm.opt (x_arm_arch_string, x_arm_cpu_string, + x_arm_tune_string): Remove TargetSave entries. + (march=, mcpu=, mtune=): Add Save keyword. + * config/arm/arm.c (arm_option_save): Remove. + (TARGET_OPTION_SAVE): Don't redefine. + (arm_option_restore): Don't restore x_arm_*_string here. + +2020-09-14 Jakub Jelinek + + * opt-read.awk: Also initialize extra_target_var_types array. + * opth-gen.awk: Emit explicit_mask arrays to struct cl_optimization + and cl_target_option. Adjust cl_optimization_save, + cl_optimization_restore, cl_target_option_save and + cl_target_option_restore declarations. + * optc-save-gen.awk: Add opts_set argument to cl_optimization_save, + cl_optimization_restore, cl_target_option_save and + cl_target_option_restore functions and save or restore opts_set + next to the opts values into or from explicit_mask arrays. + In cl_target_option_eq and cl_optimization_option_eq compare + explicit_mask arrays, in cl_target_option_hash and cl_optimization_hash + hash them and in cl_target_option_stream_out, + cl_target_option_stream_in, cl_optimization_stream_out and + cl_optimization_stream_in stream them. + * tree.h (build_optimization_node, build_target_option_node): Add + opts_set argument. + * tree.c (build_optimization_node): Add opts_set argument, pass it + to cl_optimization_save. + (build_target_option_node): Add opts_set argument, pass it to + cl_target_option_save. + * function.c (invoke_set_current_function_hook): Adjust + cl_optimization_restore caller. + * ipa-inline-transform.c (inline_call): Adjust cl_optimization_restore + and build_optimization_node callers. + * target.def (TARGET_OPTION_SAVE, TARGET_OPTION_RESTORE): Add opts_set + argument. + * target-globals.c (save_target_globals_default_opts): Adjust + cl_optimization_restore callers. + * toplev.c (process_options): Adjust build_optimization_node and + cl_optimization_restore callers. + (target_reinit): Adjust cl_optimization_restore caller. + * tree-streamer-in.c (lto_input_ts_function_decl_tree_pointers): + Adjust build_optimization_node and cl_optimization_restore callers. + * doc/tm.texi: Updated. + * config/aarch64/aarch64.c (aarch64_override_options): Adjust + build_target_option_node caller. + (aarch64_option_save, aarch64_option_restore): Add opts_set argument. + (aarch64_set_current_function): Adjust cl_target_option_restore + caller. + (aarch64_option_valid_attribute_p): Adjust cl_target_option_save, + cl_target_option_restore, cl_optimization_restore, + build_optimization_node and build_target_option_node callers. + * config/aarch64/aarch64-c.c (aarch64_pragma_target_parse): Adjust + cl_target_option_restore and build_target_option_node callers. + * config/arm/arm.c (arm_option_save, arm_option_restore): Add + opts_set argument. + (arm_option_override): Adjust cl_target_option_save, + build_optimization_node and build_target_option_node callers. + (arm_set_current_function): Adjust cl_target_option_restore caller. + (arm_valid_target_attribute_tree): Adjust build_target_option_node + caller. + (add_attribute): Formatting fix. + (arm_valid_target_attribute_p): Adjust cl_optimization_restore, + cl_target_option_restore, arm_valid_target_attribute_tree and + build_optimization_node callers. + * config/arm/arm-c.c (arm_pragma_target_parse): Adjust + cl_target_option_restore callers. + * config/csky/csky.c (csky_option_override): Adjust + build_target_option_node and cl_target_option_save callers. + * config/gcn/gcn.c (gcn_fixup_accel_lto_options): Adjust + build_optimization_node and cl_optimization_restore callers. + * config/i386/i386-builtins.c (get_builtin_code_for_version): + Adjust cl_target_option_save and cl_target_option_restore + callers. + * config/i386/i386-c.c (ix86_pragma_target_parse): Adjust + build_target_option_node and cl_target_option_restore callers. + * config/i386/i386-options.c (ix86_function_specific_save, + ix86_function_specific_restore): Add opts_set arguments. + (ix86_valid_target_attribute_tree): Adjust build_target_option_node + caller. + (ix86_valid_target_attribute_p): Adjust build_optimization_node, + cl_optimization_restore, cl_target_option_restore, + ix86_valid_target_attribute_tree and build_optimization_node callers. + (ix86_option_override_internal): Adjust build_target_option_node + caller. + (ix86_reset_previous_fndecl, ix86_set_current_function): Adjust + cl_target_option_restore callers. + * config/i386/i386-options.h (ix86_function_specific_save, + ix86_function_specific_restore): Add opts_set argument. + * config/nios2/nios2.c (nios2_option_override): Adjust + build_target_option_node caller. + (nios2_option_save, nios2_option_restore): Add opts_set argument. + (nios2_valid_target_attribute_tree): Adjust build_target_option_node + caller. + (nios2_valid_target_attribute_p): Adjust build_optimization_node, + cl_optimization_restore, cl_target_option_save and + cl_target_option_restore callers. + (nios2_set_current_function, nios2_pragma_target_parse): Adjust + cl_target_option_restore callers. + * config/pru/pru.c (pru_option_override): Adjust + build_target_option_node caller. + (pru_set_current_function): Adjust cl_target_option_restore + callers. + * config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust + cl_target_option_save caller. + (rs6000_option_override_internal): Adjust build_target_option_node + caller. + (rs6000_valid_attribute_p): Adjust build_optimization_node, + cl_optimization_restore, cl_target_option_save, + cl_target_option_restore and build_target_option_node callers. + (rs6000_pragma_target_parse): Adjust cl_target_option_restore and + build_target_option_node callers. + (rs6000_activate_target_options): Adjust cl_target_option_restore + callers. + (rs6000_function_specific_save, rs6000_function_specific_restore): + Add opts_set argument. + * config/s390/s390.c (s390_function_specific_restore): Likewise. + (s390_option_override_internal): Adjust s390_function_specific_restore + caller. + (s390_option_override, s390_valid_target_attribute_tree): Adjust + build_target_option_node caller. + (s390_valid_target_attribute_p): Adjust build_optimization_node, + cl_optimization_restore and cl_target_option_restore callers. + (s390_activate_target_options): Adjust cl_target_option_restore + caller. + * config/s390/s390-c.c (s390_cpu_cpp_builtins): Adjust + cl_target_option_save caller. + (s390_pragma_target_parse): Adjust build_target_option_node and + cl_target_option_restore callers. + +2020-09-13 Roger Sayle + + * config/pa/pa.c (hppa_rtx_costs) [ASHIFT, ASHIFTRT, LSHIFTRT]: + Provide accurate costs for DImode shifts of integer constants. + +2020-09-12 Roger Sayle + John David Anglin + + * config/pa/pa.md (shrpsi4_1, shrpsi4_2): New define_insns split + out from previous shrpsi4 providing two commutitive variants using + plus_xor_ior_operator as a predicate. + (shrpdi4_1, shrpdi4_2, shrpdi_3, shrpdi_4): Likewise DImode versions + where _1 and _2 take register shifts, and _3 and _4 for integers. + (rotlsi3_internal): Name this anonymous instruction. + (rotrdi3): New DImode insn copied from rotrsi3. + (rotldi3): New DImode expander copied from rotlsi3. + (rotldi4_internal): New DImode insn copied from rotsi3_internal. + +2020-09-11 Michael Meissner + + * config/rs6000/rs6000.c (rs6000_maybe_emit_maxc_minc): Rename + from rs6000_emit_p9_fp_minmax. Change return type to bool. Add + comments to document NaN/signed zero behavior. + (rs6000_maybe_emit_fp_cmove): Rename from rs6000_emit_p9_fp_cmove. + (have_compare_and_set_mask): New helper function. + (rs6000_emit_cmove): Update calls to new names and the new helper + function. + +2020-09-11 Nathan Sidwell + + * config/i386/sse.md (mov): Fix operand indices. + +2020-09-11 Martin Sebor + + PR middle-end/96903 + * builtins.c (compute_objsize): Remove incorrect offset adjustment. + (compute_objsize): Adjust offset range here instead. + +2020-09-11 Richard Biener + + PR tree-optimization/97020 + * tree-vect-slp.c (vect_slp_analyze_operations): Apply + SLP costs when doing loop vectorization. + +2020-09-11 Tom de Vries + + PR target/96964 + * config/nvptx/nvptx.md (define_expand "atomic_test_and_set"): New + expansion. + +2020-09-11 Andrew Stubbs + + * config/gcn/gcn.c (gcn_hard_regno_mode_ok): Align TImode registers. + * config/gcn/gcn.md: Assert that TImode registers do not early clobber. + +2020-09-11 Richard Biener + + * tree-vectorizer.h (_slp_instance::location): New method. + (vect_schedule_slp): Adjust prototype. + * tree-vectorizer.c (vec_info::remove_stmt): Adjust + the BB region begin if we removed the stmt it points to. + * tree-vect-loop.c (vect_transform_loop): Adjust. + * tree-vect-slp.c (_slp_instance::location): Implement. + (vect_analyze_slp_instance): For BB vectorization set + vect_location to that of the instance. + (vect_slp_analyze_operations): Likewise. + (vect_bb_vectorization_profitable_p): Remove wrapper. + (vect_slp_analyze_bb_1): Remove cost check here. + (vect_slp_region): Cost check and code generate subgraphs separately, + report optimized locations and missed optimizations due to + profitability for each of them. + (vect_schedule_slp): Get the vector of SLP graph entries to + vectorize as argument. + +2020-09-11 Richard Biener + + PR tree-optimization/97013 + * tree-vect-slp.c (vect_slp_analyze_bb_1): Remove duplicate dumping. + +2020-09-11 Richard Biener + + * tree-vect-slp.c (vect_build_slp_tree_1): Check vector + types for all lanes are compatible. + (vect_analyze_slp_instance): Appropriately check for stores. + (vect_schedule_slp): Likewise. + +2020-09-11 Tom de Vries + + * config/nvptx/nvptx.c (nvptx_assemble_value): Fix undefined + behaviour. + +2020-09-11 Tom de Vries + + * config/nvptx/nvptx.c (nvptx_assemble_value): Handle negative + __int128. + +2020-09-11 Aaron Sawdey + + * config/rs6000/rs6000.c (rs6000_option_override_internal): + Change default. + +2020-09-10 Michael Meissner + + * config/rs6000/rs6000-protos.h (rs6000_emit_cmove): Change return + type to bool. + (rs6000_emit_int_cmove): Change return type to bool. + * config/rs6000/rs6000.c (rs6000_emit_cmove): Change return type + to bool. + (rs6000_emit_int_cmove): Change return type to bool. + +2020-09-10 Tom de Vries + + PR target/97004 + * config/nvptx/nvptx.c (nvptx_assemble_value): Handle shift by + number of bits in shift operand. + +2020-09-10 Jakub Jelinek + + * lto-streamer-out.c (collect_block_tree_leafs): Recurse on + root rather than BLOCK_SUBBLOCKS (root). + +2020-09-10 Alex Coplan + + * config/aarch64/aarch64-cores.def: Add Cortex-R82. + * config/aarch64/aarch64-tune.md: Regenerate. + * doc/invoke.texi: Add entry for Cortex-R82. + +2020-09-10 Alex Coplan + + * common/config/aarch64/aarch64-common.c + (aarch64_get_extension_string_for_isa_flags): Don't force +crc for + Armv8-R. + * config/aarch64/aarch64-arches.def: Add entry for Armv8-R. + * config/aarch64/aarch64-c.c (aarch64_define_unconditional_macros): Set + __ARM_ARCH_PROFILE correctly for Armv8-R. + * config/aarch64/aarch64.h (AARCH64_FL_V8_R): New. + (AARCH64_FL_FOR_ARCH8_R): New. + (AARCH64_ISA_V8_R): New. + * doc/invoke.texi: Add Armv8-R to architecture table. + +2020-09-10 Jakub Jelinek + + * config/arm/arm.c (arm_override_options_after_change_1): Add opts_set + argument, test opts_set->x_str_align_functions rather than + opts->x_str_align_functions. + (arm_override_options_after_change, arm_option_override_internal, + arm_set_current_function): Adjust callers. + +2020-09-10 Jakub Jelinek + + PR target/96939 + * config/arm/arm.c (arm_override_options_after_change): Don't call + arm_configure_build_target here. + (arm_set_current_function): Call arm_override_options_after_change_1 + at the end. + +2020-09-10 Pat Haugen + + * config/rs6000/rs6000.md + (lfiwzx, floatunssi2_lfiwzx, p8_mtvsrwz, p8_mtvsrd_sf): Fix insn + type. + * config/rs6000/vsx.md + (vsx_concat_, vsx_splat__reg, vsx_splat_v4sf): Likewise. + +2020-09-10 Jonathan Yong <10walls@gmail.com> + + * config.host: Adjust plugin name for Windows. + +2020-09-10 Tom de Vries + + PR tree-optimization/97000 + * tree-cfgcleanup.c (cleanup_call_ctrl_altering_flag): Don't clear + flag for IFN_UNIQUE. + +2020-09-10 Jakub Jelinek + + PR debug/93865 + * lto-streamer.h (struct output_block): Add emit_pwd member. + * lto-streamer-out.c: Include toplev.h. + (clear_line_info): Set emit_pwd. + (lto_output_location_1): Encode the ob->current_file != xloc.file + bit directly into the location number. If changing file, emit + additionally a bit whether pwd is emitted and emit it before the + first relative pathname since clear_line_info. + (output_function, output_constructor): Don't call clear_line_info + here. + * lto-streamer-in.c (struct string_pair_map): New type. + (struct string_pair_map_hasher): New type. + (string_pair_map_hasher::hash): New method. + (string_pair_map_hasher::equal): New method. + (path_name_pair_hash_table, string_pair_map_allocator): New variables. + (relative_path_prefix, canon_relative_path_prefix, + canon_relative_file_name): New functions. + (canon_file_name): Add relative_prefix argument, if non-NULL + and string is a relative path, return canon_relative_file_name. + (lto_location_cache::input_location_and_block): Decode file change + bit from the location number. If changing file, unpack bit whether + pwd is streamed and stream in pwd. Adjust canon_file_name caller. + (lto_free_file_name_hash): Delete path_name_pair_hash_table + and string_pair_map_allocator. + +2020-09-10 Richard Biener + + PR tree-optimization/96043 + * tree-vectorizer.h (_slp_instance::cost_vec): New. + (_slp_instance::subgraph_entries): Likewise. + (BB_VINFO_TARGET_COST_DATA): Remove. + * tree-vect-slp.c (vect_free_slp_instance): Free + cost_vec and subgraph_entries. + (vect_analyze_slp_instance): Initialize them. + (vect_slp_analyze_operations): Defer passing costs to + the target, instead record them in the SLP graph entry. + (get_ultimate_leader): New helper for graph partitioning. + (vect_bb_partition_graph_r): Likewise. + (vect_bb_partition_graph): New function to partition the + SLP graph into independently costable parts. + (vect_bb_vectorization_profitable_p): Adjust to work on + a subgraph. + (vect_bb_vectorization_profitable_p): New wrapper, + discarding non-profitable vectorization of subgraphs. + (vect_slp_analyze_bb_1): Call vect_bb_partition_graph before + costing. + +2020-09-09 David Malcolm + + PR analyzer/94355 + * doc/invoke.texi: Document -Wanalyzer-mismatching-deallocation. + +2020-09-09 Segher Boessenkool + + PR rtl-optimization/96475 + * bb-reorder.c (maybe_duplicate_computed_goto): Remove single_pred_p + micro-optimization. + +2020-09-09 Tom de Vries + + * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Fix Wformat + warning. + +2020-09-09 Richard Biener + + * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Do + nothing when the permutation doesn't permute. + +2020-09-09 Tom de Vries + + PR target/96991 + * config/nvptx/nvptx.c (write_fn_proto): Fix boolean type check. + +2020-09-09 Richard Biener + + * tree-vect-stmts.c (vectorizable_comparison): Allow + STMT_VINFO_LIVE_P stmts. + +2020-09-09 Richard Biener + + * tree-vect-stmts.c (vectorizable_condition): Allow + STMT_VINFO_LIVE_P stmts. + +2020-09-09 Richard Biener + + PR tree-optimization/96978 + * tree-vect-stmts.c (vectorizable_condition): Do not + look at STMT_VINFO_LIVE_P for BB vectorization. + (vectorizable_comparison): Likewise. + +2020-09-09 liuhongt + + PR target/96955 + * config/i386/i386.md (get_thread_pointer): New + expander. + +2020-09-08 Julian Brown + + * config/gcn/gcn-valu.md (scatter_insn_1offset_ds): + Add waitcnt. + * config/gcn/gcn.md (*mov_insn, *movti_insn): Add waitcnt to + ds_write alternatives. + +2020-09-08 Julian Brown + + * config/gcn/mkoffload.c (process_asm): Initialise regcount. Update + scanning for SGPR/VGPR usage for HSACO v3. + +2020-09-08 Aldy Hernandez + + PR tree-optimization/96967 + * tree-vrp.c (find_case_label_range): Cast label range to + type of switch operand. + +2020-09-08 Jozef Lawrynowicz + + * config/msp430/msp430.c (msp430_file_end): Fix jumbled + HAVE_AS_MSPABI_ATTRIBUTE and HAVE_AS_GNU_ATTRIBUTE checks. + * configure: Regenerate. + * configure.ac: Use ".mspabi_attribute 4,2" to check for assembler + support for this object attribute directive. + +2020-09-08 Jozef Lawrynowicz + + * common/config/msp430/msp430-common.c (msp430_handle_option): Remove + OPT_mcpu_ handling. + Set target_cpu value to new enum values when parsing certain -mmcu= + values. + * config/msp430/msp430-opts.h (enum msp430_cpu_types): New. + * config/msp430/msp430.c (msp430_option_override): Handle new + target_cpu enum values. + Set target_cpu using extracted value for given MCU when -mcpu= + option is not passed by the user. + * config/msp430/msp430.opt: Handle -mcpu= values using enums. + +2020-09-07 Richard Sandiford + + PR rtl-optimization/96796 + * lra-constraints.c (in_class_p): Add a default-false + allow_all_reload_class_changes_p parameter. Do not treat + reload moves specially when the parameter is true. + (get_reload_reg): Try to narrow the class of an existing OP_OUT + reload if we're reloading a reload pseudo in a reload instruction. + +2020-09-07 Andrea Corallo + + * tree-vect-loop.c (vect_estimate_min_profitable_iters): Revert + dead-code removal introduced by 09fa6acd8d9 + add a comment to + clarify. + +2020-09-07 Jozef Lawrynowicz + + * doc/rtl.texi (subreg): Fix documentation to state there is a known + number of undefined bits in regs and subregs of MODE_PARTIAL_INT modes. + +2020-09-07 Jozef Lawrynowicz + + * config/msp430/msp430.c (msp430_option_override): Don't set the + ISA to 430 when the MCU is unrecognized. + +2020-09-07 Iain Sandoe + + * config/darwin.c (darwin_libc_has_function): Report sincos + available from 10.9. + +2020-09-07 Alex Coplan + + * config/aarch64/aarch64.md (*adds_mul_imm_): Delete. + (*subs_mul_imm_): Delete. + (*adds__multp2): Delete. + (*subs__multp2): Delete. + (*add_mul_imm_): Delete. + (*add__mult_): Delete. + (*add__mult_si_uxtw): Delete. + (*add__multp2): Delete. + (*add_si_multp2_uxtw): Delete. + (*add_uxt_multp2): Delete. + (*add_uxtsi_multp2_uxtw): Delete. + (*sub_mul_imm_): Delete. + (*sub_mul_imm_si_uxtw): Delete. + (*sub__multp2): Delete. + (*sub_si_multp2_uxtw): Delete. + (*sub_uxt_multp2): Delete. + (*sub_uxtsi_multp2_uxtw): Delete. + (*neg_mul_imm_2): Delete. + (*neg_mul_imm_si2_uxtw): Delete. + * config/aarch64/predicates.md (aarch64_pwr_imm3): Delete. + (aarch64_pwr_2_si): Delete. + (aarch64_pwr_2_di): Delete. + +2020-09-07 Alex Coplan + + * config/aarch64/aarch64.md + (*adds__): Ensure extended operand + agrees with width of extension specifier. + (*subs__): Likewise. + (*adds__shift_): Likewise. + (*subs__shift_): Likewise. + (*add__): Likewise. + (*add__shft_): Likewise. + (*add_uxt_shift2): Likewise. + (*sub__): Likewise. + (*sub__shft_): Likewise. + (*sub_uxt_shift2): Likewise. + (*cmp_swp__reg): Likewise. + (*cmp_swp__shft_): Likewise. + +2020-09-07 Richard Biener + + * tree-vect-slp.c (vect_analyze_slp_instance): Dump + stmts we start SLP analysis from, failure and splitting. + (vect_schedule_slp): Dump SLP graph entry and root stmt + we are about to emit code for. + +2020-09-07 Martin Storsjö + + * dwarf2out.c (file_name_acquire): Make a strchr return value + pointer to const. + +2020-09-07 Jakub Jelinek + + PR debug/94235 + * lto-streamer-out.c (output_cfg): Also stream goto_locus for edges. + Use bp_pack_var_len_unsigned instead of streamer_write_uhwi to stream + e->dest->index and e->flags. + (output_function): Call output_cfg before output_ssa_name, rather than + after streaming all bbs. + * lto-streamer-in.c (input_cfg): Stream in goto_locus for edges. + Use bp_unpack_var_len_unsigned instead of streamer_read_uhwi to stream + in dest_index and edge_flags. + +2020-09-07 Richard Biener + + * tree-vectorizer.h (vectorizable_live_operation): Adjust. + * tree-vect-loop.c (vectorizable_live_operation): Vectorize + live lanes out of basic-block vectorization nodes. + * tree-vect-slp.c (vect_bb_slp_mark_live_stmts): New function. + (vect_slp_analyze_operations): Analyze live lanes and their + vectorization possibility after the whole SLP graph is final. + (vect_bb_slp_scalar_cost): Adjust for vectorized live lanes. + * tree-vect-stmts.c (can_vectorize_live_stmts): Adjust. + (vect_transform_stmt): Call can_vectorize_live_stmts also for + basic-block vectorization. + +2020-09-04 Richard Biener + + PR tree-optimization/96698 + PR tree-optimization/96920 + * tree-vectorizer.h (loop_vec_info::reduc_latch_defs): Remove. + (loop_vec_info::reduc_latch_slp_defs): Likewise. + * tree-vect-stmts.c (vect_transform_stmt): Remove vectorized + cycle PHI latch code. + * tree-vect-loop.c (maybe_set_vectorized_backedge_value): New + helper to set vectorized cycle PHI latch values. + (vect_transform_loop): Walk over all PHIs again after + vectorizing them, calling maybe_set_vectorized_backedge_value. + Call maybe_set_vectorized_backedge_value for each vectorized + stmt. Remove delayed update code. + * tree-vect-slp.c (vect_analyze_slp_instance): Initialize + SLP instance reduc_phis member. + (vect_schedule_slp): Set vectorized cycle PHI latch values. + +2020-09-04 Andrea Corallo + + * tree-vect-loop.c (vect_estimate_min_profitable_iters): Remove + dead code as LOOP_VINFO_USING_PARTIAL_VECTORS_P (loop_vinfo) is + always verified. + +2020-09-04 Christophe Lyon + + PR target/96769 + * config/arm/thumb1.md: Move movsi splitter for + arm_disable_literal_pool after the other movsi splitters. + +2020-09-04 Aldy Hernandez + + * range-op.cc (range_operator::fold_range): Rename widest_irange + to int_range_max. + (operator_div::wi_fold): Same. + (operator_lshift::op1_range): Same. + (operator_rshift::op1_range): Same. + (operator_cast::fold_range): Same. + (operator_cast::op1_range): Same. + (operator_bitwise_and::remove_impossible_ranges): Same. + (operator_bitwise_and::op1_range): Same. + (operator_abs::op1_range): Same. + (range_cast): Same. + (widest_irange_tests): Same. + (range3_tests): Rename irange3 to int_range3. + (int_range_max_tests): Rename from widest_irange_tests. + Rename widest_irange to int_range_max. + (operator_tests): Rename widest_irange to int_range_max. + (range_tests): Same. + * tree-vrp.c (find_case_label_range): Same. + * value-range.cc (irange::irange_intersect): Same. + (irange::invert): Same. + * value-range.h: Same. + +2020-09-04 Richard Biener + + PR tree-optimization/96931 + * tree-cfgcleanup.c (cleanup_call_ctrl_altering_flag): If + there's a fallthru edge and no abnormal edge the call is + no longer control-altering. + (cleanup_control_flow_bb): Pass down the BB to + cleanup_call_ctrl_altering_flag. + +2020-09-04 Jakub Jelinek + + * lto-streamer.h (stream_input_location_now): Remove declaration. + * lto-streamer-in.c (stream_input_location_now): Remove. + (input_eh_region, input_struct_function_base): Use + stream_input_location instead of stream_input_location_now. + +2020-09-04 Jakub Jelinek + + * lto-streamer.h (struct output_block): Add reset_locus member. + * lto-streamer-out.c (clear_line_info): Set reset_locus to true. + (lto_output_location_1): If reset_locus, clear it and ensure + current_{file,line,col} is different from xloc members. + +2020-09-04 David Faust + + * config/bpf/bpf.h (ASM_SPEC): Pass -mxbpf to gas, if specified. + * config/bpf/bpf.c (bpf_output_call): Support indirect calls in xBPF. + +2020-09-03 Martin Jambor + + PR tree-optimization/96820 + * tree-sra.c (create_access): Disqualify candidates with accesses + beyond the end of the original aggregate. + (maybe_add_sra_candidate): Check that candidate type size fits + signed uhwi for the sake of consistency. + +2020-09-03 Will Schmidt + + * config/rs6000/rs6000-call.c (rs6000_init_builtin): Update V2DI_type_node + and unsigned_V2DI_type_node definitions. + +2020-09-03 Jakub Jelinek + + PR c++/96901 + * tree.h (struct decl_tree_traits): New type. + (decl_tree_map): New typedef. + +2020-09-03 Jakub Jelinek + + PR lto/94311 + * gimple.h (gimple_location_ptr, gimple_phi_arg_location_ptr): New + functions. + * streamer-hooks.h (struct streamer_hooks): Add + output_location_and_block callback. Fix up formatting for + output_location. + (stream_output_location_and_block): Define. + * lto-streamer.h (class lto_location_cache): Fix comment typo. Add + current_block member. + (lto_location_cache::input_location_and_block): New method. + (lto_location_cache::lto_location_cache): Initialize current_block. + (lto_location_cache::cached_location): Add block member. + (struct output_block): Add current_block member. + (lto_output_location): Formatting fix. + (lto_output_location_and_block): Declare. + * lto-streamer.c (lto_streamer_hooks_init): Initialize + streamer_hooks.output_location_and_block. + * lto-streamer-in.c (lto_location_cache::cmp_loc): Also compare + block members. + (lto_location_cache::apply_location_cache): Handle blocks. + (lto_location_cache::accept_location_cache, + lto_location_cache::revert_location_cache): Fix up function comments. + (lto_location_cache::input_location_and_block): New method. + (lto_location_cache::input_location): Implement using + input_location_and_block. + (input_function): Invoke apply_location_cache after streaming in all + bbs. + * lto-streamer-out.c (clear_line_info): Set current_block. + (lto_output_location_1): New function, moved from lto_output_location, + added block handling. + (lto_output_location): Implement using lto_output_location_1. + (lto_output_location_and_block): New function. + * gimple-streamer-in.c (input_phi): Use input_location_and_block + to input and cache both location and block. + (input_gimple_stmt): Likewise. + * gimple-streamer-out.c (output_phi): Use + stream_output_location_and_block. + (output_gimple_stmt): Likewise. + +2020-09-03 Richard Biener + + * tree-vect-generic.c (tree_vec_extract): Remove odd + special-casing of boolean vectors. + * fold-const.c (fold_ternary_loc): Handle boolean vector + type BIT_FIELD_REFs. + +2020-09-03 Hongtao Liu + + PR target/87767 + * config/i386/i386-features.c + (replace_constant_pool_with_broadcast): New function. + (constant_pool_broadcast): Ditto. + (class pass_constant_pool_broadcast): New pass. + (make_pass_constant_pool_broadcast): Ditto. + (remove_partial_avx_dependency): Call + replace_constant_pool_with_broadcast under TARGET_AVX512F, it + would save compile time when both pass rpad and cpb are + available. + (remove_partial_avx_dependency_gate): New function. + (class pass_remove_partial_avx_dependency::gate): Call + remove_partial_avx_dependency_gate. + * config/i386/i386-passes.def: Insert new pass after combine. + * config/i386/i386-protos.h + (make_pass_constant_pool_broadcast): Declare. + * config/i386/sse.md (*avx512dq_mul3_bcst): + New define_insn. + (*avx512f_mul3_bcst): Ditto. + * config/i386/avx512fintrin.h (_mm512_set1_ps, + _mm512_set1_pd,_mm512_set1_epi32, _mm512_set1_epi64): Adjusted. + +2020-09-02 Jonathan Wakely + + PR c++/60304 + * ginclude/stdbool.h (bool, false, true): Never define for C++. + +2020-09-02 Jozef Lawrynowicz + + * doc/invoke.texi (MSP430 options): Fix -mlarge description to + indicate size_t is a 20-bit type. + +2020-09-02 Roger Sayle + + * config/pa/pa.c (hppa_rtx_costs) [ASHIFT, ASHIFTRT, LSHIFTRT]: + Provide accurate costs for shifts of integer constants. + +2020-09-02 Jose E. Marchesi + + * config/bpf/bpf.c (bpf_asm_named_section): Delete. + (TARGET_ASM_NAMED_SECTION): Likewise. + +2020-09-02 Jose E. Marchesi + + * config.gcc: Use elfos.h in bpf-*-* targets. + * config/bpf/bpf.h (MAX_OFILE_ALIGNMENT): Remove definition. + (COMMON_ASM_OP): Likewise. + (INIT_SECTION_ASM_OP): Likewise. + (FINI_SECTION_ASM_OP): Likewise. + (ASM_OUTPUT_SKIP): Likewise. + (ASM_OUTPUT_ALIGNED_COMMON): Likewise. + (ASM_OUTPUT_ALIGNED_LOCAL): Likewise. + +2020-09-01 Martin Sebor + + * builtins.c (compute_objsize): Only replace the upper bound + of a POINTER_PLUS offset when it's less than the lower bound. + +2020-09-01 Peter Bergner + + PR target/96808 + * config/rs6000/rs6000-call.c (rs6000_gimple_fold_mma_builtin): Do not + reuse accumulator memory reference for source and destination accesses. + +2020-09-01 Martin Liska + + * cfgrtl.c (rtl_create_basic_block): Use default value for + growth vector function. + * gimple.c (gimple_set_bb): Likewise. + * symbol-summary.h: Likewise. + * tree-cfg.c (init_empty_tree_cfg_for_function): Likewise. + (build_gimple_cfg): Likewise. + (create_bb): Likewise. + (move_block_to_fn): Likewise. + +2020-09-01 Martin Liska + + * vec.h (vec_safe_grow): Change default of exact to false. + (vec_safe_grow_cleared): Likewise. + +2020-09-01 Roger Sayle + + PR middle-end/90597 + * targhooks.c (default_vector_alignment): Return at least the + GET_MODE_ALIGNMENT for the type's mode. + +2020-09-01 Richard Biener + + PR rtl-optimization/96812 + * tree-ssa-address.c (copy_ref_info): Also copy dependence info. + * cfgrtl.h (duplicate_insn_chain): Adjust prototype. + * cfgrtl.c (duplicate_insn_chain): Remap dependence info + if requested. + (cfg_layout_duplicate_bb): Make sure we remap dependence info. + * modulo-sched.c (duplicate_insns_of_cycles): Remap dependence + info. + (generate_prolog_epilog): Adjust. + * config/c6x/c6x.c (hwloop_optimize): Remap dependence info. + +2020-09-01 Kewen Lin + + * doc/sourcebuild.texi (has_arch_pwr5, has_arch_pwr6, has_arch_pwr7, + has_arch_pwr8, has_arch_pwr9): Document. + +2020-08-31 Carl Love + + PR target/85830 + * config/rs6000/altivec.h (vec_popcntb, vec_popcnth, vec_popcntw, + vec_popcntd): Remove defines. + +2020-08-31 Marek Polacek + Jason Merrill + + PR c++/93529 + * tree.c (build_constructor_from_vec): New. + * tree.h (build_constructor_from_vec): Declare. + +2020-08-31 Aldy Hernandez + + PR tree-optimization/96818 + * tree-vrp.c (find_case_label_range): Cast label range to + type of switch operand. + +2020-08-31 liuhongt + + PR target/96551 + * config/i386/sse.md (vec_unpacku_float_hi_v16si): For vector + compare to integer mask, don't use gen_rtx_LT, use + ix86_expand_mask_vec_cmp instead. + (vec_unpacku_float_hi_v16si): Ditto. + +2020-08-31 Jakub Jelinek + + * tree-cfg.c (verify_gimple_switch): If the first non-default case + label has CASE_HIGH, verify it has the same type as CASE_LOW. + +2020-08-31 Feng Xue + + PR ipa/96806 + * ipa-cp.c (decide_about_value): Use safe_add to avoid cost addition + overflow. + +2020-08-31 Jakub Jelinek + + PR middle-end/54201 + * varasm.c: Include alloc-pool.h. + (output_constant_pool_contents): Emit desc->mark < 0 entries as + aliases. + (struct constant_descriptor_rtx_data): New type. + (constant_descriptor_rtx_data_cmp): New function. + (struct const_rtx_data_hasher): New type. + (const_rtx_data_hasher::hash, const_rtx_data_hasher::equal): New + methods. + (optimize_constant_pool): New function. + (output_shared_constant_pool): Call it if TARGET_SUPPORTS_ALIASES. + +2020-08-31 Kewen Lin + + * doc/sourcebuild.texi (vect_len_load_store, + vect_partial_vectors_usage_1, vect_partial_vectors_usage_2, + vect_partial_vectors): Document. + +2020-08-30 Martin Sebor + + * builtins.c (access_ref::access_ref): Call get_size_range instead + of get_range. + +2020-08-30 Jakub Jelinek + + * config/i386/sse.md (ssse3_pshufbv8qi): Use gen_int_mode instead of + GEN_INT, and ix86_build_const_vector instead of gen_rtvec and + gen_rtx_CONT_VECTOR. + +2020-08-29 Bill Schmidt + + * config/rs6000/rs6000-builtin.def (MASK_FOR_STORE): Remove. + * config/rs6000/rs6000-call.c (rs6000_expand_builtin): Remove + all logic for ALTIVEC_BUILTIN_MASK_FOR_STORE. + +2020-08-28 Martin Sebor + + * attribs.c (init_attr_rdwr_indices): Use global access_mode. + * attribs.h (struct attr_access): Same. + * builtins.c (fold_builtin_strlen): Add argument. + (compute_objsize): Declare. + (get_range): Declare. + (check_read_access): New function. + (access_ref::access_ref): Define ctor. + (warn_string_no_nul): Add arguments. Handle -Wstrintop-overread. + (check_nul_terminated_array): Handle source strings of different + ranges of sizes. + (expand_builtin_strlen): Remove warning code, call check_read_access + instead. Declare locals closer to their initialization. + (expand_builtin_strnlen): Same. + (maybe_warn_for_bound): New function. + (warn_for_access): Remove argument. Handle -Wstrintop-overread. + (inform_access): Change argument type. + (get_size_range): New function. + (check_access): Remove unused arguments. Add new arguments. Handle + -Wstrintop-overread. Move warning code to helpers and call them. + Call check_nul_terminated_array. + (check_memop_access): Remove unnecessary and provide additional + arguments in calls. + (expand_builtin_memchr): Call check_read_access. + (expand_builtin_strcat): Remove unnecessary and provide additional + arguments in calls. + (expand_builtin_strcpy): Same. + (expand_builtin_strcpy_args): Same. Avoid testing no-warning bit. + (expand_builtin_stpcpy_1): Remove unnecessary and provide additional + arguments in calls. + (expand_builtin_stpncpy): Same. + (check_strncat_sizes): Same. + (expand_builtin_strncat): Remove unnecessary and provide additional + arguments in calls. Adjust comments. + (expand_builtin_strncpy): Remove unnecessary and provide additional + arguments in calls. + (expand_builtin_memcmp): Remove warning code. Call check_access. + (expand_builtin_strcmp): Call check_access instead of + check_nul_terminated_array. + (expand_builtin_strncmp): Handle -Wstrintop-overread. + (expand_builtin_fork_or_exec): Call check_access instead of + check_nul_terminated_array. + (expand_builtin): Same. + (fold_builtin_1): Pass additional argument. + (fold_builtin_n): Same. + (fold_builtin_strpbrk): Remove calls to check_nul_terminated_array. + (expand_builtin_memory_chk): Add comments. + (maybe_emit_chk_warning): Remove unnecessary and provide additional + arguments in calls. + (maybe_emit_sprintf_chk_warning): Same. Adjust comments. + * builtins.h (warn_string_no_nul): Add arguments. + (struct access_ref): Add member and ctor argument. + (struct access_data): Add members and ctor. + (check_access): Adjust signature. + * calls.c (maybe_warn_nonstring_arg): Return an indication of + whether a warning was issued. Issue -Wstrintop-overread instead + of -Wstringop-overflow. + (append_attrname): Adjust to naming changes. + (maybe_warn_rdwr_sizes): Same. Remove unnecessary and provide + additional arguments in calls. + * calls.h (maybe_warn_nonstring_arg): Return bool. + * doc/invoke.texi (-Wstringop-overread): Document new option. + * gimple-fold.c (gimple_fold_builtin_strcpy): Provide an additional + argument in call. + (gimple_fold_builtin_stpcpy): Same. + * tree-ssa-uninit.c (maybe_warn_pass_by_reference): Adjust to naming + changes. + * tree.h (enum access_mode): New type. + +2020-08-28 Bill Schmidt + + * config/rs6000/rs6000.c (rs6000_call_aix): Remove test for r12. + (rs6000_sibcall_aix): Likewise. + +2020-08-28 Andrew Stubbs + + * config/gcn/gcn-tree.c (gcn_goacc_get_worker_red_decl): Add "true" + parameter to vec_safe_grow_cleared. + +2020-08-28 Martin Sebor + + * ggc-common.c (gt_pch_save): Add argument to a call. + +2020-08-28 Przemyslaw Wirkus + + PR target/96357 + * config/aarch64/aarch64-sve.md + (cond_sub_relaxed_const): Updated and renamed from + cond_sub_any_const pattern. + (cond_sub_strict_const): New pattern. + +2020-08-28 Wei Wentao + + * doc/rtl.texi: Fix typo. + +2020-08-28 Uros Bizjak + + PR target/96744 + * config/i386/i386-expand.c (split_double_mode): Also handle + E_P2HImode and E_P2QImode. + * config/i386/sse.md (MASK_DWI): New define_mode_iterator. + (mov): New expander for P2HI,P2QI. + (*mov_internal): New define_insn_and_split to split + movement of P2QI/P2HI to 2 movqi/movhi patterns after reload. + +2020-08-28 liuhongt + + * common/config/i386/i386-common.c (ix86_handle_option): Set + AVX512DQ when AVX512VP2INTERSECT exists. + +2020-08-27 Jakub Jelinek + + PR target/65146 + * config/i386/i386.c (iamcu_alignment): Don't decrease alignment + for TYPE_ATOMIC types. + (ix86_local_alignment): Likewise. + (ix86_minimum_alignment): Likewise. + (x86_field_alignment): Likewise, and emit a -Wpsabi diagnostic + for it. + +2020-08-27 Bill Schmidt + + PR target/96787 + * config/rs6000/rs6000.c (rs6000_sibcall_aix): Support + indirect call for ELFv2. + +2020-08-27 Richard Biener + + PR tree-optimization/96522 + * tree-ssa-address.c (copy_ref_info): Reset flow-sensitive + info of the copied points-to. Transfer bigger alignment + via the access type. + * tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_stmt): + Reset all flow-sensitive info. + +2020-08-27 Martin Liska + + * alias.c (init_alias_analysis): Set exact argument of a vector + growth function to true. + * calls.c (internal_arg_pointer_based_exp_scan): Likewise. + * cfgbuild.c (find_many_sub_basic_blocks): Likewise. + * cfgexpand.c (expand_asm_stmt): Likewise. + * cfgrtl.c (rtl_create_basic_block): Likewise. + * combine.c (combine_split_insns): Likewise. + (combine_instructions): Likewise. + * config/aarch64/aarch64-sve-builtins.cc (function_expander::add_output_operand): Likewise. + (function_expander::add_input_operand): Likewise. + (function_expander::add_integer_operand): Likewise. + (function_expander::add_address_operand): Likewise. + (function_expander::add_fixed_operand): Likewise. + * df-core.c (df_worklist_dataflow_doublequeue): Likewise. + * dwarf2cfi.c (update_row_reg_save): Likewise. + * early-remat.c (early_remat::init_block_info): Likewise. + (early_remat::finalize_candidate_indices): Likewise. + * except.c (sjlj_build_landing_pads): Likewise. + * final.c (compute_alignments): Likewise. + (grow_label_align): Likewise. + * function.c (temp_slots_at_level): Likewise. + * fwprop.c (build_single_def_use_links): Likewise. + (update_uses): Likewise. + * gcc.c (insert_wrapper): Likewise. + * genautomata.c (create_state_ainsn_table): Likewise. + (add_vect): Likewise. + (output_dead_lock_vect): Likewise. + * genmatch.c (capture_info::capture_info): Likewise. + (parser::finish_match_operand): Likewise. + * genrecog.c (optimize_subroutine_group): Likewise. + (merge_pattern_info::merge_pattern_info): Likewise. + (merge_into_decision): Likewise. + (print_subroutine_start): Likewise. + (main): Likewise. + * gimple-loop-versioning.cc (loop_versioning::loop_versioning): Likewise. + * gimple.c (gimple_set_bb): Likewise. + * graphite-isl-ast-to-gimple.c (translate_isl_ast_node_user): Likewise. + * haifa-sched.c (sched_extend_luids): Likewise. + (extend_h_i_d): Likewise. + * insn-addr.h (insn_addresses_new): Likewise. + * ipa-cp.c (gather_context_independent_values): Likewise. + (find_more_contexts_for_caller_subset): Likewise. + * ipa-devirt.c (final_warning_record::grow_type_warnings): Likewise. + (ipa_odr_read_section): Likewise. + * ipa-fnsummary.c (evaluate_properties_for_edge): Likewise. + (ipa_fn_summary_t::duplicate): Likewise. + (analyze_function_body): Likewise. + (ipa_merge_fn_summary_after_inlining): Likewise. + (read_ipa_call_summary): Likewise. + * ipa-icf.c (sem_function::bb_dict_test): Likewise. + * ipa-prop.c (ipa_alloc_node_params): Likewise. + (parm_bb_aa_status_for_bb): Likewise. + (ipa_compute_jump_functions_for_edge): Likewise. + (ipa_analyze_node): Likewise. + (update_jump_functions_after_inlining): Likewise. + (ipa_read_edge_info): Likewise. + (read_ipcp_transformation_info): Likewise. + (ipcp_transform_function): Likewise. + * ipa-reference.c (ipa_reference_write_optimization_summary): Likewise. + * ipa-split.c (execute_split_functions): Likewise. + * ira.c (find_moveable_pseudos): Likewise. + * lower-subreg.c (decompose_multiword_subregs): Likewise. + * lto-streamer-in.c (input_eh_regions): Likewise. + (input_cfg): Likewise. + (input_struct_function_base): Likewise. + (input_function): Likewise. + * modulo-sched.c (set_node_sched_params): Likewise. + (extend_node_sched_params): Likewise. + (schedule_reg_moves): Likewise. + * omp-general.c (omp_construct_simd_compare): Likewise. + * passes.c (pass_manager::create_pass_tab): Likewise. + (enable_disable_pass): Likewise. + * predict.c (determine_unlikely_bbs): Likewise. + * profile.c (compute_branch_probabilities): Likewise. + * read-rtl-function.c (function_reader::parse_block): Likewise. + * read-rtl.c (rtx_reader::read_rtx_code): Likewise. + * reg-stack.c (stack_regs_mentioned): Likewise. + * regrename.c (regrename_init): Likewise. + * rtlanal.c (T>::add_single_to_queue): Likewise. + * sched-deps.c (init_deps_data_vector): Likewise. + * sel-sched-ir.c (sel_extend_global_bb_info): Likewise. + (extend_region_bb_info): Likewise. + (extend_insn_data): Likewise. + * symtab.c (symtab_node::create_reference): Likewise. + * tracer.c (tail_duplicate): Likewise. + * trans-mem.c (tm_region_init): Likewise. + (get_bb_regions_instrumented): Likewise. + * tree-cfg.c (init_empty_tree_cfg_for_function): Likewise. + (build_gimple_cfg): Likewise. + (create_bb): Likewise. + (move_block_to_fn): Likewise. + * tree-complex.c (tree_lower_complex): Likewise. + * tree-if-conv.c (predicate_rhs_code): Likewise. + * tree-inline.c (copy_bb): Likewise. + * tree-into-ssa.c (get_ssa_name_ann): Likewise. + (mark_phi_for_rewrite): Likewise. + * tree-object-size.c (compute_builtin_object_size): Likewise. + (init_object_sizes): Likewise. + * tree-predcom.c (initialize_root_vars_store_elim_1): Likewise. + (initialize_root_vars_store_elim_2): Likewise. + (prepare_initializers_chain_store_elim): Likewise. + * tree-ssa-address.c (addr_for_mem_ref): Likewise. + (multiplier_allowed_in_address_p): Likewise. + * tree-ssa-coalesce.c (ssa_conflicts_new): Likewise. + * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise. + * tree-ssa-loop-ivopts.c (addr_offset_valid_p): Likewise. + (get_address_cost_ainc): Likewise. + * tree-ssa-loop-niter.c (discover_iteration_bound_by_body_walk): Likewise. + * tree-ssa-pre.c (add_to_value): Likewise. + (phi_translate_1): Likewise. + (do_pre_regular_insertion): Likewise. + (do_pre_partial_partial_insertion): Likewise. + (init_pre): Likewise. + * tree-ssa-propagate.c (ssa_prop_init): Likewise. + (update_call_from_tree): Likewise. + * tree-ssa-reassoc.c (optimize_range_tests_cmp_bitwise): Likewise. + * tree-ssa-sccvn.c (vn_reference_lookup_3): Likewise. + (vn_reference_lookup_pieces): Likewise. + (eliminate_dom_walker::eliminate_push_avail): Likewise. + * tree-ssa-strlen.c (set_strinfo): Likewise. + (get_stridx_plus_constant): Likewise. + (zero_length_string): Likewise. + (find_equal_ptrs): Likewise. + (printf_strlen_execute): Likewise. + * tree-ssa-threadedge.c (set_ssa_name_value): Likewise. + * tree-ssanames.c (make_ssa_name_fn): Likewise. + * tree-streamer-in.c (streamer_read_tree_bitfields): Likewise. + * tree-vect-loop.c (vect_record_loop_mask): Likewise. + (vect_get_loop_mask): Likewise. + (vect_record_loop_len): Likewise. + (vect_get_loop_len): Likewise. + * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): Likewise. + * tree-vect-slp.c (vect_slp_convert_to_external): Likewise. + (vect_bb_slp_scalar_cost): Likewise. + (vect_bb_vectorization_profitable_p): Likewise. + (vectorizable_slp_permutation): Likewise. + * tree-vect-stmts.c (vectorizable_call): Likewise. + (vectorizable_simd_clone_call): Likewise. + (scan_store_can_perm_p): Likewise. + (vectorizable_store): Likewise. + * expr.c: Likewise. + * vec.c (test_safe_grow_cleared): Likewise. + * vec.h (vec_safe_grow): Likewise. + (vec_safe_grow_cleared): Likewise. + (vl_ptr>::safe_grow): Likewise. + (vl_ptr>::safe_grow_cleared): Likewise. + * config/c6x/c6x.c (insn_set_clock): Likewise. + +2020-08-27 Richard Biener + + * tree-pretty-print.c (dump_mem_ref): Handle TARGET_MEM_REFs. + (dump_generic_node): Use dump_mem_ref also for TARGET_MEM_REF. + +2020-08-27 Alex Coplan + + * lra-constraints.c (canonicalize_reload_addr): New. + (curr_insn_transform): Use canonicalize_reload_addr to ensure we + generate canonical RTL for an address reload. + +2020-08-27 Zhiheng Xie + + * config/aarch64/aarch64-simd-builtins.def: Add proper FLAG + for rounding intrinsics. + +2020-08-27 Zhiheng Xie + + * config/aarch64/aarch64-simd-builtins.def: Add proper FLAG + for min/max intrinsics. + +2020-08-27 Richard Biener + + PR tree-optimization/96579 + * tree-ssa-reassoc.c (linearize_expr_tree): If we expand + rhs via special ops make sure to swap operands. + +2020-08-27 Richard Biener + + PR tree-optimization/96565 + * tree-ssa-dse.c (dse_classify_store): Remove defs with + no uses from further processing. + +2020-08-26 Göran Uddeborg + + PR gcov-profile/96285 + * common.opt, doc/invoke.texi: Clarify wording of + -fprofile-exclude-files and adjust -fprofile-filter-files to + match. + +2020-08-26 H.J. Lu + + PR target/96802 + * config/i386/i386-options.c (ix86_valid_target_attribute_inner_p): + Reject target("no-general-regs-only"). + +2020-08-26 Jozef Lawrynowicz + + * config/msp430/constraints.md (K): Change unused constraint to + constraint to a const_int between 1 and 19. + (P): New constraint. + * config/msp430/msp430-protos.h (msp430x_logical_shift_right): Remove. + (msp430_expand_shift): New. + (msp430_output_asm_shift_insns): New. + * config/msp430/msp430.c (msp430_rtx_costs): Remove shift costs. + (CSH): Remove. + (msp430_expand_helper): Remove hard-coded generation of some inline + shift insns. + (use_helper_for_const_shift): New. + (msp430_expand_shift): New. + (msp430_output_asm_shift_insns): New. + (msp430_print_operand): Add new 'W' operand selector. + (msp430x_logical_shift_right): Remove. + * config/msp430/msp430.md (HPSI): New define_mode_iterator. + (HDI): Likewise. + (any_shift): New define_code_iterator. + (shift_insn): New define_code_attr. + Adjust unnamed insn patterns searched for by combine. + (ashlhi3): Remove. + (slli_1): Remove. + (430x_shift_left): Remove. + (slll_1): Remove. + (slll_2): Remove. + (ashlsi3): Remove. + (ashldi3): Remove. + (ashrhi3): Remove. + (srai_1): Remove. + (430x_arithmetic_shift_right): Remove. + (srap_1): Remove. + (srap_2): Remove. + (sral_1): Remove. + (sral_2): Remove. + (ashrsi3): Remove. + (ashrdi3): Remove. + (lshrhi3): Remove. + (srli_1): Remove. + (430x_logical_shift_right): Remove. + (srlp_1): Remove. + (srll_1): Remove. + (srll_2x): Remove. + (lshrsi3): Remove. + (lshrdi3): Remove. + (3): New define_expand. + (hi3_430): New define_insn. + (si3_const): Likewise. + (ashl3_430x): Likewise. + (ashr3_430x): Likewise. + (lshr3_430x): Likewise. + (*bitbranch4_z): Replace renamed predicate msp430_bitpos with + const_0_to_15_operand. + * config/msp430/msp430.opt: New option -mmax-inline-shift=. + * config/msp430/predicates.md (const_1_to_8_operand): New predicate. + (const_0_to_15_operand): Rename msp430_bitpos predicate. + (const_1_to_19_operand): New predicate. + * doc/invoke.texi: Document -mmax-inline-shift=. + +2020-08-26 Aldy Hernandez + + * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Abstract code out to... + * tree-vrp.c (find_case_label_range): ...here. Rewrite for to use irange + API. + (simplify_stmt_for_jump_threading): Call find_case_label_range instead of + duplicating the code in simplify_stmt_for_jump_threading. + * tree-vrp.h (find_case_label_range): New prototype. + +2020-08-26 Richard Biener + + PR tree-optimization/96698 + * tree-vectorizer.h (loop_vec_info::reduc_latch_defs): New. + (loop_vec_info::reduc_latch_slp_defs): Likewise. + * tree-vect-stmts.c (vect_transform_stmt): Only record + stmts to update PHI latches from, perform the update ... + * tree-vect-loop.c (vect_transform_loop): ... here after + vectorizing those PHIs. + (info_for_reduction): Properly handle non-reduction PHIs. + +2020-08-26 Martin Liska + + * cgraphunit.c (process_symver_attribute): Match only symver + TREE_PURPOSE. + +2020-08-26 Richard Biener + + PR tree-optimization/96783 + * tree-vect-stmts.c (get_group_load_store_type): Use + VMAT_ELEMENTWISE for negative strides when we cannot + use VMAT_STRIDED_SLP. + +2020-08-26 Martin Liska + + * doc/invoke.texi: Document how are pie and pic options merged. + +2020-08-26 Zhiheng Xie + + * config/aarch64/aarch64-simd-builtins.def: Add proper FLAG + for add/sub arithmetic intrinsics. + +2020-08-26 Jakub Jelinek + + PR debug/96729 + * dwarf2out.c (dwarf2out_next_real_insn): Adjust function comment. + (dwarf2out_var_location): Look for next_note only if next_real is + non-NULL, in that case look for the first non-deleted + NOTE_INSN_VAR_LOCATION between loc_note and next_real, if any. + +2020-08-26 Iain Buclaw + + * config/tilepro/gen-mul-tables.cc (main): Define IN_TARGET_CODE to 1 + in the target file. + +2020-08-26 Martin Liska + + * cgraphunit.c (process_symver_attribute): Allow multiple + symver attributes for one symbol. + * doc/extend.texi: Document the change. + +2020-08-25 H.J. Lu + + PR target/95863 + * config/i386/i386.h (CTZ_DEFINED_VALUE_AT_ZERO): Return 0/2. + (CLZ_DEFINED_VALUE_AT_ZERO): Likewise. + +2020-08-25 Roger Sayle + + PR middle-end/87256 + * config/pa/pa.c (hppa_rtx_costs_shadd_p): New helper function + to check for coefficients supported by shNadd and shladd,l. + (hppa_rtx_costs): Rewrite to avoid using estimates based upon + FACTOR and enable recursing deeper into RTL expressions. + +2020-08-25 Roger Sayle + + * config/pa/pa.md (ashldi3): Additionally, on !TARGET_64BIT + generate a two instruction shd/zdep sequence when shifting + registers by suitable constants. + (shd_internal): New define_expand to provide gen_shd_internal. + +2020-08-25 Richard Sandiford + + * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Rename + __ARM_FEATURE_SVE_VECTOR_OPERATIONS to + __ARM_FEATURE_SVE_VECTOR_OPERATORS. + +2020-08-25 Richard Sandiford + + * config/aarch64/aarch64-sve-builtins.cc (add_sve_type_attribute): + Take the ACLE name of the type as a parameter and add it as fourth + argument to the "SVE type" attribute. + (register_builtin_types): Update call accordingly. + (register_tuple_type): Likewise. Construct the name of the type + earlier in order to do this. + (get_arm_sve_vector_bits_attributes): New function. + (handle_arm_sve_vector_bits_attribute): Report a more sensible + error message if the attribute is applied to an SVE tuple type. + Don't allow the attribute to be applied to an existing fixed-length + SVE type. Mangle the new type as __SVE_VLS. + Add a dummy TYPE_DECL to the new type. + +2020-08-25 Richard Sandiford + + * config/aarch64/aarch64-sve-builtins.cc (DEF_SVE_TYPE): Add a + leading "u" to each mangled name. + +2020-08-25 Richard Biener + + PR tree-optimization/96548 + PR tree-optimization/96760 + * tree-ssa-loop-im.c (tree_ssa_lim): Recompute RPO after + store-motion. + +2020-08-25 Jakub Jelinek + + PR tree-optimization/96722 + * gimple.c (infer_nonnull_range): Formatting fix. + (infer_nonnull_range_by_dereference): Return false for clobber stmts. + +2020-08-25 Jakub Jelinek + + PR tree-optimization/96758 + * tree-ssa-strlen.c (handle_builtin_string_cmp): If both cstlen1 + and cstlen2 are set, set cmpsiz to their minimum, otherwise use the + one that is set. If bound is used and smaller than cmpsiz, set cmpsiz + to bound. If both cstlen1 and cstlen2 are set, perform the optimization. + +2020-08-25 Martin Jambor + + PR tree-optimization/96730 + * tree-sra.c (create_access): Disqualify any aggregate with negative + offset access. + (build_ref_for_model): Add assert that offset is non-negative. + +2020-08-25 Wei Wentao + + * rtl.def: Fix typo in comment. + +2020-08-25 Roger Sayle + + PR tree-optimization/21137 + * fold-const.c (fold_binary_loc) [NE_EXPR/EQ_EXPR]: Call + STRIP_NOPS when checking whether to simplify ((x>>C1)&C2) != 0. + +2020-08-25 Andrew Pinski + + PR middle-end/64242 + * config/mips/mips.md (builtin_longjmp): Restore the frame + pointer and stack pointer and gp. + +2020-08-25 Richard Biener + + PR debug/96690 + * dwarf2out.c (reference_to_unused): Make FUNCTION_DECL + processing more consistent with respect to + symtab->global_info_ready. + (tree_add_const_value_attribute): Unconditionally call + rtl_for_decl_init to do all mangling early but throw + away the result if early_dwarf. + +2020-08-25 Hongtao Liu + + PR target/96755 + * config/i386/sse.md: Correct the mode of NOT operands to + SImode. + +2020-08-25 Jakub Jelinek + + PR tree-optimization/96715 + * match.pd (copysign(x,-x) -> -x): New simplification. + +2020-08-25 Jakub Jelinek + + PR target/95450 + * fold-const.c (native_interpret_real): For MODE_COMPOSITE_P modes + punt if the to be returned REAL_CST does not encode to the bitwise + same representation. + +2020-08-24 Gerald Pfeifer + + * doc/install.texi (Configuration): Switch valgrind.com to https. + +2020-08-24 Christophe Lyon + + PR target/94538 + PR target/94538 + * config/arm/thumb1.md: Disable set-constant splitter when + TARGET_HAVE_MOVT. + (thumb1_movsi_insn): Fix -mpure-code + alternative. + +2020-08-24 Martin Liska + + * tree-vect-data-refs.c (dr_group_sort_cmp): Work on + data_ref_pair. + (vect_analyze_data_ref_accesses): Work on groups. + (vect_find_stmt_data_reference): Add group_id argument and fill + up dataref_groups vector. + * tree-vect-loop.c (vect_get_datarefs_in_loop): Pass new + arguments. + (vect_analyze_loop_2): Likewise. + * tree-vect-slp.c (vect_slp_analyze_bb_1): Pass argument. + (vect_slp_bb_region): Likewise. + (vect_slp_region): Likewise. + (vect_slp_bb):Work on the entire BB. + * tree-vectorizer.h (vect_analyze_data_ref_accesses): Add new + argument. + (vect_find_stmt_data_reference): Likewise. + +2020-08-24 Martin Liska + + PR tree-optimization/96597 + * tree-ssa-sccvn.c (vn_reference_lookup_call): Add missing + initialization of ::punned. + (vn_reference_insert): Use consistently false instead of 0. + (vn_reference_insert_pieces): Likewise. + +2020-08-24 Hans-Peter Nilsson + + PR target/93372 + * reorg.c (fill_slots_from_thread): Allow trial insns that clobber + TARGET_FLAGS_REGNUM as delay-slot fillers. + +2020-08-23 H.J. Lu + + PR target/96744 + * config/i386/i386-options.c (IX86_ATTR_IX86_YES): New. + (IX86_ATTR_IX86_NO): Likewise. + (ix86_opt_type): Add ix86_opt_ix86_yes and ix86_opt_ix86_no. + (ix86_valid_target_attribute_inner_p): Handle general-regs-only, + ix86_opt_ix86_yes and ix86_opt_ix86_no. + (ix86_option_override_internal): Check opts->x_ix86_target_flags + instead of opts->x_ix86_target_flags. + * doc/extend.texi: Document target("general-regs-only") function + attribute. + +2020-08-21 Richard Sandiford + + * doc/extend.texi: Update links to Arm docs. + * doc/invoke.texi: Likewise. + +2020-08-21 Hongtao Liu + + PR target/96262 + * config/i386/i386-expand.c + (ix86_expand_vec_shift_qihi_constant): Refine. + +2020-08-21 Alex Coplan + + PR jit/63854 + * gcc.c (set_static_spec): New. + (set_static_spec_owned): New. + (set_static_spec_shared): New. + (driver::maybe_putenv_COLLECT_LTO_WRAPPER): Use + set_static_spec_owned() to take ownership of lto_wrapper_file + such that it gets freed in driver::finalize. + (driver::maybe_run_linker): Use set_static_spec_shared() to + ensure that we don't try and free() the static string "ld", + also ensuring that any previously-allocated string in + linker_name_spec is freed. Likewise with argv0. + (driver::finalize): Use set_static_spec_shared() when resetting + specs that previously had allocated strings; remove if(0) + around call to free(). + +2020-08-21 Senthil Kumar Selvaraj + + * emit-rtl.c (try_split): Call copy_frame_info_to_split_insn + to split certain RTX_FRAME_RELATED_P insns. + * recog.c (copy_frame_info_to_split_insn): New function. + (peep2_attempt): Split copying of frame related info of + RTX_FRAME_RELATED_P insns into above function and call it. + * recog.h (copy_frame_info_to_split_insn): Declare it. + +2020-08-21 liuhongt + + PR target/88808 + * config/i386/i386.c (ix86_preferred_reload_class): Allow + QImode data go into mask registers. + * config/i386/i386.md: (*movhi_internal): Adjust constraints + for mask registers. + (*movqi_internal): Ditto. + (*anddi_1): Support mask register operations + (*and_1): Ditto. + (*andqi_1): Ditto. + (*andn_1): Ditto. + (*_1): Ditto. + (*qi_1): Ditto. + (*one_cmpl2_1): Ditto. + (*one_cmplsi2_1_zext): Ditto. + (*one_cmplqi2_1): Ditto. + (define_peephole2): Move constant 0/-1 directly into mask + registers. + * config/i386/predicates.md (mask_reg_operand): New predicate. + * config/i386/sse.md (define_split): Add post-reload splitters + that would convert "generic" patterns to mask patterns. + (*knotsi_1_zext): New define_insn. + +2020-08-21 liuhongt + + * config/i386/x86-tune-costs.h (skylake_cost): Adjust cost + model. + +2020-08-21 liuhongt + + * config/i386/i386.c (inline_secondary_memory_needed): + No memory is needed between mask regs and gpr. + (ix86_hard_regno_mode_ok): Add condition TARGET_AVX512F for + mask regno. + * config/i386/i386.h (enum reg_class): Add INT_MASK_REGS. + (REG_CLASS_NAMES): Ditto. + (REG_CLASS_CONTENTS): Ditto. + * config/i386/i386.md: Exclude mask register in + define_peephole2 which is avaiable only for gpr. + +2020-08-21 H.J. Lu + + PR target/71453 + * config/i386/i386.h (struct processor_costs): Add member + mask_to_integer, integer_to_mask, mask_load[3], mask_store[3], + mask_move. + * config/i386/x86-tune-costs.h (ix86_size_cost, i386_cost, + i386_cost, pentium_cost, lakemont_cost, pentiumpro_cost, + geode_cost, k6_cost, athlon_cost, k8_cost, amdfam10_cost, + bdver_cost, znver1_cost, znver2_cost, skylake_cost, + btver1_cost, btver2_cost, pentium4_cost, nocona_cost, + atom_cost, slm_cost, intel_cost, generic_cost, core_cost): + Initialize mask_load[3], mask_store[3], mask_move, + integer_to_mask, mask_to_integer for all target costs. + * config/i386/i386.c (ix86_register_move_cost): Using cost + model of mask registers. + (inline_memory_move_cost): Ditto. + (ix86_register_move_cost): Ditto. + +2020-08-20 Iain Buclaw + + * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Don't include + VxWorks header files if -fself-test is used. + (STARTFILE_PREFIX_SPEC): Avoid using VSB_DIR if -fself-test is used. + +2020-08-20 Joe Ramsay + + PR target/96683 + * config/arm/mve.md (mve_vst1q_f): Require MVE memory operand for + destination. + (mve_vst1q_): Likewise. + +2020-08-19 2020-08-19 Carl Love + + * config/rs6000/rs6000-builtin.def (BU_P10V_0, BU_P10V_1, + BU_P10V_2, BU_P10V_3): Rename BU_P10V_VSX_0, BU_P10V_VSX_1, + BU_P10V_VSX_2, BU_P10V_VSX_3 respectively. + (BU_P10V_4): Remove. + (BU_P10V_AV_0, BU_P10V_AV_1, BU_P10V_AV_2, BU_P10V_AV_3, BU_P10V_AV_4): + New definitions for Power 10 Altivec macros. + (VSTRIBR, VSTRIHR, VSTRIBL, VSTRIHL, VSTRIBR_P, VSTRIHR_P, + VSTRIBL_P, VSTRIHL_P, MTVSRBM, MTVSRHM, MTVSRWM, MTVSRDM, MTVSRQM, + VEXPANDMB, VEXPANDMH, VEXPANDMW, VEXPANDMD, VEXPANDMQ, VEXTRACTMB, + VEXTRACTMH, VEXTRACTMW, VEXTRACTMD, VEXTRACTMQ): Replace macro + expansion BU_P10V_1 with BU_P10V_AV_1. + (VCLRLB, VCLRRB, VCFUGED, VCLZDM, VCTZDM, VPDEPD, VPEXTD, VGNB, + VCNTMBB, VCNTMBH, VCNTMBW, VCNTMBD): Replace macro expansion + BU_P10V_2 with BU_P10V_AV_2. + (VEXTRACTBL, VEXTRACTHL, VEXTRACTWL, VEXTRACTDL, VEXTRACTBR, VEXTRACTHR, + VEXTRACTWR, VEXTRACTDR, VINSERTGPRBL, VINSERTGPRHL, VINSERTGPRWL, + VINSERTGPRDL, VINSERTVPRBL, VINSERTVPRHL, VINSERTVPRWL, VINSERTGPRBR, + VINSERTGPRHR, VINSERTGPRWR, VINSERTGPRDR, VINSERTVPRBR, VINSERTVPRHR, + VINSERTVPRWR, VREPLACE_ELT_V4SI, VREPLACE_ELT_UV4SI, VREPLACE_ELT_V2DF, + VREPLACE_ELT_V4SF, VREPLACE_ELT_V2DI, VREPLACE_ELT_UV2DI, VREPLACE_UN_V4SI, + VREPLACE_UN_UV4SI, VREPLACE_UN_V4SF, VREPLACE_UN_V2DI, VREPLACE_UN_UV2DI, + VREPLACE_UN_V2DF, VSLDB_V16QI, VSLDB_V8HI, VSLDB_V4SI, VSLDB_V2DI, + VSRDB_V16QI, VSRDB_V8HI, VSRDB_V4SI, VSRDB_V2DI): Replace macro expansion + BU_P10V_3 with BU_P10V_AV_3. + (VXXSPLTIW_V4SI, VXXSPLTIW_V4SF, VXXSPLTID): Replace macro expansion + BU_P10V_1 with BU_P10V_AV_1. + (XXGENPCVM_V16QI, XXGENPCVM_V8HI, XXGENPCVM_V4SI, XXGENPCVM_V2DI): + Replace macro expansion BU_P10V_2 with BU_P10V_VSX_2. + (VXXSPLTI32DX_V4SI, VXXSPLTI32DX_V4SF, VXXBLEND_V16QI, VXXBLEND_V8HI, + VXXBLEND_V4SI, VXXBLEND_V2DI, VXXBLEND_V4SF, VXXBLEND_V2DF): Replace macor + expansion BU_P10V_3 with BU_P10V_VSX_3. + (XXEVAL, VXXPERMX): Replace macro expansion BU_P10V_4 with BU_P10V_VSX_4. + (XVCVBF16SP, XVCVSPBF16): Replace macro expansion BU_VSX_1 with + BU_P10V_VSX_1. Also change MISC to CONST. + * config/rs6000/rs6000-c.c: (P10_BUILTIN_VXXPERMX): Replace with + P10V_BUILTIN_VXXPERMX. + (P10_BUILTIN_VCLRLB, P10_BUILTIN_VCLRLB, P10_BUILTIN_VCLRRB, + P10_BUILTIN_VGNB, P10_BUILTIN_XXEVAL, P10_BUILTIN_VXXPERMX, + P10_BUILTIN_VEXTRACTBL, P10_BUILTIN_VEXTRACTHL, P10_BUILTIN_VEXTRACTWL, + P10_BUILTIN_VEXTRACTDL, P10_BUILTIN_VINSERTGPRHL, + P10_BUILTIN_VINSERTGPRWL, P10_BUILTIN_VINSERTGPRDL, + P10_BUILTIN_VINSERTVPRBL, P10_BUILTIN_VINSERTVPRHL, + P10_BUILTIN_VEXTRACTBR, P10_BUILTIN_VEXTRACTHR, + P10_BUILTIN_VEXTRACTWR, P10_BUILTIN_VEXTRACTDR, + P10_BUILTIN_VINSERTGPRBR, P10_BUILTIN_VINSERTGPRHR, + P10_BUILTIN_VINSERTGPRWR, P10_BUILTIN_VINSERTGPRDR, + P10_BUILTIN_VINSERTVPRBR, P10_BUILTIN_VINSERTVPRHR, + P10_BUILTIN_VINSERTVPRWR, P10_BUILTIN_VREPLACE_ELT_UV4SI, + P10_BUILTIN_VREPLACE_ELT_V4SI, P10_BUILTIN_VREPLACE_ELT_UV2DI, + P10_BUILTIN_VREPLACE_ELT_V2DI, P10_BUILTIN_VREPLACE_ELT_V2DF, + P10_BUILTIN_VREPLACE_UN_UV4SI, P10_BUILTIN_VREPLACE_UN_V4SI, + P10_BUILTIN_VREPLACE_UN_V4SF, P10_BUILTIN_VREPLACE_UN_UV2DI, + P10_BUILTIN_VREPLACE_UN_V2DI, P10_BUILTIN_VREPLACE_UN_V2DF, + P10_BUILTIN_VSLDB_V16QI, P10_BUILTIN_VSLDB_V16QI, + P10_BUILTIN_VSLDB_V8HI, P10_BUILTIN_VSLDB_V4SI, + P10_BUILTIN_VSLDB_V2DI, P10_BUILTIN_VXXSPLTIW_V4SI, + P10_BUILTIN_VXXSPLTIW_V4SF, P10_BUILTIN_VXXSPLTID, + P10_BUILTIN_VXXSPLTI32DX_V4SI, P10_BUILTIN_VXXSPLTI32DX_V4SF, + P10_BUILTIN_VXXBLEND_V16QI, P10_BUILTIN_VXXBLEND_V8HI, + P10_BUILTIN_VXXBLEND_V4SI, P10_BUILTIN_VXXBLEND_V2DI, + P10_BUILTIN_VXXBLEND_V4SF, P10_BUILTIN_VXXBLEND_V2DF, + P10_BUILTIN_VSRDB_V16QI, P10_BUILTIN_VSRDB_V8HI, + P10_BUILTIN_VSRDB_V4SI, P10_BUILTIN_VSRDB_V2DI, + P10_BUILTIN_VSTRIBL, P10_BUILTIN_VSTRIHL, + P10_BUILTIN_VSTRIBL_P, P10_BUILTIN_VSTRIHL_P, + P10_BUILTIN_VSTRIBR, P10_BUILTIN_VSTRIHR, + P10_BUILTIN_VSTRIBR_P, P10_BUILTIN_VSTRIHR_P, + P10_BUILTIN_MTVSRBM, P10_BUILTIN_MTVSRHM, + P10_BUILTIN_MTVSRWM, P10_BUILTIN_MTVSRDM, + P10_BUILTIN_MTVSRQM, P10_BUILTIN_VCNTMBB, + P10_BUILTIN_VCNTMBH, P10_BUILTIN_VCNTMBW, + P10_BUILTIN_VCNTMBD, P10_BUILTIN_VEXPANDMB, + P10_BUILTIN_VEXPANDMH, P10_BUILTIN_VEXPANDMW, + P10_BUILTIN_VEXPANDMD, P10_BUILTIN_VEXPANDMQ, + P10_BUILTIN_VEXTRACTMB, P10_BUILTIN_VEXTRACTMH, + P10_BUILTIN_VEXTRACTMW, P10_BUILTIN_VEXTRACTMD, + P10_BUILTIN_VEXTRACTMQ, P10_BUILTIN_XVTLSBB_ZEROS, + P10_BUILTIN_XVTLSBB_ONES): Replace with + P10V_BUILTIN_VCLRLB, P10V_BUILTIN_VCLRLB, P10V_BUILTIN_VCLRRB, + P10V_BUILTIN_VGNB, P10V_BUILTIN_XXEVAL, P10V_BUILTIN_VXXPERMX, + P10V_BUILTIN_VEXTRACTBL, P10V_BUILTIN_VEXTRACTHL, P10V_BUILTIN_VEXTRACTWL, + P10V_BUILTIN_VEXTRACTDL, P10V_BUILTIN_VINSERTGPRHL, + P10V_BUILTIN_VINSERTGPRWL, P10V_BUILTIN_VINSERTGPRDL, + P10V_BUILTIN_VINSERTVPRBL,P10V_BUILTIN_VINSERTVPRHL, + P10V_BUILTIN_VEXTRACTBR, P10V_BUILTIN_VEXTRACTHR + P10V_BUILTIN_VEXTRACTWR, P10V_BUILTIN_VEXTRACTDR, + P10V_BUILTIN_VINSERTGPRBR, P10V_BUILTIN_VINSERTGPRHR, + P10V_BUILTIN_VINSERTGPRWR, P10V_BUILTIN_VINSERTGPRDR, + P10V_BUILTIN_VINSERTVPRBR, P10V_BUILTIN_VINSERTVPRHR, + P10V_BUILTIN_VINSERTVPRWR, P10V_BUILTIN_VREPLACE_ELT_UV4SI, + P10V_BUILTIN_VREPLACE_ELT_V4SI, P10V_BUILTIN_VREPLACE_ELT_UV2DI, + P10V_BUILTIN_VREPLACE_ELT_V2DI, P10V_BUILTIN_VREPLACE_ELT_V2DF, + P10V_BUILTIN_VREPLACE_UN_UV4SI, P10V_BUILTIN_VREPLACE_UN_V4SI, + P10V_BUILTIN_VREPLACE_UN_V4SF, P10V_BUILTIN_VREPLACE_UN_UV2DI, + P10V_BUILTIN_VREPLACE_UN_V2DI, P10V_BUILTIN_VREPLACE_UN_V2DF, + P10V_BUILTIN_VSLDB_V16QI, P10V_BUILTIN_VSLDB_V16QI, + P10V_BUILTIN_VSLDB_V8HI, P10V_BUILTIN_VSLDB_V4SI, + P10V_BUILTIN_VSLDB_V2DI, P10V_BUILTIN_VXXSPLTIW_V4SI, + P10V_BUILTIN_VXXSPLTIW_V4SF, P10V_BUILTIN_VXXSPLTID, + P10V_BUILTIN_VXXSPLTI32DX_V4SI, P10V_BUILTIN_VXXSPLTI32DX_V4SF, + P10V_BUILTIN_VXXBLEND_V16QI, P10V_BUILTIN_VXXBLEND_V8HI, + P10V_BUILTIN_VXXBLEND_V4SI, P10V_BUILTIN_VXXBLEND_V2DI, + P10V_BUILTIN_VXXBLEND_V4SF, P10V_BUILTIN_VXXBLEND_V2DF, + P10V_BUILTIN_VSRDB_V16QI, P10V_BUILTIN_VSRDB_V8HI, + P10V_BUILTIN_VSRDB_V4SI, P10V_BUILTIN_VSRDB_V2DI, + P10V_BUILTIN_VSTRIBL, P10V_BUILTIN_VSTRIHL, + P10V_BUILTIN_VSTRIBL_P, P10V_BUILTIN_VSTRIHL_P, + P10V_BUILTIN_VSTRIBR, P10V_BUILTIN_VSTRIHR, + P10V_BUILTIN_VSTRIBR_P, P10V_BUILTIN_VSTRIHR_P, + P10V_BUILTIN_MTVSRBM, P10V_BUILTIN_MTVSRHM, + P10V_BUILTIN_MTVSRWM, P10V_BUILTIN_MTVSRDM, + P10V_BUILTIN_MTVSRQM, P10V_BUILTIN_VCNTMBB, + P10V_BUILTIN_VCNTMBH, P10V_BUILTIN_VCNTMBW, + P10V_BUILTIN_VCNTMBD, P10V_BUILTIN_VEXPANDMB, + P10V_BUILTIN_VEXPANDMH, P10V_BUILTIN_VEXPANDMW, + P10V_BUILTIN_VEXPANDMD, P10V_BUILTIN_VEXPANDMQ, + P10V_BUILTIN_VEXTRACTMB, P10V_BUILTIN_VEXTRACTMH, + P10V_BUILTIN_VEXTRACTMW, P10V_BUILTIN_VEXTRACTMD, + P10V_BUILTIN_VEXTRACTMQ, P10V_BUILTIN_XVTLSBB_ZEROS, + P10V_BUILTIN_XVTLSBB_ONES respectively. + * config/rs6000/rs6000-call.c: Ditto above, change P10_BUILTIN_name to + P10V_BUILTIN_name. + (P10_BUILTIN_XVCVSPBF16, P10_BUILTIN_XVCVBF16SP): Change to + P10V_BUILTIN_XVCVSPBF16, P10V_BUILTIN_XVCVBF16SP respectively. + +2020-08-19 Bill Schmidt + + * config/rs6000/rs6000-logue.c (rs6000_decl_ok_for_sibcall): + Sibcalls are always legal when the caller doesn't preserve r2. + +2020-08-19 Uroš Bizjak + + * config/i386/i386-expand.c (ix86_expand_builtin) + [case IX86_BUILTIN_ENQCMD, case IX86_BUILTIN_ENQCMDS]: + Rewrite expansion to use code_for_enqcmd. + [case IX86_BUILTIN_WRSSD, case IX86_BUILTIN_WRSSQ]: + Rewrite expansion to use code_for_wrss. + [case IX86_BUILTIN_WRUSSD, case IX86_BUILTIN_WRUSSD]: + Rewrite expansion to use code_for_wrss. + +2020-08-19 Feng Xue + + PR tree-optimization/94234 + * match.pd ((PTR_A + OFF) - (PTR_B + OFF)) -> (PTR_A - PTR_B): New + simplification. + +2020-08-19 H.J. Lu + + * common/config/i386/cpuinfo.h (get_intel_cpu): Detect Rocket + Lake and Alder Lake. + +2020-08-19 Peixin Qiao + + * config/aarch64/aarch64.c (aarch64_init_cumulative_args): Remove + "fndecl && TREE_PUBLIC (fndecl)" check since it prevents the funtion + type check when calling via a function pointer or when calling a static + function. + +2020-08-19 Kewen Lin + + * opts-global.c (decode_options): Call target_option_override_hook + before it prints for --help=*. + +2020-08-18 Peter Bergner + + * config/rs6000/rs6000-builtin.def (BU_VSX_1): Rename xvcvbf16sp to + xvcvbf16spn. + * config/rs6000/rs6000-call.c (builtin_function_type): Likewise. + * config/rs6000/vsx.md: Likewise. + * doc/extend.texi: Likewise. + +2020-08-18 Aaron Sawdey + + * config/rs6000/rs6000-string.c (gen_lxvl_stxvl_move): + Helper function. + (expand_block_move): Add lxvl/stxvl, vector pair, and + unaligned VSX. + * config/rs6000/rs6000.c (rs6000_option_override_internal): + Default value for -mblock-ops-vector-pair. + * config/rs6000/rs6000.opt: Add -mblock-ops-vector-pair. + +2020-08-18 Aldy Hernandez + + * vr-values.c (check_for_binary_op_overflow): Change type of store + to range_query. + (vr_values::adjust_range_with_scev): Abstract most of the code... + (range_of_var_in_loop): ...here. Remove value_range_equiv uses. + (simplify_using_ranges::simplify_using_ranges): Change type of store + to range_query. + * vr-values.h (class range_query): New. + (class simplify_using_ranges): Use range_query. + (class vr_values): Add OVERRIDE to get_value_range. + (range_of_var_in_loop): New. + +2020-08-18 Martin Sebor + + PR middle-end/96665 + PR middle-end/78257 + * expr.c (convert_to_bytes): Replace statically allocated buffer with + a dynamically allocated one of sufficient size. + +2020-08-18 Martin Sebor + + PR tree-optimization/96670 + PR middle-end/78257 + * gimple-fold.c (gimple_fold_builtin_memchr): Call byte_representation + to get it, not string_constant. + +2020-08-18 Hu Jiangping + + * doc/gimple.texi (gimple_debug_begin_stmt_p): Add return type. + (gimple_debug_inline_entry_p, gimple_debug_nonbind_marker_p): Likewise. + +2020-08-18 Martin Sebor + + * fold-const.c (native_encode_expr): Update comment. + +2020-08-18 Uroš Bizjak + + PR target/96536 + * config/i386/i386.md (restore_stack_nonlocal): Add missing compare + RTX. Rewrite expander to use high-level functions in RTL construction. + +2020-08-18 liuhongt + + PR target/96562 + PR target/93897 + * config/i386/i386-expand.c (ix86_expand_pinsr): Don't use + pinsr for TImode. + (ix86_expand_pextr): Don't use pextr for TImode. + +2020-08-17 Uroš Bizjak + + * config/i386/i386-builtin.def (__builtin_ia32_bextri_u32) + (__builtin_ia32_bextri_u64): Use CODE_FOR_nothing. + * config/i386/i386.md (@tbm_bextri_): + Implement as parametrized name pattern. + (@rdrand): Ditto. + (@rdseed): Ditto. + * config/i386/i386-expand.c (ix86_expand_builtin) + [case IX86_BUILTIN_BEXTRI32, case IX86_BUILTIN_BEXTRI64]: + Update for parameterized name patterns. + [case IX86_BUILTIN_RDRAND16_STEP, case IX86_BUILTIN_RDRAND32_STEP] + [case IX86_BUILTIN_RDRAND64_STEP]: Ditto. + [case IX86_BUILTIN_RDSEED16_STEP, case IX86_BUILTIN_RDSEED32_STEP] + [case IX86_BUILTIN_RDSEED64_STEP]: Ditto. + +2020-08-17 Aldy Hernandez + + * vr-values.c (vr_values::get_value_range): Add stmt param. + (vr_values::extract_range_from_comparison): Same. + (vr_values::extract_range_from_assignment): Pass stmt to + extract_range_from_comparison. + (vr_values::adjust_range_with_scev): Pass stmt to get_value_range. + (simplify_using_ranges::vrp_evaluate_conditional): Add stmt param. + Pass stmt to get_value_range. + (simplify_using_ranges::vrp_visit_cond_stmt): Pass stmt to + get_value_range. + (simplify_using_ranges::simplify_abs_using_ranges): Same. + (simplify_using_ranges::simplify_div_or_mod_using_ranges): Same. + (simplify_using_ranges::simplify_bit_ops_using_ranges): Same. + (simplify_using_ranges::simplify_cond_using_ranges_1): Same. + (simplify_using_ranges::simplify_switch_using_ranges): Same. + (simplify_using_ranges::simplify_float_conversion_using_ranges): Same. + * vr-values.h (class vr_values): Add stmt arg to + vrp_evaluate_conditional_warnv_with_ops. + Add stmt arg to extract_range_from_comparison and get_value_range. + (simplify_using_ranges::get_value_range): Add stmt arg. + +2020-08-17 liuhongt + + PR target/96350 + * config/i386/i386.c (ix86_legitimate_constant_p): Return + false for ENDBR immediate. + (ix86_legitimate_address_p): Ditto. + * config/i386/predicates.md + (x86_64_immediate_operand): Exclude ENDBR immediate. + (x86_64_zext_immediate_operand): Ditto. + (x86_64_dwzext_immediate_operand): Ditto. + (ix86_endbr_immediate_operand): New predicate. + +2020-08-16 Roger Sayle + + * simplify-rtx.c (simplify_unary_operation_1) [SIGN_EXTEND]: + Simplify (sign_extend:M (truncate:N (lshiftrt:M x C))) to + (ashiftrt:M x C) when the shift sets the high bits appropriately. + +2020-08-14 Martin Sebor + + PR middle-end/78257 + * builtins.c (expand_builtin_memory_copy_args): Rename called function. + (expand_builtin_stpcpy_1): Remove argument from call. + (expand_builtin_memcmp): Rename called function. + (inline_expand_builtin_bytecmp): Same. + * expr.c (convert_to_bytes): New function. + (constant_byte_string): New function (formerly string_constant). + (string_constant): Call constant_byte_string. + (byte_representation): New function. + * expr.h (byte_representation): Declare. + * fold-const-call.c (fold_const_call): Rename called function. + * fold-const.c (c_getstr): Remove an argument. + (getbyterep): Define a new function. + * fold-const.h (c_getstr): Remove an argument. + (getbyterep): Declare a new function. + * gimple-fold.c (gimple_fold_builtin_memory_op): Rename callee. + (gimple_fold_builtin_string_compare): Same. + (gimple_fold_builtin_memchr): Same. + +2020-08-14 David Malcolm + + * doc/analyzer.texi (Overview): Add tip about how to get a + gimple dump if the analyzer ICEs. + +2020-08-14 Uroš Bizjak + + * config/i386/i386-builtin.def (__builtin_ia32_llwpcb) + (__builtin_ia32_slwpcb, __builtin_ia32_lwpval32) + (__builtin_ia32_lwpval64, __builtin_ia32_lwpins32) + (__builtin_ia32_lwpins64): Use CODE_FOR_nothing. + * config/i386/i386.md (@lwp_llwpcb): + Implement as parametrized name pattern. + (@lwp_slwpcb): Ditto. + (@lwp_lwpval): Ditto. + (@lwp_lwpins): Ditto. + * config/i386/i386-expand.c (ix86_expand_special_args_builtin) + [case VOID_FTYPE_UINT_UINT_UINT, case VOID_FTYPE_UINT64_UINT_UINT] + [case UCHAR_FTYPE_UINT_UINT_UINT, case UCHAR_FTYPE_UINT64_UINT_UINT]: + Remove. + (ix86_expand_builtin) + [ case IX86_BUILTIN_LLWPCB, case IX86_BUILTIN_LLWPCB]: + Update for parameterized name patterns. + [case IX86_BUILTIN_LWPVAL32, case IX86_BUILTIN_LWPVAL64] + [case IX86_BUILTIN_LWPINS32, case IX86_BUILTIN_LWPINS64]: Expand here. + +2020-08-14 Lewis Hyatt + + * common.opt: Add new option -fdiagnostics-plain-output. + * doc/invoke.texi: Document it. + * opts-common.c (decode_cmdline_options_to_array): Implement it. + (decode_cmdline_option): Add missing const qualifier to argv. + +2020-08-14 Jakub Jelinek + Jonathan Wakely + Jonathan Wakely + + * system.h: Include type_traits. + * vec.h (vec::embedded_size): Use offsetof and asserts + on vec_stdlayout, which is conditionally a vec (for standard layout T) + and otherwise vec_embedded. + +2020-08-14 Jojo R + + * config/csky/csky-elf.h (ASM_SPEC): Use mfloat-abi. + * config/csky/csky-linux-elf.h (ASM_SPEC): mfloat-abi. + +2020-08-13 David Malcolm + + PR analyzer/93032 + PR analyzer/93938 + PR analyzer/94011 + PR analyzer/94099 + PR analyzer/94399 + PR analyzer/94458 + PR analyzer/94503 + PR analyzer/94640 + PR analyzer/94688 + PR analyzer/94689 + PR analyzer/94839 + PR analyzer/95026 + PR analyzer/95042 + PR analyzer/95240 + * Makefile.in (ANALYZER_OBJS): Add analyzer/region.o, + analyzer/region-model-impl-calls.o, + analyzer/region-model-manager.o, + analyzer/region-model-reachability.o, analyzer/store.o, and + analyzer/svalue.o. + * doc/analyzer.texi: Update for changes to analyzer + implementation. + * tristate.h (tristate::get_value): New accessor. + +2020-08-13 Uroš Bizjak + + * config/i386/i386-builtin.def (CET_NORMAL): Merge to CET BDESC array. + (__builtin_ia32_rddspd, __builtin_ia32_rddspq, __builtin_ia32_incsspd) + (__builtin_ia32_incsspq, __builtin_ia32_wrssd, __builtin_ia32_wrssq) + (__builtin_ia32_wrussd, __builtin_ia32_wrussq): Use CODE_FOR_nothing. + * config/i386/i386-builtins.c: Remove handling of CET_NORMAL builtins. + * config/i386/i386.md (@rdssp): Implement as parametrized + name pattern. Use SWI48 mode iterator. Introduce input operand + and remove explicit XOR zeroing from insn template. + (@incssp): Implement as parametrized name pattern. + Use SWI48 mode iterator. + (@wrss): Ditto. + (@wruss): Ditto. + (rstorssp): Remove expander. Rename insn pattern from *rstorssp. + Use DImode memory operand. + (clrssbsy): Remove expander. Rename insn pattern from *clrssbsy. + Use DImode memory operand. + (save_stack_nonlocal): Update for parametrized name patterns. + Use cleared register as an argument to gen_rddsp. + (restore_stack_nonlocal): Update for parametrized name patterns. + * config/i386/i386-expand.c (ix86_expand_builtin): + [case IX86_BUILTIN_RDSSPD, case IX86_BUILTIN_RDSSPQ]: Expand here. + [case IX86_BUILTIN_INCSSPD, case IX86_BUILTIN_INCSSPQ]: Ditto. + [case IX86_BUILTIN_RSTORSSP, case IX86_BUILTIN_CLRSSBSY]: + Generate DImode memory operand. + [case IX86_BUILTIN_WRSSD, case IX86_BUILTIN_WRSSQ] + [case IX86_BUILTIN_WRUSSD, case IX86_BUILTIN_WRUSSD]: + Update for parameterized name patterns. + +2020-08-13 Peter Bergner + + PR target/96506 + * config/rs6000/rs6000-call.c (rs6000_promote_function_mode): Disallow + MMA types as return values. + (rs6000_function_arg): Disallow MMA types as function arguments. + +2020-08-13 Richard Sandiford + + Revert: + 2020-08-12 Peixin Qiao + + * config/aarch64/aarch64.c (aarch64_function_value): Add if + condition to check ag_mode after entering if condition of + aarch64_vfp_is_call_or_return_candidate. If TARGET_FLOAT is + set as false by -mgeneral-regs-only, report the diagnostic + information of -mgeneral-regs-only imcompatible with the use + of fp/simd register(s). + +2020-08-13 Martin Liska + + PR ipa/96482 + * ipa-cp.c (ipcp_bits_lattice::meet_with_1): Mask m_value + with m_mask. + +2020-08-13 Jakub Jelinek + + * gimplify.c (gimplify_omp_taskloop_expr): New function. + (gimplify_omp_for): Use it. For OMP_FOR_NON_RECTANGULAR + loops adjust in outer taskloop the var-outer decls. + * omp-expand.c (expand_omp_taskloop_for_inner): Handle non-rectangular + loops. + (expand_omp_for): Don't reject non-rectangular taskloop. + * omp-general.c (omp_extract_for_data): Don't assert that + non-rectangular loops have static schedule, instead treat loop->m1 + or loop->m2 as if loop->n1 or loop->n2 is non-constant. + +2020-08-13 Hongtao Liu + + PR target/96246 + * config/i386/sse.md (_load_mask, + _load_mask): Extend to generate blendm + instructions. + (_blendm, _blendm): Change + define_insn to define_expand. + +2020-08-12 Roger Sayle + Uroš Bizjak + + PR target/96558 + * config/i386/i386.md (peephole2): Only reorder register clearing + instructions to allow use of xor for general registers. + +2020-08-12 Martin Liska + + PR ipa/96482 + * ipa-cp.c (ipcp_bits_lattice::meet_with_1): Drop value bits + for bits that are unknown. + (ipcp_bits_lattice::set_to_constant): Likewise. + * tree-ssa-ccp.c (get_default_value): Add sanity check that + IPA CP bit info has all bits set to zero in bits that + are unknown. + +2020-08-12 Peixin Qiao + + * config/aarch64/aarch64.c (aarch64_function_value): Add if + condition to check ag_mode after entering if condition of + aarch64_vfp_is_call_or_return_candidate. If TARGET_FLOAT is + set as false by -mgeneral-regs-only, report the diagnostic + information of -mgeneral-regs-only imcompatible with the use + of fp/simd register(s). + +2020-08-12 Jakub Jelinek + + PR tree-optimization/96535 + * toplev.c (process_options): Move flag_unroll_loops and + flag_cunroll_grow_size handling from here to ... + * opts.c (finish_options): ... here. For flag_cunroll_grow_size, + don't check for AUTODETECT_VALUE, but instead check + opts_set->x_flag_cunroll_grow_size. + * common.opt (funroll-completely-grow-size): Default to 0. + * config/rs6000/rs6000.c (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): + Redefine. + (rs6000_override_options_after_change): New function. + (rs6000_option_override_internal): Call it. Move there the + flag_cunroll_grow_size, unroll_only_small_loops and + flag_rename_registers handling. + +2020-08-12 Tom de Vries + + * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Make elt_size an + unsigned HOST_WIDE_INT. Print init_frag.remaining using + HOST_WIDE_INT_PRINT_UNSIGNED. + +2020-08-12 Roger Sayle + Uroš Bizjak + + * config/i386/i386.md (peephole2): Reduce unnecessary + register shuffling produced by register allocation. + +2020-08-12 Aldy Hernandez + + * ipa-fnsummary.c (evaluate_conditions_for_known_args): Use vec<> + instead of std::vector<>. + (evaluate_properties_for_edge): Same. + (ipa_fn_summary_t::duplicate): Same. + (estimate_ipcp_clone_size_and_time): Same. + * vec.h (::embedded_size): Change vec_embedded + type to contain a char[]. + +2020-08-12 Andreas Krebbel + + PR target/96308 + * config/s390/s390.c (s390_cannot_force_const_mem): Reject an + unary minus for everything not being a numeric constant. + (legitimize_tls_address): Move a NEG out of the CONST rtx. + +2020-08-12 Andreas Krebbel + + PR target/96456 + * config/s390/s390.h (TARGET_NONSIGNALING_VECTOR_COMPARE_OK): New + macro. + * config/s390/vector.md (vcond_comparison_operator): Use new macro + for the check. + +2020-08-11 Jakub Jelinek + + PR rtl-optimization/96539 + * expr.c (emit_block_move_hints): Don't copy anything if x and y + are the same and neither is MEM_VOLATILE_P. + +2020-08-11 Jakub Jelinek + + PR c/96549 + * tree.c (get_narrower): Use TREE_TYPE (ret) instead of + TREE_TYPE (win) for COMPOUND_EXPRs. + +2020-08-11 Jan Hubicka + + * predict.c (not_loop_guard_equal_edge_p): New function. + (maybe_predict_edge): New function. + (predict_paths_for_bb): Use it. + (predict_paths_leading_to_edge): Use it. + +2020-08-11 Martin Liska + + * dbgcnt.def (DEBUG_COUNTER): Add ipa_cp_bits. + * ipa-cp.c (ipcp_store_bits_results): Use it when we store known + bits for parameters. + +2020-08-10 Marek Polacek + + * doc/sourcebuild.texi: Document dg-ice. + +2020-08-10 Roger Sayle + + * config/i386/i386-expand.c (ix86_expand_int_movcc): Expand + signed MIN_EXPR against zero as "x < 0 ? x : 0" instead of + "x <= 0 ? x : 0" to enable sign_bit_compare_p optimizations. + +2020-08-10 Aldy Hernandez + + * value-range.h (gt_ggc_mx): Declare inline. + (gt_pch_nx): Same. + +2020-08-10 Marc Glisse + + PR tree-optimization/95433 + * match.pd (X * C1 == C2): Handle wrapping overflow. + * expr.c (maybe_optimize_mod_cmp): Qualify call to mod_inv. + (mod_inv): Move... + * wide-int.cc (mod_inv): ... here. + * wide-int.h (mod_inv): Declare it. + +2020-08-10 Jan Hubicka + + * predict.c (filter_predictions): Document semantics of filter. + (equal_edge_p): Rename to ... + (not_equal_edge_p): ... this; reverse semantics. + (remove_predictions_associated_with_edge): Fix. + +2020-08-10 Hongtao Liu + + PR target/96243 + * config/i386/i386-expand.c (ix86_expand_sse_cmp): Refine for + maskcmp. + (ix86_expand_mask_vec_cmp): Change prototype. + * config/i386/i386-protos.h (ix86_expand_mask_vec_cmp): Change prototype. + * config/i386/i386.c (ix86_print_operand): Remove operand + modifier 'I'. + * config/i386/sse.md + (*_cmp3): Deleted. + (*_cmp3): Ditto. + (*_ucmp3): Ditto. + (*_ucmp3, + avx512f_maskcmp3): Ditto. + +2020-08-09 Roger Sayle + + * expmed.c (init_expmed_one_conv): Restore all->reg's mode. + (init_expmed_one_mode): Set all->reg to desired mode. + +2020-08-08 Peter Bergner + + PR target/96530 + * config/rs6000/rs6000.c (rs6000_invalid_conversion): Use canonical + types for type comparisons. Refactor code to simplify it. + +2020-08-08 Jakub Jelinek + + PR fortran/93553 + * tree-nested.c (convert_nonlocal_omp_clauses): For + OMP_CLAUSE_REDUCTION, OMP_CLAUSE_LASTPRIVATE and OMP_CLAUSE_LINEAR + save info->new_local_var_chain around walks of the clause gimple + sequences and declare_vars if needed into the sequence. + +2020-08-08 Jakub Jelinek + + PR tree-optimization/96424 + * omp-expand.c: Include tree-eh.h. + (expand_omp_for_init_vars): Handle -fexceptions -fnon-call-exceptions + by forcing floating point comparison into a bool temporary. + +2020-08-07 Marc Glisse + + * generic-match-head.c (optimize_vectors_before_lowering_p): New + function. + * gimple-match-head.c (optimize_vectors_before_lowering_p): + Likewise. + * match.pd ((v ? w : 0) ? a : b, c1 ? c2 ? a : b : b): Use it. + +2020-08-07 Richard Biener + + PR tree-optimization/96514 + * tree-if-conv.c (if_convertible_bb_p): If the last stmt + is a call that is control-altering, fail. + +2020-08-07 Jose E. Marchesi + + * config/bpf/bpf.md: Remove trailing whitespaces. + * config/bpf/constraints.md: Likewise. + * config/bpf/predicates.md: Likewise. + +2020-08-07 Michael Meissner + + * config/rs6000/rs6000.md (bswaphi2_reg): Add ISA 3.1 support. + (bswapsi2_reg): Add ISA 3.1 support. + (bswapdi2): Rename bswapdi2_xxbrd to bswapdi2_brd. + (bswapdi2_brd,bswapdi2_xxbrd): Rename. Add ISA 3.1 support. + +2020-08-07 Alan Modra + + PR target/96493 + * config/rs6000/predicates.md (current_file_function_operand): Don't + accept functions that differ in r2 usage. + +2020-08-06 Hans-Peter Nilsson + + * config/mmix/mmix.md (MM): New mode_iterator. + ("mov"): New expander to expand for all MM-modes. + ("*movqi_expanded", "*movhi_expanded", "*movsi_expanded") + ("*movsf_expanded", "*movdf_expanded"): Rename from the + corresponding mov named pattern. Add to the condition that + either operand must be a register_operand. + ("*movdi_expanded"): Similar, but also allow STCO in the condition. + +2020-08-06 Richard Sandiford + + PR target/96191 + * config/arm/arm.md (arm_stack_protect_test_insn): Zero out + operand 2 after use. + * config/arm/thumb1.md (thumb1_stack_protect_test_insn): Likewise. + +2020-08-06 Peter Bergner + + PR target/96446 + * config/rs6000/mma.md (*movpxi): Add xxsetaccz generation. + Disable split for zero constant source operand. + (mma_xxsetaccz): Change to define_expand. Call gen_movpxi. + +2020-08-06 Jakub Jelinek + + PR tree-optimization/96480 + * tree-ssa-reassoc.c (suitable_cond_bb): Add TEST_SWAPPED_P argument. + If TEST_BB ends in cond and has one edge to *OTHER_BB and another + through an empty bb to that block too, if PHI args don't match, retry + them through the other path from TEST_BB. + (maybe_optimize_range_tests): Adjust callers. Handle such LAST_BB + through inversion of the condition. + +2020-08-06 Jose E. Marchesi + + * config/bpf/bpf-helpers.h (KERNEL_HELPER): Define. + (KERNEL_VERSION): Remove. + * config/bpf/bpf-helpers.def: Delete. + * config/bpf/bpf.c (bpf_handle_fndecl_attribute): New function. + (bpf_attribute_table): Define. + (bpf_helper_names): Delete. + (bpf_helper_code): Likewise. + (enum bpf_builtins): Adjust to new helpers mechanism. + (bpf_output_call): Likewise. + (bpf_init_builtins): Likewise. + (bpf_init_builtins): Likewise. + * doc/extend.texi (BPF Function Attributes): New section. + (BPF Kernel Helpers): Delete section. + +2020-08-06 Richard Biener + + PR tree-optimization/96491 + * tree-ssa-sink.c (sink_common_stores_to_bb): Avoid + sinking across abnormal edges. + +2020-08-06 Richard Biener + + PR tree-optimization/96483 + * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle + POLY_INT_CST. + +2020-08-06 Richard Biener + + * graphite-isl-ast-to-gimple.c (ivs_params): Use hash_map instead + of std::map. + (ivs_params_clear): Adjust. + (gcc_expression_from_isl_ast_expr_id): Likewise. + (graphite_create_new_loop): Likewise. + (add_parameters_to_ivs_params): Likewise. + +2020-08-06 Roger Sayle + Uroš Bizjak + + * config/i386/i386.md (MAXMIN_IMODE): No longer needed. + (3): Support SWI248 and general_operand for + second operand, when TARGET_CMOVE. + (3_1 splitter): Optimize comparisons against + 0, 1 and -1 to use "test" instead of "cmp". + (*di3_doubleword): Likewise, allow general_operand + and enable on TARGET_CMOVE. + (peephole2): Convert clearing a register after a flag setting + instruction into an xor followed by the original flag setter. + +2020-08-06 Gerald Pfeifer + + * ipa-fnsummary.c (INCLUDE_VECTOR): Define. + Remove direct inclusion of . + +2020-08-06 Kewen Lin + + * config/rs6000/rs6000.c (rs6000_adjust_vect_cost_per_loop): New + function. + (rs6000_finish_cost): Call rs6000_adjust_vect_cost_per_loop. + * tree-vect-loop.c (vect_estimate_min_profitable_iters): Add cost + modeling for vector with length. + (vect_rgroup_iv_might_wrap_p): New function, factored out from... + * tree-vect-loop-manip.c (vect_set_loop_controls_directly): ...this. + Update function comment. + * tree-vect-stmts.c (vect_gen_len): Update function comment. + * tree-vectorizer.h (vect_rgroup_iv_might_wrap_p): New declare. + +2020-08-06 Kewen Lin + + * tree-vectorizer.c (try_vectorize_loop_1): Skip the epilogue loops + for dbgcnt check. + +2020-08-05 Marc Glisse + + PR tree-optimization/95906 + PR target/70314 + * match.pd ((c ? a : b) op d, (c ? a : b) op (c ? d : e), + (v ? w : 0) ? a : b, c1 ? c2 ? a : b : b): New transformations. + (op (c ? a : b)): Update to match the new transformations. + +2020-08-05 Richard Sandiford + + PR target/96191 + * config/aarch64/aarch64.md (stack_protect_test_): Set the + CC register directly, instead of a GPR. Replace the original GPR + destination with an extra scratch register. Zero out operand 3 + after use. + (stack_protect_test): Update accordingly. + +2020-08-05 Richard Sandiford + + * config/aarch64/aarch64.md (load_pair_sw_) + (load_pair_dw_, load_pair_dw_tftf) + (store_pair_sw_) + (store_pair_dw_, store_pair_dw_tftf) + (*load_pair_extendsidi2_aarch64) + (*load_pair_zero_extendsidi2_aarch64): Use %z for the memory operand. + * config/aarch64/aarch64-simd.md (load_pair) + (vec_store_pair, load_pair) + (vec_store_pair): Likewise. + +2020-08-05 Richard Biener + + * tree-ssa-loop-im.c (invariantness_dom_walker): Remove. + (invariantness_dom_walker::before_dom_children): Move to ... + (compute_invariantness): ... this function. + (move_computations): Inline ... + (tree_ssa_lim): ... here, share RPO order and avoid some + cfun references. + (analyze_memory_references): Remove sorting of location + lists, instead assert they are sorted already when checking. + (prev_flag_edges): Remove. + (execute_sm_if_changed): Pass down and adjust prev edge state. + (execute_sm_exit): Likewise. + (hoist_memory_references): Likewise. Commit edge insertions + of each processed exit. + (store_motion_loop): Do not commit edge insertions on all + edges in the function. + (tree_ssa_lim_initialize): Do not call alloc_aux_for_edges. + (tree_ssa_lim_finalize): Do not call free_aux_for_edges. + +2020-08-05 Richard Biener + + * genmatch.c (fail_label): New global. + (expr::gen_transform): Branch to fail_label instead of + returning. Fix indent of call argument checking. + (dt_simplify::gen_1): Compute and emit fail_label, branch + to it instead of returning early. + +2020-08-05 Jakub Jelinek + + * omp-expand.c (expand_omp_for): Don't disallow combined non-rectangular + loops. + +2020-08-05 Jakub Jelinek + + PR middle-end/96459 + * omp-low.c (lower_omp_taskreg): Call lower_reduction_clauses even in + for host teams. + +2020-08-05 Jakub Jelinek + + * omp-expand.c (expand_omp_for_init_counts): Remember + first_inner_iterations, factor and n1o from the number of iterations + computation in *fd. + (expand_omp_for_init_vars): Use more efficient logical iteration number + to actual iterator values computation even for non-rectangular loops + where number of loop iterations could not be computed at compile time. + +2020-08-05 2020-08-04 Carl Love + + * config/rs6000/altivec.h (vec_blendv, vec_permx): Add define. + * config/rs6000/altivec.md (UNSPEC_XXBLEND, UNSPEC_XXPERMX.): New + unspecs. + (VM3): New define_mode. + (VM3_char): New define_attr. + (xxblend_ mode VM3): New define_insn. + (xxpermx): New define_expand. + (xxpermx_inst): New define_insn. + * config/rs6000/rs6000-builtin.def (VXXBLEND_V16QI, VXXBLEND_V8HI, + VXXBLEND_V4SI, VXXBLEND_V2DI, VXXBLEND_V4SF, VXXBLEND_V2DF): New + BU_P10V_3 definitions. + (XXBLEND): New BU_P10_OVERLOAD_3 definition. + (XXPERMX): New BU_P10_OVERLOAD_4 definition. + * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): + (P10_BUILTIN_VXXPERMX): Add if statement. + * config/rs6000/rs6000-call.c (P10_BUILTIN_VXXBLEND_V16QI, + P10_BUILTIN_VXXBLEND_V8HI, P10_BUILTIN_VXXBLEND_V4SI, + P10_BUILTIN_VXXBLEND_V2DI, P10_BUILTIN_VXXBLEND_V4SF, + P10_BUILTIN_VXXBLEND_V2DF, P10_BUILTIN_VXXPERMX): Define + overloaded arguments. + (rs6000_expand_quaternop_builtin): Add if case for CODE_FOR_xxpermx. + (builtin_quaternary_function_type): Add v16uqi_type and xxpermx_type + variables, add case statement for P10_BUILTIN_VXXPERMX. + (builtin_function_type): Add case statements for + P10_BUILTIN_VXXBLEND_V16QI, P10_BUILTIN_VXXBLEND_V8HI, + P10_BUILTIN_VXXBLEND_V4SI, P10_BUILTIN_VXXBLEND_V2DI. + * doc/extend.texi: Add documentation for vec_blendv and vec_permx. + +2020-08-05 2020-08-04 Carl Love + + * config/rs6000/altivec.h (vec_splati, vec_splatid, vec_splati_ins): + Add defines. + * config/rs6000/altivec.md (UNSPEC_XXSPLTIW, UNSPEC_XXSPLTID, + UNSPEC_XXSPLTI32DX): New. + (vxxspltiw_v4si, vxxspltiw_v4sf_inst, vxxspltidp_v2df_inst, + vxxsplti32dx_v4si_inst, vxxsplti32dx_v4sf_inst): New define_insn. + (vxxspltiw_v4sf, vxxspltidp_v2df, vxxsplti32dx_v4si, + vxxsplti32dx_v4sf.): New define_expands. + * config/rs6000/predicates.md (u1bit_cint_operand, + s32bit_cint_operand, c32bit_cint_operand): New predicates. + * config/rs6000/rs6000-builtin.def (VXXSPLTIW_V4SI, VXXSPLTIW_V4SF, + VXXSPLTID): New definitions. + (VXXSPLTI32DX_V4SI, VXXSPLTI32DX_V4SF): New BU_P10V_3 + definitions. + (XXSPLTIW, XXSPLTID): New definitions. + (XXSPLTI32DX): Add definitions. + * config/rs6000/rs6000-call.c (P10_BUILTIN_VEC_XXSPLTIW, + P10_BUILTIN_VEC_XXSPLTID, P10_BUILTIN_VEC_XXSPLTI32DX): + New definitions. + * config/rs6000/rs6000-protos.h (rs6000_constF32toI32): New extern + declaration. + * config/rs6000/rs6000.c (rs6000_constF32toI32): New function. + * doc/extend.texi: Add documentation for vec_splati, + vec_splatid, and vec_splati_ins. + +2020-08-05 2020-08-04 Carl Love + + * config/rs6000/altivec.h (vec_sldb, vec_srdb): New defines. + * config/rs6000/altivec.md (UNSPEC_SLDB, UNSPEC_SRDB): New. + (SLDB_lr): New attribute. + (VSHIFT_DBL_LR): New iterator. + (vsdb_): New define_insn. + * config/rs6000/rs6000-builtin.def (VSLDB_V16QI, VSLDB_V8HI, + VSLDB_V4SI, VSLDB_V2DI, VSRDB_V16QI, VSRDB_V8HI, VSRDB_V4SI, + VSRDB_V2DI): New BU_P10V_3 definitions. + (SLDB, SRDB): New BU_P10_OVERLOAD_3 definitions. + * config/rs6000/rs6000-call.c (P10_BUILTIN_VEC_SLDB, + P10_BUILTIN_VEC_SRDB): New definitions. + (rs6000_expand_ternop_builtin) [CODE_FOR_vsldb_v16qi, + CODE_FOR_vsldb_v8hi, CODE_FOR_vsldb_v4si, CODE_FOR_vsldb_v2di, + CODE_FOR_vsrdb_v16qi, CODE_FOR_vsrdb_v8hi, CODE_FOR_vsrdb_v4si, + CODE_FOR_vsrdb_v2di]: Add clauses. + * doc/extend.texi: Add description for vec_sldb and vec_srdb. + +2020-08-05 2020-08-04 Carl Love + + * config/rs6000/altivec.h: Add define for vec_replace_elt and + vec_replace_unaligned. + * config/rs6000/vsx.md (UNSPEC_REPLACE_ELT, UNSPEC_REPLACE_UN): New + unspecs. + (REPLACE_ELT): New mode iterator. + (REPLACE_ELT_char, REPLACE_ELT_sh, REPLACE_ELT_max): New mode attributes. + (vreplace_un_, vreplace_elt__inst): New. + * config/rs6000/rs6000-builtin.def (VREPLACE_ELT_V4SI, + VREPLACE_ELT_UV4SI, VREPLACE_ELT_V4SF, VREPLACE_ELT_UV2DI, + VREPLACE_ELT_V2DF, VREPLACE_UN_V4SI, VREPLACE_UN_UV4SI, + VREPLACE_UN_V4SF, VREPLACE_UN_V2DI, VREPLACE_UN_UV2DI, + VREPLACE_UN_V2DF, (REPLACE_ELT, REPLACE_UN, VREPLACE_ELT_V2DI): New builtin + entries. + * config/rs6000/rs6000-call.c (P10_BUILTIN_VEC_REPLACE_ELT, + P10_BUILTIN_VEC_REPLACE_UN): New builtin argument definitions. + (rs6000_expand_quaternop_builtin): Add 3rd argument checks for + CODE_FOR_vreplace_elt_v4si, CODE_FOR_vreplace_elt_v4sf, + CODE_FOR_vreplace_un_v4si, CODE_FOR_vreplace_un_v4sf. + (builtin_function_type) [P10_BUILTIN_VREPLACE_ELT_UV4SI, + P10_BUILTIN_VREPLACE_ELT_UV2DI, P10_BUILTIN_VREPLACE_UN_UV4SI, + P10_BUILTIN_VREPLACE_UN_UV2DI]: New cases. + * doc/extend.texi: Add description for vec_replace_elt and + vec_replace_unaligned builtins. + +2020-08-05 2020-08-04 Carl Love + + * config/rs6000/altivec.h (vec_insertl, vec_inserth): New defines. + * config/rs6000/rs6000-builtin.def (VINSERTGPRBL, VINSERTGPRHL, + VINSERTGPRWL, VINSERTGPRDL, VINSERTVPRBL, VINSERTVPRHL, VINSERTVPRWL, + VINSERTGPRBR, VINSERTGPRHR, VINSERTGPRWR, VINSERTGPRDR, VINSERTVPRBR, + VINSERTVPRHR, VINSERTVPRWR): New builtins. + (INSERTL, INSERTH): New builtins. + * config/rs6000/rs6000-call.c (P10_BUILTIN_VEC_INSERTL, + P10_BUILTIN_VEC_INSERTH): New overloaded definitions. + (P10_BUILTIN_VINSERTGPRBL, P10_BUILTIN_VINSERTGPRHL, + P10_BUILTIN_VINSERTGPRWL, P10_BUILTIN_VINSERTGPRDL, + P10_BUILTIN_VINSERTVPRBL, P10_BUILTIN_VINSERTVPRHL, + P10_BUILTIN_VINSERTVPRWL): Add case entries. + * config/rs6000/vsx.md (define_c_enum): Add UNSPEC_INSERTL, + UNSPEC_INSERTR. + (define_expand): Add vinsertvl_, vinsertvr_, + vinsertgl_, vinsertgr_, mode is VI2. + (define_ins): vinsertvl_internal_, vinsertvr_internal_, + vinsertgl_internal_, vinsertgr_internal_, mode VEC_I. + * doc/extend.texi: Add documentation for vec_insertl, vec_inserth. + +2020-08-05 2020-08-04 Carl Love + + * config/rs6000/altivec.md: (UNSPEC_EXTRACTL, UNSPEC_EXTRACTR) + (vextractl, vextractr) + (vextractl_internal, vextractr_internal for mode VI2) + (VI2): Move to ... + * config/rs6000/vsx.md: (UNSPEC_EXTRACTL, UNSPEC_EXTRACTR) + (vextractl, vextractr) + (vextractl_internal, vextractr_internal for mode VI2) + (VI2): ..here. + * doc/extend.texi: Update documentation for vec_extractl. + Replace builtin name vec_extractr with vec_extracth. Update + description of vec_extracth. + +2020-08-04 Jim Wilson + + * doc/invoke.texi (AArch64 Options): Delete duplicate + -mstack-protector-guard docs. + +2020-08-04 Roger Sayle + + * config/nvptx/nvptx.md (smulhi3_highpart, smulsi3_highpart) + (umulhi3_highpart, umulsi3_highpart): New instructions. + +2020-08-04 Andrew Stubbs + + * config/gcn/gcn-run.c (R_AMDGPU_NONE): Delete. + (R_AMDGPU_ABS32_LO): Delete. + (R_AMDGPU_ABS32_HI): Delete. + (R_AMDGPU_ABS64): Delete. + (R_AMDGPU_REL32): Delete. + (R_AMDGPU_REL64): Delete. + (R_AMDGPU_ABS32): Delete. + (R_AMDGPU_GOTPCREL): Delete. + (R_AMDGPU_GOTPCREL32_LO): Delete. + (R_AMDGPU_GOTPCREL32_HI): Delete. + (R_AMDGPU_REL32_LO): Delete. + (R_AMDGPU_REL32_HI): Delete. + (reserved): Delete. + (R_AMDGPU_RELATIVE64): Delete. + +2020-08-04 Omar Tahir + + * config/arm/arm-cpus.in (armv8.1-m.main): Tune for Cortex-M55. + +2020-08-04 Hu Jiangping + + * config/aarch64/aarch64.c (aarch64_if_then_else_costs): Delete + redundant extra_cost variable. + +2020-08-04 Zhiheng Xie + + * config/aarch64/aarch64-builtins.c (aarch64_call_properties): + Use FLOAT_MODE_P macro instead of enumerating all floating-point + modes and add global flag FLAG_AUTO_FP. + +2020-08-04 Jakub Jelinek + + * doc/extend.texi (symver): Add @cindex for symver function attribute. + +2020-08-04 Marc Glisse + + PR tree-optimization/95433 + * match.pd (X * C1 == C2): New transformation. + +2020-08-04 Aldy Hernandez + + * gimple-ssa-sprintf.c (get_int_range): Adjust for irange API. + (format_integer): Same. + (handle_printf_call): Same. + +2020-08-04 Andrew Stubbs + + * config/gcn/gcn.md ("ti3"): New. + +2020-08-04 Richard Biener + + PR tree-optimization/88240 + * tree-ssa-sccvn.h (vn_reference_s::punned): New flag. + * tree-ssa-sccvn.c (vn_reference_insert): Initialize punned. + (vn_reference_insert_pieces): Likewise. + (visit_reference_op_call): Likewise. + (visit_reference_op_load): Track whether a ref was punned. + * tree-ssa-pre.c (do_hoist_insertion): Refuse to perform hoist + insertion on punned floating point loads. + +2020-08-04 Sudakshina Das + + * config/aarch64/aarch64.c (aarch64_gen_store_pair): Add case + for E_V4SImode. + (aarch64_gen_load_pair): Likewise. + (aarch64_copy_one_block_and_progress_pointers): Handle 256 bit copy. + (aarch64_expand_cpymem): Expand copy_limit to 256bits where + appropriate. + +2020-08-04 Andrea Corallo + + * config/aarch64/aarch64.md (aarch64_fjcvtzs): Add missing + clobber. + * doc/sourcebuild.texi (aarch64_fjcvtzs_hw) Document new + target supports option. + +2020-08-04 Tom de Vries + + PR target/96428 + * config/nvptx/nvptx.c (nvptx_gen_shuffle): Handle V2SI/V2DI. + +2020-08-04 Jakub Jelinek + + PR middle-end/96426 + * tree-vect-generic.c (expand_vector_conversion): Replace .VEC_CONVERT + call with GIMPLE_NOP if there is no lhs. + +2020-08-04 Jakub Jelinek + + PR debug/96354 + * gimple-fold.c (maybe_canonicalize_mem_ref_addr): Add IS_DEBUG + argument. Return false instead of gcc_unreachable if it is true and + get_addr_base_and_unit_offset returns NULL. + (fold_stmt_1) : Adjust caller. + +2020-08-04 Aldy Hernandez + + * vr-values.c (simplify_using_ranges::vrp_evaluate_conditional): + Call is_gimple_min_invariant dropped from previous patch. + +2020-08-04 Jakub Jelinek + + * omp-expand.c (expand_omp_for_init_counts): For triangular loops + compute number of iterations at runtime more efficiently. + (expand_omp_for_init_vars): Adjust immediate dominators. + (extract_omp_for_update_vars): Likewise. + +2020-08-04 Aldy Hernandez + + * vr-values.c (simplify_using_ranges::two_valued_val_range_p): + Use irange API. + +2020-08-04 Aldy Hernandez + + * vr-values.c (simplify_conversion_using_ranges): Convert to irange API. + +2020-08-04 Aldy Hernandez + + * vr-values.c (test_for_singularity): Use irange API. + (simplify_using_ranges::simplify_cond_using_ranges_1): Do not + special case VR_RANGE. + +2020-08-04 Aldy Hernandez + + * vr-values.c (simplify_using_ranges::vrp_evaluate_conditional): Adjust + for irange API. + +2020-08-04 Aldy Hernandez + + * vr-values.c (simplify_using_ranges::op_with_boolean_value_range_p): Adjust + for irange API. + +2020-08-04 Aldy Hernandez + + * tree-ssanames.c (get_range_info): Use irange instead of value_range. + * tree-ssanames.h (get_range_info): Same. + +2020-08-04 Aldy Hernandez + + * fold-const.c (expr_not_equal_to): Adjust for irange API. + +2020-08-04 Aldy Hernandez + + * builtins.c (determine_block_size): Remove ad-hoc range canonicalization. + +2020-08-04 Xionghu Luo + + PR rtl-optimization/71309 + * dse.c (find_shift_sequence): Use subreg of shifted from high part + register to avoid loading from address. + +2020-08-03 Jonathan Wakely + + * doc/cpp.texi (Variadic Macros): Use the exact ... token in + code examples. + +2020-08-03 Nathan Sidwell + + * doc/invoke.texi: Refer to c++20 + +2020-08-03 Julian Brown + Thomas Schwinge + + * gimplify.c (gimplify_omp_target_update): Allow GOMP_MAP_TO_PSET + without a preceding data-movement mapping. + +2020-08-03 Iain Sandoe + + * config/darwin.h (ASM_DECLARE_FUNCTION_NAME): UNDEF before + use. + (DEF_MIN_OSX_VERSION): Only define if there's no existing + def. + +2020-08-03 Iain Sandoe + + * config/darwin.c (IN_TARGET_CODE): Remove. + (darwin_mergeable_constant_section): Handle poly-int machine modes. + (machopic_select_rtx_section): Likewise. + +2020-08-03 Aldy Hernandez + + PR tree-optimization/96430 + * range-op.cc (operator_tests): Do not shift by 31 on targets with + integer's smaller than 32 bits. + +2020-08-03 Martin Jambor + + * hsa-brig-format.h: Moved to brig/brigfrontend. + * hsa-brig.c: Removed. + * hsa-builtins.def: Likewise. + * hsa-common.c: Likewise. + * hsa-common.h: Likewise. + * hsa-dump.c: Likewise. + * hsa-gen.c: Likewise. + * hsa-regalloc.c: Likewise. + * ipa-hsa.c: Likewise. + * omp-grid.c: Likewise. + * omp-grid.h: Likewise. + * Makefile.in (BUILTINS_DEF): Remove hsa-builtins.def. + (OBJS): Remove hsa-common.o, hsa-gen.o, hsa-regalloc.o, hsa-brig.o, + hsa-dump.o, ipa-hsa.c and omp-grid.o. + (GTFILES): Removed hsa-common.c and omp-expand.c. + * builtins.def: Remove processing of hsa-builtins.def. + (DEF_HSA_BUILTIN): Remove. + * common.opt (flag_disable_hsa): Remove. + (-Whsa): Ignore. + * config.in (ENABLE_HSA): Removed. + * configure.ac: Removed handling configuration for hsa offloading. + (ENABLE_HSA): Removed. + * configure: Regenerated. + * doc/install.texi (--enable-offload-targets): Remove hsa from the + example. + (--with-hsa-runtime): Reword to reference any HSA run-time, not + specifically HSA offloading. + * doc/invoke.texi (Option Summary): Remove -Whsa. + (Warning Options): Likewise. + (Optimize Options): Remove hsa-gen-debug-stores. + * doc/passes.texi (Regular IPA passes): Remove section on IPA HSA + pass. + * gimple-low.c (lower_stmt): Remove GIMPLE_OMP_GRID_BODY case. + * gimple-pretty-print.c (dump_gimple_omp_for): Likewise. + (dump_gimple_omp_block): Likewise. + (pp_gimple_stmt_1): Likewise. + * gimple-walk.c (walk_gimple_stmt): Likewise. + * gimple.c (gimple_build_omp_grid_body): Removed function. + (gimple_copy): Remove GIMPLE_OMP_GRID_BODY case. + * gimple.def (GIMPLE_OMP_GRID_BODY): Removed. + * gimple.h (gf_mask): Removed GF_OMP_PARALLEL_GRID_PHONY, + OMP_FOR_KIND_GRID_LOOP, GF_OMP_FOR_GRID_PHONY, + GF_OMP_FOR_GRID_INTRA_GROUP, GF_OMP_FOR_GRID_GROUP_ITER and + GF_OMP_TEAMS_GRID_PHONY. Renumbered GF_OMP_FOR_KIND_SIMD and + GF_OMP_TEAMS_HOST. + (gimple_build_omp_grid_body): Removed declaration. + (gimple_has_substatements): Remove GIMPLE_OMP_GRID_BODY case. + (gimple_omp_for_grid_phony): Removed. + (gimple_omp_for_set_grid_phony): Likewise. + (gimple_omp_for_grid_intra_group): Likewise. + (gimple_omp_for_grid_intra_group): Likewise. + (gimple_omp_for_grid_group_iter): Likewise. + (gimple_omp_for_set_grid_group_iter): Likewise. + (gimple_omp_parallel_grid_phony): Likewise. + (gimple_omp_parallel_set_grid_phony): Likewise. + (gimple_omp_teams_grid_phony): Likewise. + (gimple_omp_teams_set_grid_phony): Likewise. + (CASE_GIMPLE_OMP): Remove GIMPLE_OMP_GRID_BODY case. + * lto-section-in.c (lto_section_name): Removed hsa. + * lto-streamer.h (lto_section_type): Removed LTO_section_ipa_hsa. + * lto-wrapper.c (compile_images_for_offload_targets): Remove special + handling of hsa. + * omp-expand.c: Do not include hsa-common.h and gt-omp-expand.h. + (parallel_needs_hsa_kernel_p): Removed. + (grid_launch_attributes_trees): Likewise. + (grid_launch_attributes_trees): Likewise. + (grid_create_kernel_launch_attr_types): Likewise. + (grid_insert_store_range_dim): Likewise. + (grid_get_kernel_launch_attributes): Likewise. + (get_target_arguments): Remove code passing HSA grid sizes. + (grid_expand_omp_for_loop): Remove. + (grid_arg_decl_map): Likewise. + (grid_remap_kernel_arg_accesses): Likewise. + (grid_expand_target_grid_body): Likewise. + (expand_omp): Remove call to grid_expand_target_grid_body. + (omp_make_gimple_edges): Remove GIMPLE_OMP_GRID_BODY case. + * omp-general.c: Do not include hsa-common.h. + (omp_maybe_offloaded): Do not check for HSA offloading. + (omp_context_selector_matches): Likewise. + * omp-low.c: Do not include hsa-common.h and omp-grid.h. + (build_outer_var_ref): Remove handling of GIMPLE_OMP_GRID_BODY. + (scan_sharing_clauses): Remove handling of OMP_CLAUSE__GRIDDIM_. + (scan_omp_parallel): Remove handling of the phoney variant. + (check_omp_nesting_restrictions): Remove handling of + GIMPLE_OMP_GRID_BODY and GF_OMP_FOR_KIND_GRID_LOOP. + (scan_omp_1_stmt): Remove handling of GIMPLE_OMP_GRID_BODY. + (lower_omp_for_lastprivate): Remove handling of gridified loops. + (lower_omp_for): Remove phony loop handling. + (lower_omp_taskreg): Remove phony construct handling. + (lower_omp_teams): Likewise. + (lower_omp_grid_body): Removed. + (lower_omp_1): Remove GIMPLE_OMP_GRID_BODY case. + (execute_lower_omp): Do not call omp_grid_gridify_all_targets. + * opts.c (common_handle_option): Do not handle hsa when processing + OPT_foffload_. + * params.opt (hsa-gen-debug-stores): Remove. + * passes.def: Remove pass_ipa_hsa and pass_gen_hsail. + * timevar.def: Remove TV_IPA_HSA. + * toplev.c: Do not include hsa-common.h. + (compile_file): Do not call hsa_output_brig. + * tree-core.h (enum omp_clause_code): Remove OMP_CLAUSE__GRIDDIM_. + (tree_omp_clause): Remove union field dimension. + * tree-nested.c (convert_nonlocal_omp_clauses): Remove the + OMP_CLAUSE__GRIDDIM_ case. + (convert_local_omp_clauses): Likewise. + * tree-pass.h (make_pass_gen_hsail): Remove declaration. + (make_pass_ipa_hsa): Likewise. + * tree-pretty-print.c (dump_omp_clause): Remove GIMPLE_OMP_GRID_BODY + case. + * tree.c (omp_clause_num_ops): Remove the element corresponding to + OMP_CLAUSE__GRIDDIM_. + (omp_clause_code_name): Likewise. + (walk_tree_1): Remove GIMPLE_OMP_GRID_BODY case. + * tree.h (OMP_CLAUSE__GRIDDIM__DIMENSION): Remove. + (OMP_CLAUSE__GRIDDIM__SIZE): Likewise. + (OMP_CLAUSE__GRIDDIM__GROUP): Likewise. + +2020-08-03 Bu Le + + * config/aarch64/aarch64-sve.md (sub3): Add support for + unpacked vectors. + +2020-08-03 Jozef Lawrynowicz + + * config/msp430/msp430.h (ASM_SPEC): Don't pass on "-md" option. + +2020-08-03 Yunde Zhong + + PR rtl-optimization/95696 + * regrename.c (regrename_analyze): New param include_all_block_p + with default value TRUE. If set to false, avoid disrupting SMS + schedule. + * regrename.h (regrename_analyze): Adjust prototype. + +2020-08-03 Wei Wentao + + * doc/tm.texi.in (VECTOR_STORE_FLAG_VALUE): Fix a typo. + * doc/tm.texi: Regenerate. + +2020-08-03 Richard Sandiford + + * doc/invoke.texi: Add missing comma after octeontx2f95mm entry. + +2020-08-03 Qian jianhua + + * config/aarch64/aarch64-cores.def (a64fx): New core. + * config/aarch64/aarch64-tune.md: Regenerated. + * config/aarch64/aarch64.c (a64fx_prefetch_tune, a64fx_tunings): New. + * doc/invoke.texi: Add a64fx to the list. + +2020-08-03 Roger Sayle + + PR rtl-optimization/61494 + * simplify-rtx.c (simplify_binary_operation_1) [MINUS]: Don't + simplify x - 0.0 with -fsignaling-nans. + +2020-08-03 Roger Sayle + + * genmatch.c (decision_tree::gen): Emit stub functions for + tree code operand counts that have no simplifications. + (main): Correct comment typo. + +2020-08-03 Jonathan Wakely + + * gimple-ssa-sprintf.c: Fix typos in comments. + +2020-08-03 Tamar Christina + + * config/aarch64/driver-aarch64.c (readline): Check return value fgets. + +2020-08-03 Richard Biener + + * doc/match-and-simplify.texi: Amend accordingly. + +2020-08-03 Richard Biener + + * genmatch.c (parser::gimple): New. + (parser::parser): Initialize gimple flag member. + (parser::parse_expr): Error on ! operator modifier when + not targeting GIMPLE. + (main): Pass down gimple flag to parser ctor. + +2020-08-03 Aldy Hernandez + + * Makefile.in (GTFILES): Move value-range.h up. + * gengtype-lex.l: Set yylval to handle GTY markers on templates. + * ipa-cp.c (initialize_node_lattices): Call value_range + constructor. + (ipcp_propagate_stage): Use in-place new so value_range construct + is called. + * ipa-fnsummary.c (evaluate_conditions_for_known_args): Use std + vec instead of GCC's vec<>. + (evaluate_properties_for_edge): Adjust for std vec. + (ipa_fn_summary_t::duplicate): Same. + (estimate_ipcp_clone_size_and_time): Same. + * ipa-prop.c (ipa_get_value_range): Use in-place new for + value_range. + * ipa-prop.h (struct GTY): Remove class keyword for m_vr. + * range-op.cc (empty_range_check): Rename to... + (empty_range_varying): ...this and adjust for varying. + (undefined_shift_range_check): Adjust for irange. + (range_operator::wi_fold): Same. + (range_operator::fold_range): Adjust for irange. Special case + single pairs for performance. + (range_operator::op1_range): Adjust for irange. + (range_operator::op2_range): Same. + (value_range_from_overflowed_bounds): Same. + (value_range_with_overflow): Same. + (create_possibly_reversed_range): Same. + (range_true): Same. + (range_false): Same. + (range_true_and_false): Same. + (get_bool_state): Adjust for irange and tweak for performance. + (operator_equal::fold_range): Adjust for irange. + (operator_equal::op1_range): Same. + (operator_equal::op2_range): Same. + (operator_not_equal::fold_range): Same. + (operator_not_equal::op1_range): Same. + (operator_not_equal::op2_range): Same. + (build_lt): Same. + (build_le): Same. + (build_gt): Same. + (build_ge): Same. + (operator_lt::fold_range): Same. + (operator_lt::op1_range): Same. + (operator_lt::op2_range): Same. + (operator_le::fold_range): Same. + (operator_le::op1_range): Same. + (operator_le::op2_range): Same. + (operator_gt::fold_range): Same. + (operator_gt::op1_range): Same. + (operator_gt::op2_range): Same. + (operator_ge::fold_range): Same. + (operator_ge::op1_range): Same. + (operator_ge::op2_range): Same. + (operator_plus::wi_fold): Same. + (operator_plus::op1_range): Same. + (operator_plus::op2_range): Same. + (operator_minus::wi_fold): Same. + (operator_minus::op1_range): Same. + (operator_minus::op2_range): Same. + (operator_min::wi_fold): Same. + (operator_max::wi_fold): Same. + (cross_product_operator::wi_cross_product): Same. + (operator_mult::op1_range): New. + (operator_mult::op2_range): New. + (operator_mult::wi_fold): Adjust for irange. + (operator_div::wi_fold): Same. + (operator_exact_divide::op1_range): Same. + (operator_lshift::fold_range): Same. + (operator_lshift::wi_fold): Same. + (operator_lshift::op1_range): New. + (operator_rshift::op1_range): New. + (operator_rshift::fold_range): Adjust for irange. + (operator_rshift::wi_fold): Same. + (operator_cast::truncating_cast_p): Abstract out from + operator_cast::fold_range. + (operator_cast::fold_range): Adjust for irange and tweak for + performance. + (operator_cast::inside_domain_p): Abstract out from fold_range. + (operator_cast::fold_pair): Same. + (operator_cast::op1_range): Use abstracted methods above. Adjust + for irange and tweak for performance. + (operator_logical_and::fold_range): Adjust for irange. + (operator_logical_and::op1_range): Same. + (operator_logical_and::op2_range): Same. + (unsigned_singleton_p): New. + (operator_bitwise_and::remove_impossible_ranges): New. + (operator_bitwise_and::fold_range): New. + (wi_optimize_and_or): Adjust for irange. + (operator_bitwise_and::wi_fold): Same. + (set_nonzero_range_from_mask): New. + (operator_bitwise_and::simple_op1_range_solver): New. + (operator_bitwise_and::op1_range): Adjust for irange. + (operator_bitwise_and::op2_range): Same. + (operator_logical_or::fold_range): Same. + (operator_logical_or::op1_range): Same. + (operator_logical_or::op2_range): Same. + (operator_bitwise_or::wi_fold): Same. + (operator_bitwise_or::op1_range): Same. + (operator_bitwise_or::op2_range): Same. + (operator_bitwise_xor::wi_fold): Same. + (operator_bitwise_xor::op1_range): New. + (operator_bitwise_xor::op2_range): New. + (operator_trunc_mod::wi_fold): Adjust for irange. + (operator_logical_not::fold_range): Same. + (operator_logical_not::op1_range): Same. + (operator_bitwise_not::fold_range): Same. + (operator_bitwise_not::op1_range): Same. + (operator_cst::fold_range): Same. + (operator_identity::fold_range): Same. + (operator_identity::op1_range): Same. + (class operator_unknown): New. + (operator_unknown::fold_range): New. + (class operator_abs): Adjust for irange. + (operator_abs::wi_fold): Same. + (operator_abs::op1_range): Same. + (operator_absu::wi_fold): Same. + (class operator_negate): Same. + (operator_negate::fold_range): Same. + (operator_negate::op1_range): Same. + (operator_addr_expr::fold_range): Same. + (operator_addr_expr::op1_range): Same. + (pointer_plus_operator::wi_fold): Same. + (pointer_min_max_operator::wi_fold): Same. + (pointer_and_operator::wi_fold): Same. + (pointer_or_operator::op1_range): New. + (pointer_or_operator::op2_range): New. + (pointer_or_operator::wi_fold): Adjust for irange. + (integral_table::integral_table): Add entries for IMAGPART_EXPR + and POINTER_DIFF_EXPR. + (range_cast): Adjust for irange. + (build_range3): New. + (range3_tests): New. + (widest_irange_tests): New. + (multi_precision_range_tests): New. + (operator_tests): New. + (range_tests): New. + * range-op.h (class range_operator): Adjust for irange. + (range_cast): Same. + * tree-vrp.c (range_fold_binary_symbolics_p): Adjust for irange and + tweak for performance. + (range_fold_binary_expr): Same. + (masked_increment): Change to extern. + * tree-vrp.h (masked_increment): New. + * tree.c (cache_wide_int_in_type_cache): New function abstracted + out from wide_int_to_tree_1. + (wide_int_to_tree_1): Cache 0, 1, and MAX for pointers. + * value-range-equiv.cc (value_range_equiv::deep_copy): Use kind + method. + (value_range_equiv::move): Same. + (value_range_equiv::check): Adjust for irange. + (value_range_equiv::intersect): Same. + (value_range_equiv::union_): Same. + (value_range_equiv::dump): Same. + * value-range.cc (irange::operator=): Same. + (irange::maybe_anti_range): New. + (irange::copy_legacy_range): New. + (irange::set_undefined): Adjust for irange. + (irange::swap_out_of_order_endpoints): Abstract out from set(). + (irange::set_varying): Adjust for irange. + (irange::irange_set): New. + (irange::irange_set_anti_range): New. + (irange::set): Adjust for irange. + (value_range::set_nonzero): Move to header file. + (value_range::set_zero): Move to header file. + (value_range::check): Rename to... + (irange::verify_range): ...this. + (value_range::num_pairs): Rename to... + (irange::legacy_num_pairs): ...this, and adjust for irange. + (value_range::lower_bound): Rename to... + (irange::legacy_lower_bound): ...this, and adjust for irange. + (value_range::upper_bound): Rename to... + (irange::legacy_upper_bound): ...this, and adjust for irange. + (value_range::equal_p): Rename to... + (irange::legacy_equal_p): ...this. + (value_range::operator==): Move to header file. + (irange::equal_p): New. + (irange::symbolic_p): Adjust for irange. + (irange::constant_p): Same. + (irange::singleton_p): Same. + (irange::value_inside_range): Same. + (irange::may_contain_p): Same. + (irange::contains_p): Same. + (irange::normalize_addresses): Same. + (irange::normalize_symbolics): Same. + (irange::legacy_intersect): Same. + (irange::legacy_union): Same. + (irange::union_): Same. + (irange::intersect): Same. + (irange::irange_union): New. + (irange::irange_intersect): New. + (subtract_one): New. + (irange::invert): Adjust for irange. + (dump_bound_with_infinite_markers): New. + (irange::dump): Adjust for irange. + (debug): Add irange versions. + (range_has_numeric_bounds_p): Adjust for irange. + (vrp_val_max): Move to header file. + (vrp_val_min): Move to header file. + (DEFINE_INT_RANGE_GC_STUBS): New. + (DEFINE_INT_RANGE_INSTANCE): New. + * value-range.h (class irange): New. + (class int_range): New. + (class value_range): Rename to a instantiation of int_range. + (irange::legacy_mode_p): New. + (value_range::value_range): Remove. + (irange::kind): New. + (irange::num_pairs): Adjust for irange. + (irange::type): Adjust for irange. + (irange::tree_lower_bound): New. + (irange::tree_upper_bound): New. + (irange::type): Adjust for irange. + (irange::min): Same. + (irange::max): Same. + (irange::varying_p): Same. + (irange::undefined_p): Same. + (irange::zero_p): Same. + (irange::nonzero_p): Same. + (irange::supports_type_p): Same. + (range_includes_zero_p): Same. + (gt_ggc_mx): New. + (gt_pch_nx): New. + (irange::irange): New. + (int_range::int_range): New. + (int_range::operator=): New. + (irange::set): Moved from value-range.cc and adjusted for irange. + (irange::set_undefined): Same. + (irange::set_varying): Same. + (irange::operator==): Same. + (irange::lower_bound): Same. + (irange::upper_bound): Same. + (irange::union_): Same. + (irange::intersect): Same. + (irange::set_nonzero): Same. + (irange::set_zero): Same. + (irange::normalize_min_max): New. + (vrp_val_max): Move from value-range.cc. + (vrp_val_min): Same. + * vr-values.c (vr_values::get_lattice_entry): Call value_range + constructor. + +2020-08-02 Sergei Trofimovich + + PR bootstrap/96404 + * var-tracking.c (vt_find_locations): Fully initialize + all 'in_pending' bits. + +2020-08-01 Jan Hubicka + + * symtab.c (symtab_node::verify_base): Verify order. + (symtab_node::verify_symtab_nodes): Verify order. + +2020-08-01 Jan Hubicka + + * predict.c (estimate_bb_frequencies): Cap recursive calls by 90%. + +2020-08-01 Jojo R + + * config/csky/csky_opts.h (float_abi_type): New. + * config/csky/csky.h (TARGET_SOFT_FLOAT): New. + (TARGET_HARD_FLOAT): New. + (TARGET_HARD_FLOAT_ABI): New. + (OPTION_DEFAULT_SPECS): Use mfloat-abi. + * config/csky/csky.opt (mfloat-abi): New. + * doc/invoke.texi (C-SKY Options): Document -mfloat-abi=. + +2020-08-01 Cooper Qu + + * config/csky/t-csky-linux: Delete big endian CPUs' multilib. + +2020-07-31 Roger Sayle + Tom de Vries + + PR target/90928 + * config/nvptx/nvptx.c (nvptx_truly_noop_truncation): Implement. + (TARGET_TRULY_NOOP_TRUNCATION): Define. + +2020-07-31 Richard Biener + + PR debug/96383 + * langhooks-def.h (lhd_finalize_early_debug): Declare. + (LANG_HOOKS_FINALIZE_EARLY_DEBUG): Define. + (LANG_HOOKS_INITIALIZER): Amend. + * langhooks.c: Include cgraph.h and debug.h. + (lhd_finalize_early_debug): Default implementation from + former code in finalize_compilation_unit. + * langhooks.h (lang_hooks::finalize_early_debug): Add. + * cgraphunit.c (symbol_table::finalize_compilation_unit): + Call the finalize_early_debug langhook. + +2020-07-31 Richard Biener + + * genmatch.c (expr::force_leaf): Add and initialize. + (expr::gen_transform): Honor force_leaf by passing + NULL as sequence argument to maybe_push_res_to_seq. + (parser::parse_expr): Allow ! marker on result expression + operations. + * doc/match-and-simplify.texi: Amend. + +2020-07-31 Kewen Lin + + * tree-vect-loop.c (vect_get_known_peeling_cost): Don't consider branch + taken costs for prologue and epilogue if they don't exist. + (vect_estimate_min_profitable_iters): Likewise. + +2020-07-31 Martin Liska + + * cgraph.h: Remove leading empty lines. + * cgraphunit.c (enum cgraph_order_sort_kind): Remove + ORDER_UNDEFINED. + (struct cgraph_order_sort): Add constructors. + (cgraph_order_sort::process): New. + (cgraph_order_cmp): New. + (output_in_order): Simplify and push nodes to vector. + +2020-07-31 Richard Biener + + PR middle-end/96369 + * fold-const.c (fold_range_test): Special-case constant + LHS for short-circuiting operations. + +2020-07-31 Martin Liska + + * gcov-io.h (GCOV_PREALLOCATED_KVP): New. + +2020-07-31 Zhiheng Xie + + * config/aarch64/aarch64-builtins.c (aarch64_general_add_builtin): + Add new argument ATTRS. + (aarch64_call_properties): New function. + (aarch64_modifies_global_state_p): Likewise. + (aarch64_reads_global_state_p): Likewise. + (aarch64_could_trap_p): Likewise. + (aarch64_add_attribute): Likewise. + (aarch64_get_attributes): Likewise. + (aarch64_init_simd_builtins): Add attributes for each built-in function. + +2020-07-31 Richard Biener + + PR debug/78288 + * var-tracking.c (vt_find_locations): Use + rev_post_order_and_mark_dfs_back_seme and separately iterate + over toplevel SCCs. + +2020-07-31 Richard Biener + + * cfganal.h (rev_post_order_and_mark_dfs_back_seme): Adjust + prototype. + * cfganal.c (rpoamdbs_bb_data): New struct with pre BB data. + (tag_header): New helper. + (cmp_edge_dest_pre): Likewise. + (rev_post_order_and_mark_dfs_back_seme): Compute SCCs, + find SCC exits and perform a DFS walk with extra edges to + compute a RPO with adjacent SCC members when requesting an + iteration optimized order and populate the toplevel SCC array. + * tree-ssa-sccvn.c (do_rpo_vn): Remove ad-hoc computation + of max_rpo and fill it in from SCC extent info instead. + +2020-07-30 Will Schmidt + + * config/rs6000/altivec.h (vec_test_lsbb_all_ones): New define. + (vec_test_lsbb_all_zeros): New define. + * config/rs6000/rs6000-builtin.def (BU_P10_VSX_1): New built-in + handling macro. + (XVTLSBB_ZEROS, XVTLSBB_ONES): New builtin defines. + (xvtlsbb_all_zeros, xvtlsbb_all_ones): New builtin overloads. + * config/rs6000/rs6000-call.c (P10_BUILTIN_VEC_XVTLSBB_ZEROS, + P10_BUILTIN_VEC_XVTLSBB_ONES): New altivec_builtin_types entries. + * config/rs6000/rs6000.md (UNSPEC_XVTLSBB): New unspec. + * config/rs6000/vsx.md (*xvtlsbb_internal): New instruction define. + (xvtlsbbo, xvtlsbbz): New instruction expands. + +2020-07-30 Cooper Qu + + * config/riscv/riscv-opts.h (stack_protector_guard): New enum. + * config/riscv/riscv.c (riscv_option_override): Handle + the new options. + * config/riscv/riscv.md (stack_protect_set): New pattern to handle + flexible stack protector guard settings. + (stack_protect_set_): Ditto. + (stack_protect_test): Ditto. + (stack_protect_test_): Ditto. + * config/riscv/riscv.opt (mstack-protector-guard=, + mstack-protector-guard-reg=, mstack-protector-guard-offset=): New + options. + * doc/invoke.texi (Option Summary) [RISC-V Options]: + Add -mstack-protector-guard=, -mstack-protector-guard-reg=, and + -mstack-protector-guard-offset=. + (RISC-V Options): Ditto. + +2020-07-30 H.J. Lu + + PR bootstrap/96202 + * configure: Regenerated. + +2020-07-30 Richard Biener + + PR tree-optimization/96370 + * tree-ssa-reassoc.c (rewrite_expr_tree): Add operation + code parameter and use it instead of picking it up from + the stmt that is being rewritten. + (reassociate_bb): Pass down the operation code. + +2020-07-30 Roger Sayle + Tom de Vries + + * config/nvptx/nvptx.md (nvptx_vector_index_operand): New predicate. + (VECELEM): New mode attribute for a vector's uppercase element mode. + (Vecelem): New mode attribute for a vector's lowercase element mode. + (*vec_set_0, *vec_set_1, *vec_set_2) + (*vec_set_3): New instructions. + (vec_set): New expander to generate one of the above insns. + (vec_extract): New instruction. + +2020-07-30 Martin Liska + + PR target/95435 + * config/i386/x86-tune-costs.h: Use libcall for large sizes for + -m32. Start using libcall from 128+ bytes. + +2020-07-30 Martin Liska + + * config/i386/x86-tune-costs.h: Change code formatting. + 2020-07-29 Roger Sayle * config/nvptx/nvptx.md (recip2): New instruction. @@ -619,7 +9235,7 @@ (peephole2 to remove unneded compare after CMPXCHG): New pattern, also handle XOR zeroing and load of -1 by OR. -2020-07-16 Eric Botcazou +2020-07-16 Eric Botcazou * config/i386/i386.c (ix86_compute_frame_layout): Minor tweak. (ix86_adjust_stack_and_probe): Delete. @@ -1343,7 +9959,7 @@ * config/riscv/riscv-sr.c (riscv_remove_unneeded_save_restore_calls): Abort if any arguments on stack. -2020-07-08 Eric Botcazou +2020-07-08 Eric Botcazou * gimple-fold.c (gimple_fold_builtin_memory_op): Do not fold if either type has reverse scalar storage order. @@ -1478,7 +10094,7 @@ * config/cris/cris.md ("*extopqihi", "*extopsi_swap") ("*extopsi", "*addxqihi_swap"): Reinstate. -2020-07-03 Eric Botcazou +2020-07-03 Eric Botcazou * gimple-fold.c (gimple_fold_builtin_memory_op): Fold calls that were initially created for the assignment of a variable-sized @@ -1979,7 +10595,7 @@ * doc/standards.texi (C Language): Correct the default dialect. (C++ Language): Update the default for C++ to gnu++17. -2020-06-26 Eric Botcazou +2020-06-26 Eric Botcazou * tree-ssa-reassoc.c (dump_range_entry): New function. (debug_range_entry): New debug function. @@ -2974,7 +11590,7 @@ * config/riscv/riscv.c (riscv_gpr_save_operation_p): Remove assertion and turn it into a early exit check. -2020-06-15 Eric Botcazou +2020-06-15 Eric Botcazou * gimplify.c (gimplify_init_constructor) : Declare new ENSURE_SINGLE_ACCESS constant and move variables down. If it is @@ -2984,7 +11600,7 @@ the type is aggregate non-addressable, ask gimplify_init_constructor whether it can generate a single access to the target. -2020-06-15 Eric Botcazou +2020-06-15 Eric Botcazou * tree-sra.c (propagate_subaccesses_from_rhs): When a non-scalar access on the LHS is replaced with a scalar access, propagate the @@ -4087,7 +12703,7 @@ * config/gcn/gcn.opt (-mlocal-symbol-id): Delete. * config/gcn/mkoffload.c (main): Don't use -mlocal-symbol-id. -2020-06-02 Eric Botcazou +2020-06-02 Eric Botcazou PR middle-end/95395 * optabs.c (expand_unop): Fix bits/bytes confusion in latest change. @@ -4429,7 +13045,7 @@ make a nonzero adjustment to the memory offset. (bhi_msx): Turn into a splitter. -2020-05-28 Eric Botcazou +2020-05-28 Eric Botcazou * gimple-ssa-store-merging.c (merged_store_group::can_be_merged_into): Fix off-by-one error. @@ -4548,7 +13164,7 @@ function. (TARGET_DELEGITIMIZE_ADDRESS): New macro. -2020-05-27 Eric Botcazou +2020-05-27 Eric Botcazou * builtin-types.def (BT_UINT128): New primitive type. (BT_FN_UINT128_UINT128): New function type.