From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2153) id 72B703858D29; Fri, 1 Jan 2021 16:28:15 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 72B703858D29 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="utf-8" From: Jakub Jelinek To: gcc-cvs@gcc.gnu.org, libstdc++-cvs@gcc.gnu.org Subject: [gcc r11-6402] Rotate ChangeLog files - part 1 - add ChangeLog-2020. X-Act-Checkin: gcc X-Git-Author: Jakub Jelinek X-Git-Refname: refs/heads/master X-Git-Oldrev: 43dcbb07d29128321f9ffbde2b34635819bb5ac0 X-Git-Newrev: 6e9269627832853dc3bb91b141295563e89c0341 Message-Id: <20210101162815.72B703858D29@sourceware.org> Date: Fri, 1 Jan 2021 16:28:15 +0000 (GMT) X-BeenThere: libstdc++-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libstdc++-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Jan 2021 16:28:15 -0000 https://gcc.gnu.org/g:6e9269627832853dc3bb91b141295563e89c0341 commit r11-6402-g6e9269627832853dc3bb91b141295563e89c0341 Author: Jakub Jelinek Date: Fri Jan 1 17:26:04 2021 +0100 Rotate ChangeLog files - part 1 - add ChangeLog-2020. 2021-01-01 Jakub Jelinek gcc/ * ChangeLog-2020: Rotate ChangeLog. New file. gcc/ada/ * ChangeLog-2020: Rotate ChangeLog. New file. gcc/cp/ * ChangeLog-2020: Rotate ChangeLog. New file. gcc/d/ * ChangeLog-2020: Rotate ChangeLog. New file. gcc/fortran/ * ChangeLog-2020: Rotate ChangeLog. New file. gcc/testsuite/ * ChangeLog-2020: Rotate ChangeLog. New file. libgfortran/ * ChangeLog-2020: Rotate ChangeLog. New file. libstdc++-v3/ * ChangeLog-2020: Rotate ChangeLog. New file. Diff: --- gcc/ChangeLog-2020 | 39860 +++++++++++++++++++++++++++++++++++++++++ gcc/ada/ChangeLog-2020 | 13978 +++++++++++++++ gcc/cp/ChangeLog-2020 | 6596 +++++++ gcc/d/ChangeLog-2020 | 1030 ++ gcc/fortran/ChangeLog-2020 | 2382 +++ gcc/testsuite/ChangeLog-2020 | 29084 ++++++++++++++++++++++++++++++ libgfortran/ChangeLog-2020 | 391 + libstdc++-v3/ChangeLog-2020 | 8776 +++++++++ 8 files changed, 102097 insertions(+) diff --git a/gcc/ChangeLog-2020 b/gcc/ChangeLog-2020 new file mode 100644 index 00000000000..6553720acad --- /dev/null +++ b/gcc/ChangeLog-2020 @@ -0,0 +1,39860 @@ +2020-12-31 Richard Sandiford + + PR tree-optimization/98302 + * tree-vect-patterns.c (vect_determine_precisions_from_users): Make + sure that the precision remains greater than the shift count. + +2020-12-31 Richard Sandiford + + PR tree-optimization/94994 + * tree-vect-data-refs.c (vect_vfa_align): Use dr_alignment. + +2020-12-31 Richard Sandiford + + PR rtl-optimization/98214 + * genmodes.c (emit_insn_modes_h): Emit a definition of CONST_MODE_MASK. + (emit_mode_mask): Treat mode_mask_array as non-constant if adj_nunits. + (emit_mode_adjustments): Update GET_MODE_MASK when updating + GET_MODE_NUNITS. + * machmode.h (mode_mask_array): Use CONST_MODE_MASK. + +2020-12-31 Jakub Jelinek + + PR tree-optimization/94802 + * match.pd (clz(X) == 0 -> (int)X < 0): New simplification. + (clz(X) == (prec-1) -> X == 1): Likewise. + +2020-12-31 Jakub Jelinek + + PR tree-optimization/94785 + * match.pd ((-(X < 0) | 1) * X -> abs (X)): New simplification. + ((-(X < 0) | 1U) * X -> absu (X)): Likewise. + +2020-12-31 Jakub Jelinek + + PR tree-optimization/98474 + * wide-int.cc (wi::to_mpz): If wide_int has MSB set, but type + is unsigned and excess negative, append set bits after len until + precision. + +2020-12-31 Jakub Jelinek + + PR c++/98206 + * fold-const.c: Include asan.h. + (fold_unary_loc): Don't optimize (ptr_type) (((ptr_type2) x) p+ y) + into ((ptr_type) x) p+ y if sanitizing alignment in GENERIC and + ptr_type points to type with higher alignment than ptr_type2. + +2020-12-31 Jakub Jelinek + + PR tree-optimization/56719 + * tree-ssa-reassoc.c (optimize_range_tests_cmp_bitwise): Also optimize + x < C && y < C && z < C when C is a power of two constant into + (x | y | z) < C. + +2020-12-30 Uroš Bizjak + + * config/i386/i386.md: Remove unnecessary clobbers + from combine splitters. + +2020-12-30 Jakub Jelinek + + PR target/98461 + * config/i386/sse.md (_pmovmskb): Add splitters + for pmovmskb of NOT vector. + +2020-12-29 Claudiu Zissulescu + + * config/arc/arc.md (maddsidi4_split): Skip macd gen, use mac insn + instead. + (macd): Update register letters. + (umaddsidi4_split): Skip macdu gen, use macu insn instead. + (macdu): Update register letters. + +2020-12-29 Claudiu Zissulescu + + * config/arc/arc.c (arc_secondary_reload): Flip if-condition + predicates. + +2020-12-29 Claudiu Zissulescu + + * config/arc/arc.h (REGNO_OK_FOR_BASE_P): Check if defined + reg_renumber. + +2020-12-29 Claudiu Zissulescu + + * config/arc/arc.c (prepare_move_operands): Use a temporary + registers when we have cached mem-to-uncached mem moves. + +2020-12-29 Claudiu Zissulescu + + * config/arc/arc.md (movdi_insn): Update pattern, no predicated + vadd2 usage. + (movdf_insn): Likewise. + * config/arc/simdext.md (movVEC_insn): Likewise. + +2020-12-29 Uroš Bizjak + + * config/i386/i386-expand.c (ix86_gen_TWO52): Use REAL_MODE_FORMAT + to determine number of mantissa bits. Use real_2expN instead + of real_ldexp. + (ix86_expand_rint): Use copy_to_reg. + (ix86_expand_floorceildf_32): Ditto. + (ix86_expand_truncdf_32): Ditto. + (ix86_expand_rounddf_32): Ditto. + (ix86_expand_floorceil): Use copy_to_reg and int_mode_for_mode. + (ix86_expand_trunc): Ditto. + (ix86_expand_round): Ditto. + +2020-12-28 Gerald Pfeifer + + * doc/standards.texi (HSAIL): Remove section. + +2020-12-28 Uroš Bizjak + + PR target/96793 + * config/i386/i386-expand.c (ix86_expand_rint): + Remove the sign of the intermediate value for flag_rounding_math. + +2020-12-28 Uroš Bizjak + + * config/i386/i386-expand.c (ix86_expand_trunc): Use + existing temporary register to avoid a call to force_reg. + +2020-12-28 Hongyu Wang + + * config/i386/i386.md (optab): New code attr. + * config/i386/sse.md (v32qiv32hi2): Rename to ... + (v32qiv32hi2) ... this. + (v16qiv16hi2): Likewise. + (v8qiv8hi2): Likewise. + (v16qiv16si2): Likewise. + (v8qiv8si2): Likewise. + (v4qiv4si2): Likewise. + (v16hiv16si2): Likewise. + (v8hiv8si2): Likewise. + (v4hiv4si2): Likewise. + (v8qiv8di2): Likewise. + (v4qiv4di2): Likewise. + (v2qiv2di2): Likewise. + (v8hiv8di2): Likewise. + (v4hiv4di2): Likewise. + (v2hiv2di2): Likewise. + (v8siv8di2): Likewise. + (v4siv4di2): Likewise. + (v2siv2di2): Likewise. + +2020-12-27 Gerald Pfeifer + + * doc/analyzer.texi (Analyzer Internals): Find a new source for + the "A Memory Model for Static Analysis of C Programs" paper. + +2020-12-25 Gerald Pfeifer + + * doc/invoke.texi (C++ Module Mapper): Fix reference to libcody. + +2020-12-24 Iain Sandoe + + * configure.ac: Add gxx-libcxx-include-dir handled + in the same way as the regular cxx header directory. + * Makefile.in: Regenerated. + * config.in: Likewise. + * configure: Likewise. + * cppdefault.c: Pick up libc++ headers if the option + is enabled. + * cppdefault.h (struct default_include): Amend comments + to reflect the extended use of the cplusplus field. + * incpath.c (add_standard_paths): Allow for multiple + c++ header include path variants. + * doc/invoke.texi: Document the -stdlib= option. + +2020-12-24 Kito Cheng + + * config/riscv/multilib-generator (arch_canonicalize): Call + decode for the subprocess return value. + +2020-12-23 Martin Sebor + + PR middle-end/98160 + * builtins.c (warn_dealloc_offset): Avoid assuming calls are made + through declared functions and not pointers. + +2020-12-23 Martin Sebor + + PR c++/98413 + * builtins.c (get_offset_range): Avoid non-integers/-pointers. + +2020-12-23 Iain Sandoe + + * config/darwin-driver.c (validate_macosx_version_min): Allow + MACOSX_DEPLOYMENT_TARGET=11. + (darwin_default_min_version): Adjust warning spelling to avoid + an apostrophe. + +2020-12-23 Uroš Bizjak + + PR target/96793 + * config/i386/i386-expand.c (ix86_expand_truncdf_32): + Remove the sign of the intermediate value for flag_rounding_math. + +2020-12-22 Qian Jianhua + + * config/arm/types.md (define_attr "autodetect_type"): New. + (define_attr "type"): Subdivide alu_shift_imm. + * config/arm/common.md: New file. + * config/aarch64/predicates.md:Include common.md. + * config/arm/predicates.md:Include common.md. + * config/aarch64/aarch64.md (*add__): Set autodetect_type. + (*add__si_uxtw): Likewise. + (*sub__): Likewise. + (*sub__si_uxtw): Likewise. + (*neg__2): Likewise. + (*neg__si2_uxtw): Likewise. + * config/arm/arm.md (*addsi3_carryin_shift): Likewise. + (add_not_shift_cin): Likewise. + (*subsi3_carryin_shift): Likewise. + (*subsi3_carryin_shift_alt): Likewise. + (*rsbsi3_carryin_shift): Likewise. + (*rsbsi3_carryin_shift_alt): Likewise. + (*arm_shiftsi3): Likewise. + (*_multsi): Likewise. + (*_shiftsi): Likewise. + (subsi3_carryin): Set new type. + (*if_arith_move): Set new type. + (*if_move_arith): Set new type. + (define_attr "core_cycles"): Use new type. + * config/arm/arm-fixed.md (arm_ssatsihi_shift): Set autodetect_type. + * config/arm/thumb2.md (*orsi_not_shiftsi_si): Likewise. + (*thumb2_shiftsi3_short): Set new type. + * config/aarch64/falkor.md (falkor_alu_1_xyz): Use new type. + * config/aarch64/saphira.md (saphira_alu_1_xyz): Likewise. + * config/aarch64/thunderx.md (thunderx_arith_shift): Likewise. + * config/aarch64/thunderx2t99.md (thunderx2t99_alu_shift): Likewise. + * config/aarch64/thunderx3t110.md (thunderx3t110_alu_shift): Likewise. + (thunderx3t110_alu_shift1): Likewise. + * config/aarch64/tsv110.md (tsv110_alu_shift): Likewise. + * config/arm/arm1020e.md (1020alu_shift_op): Likewise. + * config/arm/arm1026ejs.md (alu_shift_op): Likewise. + * config/arm/arm1136jfs.md (11_alu_shift_op): Likewise. + * config/arm/arm926ejs.md (9_alu_op): Likewise. + * config/arm/cortex-a15.md (cortex_a15_alu_shift): Likewise. + * config/arm/cortex-a17.md (cortex_a17_alu_shiftimm): Likewise. + * config/arm/cortex-a5.md (cortex_a5_alu_shift): Likewise. + * config/arm/cortex-a53.md (cortex_a53_alu_shift): Likewise. + * config/arm/cortex-a57.md (cortex_a57_alu_shift): Likewise. + * config/arm/cortex-a7.md (cortex_a7_alu_shift): Likewise. + * config/arm/cortex-a8.md (cortex_a8_alu_shift): Likewise. + * config/arm/cortex-a9.md (cortex_a9_dp_shift): Likewise. + * config/arm/cortex-m4.md (cortex_m4_alu): Likewise. + * config/arm/cortex-m7.md (cortex_m7_alu_shift): Likewise. + * config/arm/cortex-r4.md (cortex_r4_alu_shift): Likewise. + * config/arm/exynos-m1.md (exynos_m1_alu_shift): Likewise. + * config/arm/fa526.md (526_alu_shift_op): Likewise. + * config/arm/fa606te.md (606te_alu_op): Likewise. + * config/arm/fa626te.md (626te_alu_shift_op): Likewise. + * config/arm/fa726te.md (726te_alu_shift_op): Likewise. + * config/arm/fmp626.md (mp626_alu_shift_op): Likewise. + * config/arm/marvell-pj4.md (pj4_shift): Likewise. + (pj4_shift_conds): Likewise. + (pj4_alu_shift): Likewise. + (pj4_alu_shift_conds): Likewise. + * config/arm/xgene1.md (xgene1_alu): Likewise. + * config/arm/arm.c (xscale_sched_adjust_cost): Likewise. + +2020-12-22 Uroš Bizjak + + PR target/96793 + * config/i386/i386-expand.c (ix86_expand_floorceil): + Remove the sign of the intermediate value for flag_rounding_math. + (ix86_expand_floorceildf_32): Ditto. + +2020-12-22 liuhongt + + * config/i386/i386.md (*one_cmpl2_1): Fix typo, change + alternative from 2 to 1 in attr isa. + +2020-12-22 Ian Lance Taylor + + * godump.c (go_output_typedef): If DECL_ORIGINAL_TYPE is NULL, use + TREE_TYPE. + +2020-12-21 Jakub Jelinek + + PR c++/98353 + * gimplify.c (gimplify_init_ctor_eval_range): Gimplify value before + storing it into cref. + +2020-12-21 Iain Sandoe + + * config/darwin-driver.c (darwin_find_version_from_kernel): + Compute the minor OS version from the minor kernel version. + +2020-12-21 Jakub Jelinek + + PR tree-optimization/98407 + * fold-const.c (native_encode_initializer): When handling flexible + array members, fix up computation of length for memset. Also remove + " - o" as o is always guaranteed to be 0 in this code path. + +2020-12-21 Jakub Jelinek + + PR c++/98383 + * gimplify.c (struct gimplify_omp_ctx): Add in_for_exprs flag. + (gimple_add_tmp_var): For addressable temporaries appearing in + simd lb, b or incr expressions, don't add a private clause unless + it is seen also outside of those expressions in the simd body. + (omp_notice_variable): Likewise. + (gimplify_omp_for): Set and reset in_for_exprs around gimplification + of lb, b or incr expressions. + +2020-12-20 Max Filippov + + * config/xtensa/xtensa.md (bswapsi2, bswapdi2): New patterns. + +2020-12-20 Jakub Jelinek + + PR other/98400 + * doc/invoke.texi (-mbackchain): Fix a typo - -mmo-backchain -> + -mno-backchain. + +2020-12-19 Jakub Jelinek + + PR middle-end/98366 + * fold-const.c (native_encode_initializer): Don't try to + memset more than total_bytes with off == -1 even if len is large. + Handle flexible array member initializers if off == -1 and mask is + NULL. + * expr.c (convert_to_bytes): Remove. + (constant_byte_string): Use native_encode_initializer instead of + convert_to_bytes. Remove extraneous semicolon. Punt on various + corner-cases the APIs don't handle, like sizes > INT_MAX, + BITS_PER_UNIT != 8, CHAR_BIT != 8. + +2020-12-19 Iain Buclaw + + PR d/98067 + * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Handle + CONST_DECL only if is_fortran, is_ada, or is_dlang. + +2020-12-19 Jakub Jelinek + + PR tree-optimization/98378 + * gimple-ssa-store-merging.c (find_bswap_or_nop): Punt if CONSTRUCTOR + has no elements. + +2020-12-18 Jakub Jelinek + + * gimplify.c (struct gimplify_omp_ctx): Add has_depend member. + (gimplify_scan_omp_clauses): Set it to true if OMP_CLAUSE_DEPEND + appears on OMP_TASK. + (gimplify_adjust_omp_clauses_1, gimplify_adjust_omp_clauses): Force + GOVD_WRITTEN on shared variables if task construct has depend clause. + +2020-12-18 Przemyslaw Wirkus + + PR target/98177 + * tree-vect-loop.c (vect_create_epilog_for_reduction): Use + get_same_sized_vectype to obtain index type. + (vectorizable_reduction): Likewise. + +2020-12-18 Kwok Cheung Yeung + + * langhooks-def.h (lhd_get_decl_init): New. + (lhd_finish_decl_inits): New. + (LANG_HOOKS_GET_DECL_INIT): New. + (LANG_HOOKS_OMP_FINISH_DECL_INITS): New. + (LANG_HOOKS_DECLS): Add LANG_HOOKS_GET_DECL_INIT and + LANG_HOOKS_OMP_FINISH_DECL_INITS. + * langhooks.c (lhd_omp_get_decl_init): New. + (lhd_omp_finish_decl_inits): New. + * langhooks.h (struct lang_hooks_for_decls): Add omp_get_decl_init + and omp_finish_decl_inits. + * omp-offload.c (omp_discover_declare_target_var_r): Use + get_decl_init langhook in place of DECL_INITIAL. Call + omp_finish_decl_inits langhook at end of function. + +2020-12-18 Richard Sandiford + + * config/aarch64/aarch64.c (aarch64_preferred_simd_mode): Use + aarch64_full_sve_mode and aarch64_vq_mode directly, instead of + going via aarch64_simd_container_mode. + +2020-12-18 Tamar Christina + + * config/arm/iterators.md (rot): Add UNSPEC_VCMUL, UNSPEC_VCMUL90, + UNSPEC_VCMUL180, UNSPEC_VCMUL270. + +2020-12-17 Przemyslaw Wirkus + + * config/arm/arm-cpus.in: Add Cortex-A78C core. + * config/arm/arm-tables.opt: Regenerate. + * config/arm/arm-tune.md: Regenerate. + * doc/invoke.texi: Update docs. + +2020-12-17 Richard Sandiford + + PR rtl-optimization/98347 + * rtl-ssa/access-utils.h (full_register): Use regno_reg_rtx + instead of reg_raw_mode. + +2020-12-17 H.J. Lu + + * targhooks.h (default_estimated_poly_value): Updated. + +2020-12-17 Nathan Sidwell + + * doc/invoke.texi (C++ Modules): Document lack of std + library header units. + +2020-12-17 Kyrylo Tkachov + + * target.h (enum poly_value_estimate_kind): Define. + (estimated_poly_value): Take an estimate kind argument. + * target.def (estimated_poly_value): Update definition for the + above. + * doc/tm.texi: Regenerate. + * targhooks.c (estimated_poly_value): Update prototype. + * tree-vect-loop.c (vect_better_loop_vinfo_p): Use min, max and + likely estimates of VF to pick between vinfos. + * config/aarch64/aarch64.c (aarch64_cmp_autovec_modes): Use + estimated_poly_value instead of aarch64_estimated_poly_value. + (aarch64_estimated_poly_value): Take a kind argument and handle + it. + +2020-12-17 Andrea Corallo + + * config/arm/arm_neon.h (vcreate_p64): Remove call to + '__builtin_neon_vcreatedi'. + +2020-12-17 Andrew MacLeod + + PR tree-optimization/97750 + * range-op.cc (operator_cast::op1_range): Handle pointers better. + +2020-12-17 Rainer Orth + + * rtl-ssa.h: Include memmodel.h before tm_p.h. + +2020-12-17 Jakub Jelinek + + PR rtl-optimization/98289 + * shrink-wrap.c (can_get_prologue): Don't punt on EDGE_CROSSING + incoming edges. + +2020-12-17 Marius Hillenbrand + + * configure.ac: Change --enable-s390-excess-float-precision + default behavior for cross compiles with target headers. + * configure: Regenerate. + * doc/install.texi: Adjust documentation. + +2020-12-17 Takayuki 'January June' Suwa + + * config/xtensa/xtensa.md (*ashlsi3_1, *ashlsi3_3x, *ashrsi3_3x) + (*lshrsi3_3x): New patterns. + +2020-12-17 Richard Sandiford + + * fwprop.c: Rewrite to use the RTL SSA framework. + +2020-12-17 Richard Sandiford + + * configure.ac: Add rtl-ssa to the list of dependence directories. + * configure: Regenerate. + * Makefile.in (rtl-ssa-warn): New variable. + (OBJS): Add the rtl-ssa object files. + * emit-rtl.h (rtl_data::ssa): New field. + * rtl-ssa.h: New file. + * system.h: Include when INCLUDE_FUNCTIONAL is defined. + * rtl-ssa/access-utils.h: Likewise. + * rtl-ssa/accesses.h: New file. + * rtl-ssa/accesses.cc: Likewise. + * rtl-ssa/blocks.h: New file. + * rtl-ssa/blocks.cc: Likewise. + * rtl-ssa/change-utils.h: Likewise. + * rtl-ssa/changes.h: New file. + * rtl-ssa/changes.cc: Likewise. + * rtl-ssa/functions.h: New file. + * rtl-ssa/functions.cc: Likewise. + * rtl-ssa/insn-utils.h: Likewise. + * rtl-ssa/insns.h: New file. + * rtl-ssa/insns.cc: Likewise. + * rtl-ssa/internals.inl: Likewise. + * rtl-ssa/is-a.inl: Likewise. + * rtl-ssa/member-fns.inl: Likewise. + * rtl-ssa/movement.h: Likewise. + +2020-12-17 Richard Sandiford + + * doc/rtl.texi (RTL SSA): New node. + +2020-12-17 Richard Sandiford + + * rtl.h (simple_regno_set): Declare. + * rtlanal.c (simple_regno_set): New function. + +2020-12-17 Richard Sandiford + + * rtlanal.h: New file. + (MEM_REGNO): New constant. + (rtx_obj_flags): New namespace. + (rtx_obj_reference, rtx_properties): New classes. + (growing_rtx_properties, vec_rtx_properties_base): Likewise. + (vec_rtx_properties): New alias. + * rtlanal.c: Include it. + (rtx_properties::try_to_add_reg): New function. + (rtx_properties::try_to_add_dest): Likewise. + (rtx_properties::try_to_add_src): Likewise. + (rtx_properties::try_to_add_pattern): Likewise. + (rtx_properties::try_to_add_insn): Likewise. + (vec_rtx_properties_base::grow): Likewise. + +2020-12-17 Richard Sandiford + + * recog.h (insn_change_watermark): New class. + +2020-12-17 Richard Sandiford + + * recog.h (insn_propagation): New class. + * recog.c (insn_propagation::apply_to_mem_1): New function. + (insn_propagation::apply_to_rvalue_1): Likewise. + (insn_propagation::apply_to_lvalue_1): Likewise. + (insn_propagation::apply_to_pattern_1): Likewise. + (insn_propagation::apply_to_pattern): Likewise. + (insn_propagation::apply_to_rvalue): Likewise. + +2020-12-17 Richard Sandiford + + * recog.h (temporarily_undo_changes, redo_changes): Declare. + * recog.c (temporarily_undone_changes): New variable. + (validate_change_1, confirm_change_group): Check that it's zero. + (cancel_changes): Likewise. + (swap_change, temporarily_undo_changes): New functions. + (redo_changes): Likewise. + +2020-12-17 Richard Sandiford + + * recog.h (validate_change_xveclen): Declare. + * recog.c (change_t::old_len): New field. + (validate_change_1): Add a new_len parameter. Conditionally + replace the XVECLEN of an rtx, avoiding single-element PARALLELs. + (validate_change_xveclen): New function. + (cancel_changes): Undo changes made by validate_change_xveclen. + +2020-12-17 Richard Sandiford + + * rtl.h (simplify_context): New class. + (simplify_unary_operation, simplify_binary_operation): Use it. + (simplify_ternary_operation, simplify_relational_operation): Likewise. + (simplify_subreg, simplify_gen_unary, simplify_gen_binary): Likewise. + (simplify_gen_ternary, simplify_gen_relational): Likewise. + (simplify_gen_subreg, lowpart_subreg): Likewise. + * simplify-rtx.c (simplify_gen_binary): Turn into a member function + of simplify_context. + (simplify_gen_unary, simplify_gen_ternary, simplify_gen_relational) + (simplify_truncation, simplify_unary_operation): Likewise. + (simplify_unary_operation_1, simplify_byte_swapping_operation) + (simplify_associative_operation, simplify_logical_relational_operation) + (simplify_binary_operation, simplify_binary_operation_series) + (simplify_distributive_operation, simplify_plus_minus): Likewise. + (simplify_relational_operation, simplify_relational_operation_1) + (simplify_cond_clz_ctz, simplify_merge_mask): Likewise. + (simplify_ternary_operation, simplify_subreg, simplify_gen_subreg) + (lowpart_subreg): Likewise. + (simplify_binary_operation_1): Likewise. Test mem_depth when + deciding whether the ASHIFT or MULT form is canonical. + (simplify_merge_mask): Use simplify_context. + +2020-12-17 Richard Sandiford + + * rtl.h (register_asm_p): Declare. + * recog.c (verify_changes): Split out the test for whether + a hard register is a register asm to... + * rtlanal.c (register_asm_p): ...this new function. + +2020-12-17 Richard Sandiford + + * print-rtl.h (print_insn_with_notes): Declare. + * print-rtl.c (print_insn_with_notes): Make non-static + +2020-12-17 Richard Sandiford + + * cfgrtl.h (update_cfg_for_uncondjump): Declare. + * combine.c (update_cfg_for_uncondjump): Move to... + * cfgrtl.c: ...here. + +2020-12-17 Richard Sandiford + + * vec.h (array_slice): New class. + +2020-12-17 Richard Sandiford + + * Makefile.in (OBJS): Add splay-tree-utils.o. + * system.h: Include when INCLUDE_ARRAY is defined. + * selftest.h (splay_tree_cc_tests): Declare. + * selftest-run-tests.c (selftest::run_tests): Run splay_tree_cc_tests. + * splay-tree-utils.h: New file. + * splay-tree-utils.tcc: Likewise. + * splay-tree-utils.cc: Likewise. + +2020-12-17 Richard Sandiford + + * mux-utils.h: New file. + +2020-12-17 Richard Sandiford + + * obstack-utils.h: New file. + +2020-12-17 Richard Sandiford + + * iterator-utils.h (derived_iterator): New class. + (const_derived_container, wrapper_iterator): Likewise. + (list_iterator): Likewise. + +2020-12-17 Richard Sandiford + + * hard-reg-set.h (global_reg_set): Declare. + * reginfo.c (global_reg_set): New variable. + (init_reg_sets_1, globalize_reg): Update it when globalizing + registers. + +2020-12-16 Piotr Kubaj + + * config.gcc (powerpc*le-*-freebsd*): Add. + * configure.ac (powerpc*le-*-freebsd*): Ditto. + * configure: Regenerate. + * config/rs6000/freebsd64.h (ASM_SPEC_COMMON): Use ENDIAN_SELECT. + (DEFAULT_ASM_ENDIAN): Add little endian support. + (LINK_OS_FREEBSD_SPEC64): Ditto. + +2020-12-16 Takayuki 'January June' Suwa + + * config/xtensa/xtensa.c (xtensa_emit_move_sequence): Try to + replace 'l32r' with 'movi' + 'slli' when optimizing for size. + * config/xtensa/xtensa.md (movdi): Split loading DI mode constant + into register pair into two loads of SI mode constants. + +2020-12-16 Tamar Christina + + * config/arm/arm_mve.h (__arm_vcmulq_rot90_f16): + (__arm_vcmulq_rot270_f16, _arm_vcmulq_rot180_f16, __arm_vcmulq_f16, + __arm_vcmulq_rot90_f32, __arm_vcmulq_rot270_f32, + __arm_vcmulq_rot180_f32, __arm_vcmulq_f32, __arm_vcmlaq_f16, + __arm_vcmlaq_rot180_f16, __arm_vcmlaq_rot270_f16, + __arm_vcmlaq_rot90_f16, __arm_vcmlaq_f32, __arm_vcmlaq_rot180_f32, + __arm_vcmlaq_rot270_f32, __arm_vcmlaq_rot90_f32): Update builtin calls. + * config/arm/arm_mve_builtins.def (vcmulq_f, vcmulq_rot90_f, + vcmulq_rot180_f, vcmulq_rot270_f, vcmlaq_f, vcmlaq_rot90_f, + vcmlaq_rot180_f, vcmlaq_rot270_f): Removed. + (vcmulq, vcmulq_rot90, vcmulq_rot180, vcmulq_rot270, vcmlaq, + vcmlaq_rot90, vcmlaq_rot180, vcmlaq_rot270): New. + * config/arm/iterators.md (mve_rot): Add UNSPEC_VCMLA, UNSPEC_VCMLA90, + UNSPEC_VCMLA180, UNSPEC_VCMLA270, UNSPEC_VCMUL, UNSPEC_VCMUL90, + UNSPEC_VCMUL180, UNSPEC_VCMUL270. + (VCMUL): New. + * config/arm/mve.md (mve_vcmulq_f, + mve_vcmulq_rot270_f, mve_vcmulq_rot90_f, mve_vcmlaq_f, + mve_vcmlaq_rot180_f, mve_vcmlaq_rot270_f, + mve_vcmlaq_rot90_f): Removed. + (mve_vcmlaq, mve_vcmulq, + mve_vcaddq, cadd3, mve_vcaddq): + New. + * config/arm/unspecs.md (UNSPEC_VCMUL90, UNSPEC_VCMUL270, UNSPEC_VCMUL, + UNSPEC_VCMUL180): New. + (VCMULQ_F, VCMULQ_ROT180_F, VCMULQ_ROT270_F, VCMULQ_ROT90_F, + VCMLAQ_F, VCMLAQ_ROT180_F, VCMLAQ_ROT90_F, VCMLAQ_ROT270_F): Removed. + +2020-12-16 Tamar Christina + + * config/arm/arm_mve.h (__arm_vcaddq_rot90_u8, __arm_vcaddq_rot270_u8, + __arm_vcaddq_rot90_s8, __arm_vcaddq_rot270_s8, + __arm_vcaddq_rot90_u16, __arm_vcaddq_rot270_u16, + __arm_vcaddq_rot90_s16, __arm_vcaddq_rot270_s16, + __arm_vcaddq_rot90_u32, __arm_vcaddq_rot270_u32, + __arm_vcaddq_rot90_s32, __arm_vcaddq_rot270_s32, + __arm_vcaddq_rot90_f16, __arm_vcaddq_rot270_f16, + __arm_vcaddq_rot90_f32, __arm_vcaddq_rot270_f32): Update builtin calls. + * config/arm/arm_mve_builtins.def (vcaddq_rot90_u, vcaddq_rot270_u, + vcaddq_rot90_s, vcaddq_rot270_s, vcaddq_rot90_f, vcaddq_rot270_f): + Removed. + (vcaddq_rot90, vcaddq_rot270): New. + * config/arm/constraints.md (Dz): Include MVE. + * config/arm/iterators.md (mve_rot): New. + (supf): Remove VCADDQ_ROT270_S, VCADDQ_ROT270_U, VCADDQ_ROT90_S, + VCADDQ_ROT90_U. + (VCADDQ_ROT270, VCADDQ_ROT90): Removed. + * config/arm/mve.md (mve_vcaddq_rot270_, mve_vcaddq_rot270_f, + mve_vcaddq_rot90_f): Removed. + (mve_vcaddq, mve_vcaddq): New. + * config/arm/unspecs.md (VCADDQ_ROT270_S, VCADDQ_ROT90_S, + VCADDQ_ROT270_U, VCADDQ_ROT90_U, VCADDQ_ROT270_F, + VCADDQ_ROT90_F): Removed. + * config/arm/vec-common.md (cadd3): New. + +2020-12-16 Tamar Christina + + * config/aarch64/aarch64-simd.md (cadd3): New. + * config/aarch64/iterators.md (SVE2_INT_CADD_OP): New. + * config/aarch64/aarch64-sve.md (cadd3): New. + * config/aarch64/aarch64-sve2.md (cadd3): New. + +2020-12-16 Pat Haugen + + * config/rs6000/mma.md (*movxo, mma_, mma_, + mma_, mma_, mma_, mma_, + mma_, mma_, mma_, mma_): + Remove explicit setting of length attribute. + +2020-12-16 Jakub Jelinek + + * varasm.c (default_elf_asm_named_section): Always force + section flags even for sections with SECTION_LINK_ORDER flag. + +2020-12-16 H.J. Lu + + PR target/98146 + * defaults.h (SUPPORTS_SHF_GNU_RETAIN): New. + * varasm.c (get_section): Replace HAVE_GAS_SHF_GNU_RETAIN with + SUPPORTS_SHF_GNU_RETAIN. + (resolve_unique_section): Likewise. + (get_variable_section): Likewise. + (switch_to_section): Likewise. + +2020-12-16 H.J. Lu + + PR target/98146 + * varasm.c (switch_to_section): Warn when a symbol without used + attribute and a symbol with used attribute are placed in the + section with the same name. + +2020-12-16 H.J. Lu + + PR target/98146 + * output.h (switch_to_section): Add a tree argument, default to + nullptr. + * varasm.c (get_section): If the SECTION_RETAIN bit doesn't match, + return and switch to a new section later. + (assemble_start_function): Pass decl to switch_to_section. + (assemble_variable): Likewise. + (switch_to_section): If the SECTION_RETAIN bit doesn't match, + switch to a new section. + +2020-12-16 Jakub Jelinek + + PR tree-optimization/96239 + * gimple-ssa-store-merging.c (find_bswap_or_nop): Handle a vector + CONSTRUCTOR. + (bswap_replace): Likewise. + +2020-12-16 Martin Liska + + * common.opt: Remove usage of Report. + * config/aarch64/aarch64.opt: Ditto. + * config/alpha/alpha.opt: Ditto. + * config/arc/arc.opt: Ditto. + * config/arm/arm.opt: Ditto. + * config/avr/avr.opt: Ditto. + * config/bfin/bfin.opt: Ditto. + * config/bpf/bpf.opt: Ditto. + * config/c6x/c6x.opt: Ditto. + * config/cr16/cr16.opt: Ditto. + * config/cris/cris.opt: Ditto. + * config/cris/elf.opt: Ditto. + * config/csky/csky.opt: Ditto. + * config/darwin.opt: Ditto. + * config/fr30/fr30.opt: Ditto. + * config/frv/frv.opt: Ditto. + * config/ft32/ft32.opt: Ditto. + * config/gcn/gcn.opt: Ditto. + * config/i386/cygming.opt: Ditto. + * config/i386/i386.opt: Ditto. + * config/ia64/ia64.opt: Ditto. + * config/ia64/ilp32.opt: Ditto. + * config/linux-android.opt: Ditto. + * config/linux.opt: Ditto. + * config/lm32/lm32.opt: Ditto. + * config/m32r/m32r.opt: Ditto. + * config/m68k/m68k.opt: Ditto. + * config/mcore/mcore.opt: Ditto. + * config/microblaze/microblaze.opt: Ditto. + * config/mips/mips.opt: Ditto. + * config/mmix/mmix.opt: Ditto. + * config/mn10300/mn10300.opt: Ditto. + * config/moxie/moxie.opt: Ditto. + * config/msp430/msp430.opt: Ditto. + * config/nds32/nds32.opt: Ditto. + * config/nios2/elf.opt: Ditto. + * config/nios2/nios2.opt: Ditto. + * config/nvptx/nvptx.opt: Ditto. + * config/pa/pa.opt: Ditto. + * config/pdp11/pdp11.opt: Ditto. + * config/pru/pru.opt: Ditto. + * config/riscv/riscv.opt: Ditto. + * config/rl78/rl78.opt: Ditto. + * config/rs6000/aix64.opt: Ditto. + * config/rs6000/linux64.opt: Ditto. + * config/rs6000/rs6000.opt: Ditto. + * config/rs6000/sysv4.opt: Ditto. + * config/rx/elf.opt: Ditto. + * config/rx/rx.opt: Ditto. + * config/s390/s390.opt: Ditto. + * config/s390/tpf.opt: Ditto. + * config/sh/sh.opt: Ditto. + * config/sol2.opt: Ditto. + * config/sparc/long-double-switch.opt: Ditto. + * config/sparc/sparc.opt: Ditto. + * config/tilegx/tilegx.opt: Ditto. + * config/tilepro/tilepro.opt: Ditto. + * config/v850/v850.opt: Ditto. + * config/visium/visium.opt: Ditto. + * config/vms/vms.opt: Ditto. + * config/vxworks.opt: Ditto. + * config/xtensa/xtensa.opt: Ditto. + +2020-12-16 Martin Liska + + * doc/options.texi: Remove Report keyword. + * opt-functions.awk: Print error when Report keyword + is used. + * optc-gen.awk: Do not handle Report keyword. + * opts.h (struct cl_option): Remove cl_report bitfield flag. + +2020-12-16 Martin Liska + + PR sanitizer/97868 + * common.opt: Add new warning -Wtsan. + * doc/invoke.texi: Likewise. + * tsan.c (instrument_builtin_call): Warn users about unsupported + std::atomic_thread_fence. + +2020-12-16 Martin Liska + + PR rtl-optimization/98271 + PR rtl-optimization/98276 + PR tree-optimization/98279 + * opts-common.c (set_option): Do not allow overflow for integer + arguments. + +2020-12-16 Eric Botcazou + + PR tree-optimization/98272 + * tree-switch-conversion.c (bit_test_cluster::emit): When finding + out whether the entry test can be merged in the bit test, do the + computation using the type of the index expression. + +2020-12-16 Kewen Lin + + * config/rs6000/rs6000.c (rs6000_expand_vector_init): Use + paradoxical subreg instead of zero_extend for QI/HI promotion. + +2020-12-16 Prathamesh Kulkarni + + PR target/66791 + * config/arm/arm_neon.h: Replace calls to __builtin_vcgt* by + <, > operators in vclt and vcgt intrinsics respectively. + * config/arm/arm_neon_builtins.def: Remove entry for + vcgt and vcgtu. + +2020-12-16 Prathamesh Kulkarni + + PR target/66791 + * config/arm/arm_neon.h: Replace calls to __builtin_vneg* by - operator + in vneg intrinsics. + * config/arm/arm_neon_builtins.def: Remove entry for vneg. + +2020-12-16 Prathamesh Kulkarni + + PR target/66791 + * config/arm/arm_neon.h: Replace calls to __builtin_vcreate* + in vcreate intrinsics. + * config/arm/arm_neon_builtins.def: Remove entry for vcreate. + +2020-12-15 Jakub Jelinek + + PR tree-optimization/96094 + * match.pd (X / bool_range_Y -> X): New simplification. + +2020-12-15 Nathan Sidwell + + * doc/cppopts.texi: Document new cpp opt. + * doc/invoke.texi: Add C++20 module option & documentation. + +2020-12-15 Nathan Sidwell + + * Makefile.in (CODYINC, CODYLIB, CODYLIB_H): New. Use them. + +2020-12-15 Jakub Jelinek + + PR target/98274 + * config/i386/i386-options.c (ix86_option_override_internal): Set + ix86_tune_string to "generic" even when it wasn't specified and + ix86_arch_string is "x86-64-v2", "x86-64-v3" or "x86-64-v4". + Remove useless {}s around a single statement. + +2020-12-15 Martin Liska + + PR lto/98275 + * lto-wrapper.c: Do not use -j0 when we are unable to detect + number of cores. + +2020-12-15 Jakub Jelinek + + * config/i386/i386-options.c (ix86_option_override_internal): Don't + error on -march=x86-64-v[234] with -m32 or -mabi=ms. + * config.gcc: Don't reject --with-arch=x86-64-v[234] or + --with-arch_32=x86-64-v[234]. + * doc/invoke.texi (-march=x86-64-v[234]): Document what the option + does for other ABIs. + +2020-12-15 Martin Liska + + PR gcov-profile/98273 + * gcov.c (output_json_intermediate_file): Use stack of nested + functions for lines in a source file. Pop when a function ends. + +2020-12-15 Gerald Pfeifer + + * doc/invoke.texi (Instrumentation Options): Update link to + KernelAddressSanitizer. + +2020-12-15 Max Filippov + + * config/xtensa/predicates.md (addsubx_operand): Change accepted + values from 2/4/8 to 1..3. + * config/xtensa/xtensa.md (*addx, *subx): Change RTL pattern + to use 'ashift' instead of 'mult'. Update operands[3] value. + +2020-12-14 Piotr Kubaj + Gerald Pfeifer + + * config/rs6000/freebsd64.h (PROCESSOR_DEFAULT): Update + to PROCESSOR_PPC7450. + (PROCESSOR_DEFAULT64): Update to PROCESSOR_POWER8. + +2020-12-14 Martin Sebor + + PR middle-end/98166 + PR c++/57111 + PR middle-end/98160 + * builtins.c (check_access): Call tree_inlined_location + fndecl_alloc_p): Handle BUILT_IN_ALIGNED_ALLOC and + BUILT_IN_GOMP_ALLOC. + call_dealloc_p): Remove unused function. + (new_delete_mismatch_p): Call valid_new_delete_pair_p and rework. + (matching_alloc_calls_p): Handle built-in deallocation functions. + (warn_dealloc_offset): Corrct the handling of user-defined operators + delete. + (maybe_emit_free_warning): Avoid assuming expression is a decl. + Simplify. + * doc/extend.texi (attribute malloc): Update. + * tree-ssa-dce.c (valid_new_delete_pair_p): Factor code out into + valid_new_delete_pair_p in tree.c. + * tree.c (tree_inlined_location): Define new function. + (valid_new_delete_pair_p): Define. + * tree.h (tree_inlined_location): Declare. + (valid_new_delete_pair_p): Declare. + +2020-12-14 Sebastian Pop + + * config.gcc (aarch64*-*-*): Remove --with-{cpu,arch,tune}-32 flags. + +2020-12-14 Wilco Dijkstra + + * config.gcc (aarch64*-*-*): Add --with-tune. Support --with-cpu=native. + * config/aarch64/aarch64.h (OPTION_DEFAULT_SPECS): Add --with-tune. + +2020-12-14 Martin Liska + + * gcov.c (output_json_intermediate_file): Update comments. + +2020-12-14 Tamar Christina + + PR middle-end/98264 + * tree-vect-slp-patterns.c (linear_loads_p): Exclude TOP permute. + +2020-12-14 Christophe Lyon + + * config/arm/mve.md (mve_vnegq_f): Use 'neg' instead of unspec. + (mve_vnegq_s): Likewise. + * config/arm/neon.md (neg2): Rename into neon_neg2. + (2): Rename into neon_2. + (neon_v): Call gen_neon_2. + (vashr3): Call gen_neon_neg2. + (vlshr3): Call gen_neon_neg2. + (neon_vneg): Call gen_neon_neg2. + * config/arm/unspecs.md (VNEGQ_F, VNEGQ_S): Remove. + * config/arm/vec-common.md (neg2): New expander. + +2020-12-14 Christophe Lyon + + * config/arm/iterators.md (VDQNOTM2): New mode iterator. + (supf): Remove VMVNQ_S and VMVNQ_U. + (VMVNQ): Remove. + * config/arm/mve.md (mve_vmvnq_u): New entry for vmvn + instruction using expression not. + (mve_vmvnq_s): New expander. + * config/arm/neon.md (one_cmpl2): Renamed into + one_cmpl2_neon. + * config/arm/unspecs.md (VMVNQ_S, VMVNQ_U): Remove. + * config/arm/vec-common.md (one_cmpl2): New expander. + +2020-12-14 Christophe Lyon + + * config/arm/iterators.md (supf): Remove VBICQ_S and VBICQ_U. + (VBICQ): Remove. + * config/arm/mve.md (mve_vbicq_u): New entry for vbic + instruction using expression and not. + (mve_vbicq_s): New expander. + (mve_vbicq_f): Replace use of unspec by 'and not'. + * config/arm/unspecs.md (VBICQ_S, VBICQ_U, VBICQ_F): Remove. + +2020-12-14 Christophe Lyon + + * config/arm/iterators.md (supf): Remove VEORQ_S and VEORQ_U. + (VEORQ): Remove. + * config/arm/mve.md (mve_veorq_u): New entry for veor + instruction using expression xor. + (mve_veorq_s): New expander. + (mve_veorq_f): Use 'xor' code instead of unspec. + * config/arm/neon.md (xor3): Renamed into xor3_neon. + * config/arm/unspecs.md (VEORQ_S, VEORQ_U, VEORQ_F): Remove. + * config/arm/vec-common.md (xor3): New expander. + +2020-12-14 Przemyslaw Wirkus + + * config/aarch64/aarch64-cores.def (AARCH64_CORE): Add Cortex-A78C core. + * config/aarch64/aarch64-tune.md: Regenerate. + * doc/invoke.texi: Update docs. + +2020-12-14 Nikhil Benesch + + * godump.c (go_output_typedef): Suppress typedefs whose name + matches the tag of the underlying struct, union, or enum. + Output declarations for enums that do not appear in typedefs. + +2020-12-13 Maciej W. Rozycki + + * config/vax/vax.c (vax_output_int_move): Unify push operation + selection. + +2020-12-13 Maciej W. Rozycki + + * config/vax/vax.c (vax_output_int_move): Check the correct + operand for constant 0 push operation. + +2020-12-13 Maciej W. Rozycki + + * config/vax/vax.c (vax_expand_addsub_di_operands): Handle equal + input operands with subtraction. + +2020-12-13 Maciej W. Rozycki + + * config/vax/vax.c (vax_expand_addsub_di_operands): Handle the + addition or subtraction of 0. + +2020-12-13 Maciej W. Rozycki + + * config/vax/vax.c (vax_expand_addsub_di_operands): Remove + unused register allocation. + +2020-12-13 Maciej W. Rozycki + + * config/vax/vax.md (casesi): Use `gen_int_mode' rather than + `GEN_INT' for the immediate used for lower bound adjustment. + +2020-12-13 Jakub Jelinek + + PR tree-optimization/98256 + * tree-ssa-math-opts.c (match_uaddsub_overflow): For BIT_NOT_EXPR, + only handle a single use, and insert .ADD_OVERFLOW before the + comparison rather than after the BIT_NOT_EXPR. Return true iff + it is BIT_NOT_EXPR and it has been removed. + (math_opts_dom_walker::after_dom_children) : + If match_uaddsub_overflow returned true, continue instead of break. + +2020-12-13 Tamar Christina + + Revert: + 2020-12-13 Tamar Christina + + * config/arm/arm_mve.h (__arm_vcaddq_rot90_u8, __arm_vcaddq_rot270_u8, + , __arm_vcaddq_rot90_s8, __arm_vcaddq_rot270_s8, + __arm_vcaddq_rot90_u16, __arm_vcaddq_rot270_u16, __arm_vcaddq_rot90_s16, + __arm_vcaddq_rot270_s16, __arm_vcaddq_rot90_u32, + __arm_vcaddq_rot270_u32, __arm_vcaddq_rot90_s32, + __arm_vcaddq_rot270_s32, __arm_vcmulq_rot90_f16, + __arm_vcmulq_rot270_f16, __arm_vcmulq_rot180_f16, + __arm_vcmulq_f16, __arm_vcaddq_rot90_f16, __arm_vcaddq_rot270_f16, + __arm_vcmulq_rot90_f32, __arm_vcmulq_rot270_f32, + __arm_vcmulq_rot180_f32, __arm_vcmulq_f32, __arm_vcaddq_rot90_f32, + __arm_vcaddq_rot270_f32, __arm_vcmlaq_f16, __arm_vcmlaq_rot180_f16, + __arm_vcmlaq_rot270_f16, __arm_vcmlaq_rot90_f16, __arm_vcmlaq_f32, + __arm_vcmlaq_rot180_f32, __arm_vcmlaq_rot270_f32, + __arm_vcmlaq_rot90_f32): Update builtin calls. + * config/arm/arm_mve_builtins.def (vcaddq_rot90_u, vcaddq_rot270_u, + vcaddq_rot90_s, vcaddq_rot270_s, vcaddq_rot90_f, vcaddq_rot270_f, + vcmulq_f, vcmulq_rot90_f, vcmulq_rot180_f, vcmulq_rot270_f, + vcmlaq_f, vcmlaq_rot90_f, vcmlaq_rot180_f, vcmlaq_rot270_f): Removed. + (vcaddq_rot90, vcaddq_rot270, vcmulq, vcmulq_rot90, vcmulq_rot180, + vcmulq_rot270, vcmlaq, vcmlaq_rot90, vcmlaq_rot180, vcmlaq_rot270): + New. + * config/arm/constraints.md (Dz): Include MVE. + * config/arm/iterators.md (mve_rotsplit1, mve_rotsplit2): New. + (rot): Add UNSPEC_VCMLS, UNSPEC_VCMUL and UNSPEC_VCMUL180. + (rot_op, rotsplit1, rotsplit2, fcmac1, VCMLA_OP, VCMUL_OP): New. + * config/arm/mve.md (VCADDQ_ROT270_S, VCADDQ_ROT90_S, VCADDQ_ROT270_U, + VCADDQ_ROT90_U, VCADDQ_ROT270_F, VCADDQ_ROT90_F, VCMULQ_F, + VCMULQ_ROT180_F, VCMULQ_ROT270_F, VCMULQ_ROT90_F, VCMLAQ_F, + VCMLAQ_ROT180_F, VCMLAQ_ROT90_F, VCMLAQ_ROT270_F, VCADDQ_ROT270_S, + VCADDQ_ROT270, VCADDQ_ROT90): Removed. + (mve_rot, VCMUL): New. + (mve_vcaddq_rot270_, + mve_vcaddq_rot270_f, mve_vcaddq_rot90_f, mve_vcmulq_f, mve_vcmulq_rot270_f, + mve_vcmulq_rot90_f, mve_vcmlaq_f, mve_vcmlaq_rot180_f, + mve_vcmlaq_rot270_f, mve_vcmlaq_rot90_f): Removed. + (mve_vcmlaq, mve_vcmulq, + mve_vcaddq, cadd3, mve_vcaddq): + New. + (cmul3): Exclude MVE types. + * config/arm/unspecs.md (UNSPEC_VCMUL90, UNSPEC_VCMUL270): New. + * config/arm/vec-common.md (cadd3, cmul3, + arm_vcmla, cml4): New. + * config/arm/unspecs.md (UNSPEC_VCMUL, UNSPEC_VCMUL180, UNSPEC_VCMLS, + UNSPEC_VCMLS180): New. + * config/arm/neon.md (cmul3): New. + +2020-12-13 Jakub Jelinek + + PR target/92469 + * varasm.c (eliminable_regno_p): New function. + (make_decl_rtl): Reject asm vars for frame and argp + if they are different from hard frame pointer. + +2020-12-13 Tamar Christina + + * config/arm/arm_mve.h (__arm_vcaddq_rot90_u8, __arm_vcaddq_rot270_u8, + , __arm_vcaddq_rot90_s8, __arm_vcaddq_rot270_s8, + __arm_vcaddq_rot90_u16, __arm_vcaddq_rot270_u16, __arm_vcaddq_rot90_s16, + __arm_vcaddq_rot270_s16, __arm_vcaddq_rot90_u32, + __arm_vcaddq_rot270_u32, __arm_vcaddq_rot90_s32, + __arm_vcaddq_rot270_s32, __arm_vcmulq_rot90_f16, + __arm_vcmulq_rot270_f16, __arm_vcmulq_rot180_f16, + __arm_vcmulq_f16, __arm_vcaddq_rot90_f16, __arm_vcaddq_rot270_f16, + __arm_vcmulq_rot90_f32, __arm_vcmulq_rot270_f32, + __arm_vcmulq_rot180_f32, __arm_vcmulq_f32, __arm_vcaddq_rot90_f32, + __arm_vcaddq_rot270_f32, __arm_vcmlaq_f16, __arm_vcmlaq_rot180_f16, + __arm_vcmlaq_rot270_f16, __arm_vcmlaq_rot90_f16, __arm_vcmlaq_f32, + __arm_vcmlaq_rot180_f32, __arm_vcmlaq_rot270_f32, + __arm_vcmlaq_rot90_f32): Update builtin calls. + * config/arm/arm_mve_builtins.def (vcaddq_rot90_u, vcaddq_rot270_u, + vcaddq_rot90_s, vcaddq_rot270_s, vcaddq_rot90_f, vcaddq_rot270_f, + vcmulq_f, vcmulq_rot90_f, vcmulq_rot180_f, vcmulq_rot270_f, + vcmlaq_f, vcmlaq_rot90_f, vcmlaq_rot180_f, vcmlaq_rot270_f): Removed. + (vcaddq_rot90, vcaddq_rot270, vcmulq, vcmulq_rot90, vcmulq_rot180, + vcmulq_rot270, vcmlaq, vcmlaq_rot90, vcmlaq_rot180, vcmlaq_rot270): + New. + * config/arm/constraints.md (Dz): Include MVE. + * config/arm/iterators.md (mve_rotsplit1, mve_rotsplit2): New. + (rot): Add UNSPEC_VCMLS, UNSPEC_VCMUL and UNSPEC_VCMUL180. + (rot_op, rotsplit1, rotsplit2, fcmac1, VCMLA_OP, VCMUL_OP): New. + * config/arm/mve.md (VCADDQ_ROT270_S, VCADDQ_ROT90_S, VCADDQ_ROT270_U, + VCADDQ_ROT90_U, VCADDQ_ROT270_F, VCADDQ_ROT90_F, VCMULQ_F, + VCMULQ_ROT180_F, VCMULQ_ROT270_F, VCMULQ_ROT90_F, VCMLAQ_F, + VCMLAQ_ROT180_F, VCMLAQ_ROT90_F, VCMLAQ_ROT270_F, VCADDQ_ROT270_S, + VCADDQ_ROT270, VCADDQ_ROT90): Removed. + (mve_rot, VCMUL): New. + (mve_vcaddq_rot270_, + mve_vcaddq_rot270_f, mve_vcaddq_rot90_f, mve_vcmulq_f, mve_vcmulq_rot270_f, + mve_vcmulq_rot90_f, mve_vcmlaq_f, mve_vcmlaq_rot180_f, + mve_vcmlaq_rot270_f, mve_vcmlaq_rot90_f): Removed. + (mve_vcmlaq, mve_vcmulq, + mve_vcaddq, cadd3, mve_vcaddq): + New. + (cmul3): Exclude MVE types. + * config/arm/unspecs.md (UNSPEC_VCMUL90, UNSPEC_VCMUL270): New. + * config/arm/vec-common.md (cadd3, cmul3, + arm_vcmla, cml4): New. + * config/arm/unspecs.md (UNSPEC_VCMUL, UNSPEC_VCMUL180, UNSPEC_VCMLS, + UNSPEC_VCMLS180): New. + * config/arm/neon.md (cmul3): New. + +2020-12-13 Tamar Christina + + * config/arm/arm.c (arm_preferred_simd_mode): Add E_HFmode. + +2020-12-13 Tamar Christina + + * tree-vect-slp-patterns.c: New file. + * Makefile.in: Add it. + * doc/passes.texi: Document it. + * internal-fn.def (COMPLEX_ADD_ROT90, COMPLEX_ADD_ROT270): New. + * optabs.def (cadd90_optab, cadd270_optab): New. + * doc/md.texi: Document them. + * tree-vect-loop.c (vect_analyze_loop_2): Add dissolve code. + * tree-vect-slp.c: + (vect_free_slp_instance, vect_create_new_slp_node): Export. + (vect_match_slp_patterns_2, vect_match_slp_patterns): New. + (vect_analyze_slp): Use it. + * tree-vectorizer.h (vect_free_slp_tree): Export. + (enum _complex_operation): Forward declare. + (class vect_pattern): New + +2020-12-13 Tamar Christina + + * tree-vect-patterns.c (vect_mark_pattern_stmts): Remove static inline. + * tree-vect-slp.c (vect_create_new_slp_node): Remove static and only + set smts if valid. + * tree-vectorizer.c (vec_info::add_pattern_stmt): New. + (vec_info::set_vinfo_for_stmt): Optionally enforce read-only. + * tree-vectorizer.h (struct _slp_tree): Use new types. + (lane_permutation_t, lane_permutation_t): New. + (vect_create_new_slp_node, vect_mark_pattern_stmts): New. + +2020-12-13 Rainer Orth + + * doc/sourcebuild.texi (Commands for use in dg-final, Scan the + assembly output, scan-assembler-symbol-section): Document. + (scan-symbol-section): Document. + +2020-12-13 Richard Sandiford + + * is-a.h (reinterpret_is_a_helper): New class. + (static_is_a_helper): Likewise. + (is_a_helper): Inherit from reinterpret_is_a_helper. + (is_a_helper): New specialization. + +2020-12-13 Richard Sandiford + + * coretypes.h (iterator_range): Move to... + * iterator-utils.h: ...this new file. + +2020-12-13 Richard Sandiford + + * rtlanal.c (noop_move_p): Don't check for REG_EQUAL notes. + +2020-12-13 Richard Sandiford + + * vec.h (vnull::operator vec): Make const. + +2020-12-12 Jakub Jelinek + + PR tree-optimization/96685 + * match.pd (~(X - Y) -> ~X + Y): New optimization. + (~X + Y -> (Y - X) - 1): Likewise. + +2020-12-12 Jakub Jelinek + + PR tree-optimization/96272 + * tree-ssa-math-opts.c (uaddsub_overflow_check_p): Add OTHER argument. + Handle BIT_NOT_EXPR. + (match_uaddsub_overflow): Optimize unsigned a > ~b into + __imag__ .ADD_OVERFLOW (a, b). + (math_opts_dom_walker::after_dom_children): Call match_uaddsub_overflow + even for BIT_NOT_EXPR. + +2020-12-12 Jakub Jelinek + + PR middle-end/98183 + * omp-low.c (lower_omp_target): Don't add OMP_RETURN for + data regions. + * omp-expand.c (expand_omp_target): Don't try to remove + OMP_RETURN for data regions. + (build_omp_regions_1, omp_make_gimple_edges): Don't expect + OMP_RETURN for data regions. + +2020-12-11 Nathan Sidwell + + * gcc.c (cpp_unique_options): Add Mmodules, Mno-modules. + * tree-core.h (enum tree_index): Add TI_MODULE_HWM. + +2020-12-11 Jim Wilson + + * varasm.c (get_section): Add DECL_P check before DECL_PRESERVE_P. + +2020-12-11 Christophe Lyon + + * config/arm/iterators.md (VDQ): Remove TARGET_HAVE_MVE + conditions. + * config/arm/vec-common.md (and3): Use + ARM_HAVE__ARITH. + (ior3): Likewise. + +2020-12-11 Claudiu Zissulescu + + * config/arc/arc.c (arc_active_insn): Ignore all non essential + instructions when getting the next active instruction. + (check_store_cacheline_hazard): Update. + (workaround_arc_anomaly): Remove obsolete cache hazard code. + +2020-12-11 Claudiu Zissulescu + + * config/arc/arc.c (arc_reorg): Avoid limm in BRcc. + +2020-12-11 Claudiu Zissulescu + + * config/arc/arc-protos.h (arc_scheduling_not_expected): Remove + it. + (arc_sets_cc_p): Likewise. + (arc_need_delay): Likewise. + * config/arc/arc.c (arc_sets_cc_p): Likewise. + (arc_need_delay): Likewise. + (arc_scheduling_not_expected): Likewise. + * config/arc/arc.md: Convert adc/sbc patterns to simple + instruction definitions. + +2020-12-11 Christophe Lyon + + * config/arm/iterators.md (supf): Remove VORRQ_S and VORRQ_U. + (VORRQ): Remove. + * config/arm/mve.md (mve_vorrq_s): New entry for vorr + instruction using expression ior. + (mve_vorrq_u): New expander. + (mve_vorrq_f): Use ior code instead of unspec. + * config/arm/neon.md (ior3): Renamed into ior3_neon. + * config/arm/predicates.md (imm_for_neon_logic_operand): Enable + for MVE. + * config/arm/unspecs.md (VORRQ_S, VORRQ_U, VORRQ_F): Remove. + * config/arm/vec-common.md (ior3): New expander. + +2020-12-11 Claudiu Zissulescu + + * config/arc/arc.md (mpyd_arcv2hs): New template + pattern. + (*pmpyd_arcv2hs): Likewise. + (*pmpyd_imm_arcv2hs): Likewise. + (mpyd_arcv2hs): Moved into above template. + (mpyd_imm_arcv2hs): Moved into above template. + (mpydu_arcv2hs): Likewise. + (mpydu_imm_arcv2hs): Likewise. + (su_optab): New optab prefix for sign/zero-extending operations. + +2020-12-11 H.J. Lu + + PR target/98219 + * config/i386/uintrintrin.h (__uintr_frame): Remove uirrv. + +2020-12-11 Andrea Corallo + + * doc/sourcebuild.texi (arm_softfloat): Improve documentation. + +2020-12-11 Jakub Jelinek + + PR rtl-optimization/98229 + * optabs.c (expand_doubleword_mod): Canonicalize op1 and + 1 - INTVAL (op1) as word_mode constants when used in + word_mode arithmetics. + +2020-12-11 Richard Biener + + PR tree-optimization/98235 + * tree-vect-slp.c (vect_build_slp_tree): Exchange npermutes + for limit. Decrement that for each cache miss and fail + discovery when it reaches zero. + (vect_build_slp_tree_2): Remove npermutes handling and + simply pass down limit. + (vect_build_slp_instance): Use pass down limit. + (vect_analyze_slp_instance): Likewise. + (vect_analyze_slp): Base the SLP discovery limit on + max_tree_size and pass it down. + +2020-12-11 Jakub Jelinek + + PR middle-end/98190 + * expr.c (expand_assignment): If to_rtx is a promoted SUBREG, + ensure sign or zero extension either through use of store_expr + or by extending manually. + +2020-12-11 Andrea Corallo + + PR rtl-optimization/97092 + * ira-color.c (update_costs_from_allocno): Do not carry over mode + between subsequent iterations. + +2020-12-11 Richard Biener + + PR tree-optimization/95582 + * tree-vect-patterns.c (vect_recog_bool_pattern): Check + for VECT_SCALAR_BOOLEAN_TYPE_P, not just precision one. + +2020-12-11 Hongyu + + * common/config/i386/cpuinfo.h (get_available_features): + Move check for HRESET/AVX_VNNI/UINTR out of avx512_usable. + +2020-12-10 Jakub Jelinek + + PR rtl-optimization/98212 + * dojump.c (do_compare_rtx_and_jump): Change computation of + first_prob for and_them. Add comment explaining and_them case. + +2020-12-10 Andrew MacLeod + + PR tree-optimization/98174 + * gimple-range-cache.cc (ranger_cache::ssa_range_in_bb): Only push + poor values to be examined if it isn't a pure global. + (ranger_cache::block_range): Don't process pure globals. + (ranger_cache::fill_block_cache): Adjust has_edge_range call. + * gimple-range-gori.cc (gori_map::all_outgoing): New bitmap. + (gori_map::gori_map): Allocate all_outgoing. + (gori_map::is_export_p): No specified BB returns global context. + (gori_map::calculate_gori): Accumulate each block into global. + (gori_compute::gori_compute): Preprocess each block for exports. + (gori_compute::has_edge_range_p): No edge returns global context. + * gimple-range-gori.h (has_edge_range_p): Provide default parameter. + +2020-12-10 Eric Botcazou + + * dwarf2out.c (loc_list_from_tree_1) : Deal with + a nested context type + +2020-12-10 Bernd Edlinger + + * cfgexpand.c (expand_gimple_basic_block): Remove special handling + of debug_inline_entries without block info. + * tree-inline.c (remap_gimple_stmt): Drop debug_nonbind_markers when + the call statement has no block info. + (copy_debug_stmt): Remove debug_nonbind_markers when inlining + and the block info is mapped to NULL. + * tree-ssa-live.c (clear_unused_block_pointer): Remove + debug_nonbind_markers originating from removed inline functions. + +2020-12-10 Richard Biener + + * tree-vect-stmts.c (vectorizable_assignment): Remove special + allowance of VECTOR_BOOLEAN_TYPE_P conversions. + +2020-12-10 Christophe Lyon + + * config/arm/iterators.md (supf): Remove VANDQ_S and VANDQ_U. + (VANQ): Remove. + (VDQ): Add TARGET_HAVE_MVE condition where relevant. + * config/arm/mve.md (mve_vandq_u): New entry for vand + instruction using expression 'and'. + (mve_vandq_s): New expander. + (mve_vaddq_n_f): Use 'and' code instead of unspec. + * config/arm/neon.md (and3): Rename into and3_neon. + * config/arm/predicates.md (imm_for_neon_inv_logic_operand): + Enable for MVE. + * config/arm/unspecs.md (VANDQ_S, VANDQ_U, VANDQ_F): Remove. + * config/arm/vec-common.md (and3): New expander. + +2020-12-10 Richard Sandiford + + PR tree-optimization/98069 + * tree-data-ref.c (compute_distributive_range): New function. + (nop_conversion_for_offset_p): Likewise. + (split_constant_offset): In the internal overload, treat integer + expressions as having an implicit cast to sizetype and express + them accordingly. Pass back the range of the original (uncast) + expression in a new range parameter. + (split_constant_offset_1): Likewise. Rework the handling of + conversions to account for the implicit sizetype casts. + +2020-12-10 Joel Hutton + + PR tree-optimization/97929 + * tree-vect-data-refs.c (vect_get_smallest_scalar_type): Add + WIDEN_PLUS/WIDEN_MINUS case. + +2020-12-10 Joel Hutton + + * tree-pretty-print.c (dump_generic_node): Add case for + VEC_WIDEN_(PLUS/MINUS)_(HI/LO)_EXPR and WIDEN_(PLUS/MINUS)_EXPR. + +2020-12-10 Richard Biener + + PR tree-optimization/98211 + * tree-vect-stmts.c (vectorizable_assignment): Disallow + invalid conversions to bool vector types. + +2020-12-10 Alexandre Oliva + + * tree.c (build_common_builtin_nodes): Drop __builtin_ from + __clear_cache libname. + +2020-12-10 Jakub Jelinek + + PR rtl-optimization/98212 + * dojump.c (do_compare_rtx_and_jump): When splitting NE and backend + can do UNEQ, prefer splitting x != y into x unord y || !(x uneq y) + instead of into x unord y || x ltgt y. + +2020-12-10 Jakub Jelinek + + PR tree-optimization/98169 + * dojump.c (do_compare_rtx_and_jump): Don't split self-EQ/NE + comparisons, just use ORDERED or UNORDERED. + +2020-12-10 Jakub Jelinek + + PR middle-end/98205 + * omp-expand.c (expand_omp_for_generic): Fix up broken_loop handling. + +2020-12-10 Richard Biener + + * tree-vect-slp.c (vect_get_and_check_slp_defs): Do + not mark the defs to occur in a pattern if it is the + pattern root and record the original stmt defs in that + case. + +2020-12-10 Simon Cook + + * config/riscv/multilib-generator (arch_canonicalize): Invoke + python interpreter when calling arch-canonicalize script. + +2020-12-10 Nikhil Benesch + + * godump.c (go_format_type): Don't consider whether a type has + been seen when determining whether to output a type by name. + Consider only the use_type_name parameter. + (go_output_typedef): When outputting a typedef, format the + declaration's original type, which contains the name of the + underlying type rather than the name of the typedef. + +2020-12-09 Jakub Jelinek + + PR bootstrap/98188 + * tree-ssa-phiopt.c (two_value_replacement): Don't special case + BOOLEAN_TYPEs for ranges, instead if get_range_info doesn't return + VR_RANGE, set min/max to wi::min/max_value. + +2020-12-09 Przemyslaw Wirkus + + * config/aarch64/aarch64-option-extensions.def + (AARCH64_OPT_EXTENSION): New +pauth option in -march for AArch64. + * config/aarch64/aarch64.h (AARCH64_FL_PAUTH): New pauth extension bitmask. + (AARCH64_ISA_PUATH): New ISA bitmask for PAUTH. + (AARCH64_FL_FOR_ARCH8_3): Add PAUTH to Armv8.3-A. + (TARGET_PAUTH): New target mask to isolate PAUTH instructions. + * config/aarch64/aarch64.md (do_return): Condition set to TARGET_PAUTH. + * doc/invoke.texi: Update docs for +flagm and +pauth. + +2020-12-09 Uroš Bizjak + + * config/i386/i386.h (REG_ALLOC_ORDER): Remove + +2020-12-09 Richard Biener + + PR tree-optimization/98213 + * tree-ssa-loop-im.c (sm_seq_valid_bb): Cache successfully + processed PHIs. + (hoist_memory_references): Adjust. + +2020-12-09 Kyrylo Tkachov + + * config/aarch64/aarch64-protos.h (cpu_vector_cost): Move simd + fields to... + (simd_vec_cost): ... Here. Define. + (advsimd_vec_cost): Define. + (sve_vec_cost): Define. + * config/aarch64/aarch64.c (generic_advsimd_vector_cost): + Define. + (generic_sve_vector_cost): Likewise. + (generic_vector_cost): Update. + (qdf24xx_advsimd_vector_cost): Define. + (qdf24xx_vector_cost): Update. + (thunderx_advsimd_vector_cost): Define. + (thunderx_vector_cost): Update. + (tsv110_advsimd_vector_cost): Define. + (tsv110_vector_cost): Likewise. + (cortexa57_advsimd_vector_cost): Define. + (cortexa57_vector_cost): Update. + (exynosm1_advsimd_vector_cost): Define. + (exynosm1_vector_cost): Update. + (xgene1_advsimd_vector_cost): Define. + (xgene1_vector_cost): Update. + (thunderx2t99_advsimd_vector_cost): Define. + (thunderx2t99_vector_cost): Update. + (thunderx3t110_advsimd_vector_cost): Define. + (thunderx3t110_vector_cost): Update. + (aarch64_builtin_vectorization_cost): Handle sve and advsimd + vector cost fields. + +2020-12-09 Jakub Jelinek + + PR tree-optimization/98199 + * fold-const.c (native_encode_initializer): Fix handling bit-fields + when off > 0. + +2020-12-09 Jakub Jelinek + + PR c++/98193 + * fold-const.c (native_encode_initializer): Set pos to field's + byte position if iterating over a field with missing initializer. + +2020-12-08 Martin Liska + + PR tree-optimization/98182 + * gimple-if-to-switch.cc (pass_if_to_switch::execute): Request + chain linkage through false edges only. + +2020-12-08 Nathan Sidwell + + * tree.h (DECL_ALIGN_RAW): New. + (DECL_ALIGN): Use it. + (DECL_WARN_IF_NOT_ALIGN_RAW): New. + (DECL_WARN_IF_NOT_ALIGN): Use it. + (SET_DECL_WARN_IF_NOT_ALIGN): Likewise. + +2020-12-08 Prathamesh Kulkarni + + PR target/66791 + * config/arm/arm_neon.h: Replace calls to __builtin_vmvn* by ~ + in vmvn intrinsics. + * config/arm/arm_neon_builtins.def: Remove entry for vmvn. + +2020-12-08 Jakub Jelinek + + PR target/94440 + * config/i386/i386.opt (ix86_excess_precision, + ix86_unsafe_math_optimizations): New TargetVariables. + * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): Use + ix86_unsafe_math_optimizations instead of + flag_unsafe_math_optimizations and ix86_excess_precision instead of + flag_excess_precision. + * config/i386/i386.c (ix86_excess_precision): Rename to ... + (ix86_get_excess_precision): ... this. + (TARGET_C_EXCESS_PRECISION): Define to ix86_get_excess_precision. + * config/i386/i386-options.c (ix86_valid_target_attribute_tree, + ix86_option_override_internal): Update ix86_unsafe_math_optimization + from flag_unsafe_math_optimizations and ix86_excess_precision + from flag_excess_precision when constructing target option nodes. + (ix86_set_current_function): If flag_unsafe_math_optimizations + or flag_excess_precision is different from the one recorded + in TARGET_OPTION_NODE, create a new target option node for the + current function and switch to that. + +2020-12-08 Richard Biener + + PR tree-optimization/98192 + * tree-vect-slp.c (vect_build_slp_instance): Get scalar_stmts + by reference. + +2020-12-08 Richard Biener + + PR tree-optimization/98191 + * tree-vect-slp.c (vect_slp_check_for_constructors): Do not + follow a non-SSA def chain. + +2020-12-08 Richard Biener + + PR tree-optimization/97559 + * tree-ssa-sink.c (statement_sink_location): Never ignore + PHIs on sink paths in irreducible regions. + +2020-12-08 Prathamesh Kulkarni + + PR target/97872 + * gimple-isel.cc (gimple_expand_vec_cond_expr): Try to fold + x CMP y ? -1 : 0 to x CMP y. + +2020-12-08 Richard Biener + + PR tree-optimization/98180 + * tree-vect-slp.c (vect_slp_check_for_constructors): Check the + first inserted value has a def. + +2020-12-08 Eric Botcazou + + PR tree-optimization/96344 + * tree-switch-conversion.c (bit_test_cluster::emit): Compute the + range only if an entry test is necessary. Merge the entry test in + the bit test when possible. Use PREC local variable consistently. + When there is only one test, do a single gimplification at the end. + +2020-12-08 Kito Cheng + + PR target/98152 + * config.gcc (riscv*-*-*): Checking python, python3 or python2 + is available, and skip doing with_arch canonicalize if no python + available. + +2020-12-07 Jakub Jelinek + + PR target/98147 + * builtins.c (default_emit_call_builtin___clear_cache): Call + convert_memory_address to ptr_mode on both begin and end. + +2020-12-07 Bernd Edlinger + + * ipa-param-manipulation.c + (ipa_param_body_adjustments::modify_call_stmt): Set location info. + +2020-12-07 Jozef Lawrynowicz + + * doc/extend.texi (used function attribute): Document saving + the declaration from linker garbage collection. + (used variable attribute): Likewise. + +2020-12-07 Richard Biener + + PR tree-optimization/98113 + * tree-vectorizer.h (struct slp_root): New. + (_bb_vec_info::roots): New member. + * tree-vect-slp.c (vect_analyze_slp): Also walk BB info + roots. + (_bb_vec_info::_bb_vec_info): Adjust. + (_bb_vec_info::~_bb_vec_info): Likewise. + (vld_cmp): New. + (vect_slp_is_lane_insert): Likewise. + (vect_slp_check_for_constructors): Match a series of + BIT_INSERT_EXPRs as vector constructor. + (vect_slp_analyze_bb_1): Continue if BB info roots is + not empty. + (vect_slp_analyze_bb_1): Mark the whole BIT_INSERT_EXPR root + sequence as pure_slp. + +2020-12-07 Richard Biener + + PR tree-optimization/98117 + * tree-vect-loop-manip.c (vect_gen_vector_loop_niters): + Properly handle degenerate niter when setting the vector + loop IV range. + +2020-12-07 Andreas Krebbel + + * config/s390/s390.c (s390_emit_stack_probe): Change Pmode to + word_mode. + +2020-12-07 Martin Jambor + + PR ipa/97816 + * ipa-cp.c (safe_add): Removed. + (good_cloning_opportunity_p): Remove special handling of INT_MAX. + (value_topo_info::propagate_effects): Take care not to + propagate from size one value to another through more sources. Scale + propagated times with edge frequencies. Include local time and size + in propagates ones here. Take care not to overflow size. + (decide_about_value): Do not add local and propagated effects when + passing them to good_cloning_opportunity_p. + +2020-12-07 Matthias Klose + + * genextract.c (print_header): Undefine ENABLE_RTL_CHECKING + and ENABLE_RTL_FLAG_CHECKING. + +2020-12-07 Richard Biener + + PR tree-optimization/98137 + * tree-data-ref.c (split_constant_offset_1): Use + determine_value_range instead of get_range_info to handle + arbitrary expressions. + +2020-12-06 H.J. Lu + + PR target/98162 + * doc/extend.texi: Remove -mcet. + +2020-12-06 H.J. Lu + + PR target/98161 + * config/i386/i386-features.c (pseudo_reg_set): Check mode of + pseudo register push. + +2020-12-06 Jakub Jelinek + + PR tree-optimization/96232 + * tree-ssa-phiopt.c (two_value_replacement): Optimize even boolean lhs + cases as long as arg0 has wider precision and conditional_replacement + doesn't handle that case. + (tree_ssa_phiopt_worker): Don't call two_value_replacement during + early phiopt. + +2020-12-06 Jakub Jelinek + + PR tree-optimization/96232 + * match.pd (-(type)!A -> (type)A - 1): New optimization. + +2020-12-05 Rainer Orth + David Edelsohn + + * config/rs6000/xcoff.h (ASM_OUTPUT_DEF): Reference macro arguments. + +2020-12-05 Maciej W. Rozycki + + PR target/95294 + * config/vax/elf.h (REGISTER_NAMES): Append `%psl'. + * config/vax/vax-modes.def (CCN, CCNZ, CCZ): New modes. + * config/vax/vax-protos.h (vax_select_cc_mode): New prototype. + (vax_maybe_split_dimode_move): Likewise. + (vax_notice_update_cc): Remove prototype. + * config/vax/vax.c (TARGET_FLAGS_REGNUM): New macro. + (TARGET_CC_MODES_COMPATIBLE): Likewise. + (TARGET_MD_ASM_ADJUST): Likewise. + (vax_select_cc_mode): New function + (vax_cc_modes_compatible): Likewise. + (vax_md_asm_adjust): Likewise. + (vax_notice_update_cc): Remove function. + (vax_output_int_move): Factor out code checking if a DImode move + may have to be split... + (vax_maybe_split_dimode_move): ... into this new function. + * config/vax/vax.h (FIRST_PSEUDO_REGISTER): Bump up. + (FIXED_REGISTERS): Append an entry for PSL. + (CALL_USED_REGISTERS): Likewise. + (NOTICE_UPDATE_CC, OUTPUT_JUMP): Remove macros. + (SELECT_CC_MODE): New macro. + (REGISTER_NAMES): Append `psl'. + * config/vax/predicates.md (const_zero_operand) + (vax_cc_comparison_operator, vax_ccn_comparison_operator) + (vax_ccnz_comparison_operator, vax_ccz_comparison_operator): + New predicates. + * config/vax/builtins.md: Rewrite for MODE_CC representation. + * config/vax/vax.md: Likewise. + +2020-12-05 Maciej W. Rozycki + + * config/vax/elf.h (VAX_CC1_SPEC, VAX_CC1PLUS_SPEC): New macros. + * config/vax/netbsd-elf.h (CC1_SPEC): Use VAX_CC1_SPEC rather + than VAX_CC1_AND_CC1PLUS_SPEC. + (CC1PLUS_SPEC): Use VAX_CC1PLUS_SPEC rather than + VAX_CC1_AND_CC1PLUS_SPEC. + +2020-12-05 Maciej W. Rozycki + + * config/pdp11/pdp11.md (fcc_cc, fcc_ccnz): Use + `const_double_zero' to express double zero constant. + +2020-12-05 Maciej W. Rozycki + + * read-rtl.c (rtx_reader::read_rtx_code): Handle syntactic + `const_double_zero' rtx. + * doc/rtl.texi (Constant Expression Types): Document it. + +2020-12-05 Maciej W. Rozycki + + * config/vax/vax.md (divmoddisi4, *amulsi4): Make the comment + notation consistent with the rest of the file. + +2020-12-05 Maciej W. Rozycki + + * config/vax/vax.md (movti): Fix output predicate. Emit `movo' + rather than `movh'. + (divmoddisi4): Fix output predicates, correct RTL. + (*amulsi4): Name insn. Fix output predicate. + +2020-12-05 Maciej W. Rozycki + + * config/vax/vax.md (mulsidi3): Fix the multiplicand predicates. + (*maddsidi4, *maddsidi4_const): Likewise. Name insns. + +2020-12-05 Maciej W. Rozycki + + * config/vax/vax.md (*cmpv_2): Name insn. + (*cmpv, *cmpzv, *cmpzv_2): Likewise. Fix location predicate and + constraint. + +2020-12-05 Maciej W. Rozycki + + * config/vax/vax.md (extv): Rename insn to... + (*extv): ... this. + (extv): New expander. + +2020-12-05 Maciej W. Rozycki + + * config/vax/vax.md (*insv_aligned, *extzv_aligned) + (*extv_aligned): Also make sure the memory address of a bit-field + location can be adjusted in the PIC mode. + +2020-12-05 Maciej W. Rozycki + + * config/vax/vax.md (*insv_aligned, *extzv_aligned) + (*extv_aligned): Reject register bit-field locations that are not + aligned to the least significant bit; update output statement + accordingly. + +2020-12-05 Maciej W. Rozycki + + * config/vax/vax.md (*insv_aligned, *extzv_aligned) + (*extv_aligned, *extv_non_const, *extzv_non_const): Name insns. + Fix location predicate. + (*extzv): Name insn. + (*insv): Likewise. Fix location constraint. + (*insv_2): Likewise, and the predicate. + +2020-12-05 Maciej W. Rozycki + + * config/vax/vax.md (cpymemhi1): Rename insn to... + (movmemhi1): ... this. + (cpymemhi): Update accordingly. Remove constraints. + (movmemhi): New expander. + +2020-12-05 Maciej W. Rozycki + + * config/vax/builtins.md: Add a peephole2 for QImode and HImode + `ctz' operations. + (any_extend): New code iterator. + +2020-12-05 Maciej W. Rozycki + + * config/vax/builtins.md (width): New mode attribute. + (ffssi2): Rework expander into... + (ffs2): ... this. + (ctzsi2): Rework insn into... + (ctz2): ... this. + +2020-12-05 Maciej W. Rozycki + + * config/vax/builtins.md (ffssi2_internal): Rename insn to... + (ctzsi2): ... this. Update the RTL operation. + (ffssi2): Update accordingly. + * config/vax/vax.c (vax_notice_update_cc): Handle CTZ. + * config/vax/vax.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro. + +2020-12-05 Maciej W. Rozycki + + * config/vax/vax.md: Include `builtins.md'. + +2020-12-05 Maciej W. Rozycki + + * config/vax/predicates.md (volatile_mem_operand) + (any_memory_operand): New predicates. + * config/vax/builtins.md (VUNSPEC_UNLOCK): Remove constant. + (sync_lock_test_and_set): Remove `set' and `unspec' + operations, match operands only. Reformat. + (sync_lock_release): Likewise. Remove cruft. + (jbbi): Wrap into `unspec_volatile', use + `any_memory_operand' predicate. + +2020-12-05 Maciej W. Rozycki + + * config/vax/builtins.md (bit): New int iterator. + (ccss): New int attribute. + (jbbssi, jbbcci): Fold insns into... + (jbbi): ... this. + +2020-12-05 Maciej W. Rozycki + + * config/vax/builtins.md (bb_mem): New mode attribute. + (jbbssiqi, jbbssihi, jbbssisi): Fold insns into... + (jbbssi): ... this. + (jbbcciqi, jbbccihi, jbbccisi): Likewise... + (jbbcci): ... this. + +2020-12-05 Maciej W. Rozycki + + * jump.c (pc_set): Also accept a jump wrapped in UNSPEC or + UNSPEC_VOLATILE. + (any_uncondjump_p, any_condjump_p): Update comment accordingly. + +2020-12-05 Maciej W. Rozycki + + * loop-doloop.c (add_test): Only remove the jump if `onlyjump_p'. + +2020-12-05 Maciej W. Rozycki + + * cfgrtl.c (rtl_block_empty_p): Return false if `!onlyjump_p' + too. + +2020-12-05 Maciej W. Rozycki + + * sel-sched-ir.c (maybe_tidy_empty_bb): Only try to remove a + conditional jump if `onlyjump_p'. + +2020-12-05 Maciej W. Rozycki + + * loop-iv.c (simplify_using_initial_values): Only process jumps + that match `onlyjump_p'. + (check_simple_exit): Likewise. + +2020-12-05 Maciej W. Rozycki + + * ifcvt.c (dead_or_predicable) [!IFCVT_MODIFY_TESTS]: Bail out + if `!onlyjump_p'. + +2020-12-05 Maciej W. Rozycki + + * read-rtl.c: Add a page-feed separator at the start of iterator + code. + (struct iterator_group): Change the return type to HOST_WIDE_INT + for the `find_builtin' member. Likewise the second parameter + type for the `apply_iterator' member. + (atoll) [!HAVE_ATOQ]: Reorder. + (find_mode, find_code): Change the return type to HOST_WIDE_INT. + (apply_mode_iterator, apply_code_iterator) + (apply_subst_iterator): Change the second parameter type to + HOST_WIDE_INT. + (find_int): Handle input suitable for HOST_WIDE_INT output. + (apply_int_iterator): Rewrite in terms of explicit format + interpretation. + (rtx_reader::read_rtx_operand) <'w'>: Fold into... + <'i', 'n', 'p'>: ... this. + * doc/md.texi (Int Iterators): Document 'w' rtx format support. + +2020-12-05 Maciej W. Rozycki + + * config/vax/builtins.md (ffssi2): Make preparation statements + actually buildable. + (ffssi2_internal): Fix input constraints; make the RTL pattern + match reality for `cc0'. + +2020-12-05 Maciej W. Rozycki + + * config/vax/vax.c (vax_address_cost): Express the cost in terms + of COSTS_N_INSNS. + (vax_rtx_costs): Likewise. + +2020-12-05 Maciej W. Rozycki + + * config/vax/constraints.md (A): New constraint. + * config/vax/predicates.md (external_symbolic_operand) + (external_const_operand): Remove predicates. + (local_symbolic_operand): Rename to... + (pic_symbolic_operand): ... this, and rework. + (external_memory_operand): Rename to... + (non_pic_external_memory_operand): ... this, and rework. + (illegal_blk_memory_operand, illegal_addsub_di_memory_operand): + Update accordingly. + * config/vax/vax-protos.h (vax_acceptable_pic_operand_p): New + prototype. + * config/vax/vax.c (vax_acceptable_pic_operand_p): New function. + (vax_output_int_add): Update according to predicate rework. + * config/vax/vax.h (LEGITIMATE_PIC_OPERAND_P): New macro. + * config/vax/vax.md (pushlclsymreg, pushextsymreg): Fold + together, and rename to... + (*pushsymreg): ... this. Use the `pic_symbolic_operand' + predicate and the `A' constraint for the displacement operand. + (movlclsymreg, movextsymreg): Fold together, and rename to... + (*movsymreg): ... this. Use the `pic_symbolic_operand' + predicate and the `A' constraint for the displacement operand. + (pushextsym, pushlclsym): Fold together, and rename to... + (*pushsym): ... this. Use the `pic_symbolic_operand' predicate + and the `A' constraint for the displacement operand. + (movextsym, movlclsym): Fold together, and rename to... + (*movsym): ... this. Use the `pic_symbolic_operand' predicate + and the `A' constraint for the displacement operand. + +2020-12-05 Maciej W. Rozycki + + * config/vax/vax.c (print_operand): Replace `c' and `C' with + `k' and `K' respectively. + * config/vax/vax.md (*branch, *branch_reversed): Update + accordingly. + +2020-12-05 Matt Thomas + Maciej W. Rozycki + + PR target/58901 + * reload.c (push_reload): Also reload the inner expression of a + SUBREG for pseudos associated with a mode-dependent memory + reference. + (find_reloads): Force a reload likewise. + +2020-12-05 Roman Zhuykov + + PR rtl-optimization/97421 + * modulo-sched.c (generate_prolog_epilog): Remove forward + declaration, adjust last argument name and type. + (const_iteration_count): Add bool pointer parameter to return + whether count register is read in pre-header after its + initialization. + (sms_schedule): Fix count register initialization adjustment + procedure according to what const_iteration_count said. + +2020-12-05 Iain Sandoe + + PR target/97865 + * configure: Regenerate. + +2020-12-05 Venkataramanan Kumar + Sharavan Kumar + + * common/config/i386/cpuinfo.h (get_amd_cpu) recognize znver3. + * common/config/i386/i386-common.c (processor_names): Add + znver3. + (processor_alias_table): Add znver3 and AMDFAM19H entry. + * common/config/i386/i386-cpuinfo.h (processor_types): Add + AMDFAM19H. + (processor_subtypes): AMDFAM19H_ZNVER3. + * config.gcc (i[34567]86-*-linux* | ...): Likewise. + * config/i386/driver-i386.c: (host_detect_local_cpu): Let + -march=native recognize znver3 processors. + * config/i386/i386-c.c (ix86_target_macros_internal): Add + znver3. + * config/i386/i386-options.c (m_znver3): New definition. + (m_ZNVER): Include m_znver3. + (processor_cost_table): Add znver3. + * config/i386/i386.c (ix86_reassociation_width): Likewise. + * config/i386/i386.h (TARGET_znver3): New definition. + (enum processor_type): Add PROCESSOR_ZNVER3. + * config/i386/i386.md (define_attr "cpu"): Add znver3. + * config/i386/x86-tune-sched.c: (ix86_issue_rate): Likewise. + (ix86_adjust_cost): Likewise. + * config/i386/x86-tune.def (X86_TUNE_AVOID_256FMA_CHAINS: + Likewise. + * config/i386/znver1.md: Add new reservations for znver3. + * doc/extend.texi: Add details about znver3. + * doc/invoke.texi: Likewise. + +2020-12-05 Jakub Jelinek + + PR target/96226 + * config/i386/i386.md (splitter after *3_mask, + splitter after *3_mask_1): Drop the masking from + the patterns to split into. + +2020-12-04 Jason Merrill + + * vec.h (begin, end): Add overloads for vec*. + * tree.c (build_constructor_from_vec): Remove *. + +2020-12-04 David Edelsohn + + * config/rs6000/rs6000.c (rs6000_option_override_internal): + Change PTR_SIZE to POINTER_SIZE_UNITS. + +2020-12-04 Hans-Peter Nilsson + Martin Sebor + + PR middle-end/94600 + * doc/implement-c.texi (Qualifiers implementation): Add blurb + about access to the whole of a volatile aggregate object, only for + same-size as a scalar object. + +2020-12-04 Jakub Jelinek + + PR c++/98130 + * gimple.c (gimple_call_fnspec): Only return ".co " for replaceable + operator delete or ".mC" for replaceable operator new called from + new/delete. + +2020-12-04 Jakub Jelinek + + PR target/96226 + * config/i386/i386.md (splitter after *3_mask, + splitter after *3_mask_1): New combine splitters. + +2020-12-04 Jakub Jelinek + + PR libstdc++/93121 + * fold-const.c (native_encode_initializer): Use build_zero_cst + instead of build_constructor. + +2020-12-04 Jakub Jelinek + + PR target/98100 + * cfgexpand.c (expand_gimple_basic_block): For vars with + vector type, use TYPE_MODE rather than DECL_MODE. + +2020-12-04 Jakub Jelinek + + * common.opt (-gdwarf32, -gdwarf64): New options. + * config/rs6000/rs6000.c (rs6000_option_override_internal): Default + dwarf_offset_size to 8 if not overridden from the command line. + * dwarf2out.c: Change all occurrences of DWARF_OFFSET_SIZE to + dwarf_offset_size. + * doc/invoke.texi (-gdwarf32, -gdwarf64): Document. + +2020-12-04 Martin Liska + + * doc/tm.texi: Change argument of the record_gcc_switches + hook and remove SWITCH_TYPE_* enum values. + * dwarf2out.c (gen_producer_string): Move to opts.c and remove + handling of the dwarf_record_gcc_switches option. + (dwarf2out_early_finish): Use moved gen_producer_string + function. + * opts.c (gen_producer_string): New. + * opts.h (gen_producer_string): New. + * target.def: Change type of record_gcc_switches. + * target.h (enum print_switch_type): Remove. + (elf_record_gcc_switches): Change first argument. + * toplev.c (MAX_LINE): Remove. + (print_to_asm_out_file): Likewise. + (print_to_stderr): Likewise. + (print_single_switch): Likewise. + (print_switch_values): Likewise. + (init_asm_output): Use new gen_producer_string function. + (process_options): Likewise. + * varasm.c (elf_record_gcc_switches): Just save the string argument + to the ELF container. + +2020-12-04 Eric Botcazou + + * ipa-sra.c (verify_access_tree_1): Relax assertion on the size. + +2020-12-04 Martin Liska + + * doc/invoke.texi: Add missing params. + +2020-12-03 Martin Sebor + + PR c++/90629 + PR middle-end/94527 + * builtins.c (access_ref::access_ref): Initialize new member. + (compute_objsize): Use access_ref::deref. Handle simple pointer + assignment. + (expand_builtin): Remove handling of the free built-in. + (call_dealloc_argno): Same. + (find_assignment_location): New function. + (fndecl_alloc_p): Same. + (gimple_call_alloc_p): Same. + (call_dealloc_p): Same. + (matching_alloc_calls_p): Same. + (warn_dealloc_offset): Same. + (maybe_emit_free_warning): Same. + * builtins.h (struct access_ref): Declare new member. + (maybe_emit_free_warning): Make extern. Make use of access_ref. + Handle -Wmismatched-new-delete. + * calls.c (initialize_argument_information): Call + maybe_emit_free_warning. + * doc/extend.texi (attribute malloc): Update. + * doc/invoke.texi (-Wfree-nonheap-object): Expand documentation. + (-Wmismatched-new-delete): Document new option. + (-Wmismatched-dealloc): Document new option. + +2020-12-03 Alexandre Oliva + + * tree.c (build_common_builtin_nodes): Declare + __builtin___clear_cache for all languages. + * builtins.c (maybe_emit_call_builtin___clear_cache): Accept + Pmode arguments. + +2020-12-03 Sebastian Huber + + * config/arm/t-rtems: Add "-mthumb -mcpu=cortex-r52 + -mfloat-abi=hard" multilib. + +2020-12-03 Uroš Bizjak + Jakub Jelinek + + PR target/98086 + * config/i386/i386.c (ix86_md_asm_adjustmd): Rewrite + zero-extension part to use convert_to_mode. + +2020-12-03 Andreas Krebbel + + * config/s390/s390.md ("@probe_stack2"): Change mode + iterator to W. + +2020-12-03 Richard Sandiford + + * config/aarch64/aarch64-sve-builtins-base.cc (svundef_impl::fold): + Delete. + +2020-12-03 Eric Botcazou + + PR middle-end/98099 + * expmed.c (flip_storage_order): In the case of a non-integer mode, + sorry out if the integer mode to be used instead is not supported. + +2020-12-03 Eric Botcazou + + PR middle-end/98082 + * function.c (use_register_for_decl): Also return true for a result + if cfun->tail_call_marked is true. + +2020-12-03 Jakub Jelinek + + PR libstdc++/93121 + * fold-const.h (native_encode_initializer): Add mask argument + defaulted to nullptr. + (find_bitfield_repr_type): Declare. + (native_interpret_aggregate): Declare. + * fold-const.c (find_bitfield_repr_type): New function. + (native_encode_initializer): Add mask argument and support for + filling it. Handle also some bitfields without integral + DECL_BIT_FIELD_REPRESENTATIVE. + (native_interpret_aggregate): New function. + * gimple-fold.h (clear_type_padding_in_mask): Declare. + * gimple-fold.c (struct clear_padding_struct): Add clear_in_mask + member. + (clear_padding_flush): Handle buf->clear_in_mask. + (clear_padding_union): Copy clear_in_mask. Don't error if + buf->clear_in_mask is set. + (clear_padding_type): Don't error if buf->clear_in_mask is set. + (clear_type_padding_in_mask): New function. + (gimple_fold_builtin_clear_padding): Set buf.clear_in_mask to false. + * doc/extend.texi (__builtin_bit_cast): Document. + +2020-12-03 Ilya Leoshkevich + + * tree-ssa-threadedge.c (record_temporary_equivalences_from_stmts_at_dest): + Do not allow __builtin_constant_p on a threading path. + +2020-12-03 Ilya Leoshkevich + + * tree-ssa-strlen.c (printf_strlen_execute): Avoid division by + 0. + +2020-12-03 Kito Cheng + + * config/riscv/multilib-generator (arch_canonicalize): Move + code to arch-canonicalize, and call that script to canonicalize arch + string. + (canonical_order): Move code to arch-canonicalize. + (LONG_EXT_PREFIXES): Ditto. + (IMPLIED_EXT): Ditto. + * config/riscv/arch-canonicalize: New. + * config.gcc (riscv*-*-*): Canonicalize --with-arch. + +2020-12-03 Przemyslaw Wirkus + + * config/aarch64/aarch64-option-extensions.def + (AARCH64_OPT_EXTENSION): New +flagm option in -march for AArch64. + * config/aarch64/aarch64.h (AARCH64_FL_FLAGM): Add new flagm extension bit + mask. + (AARCH64_FL_FOR_ARCH8_4): Add flagm to Armv8.4-A. + * doc/invoke.texi: Update docs with +flagm. + +2020-12-03 liuhongt + + PR target/96906 + * config/i386/sse.md + (_ucmp3): Add a new + define_split after this insn. + +2020-12-03 liuhongt + + PR target/97642 + * config/i386/i386-expand.c + (ix86_expand_special_args_builtin): Don't move all-ones mask + operands into register. + * config/i386/sse.md (UNSPEC_MASKLOAD): New unspec. + (*_load_mask): New define_insns for masked load + instructions. + (_load_mask): Changed to define_expands which + specifically handle memory or all-ones mask operands. + (_blendm): Changed to define_insns which are same + as original _load_mask with adjustment of + operands order. + (*_load): New define_insn_and_split which is + used to optimize for masked load with all one mask. + +2020-12-03 Hongyu Wang + + PR target/97770 + * config/i386/sse.md (popcount2): New expander + for SI/DI vector modes. + (popcount2): Likewise for QI/HI vector modes. + +2020-12-03 Alexandre Oliva + + * builtins.c (default_emit_call_builtin___clear_cache): New. + (maybe_emit_call_builtin___clear_cache): New. + (expand_builtin___clear_cache): Split into the above. + (expand_builtin): Do not issue clear_cache call any more. + * builtins.h (maybe_emit_call_builtin___clear_cache): Declare. + * config/aarch64/aarch64.c (aarch64_trampoline_init): Use + maybe_emit_call_builtin___clear_cache. + * config/arc/arc.c (arc_trampoline_init): Likewise. + * config/arm/arm.c (arm_trampoline_init): Likewise. + * config/c6x/c6x.c (c6x_initialize_trampoline): Likewise. + * config/csky/csky.c (csky_trampoline_init): Likewise. + * config/m68k/linux.h (FInALIZE_TRAMPOLINE): Likewise. + * config/tilegx/tilegx.c (tilegx_trampoline_init): Likewise. + * config/tilepro/tilepro.c (tilepro_trampoline_init): Ditto. + * config/vxworks.c: Include rtl.h, memmodel.h, and optabs.h. + (vxworks_emit_call_builtin___clear_cache): New. + * config/vxworks.h (CLEAR_INSN_CACHE): Drop. + (TARGET_EMIT_CALL_BUILTIN___CLEAR_CACHE): Define. + * target.def (trampoline_init): In the documentation, refer to + maybe_emit_call_builtin___clear_cache. + (emit_call_builtin___clear_cache): New. + * doc/tm.texi.in: Add new hook point. + (CLEAR_CACHE_INSN): Remove duplicate 'both'. + * doc/tm.texi: Rebuilt. + * targhooks.h (default_meit_call_builtin___clear_cache): + Declare. + * tree.h (BUILTIN_ASM_NAME_PTR): New. + +2020-12-03 Ilya Leoshkevich + + * tree-ssa-threadbackward.c (thread_jumps::profitable_jump_thread_path): + Do not allow __builtin_constant_p on a threading path. + +2020-12-02 Jakub Jelinek + + * dwarf2out.c (add_scalar_info): Only use add_AT_wide for 128-bit + constants and only in dwarf-5 or later, where DW_FORM_data16 is + available. Otherwise use DW_FORM_block*/DW_FORM_exprloc with + DW_OP_implicit_value to describe the constant. + +2020-12-02 qing zhao + + PR rtl-optimization/97777 + * reg-stack.c (rest_of_handle_stack_regs): call + df_insn_rescan_all if reg_to_stack return true. + +2020-12-02 Ilya Leoshkevich + + * config/s390/s390-protos.h (s390_const_int_pool_entry_p): New + function. + * config/s390/s390.c (s390_const_int_pool_entry_p): New + function. + * config/s390/s390.md: Add define_peephole2 that produces llihf + and oilf. + +2020-12-02 Richard Biener + + PR tree-optimization/97630 + * tree-vectorizer.h (_slp_tree::next_node, + _slp_tree::prev_node): New. + (vect_slp_init): Declare. + (vect_slp_fini): Likewise. + * tree-vectorizer.c (vectorize_loops): Call vect_slp_init/fini. + (pass_slp_vectorize::execute): Likewise. + * tree-vect-slp.c (vect_slp_init): New. + (vect_slp_fini): Likewise. + (slp_first_node): New global. + (_slp_tree::_slp_tree): Link node into the SLP tree list. + (_slp_tree::~_slp_tree): Delink node from the SLP tree list. + +2020-12-02 Scott Snyder + + PR plugins/98059 + * vec.h (auto_delete_vec): Use + DISABLE_COPY_AND_ASSIGN(auto_delete_vec) instead of + DISABLE_COPY_AND_ASSIGN(auto_delete_vec) to make it valid C++20 + after DR2237. + +2020-12-02 Martin Liska + + PR ipa/98075 + * cgraph.c (cgraph_node::dump): Dump decl_is_malloc flag. + * ipa-pure-const.c (propagate_malloc): Do not set malloc + attribute for void functions. + +2020-12-02 H.J. Lu + + PR middle-end/93195 + PR middle-end/93197 + * configure.ac (HAVE_GAS_SECTION_LINK_ORDER): New. Define 1 if + the assembler supports the section flag 'o' for specifying + section with link-order. + * output.h (SECTION_LINK_ORDER): New. Defined to 0x8000000. + (SECTION_MACH_DEP): Changed from 0x8000000 to 0x10000000. + * targhooks.c (default_print_patchable_function_entry): Pass + SECTION_LINK_ORDER to switch_to_section if the section flag 'o' + works. Pass current_function_decl to switch_to_section. + * varasm.c (default_elf_asm_named_section): Use 'o' flag for + SECTION_LINK_ORDER if assembler supports it. + * config.in: Regenerated. + * configure: Likewise. + * doc/sourcebuild.texi: Document o_flag_in_section. + +2020-12-02 H.J. Lu + + * config/i386/i386.opt: Add the missing '.' for -mneeded. + +2020-12-02 Richard Biener + + * tree-vect-loop.c (vect_transform_loop_stmt): Return whether + we vectorized a stmt. + (vect_transform_loop): Only call maybe_set_vectorized_backedge_value + when we vectorized the stmt. + +2020-12-02 Jakub Jelinek + + * expmed.h (expand_divmod): Only declare if GCC_OPTABS_H is defined. + Add enum optabs_method argument defaulted to OPTAB_LIB_WIDEN. + * expmed.c: Include expmed.h after optabs.h. + (expand_divmod): Add methods argument, if it is not OPTAB_{,LIB_}WIDEN, + don't choose a wider mode, and pass it to other calls instead of + hardcoded OPTAB_LIB_WIDEN. Avoid emitting libcalls if not + OPTAB_LIB or OPTAB_LIB_WIDEN. + * optabs.c: Include expmed.h after optabs.h. + (expand_doubleword_mod, expand_doubleword_divmod): Pass OPTAB_DIRECT + as last argument to expand_divmod. + (expand_binop): Punt if {s,u}divmod_optab has handler for double-word + int_mode. + * expr.c: Include expmed.h after optabs.h. + * explow.c: Include expmed.h after optabs.h. + +2020-12-02 Jakub Jelinek + + PR rtl-optimization/97459 + * optabs.h (expand_doubleword_divmod): Declare. + * optabs.c (expand_doubleword_divmod): New function. + (expand_binop): Use it. + * internal-fn.c (expand_DIVMOD): Likewise. + +2020-12-02 Martin Liska + + PR c/98087 + * gimple-fold.c (clear_padding_type): Do not divide by zero. + +2020-12-02 Martin Liska + + * gdbinit.in: Write what each command calls + for a debugging function. + +2020-12-02 Kewen Lin + + * config/rs6000/rs6000.c (rs6000_option_override_internal): + Use OPTION_MASK_DIRECT_MOVE for Power8 target_enable instead + of OPTION_MASK_HTM. + * config/rs6000/rs6000-cpus.def (ISA_2_7_MASKS_SERVER): + Remove OPTION_MASK_HTM. + (RS6000_CPU): Add OPTION_MASK_HTM to power8, power9 and + powerpc64le entries. + +2020-12-02 Uroš Bizjak + + PR target/98079 + * config/i386/i386.md (abs2): Enable QImode + only for !TARGET_PARTIAL_REG_STALL. + (*abs2_1): Ditto. + (3): Ditto. + (*3_1): Ditto. + +2020-12-02 Martin Liska + + * diagnostic.c (diagnostic_report_diagnostic): ICE causes to + terminate compiler immediately, so I guess it should be printed + always. + +2020-12-02 Martin Liska + + PR tree-optimization/88702 + * gimple-if-to-switch.cc (pass_if_to_switch::execute): + Require at least 2 BBs. + * gimple-if-to-switch.cc (find_conditions): Require + equal precision for low and high of a range. + +2020-12-02 Martin Liska + + PR tree-optimization/98084 + * gimple-if-to-switch.cc (find_conditions): Consider only + integral types. + +2020-12-02 Jeff Law + + * config/h8300/addsub.md (addqi3_clobber_flags): Rename to + addqi3_flags and annotate with a for define_subst. + (addhi3_h8sx_clobber_flags): Likewise. + (subqi3_clobber_flags, sub3_clobber_flags): Likewise. + (neg_clobber_flags): Similarly. + (addsi3_clobber_flags): Similarly. Update last argument to + output_plussi to distinguish when we need flags or do not need + flags. + (addhi3_clobber_flags): Similarly. Twiddle code for cases + +-1, +-2 and +-4. + * config/h8300/h8300.md: Define iterators, mode attributes and + substitutions for use in compare/test elimination. + * config/h8300/jumpcall.md (branch, branch_1): Use H8cc mode + iterator to cover the different modes for the CC register. + (branch_1_false): Likewise. + +2020-12-02 Maciej W. Rozycki + + * loop-iv.c: Fix a typo, s/bu/by/, in the `iv_analyze_expr' + description in the introduction. + +2020-12-02 H.J. Lu + + * configure.ac (HAVE_GAS_SHF_GNU_RETAIN): New. Define 1 if + the assembler supports marking sections with SHF_GNU_RETAIN flag. + * output.h (SECTION_RETAIN): New. Defined as 0x4000000. + (SECTION_MACH_DEP): Changed from 0x4000000 to 0x8000000. + (default_unique_section): Add a bool argument. + * varasm.c (get_section): Set SECTION_RETAIN for the preserved + symbol with HAVE_GAS_SHF_GNU_RETAIN. + (resolve_unique_section): Used named section for the preserved + symbol if assembler supports SHF_GNU_RETAIN. + (get_variable_section): Handle the preserved common symbol with + HAVE_GAS_SHF_GNU_RETAIN. + (default_elf_asm_named_section): Require the full declaration and + use the 'R' flag for SECTION_RETAIN. + * config.in: Regenerated. + * configure: Likewise. + * doc/sourcebuild.texi: Document R_flag_in_section. + +2020-12-02 H.J. Lu + + * config.gcc: Replace cet.o with gnu-property.o. Replace + i386/t-cet with i386/t-gnu-property. + * config/i386/cet.c: Renamed to ... + * config/i386/gnu-property.c: This. + (emit_gnu_property): New function. + (file_end_indicate_exec_stack_and_cet): Renamed to ... + (file_end_indicate_exec_stack_and_gnu_property): This. Call + emit_gnu_property to generate GNU_PROPERTY_X86_FEATURE_1_AND and + GNU_PROPERTY_X86_ISA_1_NEEDED properties. + * config/i386/i386.opt (mneeded): New. + * config/i386/linux-common.h (file_end_indicate_exec_stack_and_cet): + Renamed to ... + (file_end_indicate_exec_stack_and_gnu_property): This. + (TARGET_ASM_FILE_END): Updated. + * config/i386/t-cet: Renamed to ... + * config/i386/t-gnu-property: This. + (cet.o): Renamed to ... + (gnu-property.o): This. + * doc/invoke.texi: Document -mneeded. + +2020-12-01 Eugene Rozenfeld + + PR tree-optimization/96708 + * match.pd: New pattern for comparing X with MAX (X, Y) + or MIN (X, y). + +2020-12-01 Jeff Law + + * config/mcore/t-mcore (MULTILIB_EXCEPTIONS): Define. + +2020-12-01 Martin Sebor + + PR middle-end/97595 + * tree.c (component_ref_size): Fail when DECL_SIZE != TYPE_SIZE. + * tree.h (DECL_SIZE, TYPE_SIZE): Update comment. + +2020-12-01 JeanHeyd Meneide + + * doc/cpp.texi: Document new macros. + +2020-12-01 Martin Sebor + + PR middle-end/97373 + * builtins.c (compute_objsize): Rename... + (compute_objsize_r): to this. Change order and types of arguments. + Use new argument. Adjust calls to self. + (access_ref::get_ref): New member function. + (pointer_query::pointer_query): New member function. + (pointer_query::get_ref): Same. + (pointer_query::put_ref): Same. + (handle_min_max_size): Change order and types of arguments. + (maybe_emit_free_warning): Add a test. + * builtins.h (class pointer_query): New class. + (compute_objsize): Declare an overload. + * gimple-ssa-sprintf.c (get_destination_size): Add argument. + (handle_printf_call): Change argument type. + * tree-ssa-strlen.c (adjust_last_stmt): Add an argument and use it. + (maybe_warn_overflow): Same. + (handle_builtin_strcpy): Same. + (maybe_diag_stxncpy_trunc): Same. + (handle_builtin_memcpy): Change argument type. Adjust calls. + (handle_builtin_strcat): Same. + (handle_builtin_memset): Same. + (handle_store): Same. + (strlen_check_and_optimize_call): Same. + (check_and_optimize_stmt): Same. + (strlen_dom_walker): Add new data members. + (strlen_dom_walker::before_dom_children): Use new member. + (printf_strlen_execute): Dump cache performance counters. Remove + objsize pass cleanup. + * tree-ssa-strlen.h (maybe_diag_stxncpy_trunc): Add argument. + (handle_printf_call): Change argument type. + +2020-12-01 Eric Botcazou + + * function.c (gen_call_used_regs_seq): In a function subject to the + leaf register optimization, skip registers that are not present. + * config/sparc/sparc.c (TARGET_ZERO_CALL_USED_REGS): Define to... + (sparc_zero_call_used_regs): ...this. New function. + +2020-12-01 Iain Sandoe + + * config/darwin.h: Remove unused 'X' specs in the link spec + rather than driver self-specs. + +2020-12-01 Nathan Sidwell + + * params.opt (lazy-modules): New. + * timevar.def (TV_MODULE_IMPORT, TV_MODULE_EXPORT) + (TV_MODULE_MAPPER): New. + +2020-12-01 Jakub Jelinek + + PR rtl-optimization/97459 + * optabs.c (expand_doubleword_mod): Punt early for even op1. + (expand_binop): Don't require lshr_optab double-word handler. + +2020-12-01 Jakub Jelinek + + PR rtl-optimization/97954 + * loop-invariant.c (find_invariant_insn): Punt on JUMP_P insns. + +2020-12-01 Iain Sandoe + + * configure.ac (check leb128 support): Check that assemblers both + accept the LEB128 directives and also give the expected output. + Add a test for uleb128 with the MSB set for a 64 bit value. + * configure: Regenerated. + +2020-12-01 Iain Sandoe + + * configure: Regnerated. + +2020-12-01 Ilya Leoshkevich + + * optabs-tree.c (vec_cmp_icode_p): New function. + (vec_cmp_eq_icode_p): New function. + (expand_vec_cmp_expr_p): Use vec_cmp_icode_p and + vec_cmp_eq_icode_p. + (vcond_icode_p): Use get_rtx_code_1, just to be uniform with + vec_cmp_icode_p. + * optabs.c (unsigned_optab_p): New function. + (insn_predicate_matches_p): New function. + (can_vec_cmp_compare_p): New function. + (can_vcond_compare_p): Use unsigned_optab_p and + insn_predicate_matches_p. + (get_rtx_code): Use get_rtx_code_1. + (get_rtx_code_1): Version of get_rtx_code that returns UNKNOWN + instead of asserting. + * optabs.h (can_vec_cmp_compare_p): New function. + (get_rtx_code_1): New function. + +2020-12-01 Martin Liska + + PR tree-optimization/14799 + PR ipa/88702 + * Makefile.in: Add gimple-if-to-switch.o. + * dbgcnt.def (DEBUG_COUNTER): Add new debug counter. + * passes.def: Include new pass_if_to_switch pass. + * timevar.def (TV_TREE_IF_TO_SWITCH): New timevar. + * tree-pass.h (make_pass_if_to_switch): New. + * tree-ssa-reassoc.c (struct operand_entry): Move to the header. + (dump_range_entry): Move to header file. + (debug_range_entry): Likewise. + (no_side_effect_bb): Make it global. + * tree-switch-conversion.h (simple_cluster::simple_cluster): + Add inline for couple of functions in order to prevent error + about multiple defined symbols. + * gimple-if-to-switch.cc: New file. + * tree-ssa-reassoc.h: New file. + +2020-12-01 Marius Hillenbrand + + * configure.ac: Add configure option + --enable-s390-excess-float-precision and check to derive default + from glibc. + * config/s390/s390.c: Guard s390_excess_precision with an ifdef + for ENABLE_S390_EXCESS_FLOAT_PRECISION. + * doc/install.texi: Document --enable-s390-excess-float-precision. + * configure: Regenerate. + * config.in: Regenerate. + +2020-12-01 Martin Liska + + PR ipa/98057 + * symtab.c (symtab_node::set_section_for_node): Drop + implicit_section if x_section is NULL. + +2020-12-01 Jakub Jelinek + + PR target/98063 + * config/i386/i386-expand.c (ix86_expand_call): Handle non-plt + CM_LARGE_PIC calls. + +2020-12-01 Richard Biener + + PR middle-end/98070 + * builtins.c (builtin_fnspec): realloc is ".Cw ". + +2020-12-01 Jakub Jelinek + + * dwarf2out.c (gen_compile_unit_die): Treat GNU C++20 + like C++14 for -gdwarf-5. + +2020-12-01 Jakub Jelinek + + PR debug/97989 + * gcc.c (cpp_unique_options): Add -dD if %:debug-level-gt(2) + rather than g3|ggdb3|gstabs3|gxcoff3|gvms3. + +2020-12-01 Kito Cheng + + * config.gcc (riscv*-*-*): Drop some commited accidentally code. + +2020-11-30 Jeff Law + + * symtab.c (set_section_for_node): Add function comment. + (set_section_from_node): Likewise. + +2020-11-30 David Malcolm + + * doc/plugins.texi (Plugin callbacks): Add PLUGIN_ANALYZER_INIT. + * plugin.c (register_callback): Likewise. + (invoke_plugin_callbacks_full): Likewise. + * plugin.def (PLUGIN_ANALYZER_INIT): New event. + +2020-11-30 Jeff Law + + * config/h8300/bitfield.md: Remove "cc" attribute on any + insns where it remained. + * config/h8300/combiner.md: Likewise. + * config/h8300/jumpcall.md: Likewise. + * config/h8300/logical.md: Likewise. + * config/h8300/testcompare.md: Likewise. + * config/h8300/h8300.md (old_cc attr): Renamed from cc attr. + * config/h8300/h8300.c (notice_update_cc): Remove. + (compute_plussi_cc): Change references to CC_* to OLD_CC_. + (compute_logical_op_cc): Likewise. + (shift_one, shift_two): Likewise. + (compute_a_shift_cc): Likewise. + (get_shift_alg): Likewise. + (struct shift_insn): Change type of cc_valid field. + (struct shift_info): Likewise. + * config/h8300/save.md: Remove accidentially created file. + +2020-11-30 Richard Sandiford + + PR rtl-optimization/98037 + * dse.c (find_shift_sequence): Iterate over all integers and + skip modes that are too small. + +2020-11-30 Eugene Rozenfeld + + PR tree-optimization/96679 + * match.pd (((b | c) & a) | b -> (a & c) | b): New pattern. + +2020-11-30 Martin Liska + + * passes.c (emergency_dump_function): Dump symtab when + we are in an IPA pass. + +2020-11-30 Richard Biener + + PR tree-optimization/98064 + * tree-vect-loop.c (vectorizable_live_operation): Avoid + breaking LC SSA for BB vectorization. + +2020-11-30 Jonathan Wakely + + * doc/sourcebuild.texi (Directives): Fix description of + dg-require-effective-target to include "target" in selector. + +2020-11-30 Richard Biener + + PR tree-optimization/98048 + * tree-vect-generic.c (expand_vector_operations_1): Use the + correct type for the scalar LHS replacement. + +2020-11-30 Martin Liska + + PR tree-optimization/98066 + * gimple-isel.cc (gimple_expand_vec_exprs): Return when + gimple_expand_vec_exprs replaces last stmt. + +2020-11-30 Ilya Leoshkevich + + * cfgrtl.c (rtl_bb_info_initialized_p): New function. + (rtl_dump_bb): Use rtl_bb_info_initialized_p before accessing bb + insns. + +2020-11-30 Iain Buclaw + + PR d/87818 + * config.gcc (*-*-freebsd*): Add freebsd-d.o and t-freebsd. + * config/freebsd-d.c: New file. + * config/t-freebsd: New file. + +2020-11-30 Jakub Jelinek + + PR rtl-optimization/97459 + * internal-fn.h (expand_addsub_overflow): Declare. + * internal-fn.c (expand_addsub_overflow): No longer static. + * optabs.c (expand_doubleword_mod): New function. + (expand_binop): Optimize double-word mod with constant divisor. + +2020-11-30 Kito Cheng + + * config.gcc (riscv*-*-*): Add TARGET_RISCV_DEFAULT_ABI and + TARGET_RISCV_DEFAULT_ARCH to tm_defines. + Remove including riscv/withmultilib.h for --with-multilib-list. + * config/riscv/riscv.h (STRINGIZING): New. + (__STRINGIZING): Ditto. + (MULTILIB_DEFAULTS): Ditto. + * config/riscv/withmultilib.h: Remove. + +2020-11-30 Kito Cheng + + * gcc.c (print_multilib_info): Check default arguments not + appeared in multi-lib option list with '!' + +2020-11-30 Jeff Law + + * config/ft32/ft32.md (umulsidi3): Do not allow constants as + arguments. + +2020-11-29 Jan Hubicka + + * ipa-modref.c (ipa_merge_modref_summary_after_inlining): Fix + handling of ignore_stores. + +2020-11-29 Jan Hubicka + + PR jit/97867 + * symtab-thunks.h (thunk_info::release): Use ggc_delete. + +2020-11-29 Martin Sebor + + PR middle-end/92936 + PR middle-end/92940 + PR middle-end/89428 + * builtins.c (access_ref::access_ref): Initialize member. + (access_ref::phi): New function. + (access_ref::get_ref): New function. + (access_ref::add_offset): Remove duplicate assignment. + (maybe_warn_for_bound): Add "maybe" kind of warning messages. + (warn_for_access): Same. + (inform_access): Rename... + (access_ref::inform_access): ...to this. Print PHI arguments. Format + offset the same as size and simplify. Improve printing of allocation + functions and VLAs. + (check_access): Adjust to the above. + (gimple_parm_array_size): Change argument. + (handle_min_max_size): New function. + * builtins.h (class ssa_name_limit_t): Move class here from + tree-ssa-strlen.c. + (struct access_ref): Declare new members. + (gimple_parm_array_size): Change argument. + * tree-ssa-strlen.c (maybe_warn_overflow): Use access_ref and simplify. + (handle_builtin_memcpy): Correct argument passed to maybe_warn_overflow. + (handle_builtin_memset): Same. + (class ssa_name_limit_t): Move class to builtins.{h,c}. + +2020-11-29 Iain Buclaw + + * config.gcc (*-*-darwin*): Set d_target_objs and target_has_targetdm. + * config/elfos.h (TARGET_D_MINFO_SECTION): New macro. + (TARGET_D_MINFO_START_NAME): New macro. + (TARGET_D_MINFO_END_NAME): New macro. + * config/t-darwin: Add darwin-d.o. + * doc/tm.texi: Regenerate. + * doc/tm.texi.in (D language and ABI): Add @hook for + TARGET_D_MINFO_SECTION, TARGET_D_MINFO_START_NAME, and + TARGET_D_MINFO_END_NAME. + * config/darwin-d.c: New file. + +2020-11-29 Jan Hubicka + + * tree-ssa-structalias.c (handle_pure_call): Skip EAF_UNUSED + parameters. + +2020-11-29 Jan Hubicka + + * ipa-modref.c (modref_lattice::merge): Do nothing if F is EAF_UNUSED. + (analyze_parms): Detect unused params. + (modref_merge_call_site_flags): Merge correct EAF_UNUSED. + +2020-11-28 Eric Botcazou + + PR target/97939 + * config/sparc/predicates.md (arith_double_add_operand): Comment. + * config/sparc/sparc.md (uaddvdi4): Use arith_double_operand. + (addvdi4): Use arith_double_add_operand. + (addsi3): Remove useless attributes. + (addvsi4): Use arith_add_operand. + (*cmp_ccv_plus): Likewise and add second alternative accordingly. + (*cmp_ccxv_plus): Likewise. + (*cmp_ccv_plus_set): Likewise. + (*cmp_ccxv_plus_set): Likewise. + (*cmp_ccv_plus_sltu_set): Likewise. + (usubvdi4): Use arith_double_operand. + (subvdi4): Use arith_double_add_operand. + (subsi3): Remove useless attributes. + (subvsi4): Use arith_add_operand. + (*cmp_ccv_minus): Likewise and add second alternative accordingly. + (*cmp_ccxv_minus): Likewise. + (*cmp_ccv_minus_set): Likewise. + (*cmp_ccxv_minus_set): Likewise. + (*cmp_ccv_minus_sltu_set): Likewise. + (negsi2): Use register_operand. + (unegvsi3): Likewise. + (negvsi3) Likewise. + (*cmp_ccnz_neg): Likewise. + (*cmp_ccxnz_neg): Likewise. + (*cmp_ccnz_neg_set): Likewise. + (*cmp_ccxnz_neg_set): Likewise. + (*cmp_ccc_neg_set): Likewise. + (*cmp_ccxc_neg_set): Likewise. + (*cmp_ccc_neg_sltu_set): Likewise. + (*cmp_ccv_neg): Likewise. + (*cmp_ccxv_neg): Likewise. + (*cmp_ccv_neg_set): Likewise. + (*cmp_ccxv_neg_set): Likewise. + (*cmp_ccv_neg_sltu_set): Likewise. + +2020-11-27 H.J. Lu + + PR other/98027 + * doc/install.texi: Default to --enable-cet=auto. + +2020-11-27 Thomas Schwinge + + * omp-oacc-kernels-decompose.cc (flatten_binds): Don't choke on + empty GIMPLE sequence, and examine all statements contained in + inner 'GIMPLE_BIND'. + +2020-11-27 Richard Biener + + PR tree-optimization/98024 + * tree-ssa-pre.c (insert): Fix successor RPO order check. + (do_pre_regular_insertion): When inserting an assignment + in place of an all-same-value PHI still record that into + PHI_GEN. + +2020-11-27 Jakub Jelinek + + * tree-ssanames.c (get_range_info): Handle INTEGER_CST by returning + VR_RANGE with both *min and *max set to the wide_int value of the + INTEGER_CST. Return VR_VARYING for non-SSA_NAMEs. + * match.pd ((t * 2) / 2) -> t): Handle also @0 being INTEGER_CST. + Simplify by calling get_range_info on everything. + * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Simplify by calling + get_range_info on everything. + * tree-scalar-evolution.c (iv_can_overflow_p): Likewise. + +2020-11-27 Jakub Jelinek + + PR libstdc++/88101 + * gimple-fold.c (clear_padding_type): Ignore fields with is_empty_type + types. + +2020-11-27 Tobias Burnus + + PR c/97880 + * omp-expand.c (expand_oacc_collapse_init, expand_oacc_collapse_vars): + Use now passed diff_type. + (expand_oacc_for): Take largest type for diff_type, taking tiling + and collapsing into account. + +2020-11-27 Kyrylo Tkachov + + * config/aarch64/aarch64.opt + (-param=aarch64-autovec-preference): Define. + * config/aarch64/aarch64.c (aarch64_override_options_internal): + Set aarch64_sve_compare_costs to 0 when preferring only Advanced + SIMD. + (aarch64_cmp_autovec_modes): Define. + (aarch64_preferred_simd_mode): Adjust to use the above. + (aarch64_autovectorize_vector_modes): Likewise. + * doc/invoke.texi: Document aarch64-autovec-preference param. + +2020-11-27 Xionghu Luo + + * config/rs6000/rs6000-call.c (altivec_expand_vec_set_builtin): + Change call param 2 from type int to rtx. + * config/rs6000/rs6000-protos.h (rs6000_expand_vector_set): + Likewise. + * config/rs6000/rs6000.c (rs6000_expand_vector_init): + Change call param 2 from type int to rtx. + (rs6000_expand_vector_set): Likewise. + * config/rs6000/vector.md (vec_set): Support both constant + and variable index vec_set. + +2020-11-27 Haochen Gui + + * config/rs6000/rs6000-protos.h (rs6000_output_addr_vec_elt): Declare. + * config/rs6000/rs6000.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): + Define. + (rs6000_gen_pic_addr_diff_vec, rs6000_output_addr_vec_elt): Implement. + * config/rs6000/rs6000.h (CASE_VECTOR_PC_RELATIVE, + CASE_VECTOR_MODE, ASM_OUTPUT_ADDR_VEC_ELT): Define. + * config/rs6000/rs6000.md (tablejump_absolute, + tablejump_absolute_nospec): New expanders. + * config/rs6000/rs6000.opt (mrelative-jumptables): New. + +2020-11-26 Eric Botcazou + + PR target/96607 + * config/sparc/sparc-protos.h (eligible_for_call_delay): Delete. + * config/sparc/sparc.c (eligible_for_call_delay): Likewise. + * config/sparc/sparc.md (in_call_delay): Likewise. + (tls_delay_slot): New attribute. + (define_delay [call]): Use in_branch_delay. + (tgd_call): Set type to call_no_delay_slot when + tls_delay_slot is false. + (tldm_call): Likewise. + +2020-11-26 Jakub Jelinek + + PR tree-optimization/97997 + * match.pd ((t * 2) / 2) -> t): Optimize even for defined + overflow if ranges prove there is no overflow. + +2020-11-26 Richard Biener + + PR tree-optimization/97953 + * gimple-ssa-evrp-analyze.c + (evrp_range_analyzer::record_ranges_from_incoming_edge): Make + sure the condition post-dominates the SSA definition before + recording into SSA_NAME_RANGE_INFO. + +2020-11-26 Richard Biener + + * gimple-isel.cc (gimple_expand_vec_cond_expr): Only + lower VECTOR_BOOLEAN_TYPE_P VEC_COND_EXPRs. + +2020-11-26 Andrew Stubbs + + * config/gcn/mkoffload.c (copy_early_debug_info): Don't wipe + relocation symbols. + +2020-11-26 Uroš Bizjak + + * config/i386/i386-expand.c (ix86_expand_multi_arg_builtin): + Remove args array of structs, declare rtx xops array instead. + Update all uses. + (ix86_expand_args_builtin): Ditto. + (ix86_expand_round_builtin): Ditto. + (ix86_expand_special_args_builtin): Ditto. + +2020-11-26 Martin Liska + + * dwarf2out.c (gen_compile_unit_die): Fix missing == 0 in a + strcmp. + +2020-11-26 Rainer Orth + + * config/sol2.h (TIME_LIBRARY): Remove. + +2020-11-26 Kewen Lin + + * config/rs6000/rs6000.c (rs6000_option_override_internal): + Set param_vect_partial_vector_usage as 1 for Power10 and up + by default. + +2020-11-26 Jakub Jelinek + + * gimple-fold.c (clear_padding_union): Ignore DECL_PADDING_P + fields. + (clear_padding_type): Ignore DECL_PADDING_P fields, rather than + DECL_BIT_FIELD with NULL DECL_NAME. + +2020-11-26 Jakub Jelinek + + PR tree-optimization/97979 + * match.pd ((X {&,^,|} C2) << C1 into (X << C1) {&,^,|} (C2 << C1)): + Only optimize if int_const_binop returned non-NULL. + +2020-11-26 liuhongt + + * config/i386/i386-expand.c + (ix86_expand_special_args_builtin): Delete last_arg_constant + and match. + +2020-11-26 Uroš Bizjak + + PR target/97873 + * config/i386/i386.md (abs2): Use SDWIM mode iterator. + (*abs2_1): Use SWI mode iterator. + (3): Use SDWIM mode iterator. + (*3_1): Use SWI mode iterator. + +2020-11-26 Jakub Jelinek + + PR target/96906 + * config/i386/sse.md (VI12_AVX2): Remove V64QI/V32HI modes. + (VI12_AVX2_AVX512BW): New mode iterator. + (_3, + uavg3_ceil, _uavg3): Use + VI12_AVX2_AVX512BW iterator instead of VI12_AVX2. + (*_3): Likewise. + (*_uavg3): Likewise. + (*_3): Add a new + define_split after this insn. + +2020-11-26 Martin Uecker + + PR c/65455 + PR c/92935 + * ginclude/stdatomic.h: Use comma operator to drop qualifiers. + +2020-11-26 Vladimir Makarov + + PR bootstrap/97983 + * lra.c (lra_process_new_insns): Use emit_insn_before_noloc or + emit_insn_after_noloc with the destination BB. + +2020-11-25 Martin Sebor + + PR bootstrap/97622 + PR bootstrap/94982 + * config/i386/i386-options.c (ix86_valid_target_attribute_inner_p): + Avoid -Wformat-diag. + * digraph.cc (struct test_edge): Same. + * dumpfile.c (dump_loc): Same. + (dump_context::begin_scope): Same. + * edit-context.c (edited_file::print_diff): Same. + (edited_file::print_diff_hunk): Same. + * json.cc (object::print): Same. + * lto-wrapper.c (merge_and_complain): Same. + * reload.c (find_reloads): Same. + * tree-diagnostic-path.cc (print_path_summary_as_text): Same. + * ubsan.c (ubsan_type_descriptor): Same. + +2020-11-25 Jan Hubicka + + * gimple.c (gimple_call_arg_flags): Also imply EAF_NODIRECTESCAPE. + * tree-core.h (EAF_NODRECTESCAPE): New flag. + * tree-ssa-structalias.c (make_indirect_escape_constraint): New + function. + (handle_rhs_call): Hanlde EAF_NODIRECTESCAPE. + * ipa-modref.c (dump_eaf_flags): Print EAF_NODIRECTESCAPE. + (deref_flags): Dereference is always EAF_NODIRECTESCAPE. + (modref_lattice::init): Also set EAF_NODIRECTESCAPE. + (analyze_ssa_name_flags): Pure functions do not affect + EAF_NODIRECTESCAPE. + (analyze_params): Likewise. + (ipa_merge_modref_summary_after_inlining): Likewise. + (modref_merge_call_site_flags): Likewise. + +2020-11-25 Jan Hubicka + + * ipa-modref.c (modref_summaries::duplicate, + modref_summaries_lto::duplicate): Copy arg_flags. + (remap_arg_flags): Fix remapping of arg_flags. + +2020-11-25 Martin Sebor + + PR middle-end/97956 + * gimple-fold.c (gimple_fold_builtin_memchr): Use sizetype for pointer + offsets. + +2020-11-25 Matthew Malcomson + + * asan.c (asan_instrument_reads): New. + (asan_instrument_writes): New. + (asan_memintrin): New. + (handle_builtin_stack_restore): Account for HWASAN. + (handle_builtin_alloca): Account for HWASAN. + (get_mem_refs_of_builtin_call): Special case strlen for HWASAN. + (hwasan_instrument_reads): New. + (hwasan_instrument_writes): New. + (hwasan_memintrin): New. + (report_error_func): Assert not HWASAN. + (build_check_stmt): Make HWASAN_CHECK instead of ASAN_CHECK. + (instrument_derefs): HWASAN does not tag globals. + (instrument_builtin_call): Use new helper functions. + (maybe_instrument_call): Don't instrument `noreturn` functions. + (initialize_sanitizer_builtins): Add new type. + (asan_expand_mark_ifn): Account for HWASAN. + (asan_expand_check_ifn): Assert never called by HWASAN. + (asan_expand_poison_ifn): Account for HWASAN. + (asan_instrument): Branch based on whether using HWASAN or ASAN. + (pass_asan::gate): Return true if sanitizing HWASAN. + (pass_asan_O0::gate): Return true if sanitizing HWASAN. + (hwasan_check_func): New. + (hwasan_expand_check_ifn): New. + (hwasan_expand_mark_ifn): New. + (gate_hwasan): New. + * asan.h (hwasan_expand_check_ifn): New decl. + (hwasan_expand_mark_ifn): New decl. + (gate_hwasan): New decl. + (asan_intercepted_p): Always false for hwasan. + (asan_sanitize_use_after_scope): Account for HWASAN. + * builtin-types.def (BT_FN_PTR_CONST_PTR_UINT8): New. + * gimple-fold.c (gimple_build): New overload for building function + calls without arguments. + (gimple_build_round_up): New. + * gimple-fold.h (gimple_build): New decl. + (gimple_build): New inline function. + (gimple_build_round_up): New decl. + (gimple_build_round_up): New inline function. + * gimple-pretty-print.c (dump_gimple_call_args): Account for + HWASAN. + * gimplify.c (asan_poison_variable): Account for HWASAN. + (gimplify_function_tree): Remove requirement of + SANITIZE_ADDRESS, requiring asan or hwasan is accounted for in + `asan_sanitize_use_after_scope`. + * internal-fn.c (expand_HWASAN_CHECK): New. + (expand_HWASAN_ALLOCA_UNPOISON): New. + (expand_HWASAN_CHOOSE_TAG): New. + (expand_HWASAN_MARK): New. + (expand_HWASAN_SET_TAG): New. + * internal-fn.def (HWASAN_ALLOCA_UNPOISON): New. + (HWASAN_CHOOSE_TAG): New. + (HWASAN_CHECK): New. + (HWASAN_MARK): New. + (HWASAN_SET_TAG): New. + * sanitizer.def (BUILT_IN_HWASAN_LOAD1): New. + (BUILT_IN_HWASAN_LOAD2): New. + (BUILT_IN_HWASAN_LOAD4): New. + (BUILT_IN_HWASAN_LOAD8): New. + (BUILT_IN_HWASAN_LOAD16): New. + (BUILT_IN_HWASAN_LOADN): New. + (BUILT_IN_HWASAN_STORE1): New. + (BUILT_IN_HWASAN_STORE2): New. + (BUILT_IN_HWASAN_STORE4): New. + (BUILT_IN_HWASAN_STORE8): New. + (BUILT_IN_HWASAN_STORE16): New. + (BUILT_IN_HWASAN_STOREN): New. + (BUILT_IN_HWASAN_LOAD1_NOABORT): New. + (BUILT_IN_HWASAN_LOAD2_NOABORT): New. + (BUILT_IN_HWASAN_LOAD4_NOABORT): New. + (BUILT_IN_HWASAN_LOAD8_NOABORT): New. + (BUILT_IN_HWASAN_LOAD16_NOABORT): New. + (BUILT_IN_HWASAN_LOADN_NOABORT): New. + (BUILT_IN_HWASAN_STORE1_NOABORT): New. + (BUILT_IN_HWASAN_STORE2_NOABORT): New. + (BUILT_IN_HWASAN_STORE4_NOABORT): New. + (BUILT_IN_HWASAN_STORE8_NOABORT): New. + (BUILT_IN_HWASAN_STORE16_NOABORT): New. + (BUILT_IN_HWASAN_STOREN_NOABORT): New. + (BUILT_IN_HWASAN_TAG_MISMATCH4): New. + (BUILT_IN_HWASAN_HANDLE_LONGJMP): New. + (BUILT_IN_HWASAN_TAG_PTR): New. + * sanopt.c (sanopt_optimize_walker): Act for hwasan. + (pass_sanopt::execute): Act for hwasan. + * toplev.c (compile_file): Use `gate_hwasan` function. + +2020-11-25 Matthew Malcomson + + * asan.c (struct hwasan_stack_var): New. + (hwasan_sanitize_p): New. + (hwasan_sanitize_stack_p): New. + (hwasan_sanitize_allocas_p): New. + (initialize_sanitizer_builtins): Define new builtins. + (ATTR_NOTHROW_LIST): New macro. + (hwasan_current_frame_tag): New. + (hwasan_frame_base): New. + (stack_vars_base_reg_p): New. + (hwasan_maybe_init_frame_base_init): New. + (hwasan_record_stack_var): New. + (hwasan_get_frame_extent): New. + (hwasan_increment_frame_tag): New. + (hwasan_record_frame_init): New. + (hwasan_emit_prologue): New. + (hwasan_emit_untag_frame): New. + (hwasan_finish_file): New. + (hwasan_truncate_to_tag_size): New. + * asan.h (hwasan_record_frame_init): New declaration. + (hwasan_record_stack_var): New declaration. + (hwasan_emit_prologue): New declaration. + (hwasan_emit_untag_frame): New declaration. + (hwasan_get_frame_extent): New declaration. + (hwasan_maybe_enit_frame_base_init): New declaration. + (hwasan_frame_base): New declaration. + (stack_vars_base_reg_p): New declaration. + (hwasan_current_frame_tag): New declaration. + (hwasan_increment_frame_tag): New declaration. + (hwasan_truncate_to_tag_size): New declaration. + (hwasan_finish_file): New declaration. + (hwasan_sanitize_p): New declaration. + (hwasan_sanitize_stack_p): New declaration. + (hwasan_sanitize_allocas_p): New declaration. + (HWASAN_TAG_SIZE): New macro. + (HWASAN_TAG_GRANULE_SIZE): New macro. + (HWASAN_STACK_BACKGROUND): New macro. + * builtin-types.def (BT_FN_VOID_PTR_UINT8_PTRMODE): New. + * builtins.def (DEF_SANITIZER_BUILTIN): Enable for HWASAN. + * cfgexpand.c (align_local_variable): When using hwasan ensure + alignment to tag granule. + (align_frame_offset): New. + (expand_one_stack_var_at): For hwasan use tag offset. + (expand_stack_vars): Record stack objects for hwasan. + (expand_one_stack_var_1): Record stack objects for hwasan. + (init_vars_expansion): Initialise hwasan state. + (expand_used_vars): Emit hwasan prologue and generate hwasan epilogue. + (pass_expand::execute): Emit hwasan base initialization if needed. + * doc/tm.texi (TARGET_MEMTAG_TAG_SIZE,TARGET_MEMTAG_GRANULE_SIZE, + TARGET_MEMTAG_INSERT_RANDOM_TAG,TARGET_MEMTAG_ADD_TAG, + TARGET_MEMTAG_SET_TAG,TARGET_MEMTAG_EXTRACT_TAG, + TARGET_MEMTAG_UNTAGGED_POINTER): Document new hooks. + * doc/tm.texi.in (TARGET_MEMTAG_TAG_SIZE,TARGET_MEMTAG_GRANULE_SIZE, + TARGET_MEMTAG_INSERT_RANDOM_TAG,TARGET_MEMTAG_ADD_TAG, + TARGET_MEMTAG_SET_TAG,TARGET_MEMTAG_EXTRACT_TAG, + TARGET_MEMTAG_UNTAGGED_POINTER): Document new hooks. + * explow.c (get_dynamic_stack_base): Take new `base` argument. + * explow.h (get_dynamic_stack_base): Take new `base` argument. + * sanitizer.def (BUILT_IN_HWASAN_INIT): New. + (BUILT_IN_HWASAN_TAG_MEM): New. + * target.def (target_memtag_tag_size,target_memtag_granule_size, + target_memtag_insert_random_tag,target_memtag_add_tag, + target_memtag_set_tag,target_memtag_extract_tag, + target_memtag_untagged_pointer): New hooks. + * targhooks.c (HWASAN_SHIFT): New. + (HWASAN_SHIFT_RTX): New. + (default_memtag_tag_size): New default hook. + (default_memtag_granule_size): New default hook. + (default_memtag_insert_random_tag): New default hook. + (default_memtag_add_tag): New default hook. + (default_memtag_set_tag): New default hook. + (default_memtag_extract_tag): New default hook. + (default_memtag_untagged_pointer): New default hook. + * targhooks.h (default_memtag_tag_size): New default hook. + (default_memtag_granule_size): New default hook. + (default_memtag_insert_random_tag): New default hook. + (default_memtag_add_tag): New default hook. + (default_memtag_set_tag): New default hook. + (default_memtag_extract_tag): New default hook. + (default_memtag_untagged_pointer): New default hook. + * toplev.c (compile_file): Call hwasan_finish_file when finished. + +2020-11-25 Matthew Malcomson + + * common.opt (flag_sanitize_recover): Default for kernel + hwaddress. + (static-libhwasan): New cli option. + * config/aarch64/aarch64.c (aarch64_can_tag_addresses): New. + (TARGET_MEMTAG_CAN_TAG_ADDRESSES): New. + * config/gnu-user.h (LIBHWASAN_EARLY_SPEC): hwasan equivalent of + asan command line flags. + * cppbuiltin.c (define_builtin_macros_for_compilation_flags): + Add hwasan equivalent of __SANITIZE_ADDRESS__. + * doc/invoke.texi: Document hwasan command line flags. + * doc/tm.texi: Document new hook. + * doc/tm.texi.in: Document new hook. + * flag-types.h (enum sanitize_code): New sanitizer values. + * gcc.c (STATIC_LIBHWASAN_LIBS): New macro. + (LIBHWASAN_SPEC): New macro. + (LIBHWASAN_EARLY_SPEC): New macro. + (SANITIZER_EARLY_SPEC): Update to include hwasan. + (SANITIZER_SPEC): Update to include hwasan. + (sanitize_spec_function): Use hwasan options. + * opts.c (finish_options): Describe conflicts between address + sanitizers. + (find_sanitizer_argument): New. + (report_conflicting_sanitizer_options): New. + (sanitizer_opts): Introduce new sanitizer flags. + (common_handle_option): Add defaults for kernel sanitizer. + * params.opt (hwasan--instrument-stack): New + (hwasan-random-frame-tag): New + (hwasan-instrument-allocas): New + (hwasan-instrument-reads): New + (hwasan-instrument-writes): New + (hwasan-instrument-mem-intrinsics): New + * target.def (HOOK_PREFIX): Add new hook. + (can_tag_addresses): Add new hook under memtag prefix. + * targhooks.c (default_memtag_can_tag_addresses): New. + * targhooks.h (default_memtag_can_tag_addresses): New decl. + * toplev.c (process_options): Ensure hwasan only on + architectures that advertise the possibility. + +2020-11-25 Matthew Malcomson + + * doc/install.texi: Document new option. + +2020-11-25 Richard Sandiford + + * config/aarch64/aarch64.c (aarch64_maybe_expand_sve_subreg_move): + Do not optimize LRA subregs. + * config/aarch64/aarch64-sve.md + (@aarch64_pred_): Tie the input to the + output. + (@aarch64_sve_revbhw_): Likewise. + (*2): Likewise. + (@aarch64_pred_sxt): Likewise. + (*cnot): Likewise. + (@aarch64_pred_): Likewise. + (@aarch64_sve__nontrunc): + Likewise. + (@aarch64_sve__trunc): + Likewise. + (@aarch64_sve__nonextend): + Likewise. + (@aarch64_sve__extend): + Likewise. + (@aarch64_sve__trunc): + Likewise. + (@aarch64_sve__trunc): + Likewise. + (@aarch64_sve__nontrunc): + Likewise. + * config/aarch64/aarch64-sve2.md + (@aarch64_pred_): Likewise. + (@aarch64_pred_): Likewise. + (@aarch64_pred_): Likewise. + (@aarch64_pred_): Likewise. + +2020-11-25 Jakub Jelinek + + PR rtl-optimization/95862 + * internal-fn.c (get_min_precision): For narrowing conversion, recurse + on the operand and if the operand precision is smaller than the + current one, return that smaller precision. + (expand_mul_overflow): For s1 * u2 -> ur and s1 * s2 -> ur cases + if the sum of minimum precisions of both operands is smaller or equal + to the result precision, just perform normal multiplication and + set overflow to the sign bit of the multiplication result. For + u1 * u2 -> sr if both arguments have the MSB known zero, use + normal s1 * s2 -> sr expansion. + +2020-11-25 Jan Hubicka + + * cfg.c (free_block): New function. + (clear_edges): Rename to .... + (free_cfg): ... this one; also free BBs and vectors. + (expunge_block): Update comment. + * cfg.h (clear_edges): Rename to ... + (free_cfg): ... this one. + * cgraph.c (release_function_body): Use free_cfg. + +2020-11-25 Richard Biener + + PR middle-end/97579 + * gimple-isel.cc (gimple_expand_vec_cond_expr): Lower + VECTOR_BOOLEAN_TYPE_P, non-vector mode VEC_COND_EXPRs. + +2020-11-25 Jakub Jelinek + + PR middle-end/97943 + * gimple-fold.c (clear_padding_union, clear_padding_type): Error on and + ignore flexible array member fields. Ignore fields with + error_mark_node type. + +2020-11-24 Ulrich Weigand + + Revert: + 2020-11-24 Ulrich Weigand + + * doc/invoke.texi (-ffast-math): Remove mention of -fno-signaling-nans. + Clarify conditions when __FAST_MATH__ preprocessor macro is defined. + * opts.c (common_handle_option): Pass OPTS_SET to set_fast_math_flags + and set_unsafe_math_optimizations_flags. + (set_fast_math_flags): Add OPTS_SET argument, and use it to avoid + setting flags already explicitly set on the command line. In the !set + case, also reset x_flag_cx_limited_range and x_flag_excess_precision. + Never reset x_flag_signaling_nans or x_flag_rounding_math. + (set_unsafe_math_optimizations_flags): Add OPTS_SET argument, and use + it to avoid setting flags already explicitly set on the command line. + (fast_math_flags_set_p): Also test x_flag_cx_limited_range, + x_flag_associative_math, x_flag_reciprocal_math, and + x_flag_rounding_math. + +2020-11-24 Vladimir Makarov + + PR bootstrap/97933 + * lra.c (lra_process_new_insns): Stop on the first real insn after + head of e->dest. + +2020-11-24 Richard Earnshaw + + PR target/97534 + * config/arm/arm.c (arm_split_atomic_op): Use gen_int_mode when + negating a const_int. + +2020-11-24 Ilya Leoshkevich + + * config/s390/vector.md: Use vcond_comparison_operator + predicate. + +2020-11-24 Ulrich Weigand + + * doc/invoke.texi (-ffast-math): Remove mention of -fno-signaling-nans. + Clarify conditions when __FAST_MATH__ preprocessor macro is defined. + * opts.c (common_handle_option): Pass OPTS_SET to set_fast_math_flags + and set_unsafe_math_optimizations_flags. + (set_fast_math_flags): Add OPTS_SET argument, and use it to avoid + setting flags already explicitly set on the command line. In the !set + case, also reset x_flag_cx_limited_range and x_flag_excess_precision. + Never reset x_flag_signaling_nans or x_flag_rounding_math. + (set_unsafe_math_optimizations_flags): Add OPTS_SET argument, and use + it to avoid setting flags already explicitly set on the command line. + (fast_math_flags_set_p): Also test x_flag_cx_limited_range, + x_flag_associative_math, x_flag_reciprocal_math, and + x_flag_rounding_math. + +2020-11-24 Jakub Jelinek + + PR target/97950 + * config/i386/i386.md (*setcc_si_1_and): Macroize into... + (*setcc__1_and): New define_insn_and_split with SWI24 iterator. + (*setcc_si_1_movzbl): Macroize into... + (*setcc__1_movzbl): New define_insn_and_split with SWI24 + iterator. + +2020-11-24 Jakub Jelinek + + * gimple-fold.c (clear_padding_flush): If a word contains only 0 + or 0xff bytes of padding other than all set, all clear, all set + followed by all clear or all clear followed by all set, don't emit + a RMW operation on the whole word or parts of it, but instead + clear the individual bytes of padding. For paddings of one byte + size, don't use char[1] and {}, but instead just char and 0. + +2020-11-24 Thomas Schwinge + + * omp-expand.c (expand_oacc_for): More explicit checking of which + OMP constructs we're expecting. + +2020-11-24 Thomas Schwinge + + * doc/install.texi (Prerequisites) : Add comment. + +2020-11-24 Jakub Jelinek + + PR tree-optimization/96929 + * fold-const.c (wide_int_binop) : + Return false on negative second argument rather than trying to handle + it as shift in the other direction. + * tree-ssa-ccp.c (bit_value_binop) : Punt on negative shift count rather than trying + to handle it as shift in the other direction. + * match.pd (-1 >> x to -1): Remove tree_expr_nonnegative_p check. + +2020-11-24 Prathamesh Kulkarni + + PR tree-optimization/97849 + * tree-if-conv.c (tree_if_conversion): Move ssa_name + replacement code from ifcvt_local_dce to this function + before calling do_rpo_vn. + +2020-11-24 Martin Sebor + + * tree-cfg.c (dump_function_to_file): Print type attributes + and return type. + +2020-11-23 Martin Jambor + + * ipa-prop.h (ipa_pass_through_data): Expand comment describing + operation. + * ipa-prop.c (analyze_agg_content_value): Detect new special case and + encode it as ASSERT_EXPR. + * ipa-cp.c (values_equal_for_ipcp_p): Move before + ipa_get_jf_arith_result. + (ipa_get_jf_arith_result): Special case ASSERT_EXPR. + +2020-11-23 Jeff Law + + * config/h8300/h8300.c (h8300_rtx_costs): Handle the various + comparison rtx codes too. + +2020-11-23 Jan Hubicka + + * ipa-prop.c (build_agg_jump_func_from_list, + ipa_read_jump_function): Reserve agg.items precisely. + * ipa-prop.h (ipa_node_params::~ipa_node_params): Release descriptors + (ipa_edge_args::~ipa_edge_args): Release agg.items. + +2020-11-23 Jan Hubicka + + * lto-streamer-in.c (input_cfg): Do not init ssa operands. + (input_function): Do not init tree_ssa and set in_ssa_p. + (input_ssa_names): Do it here. + * tree-ssa.c (init_tree_ssa): Add additional SIZE parameter, default + to 0 + * tree-ssanames.c (init_ssanames): Do not round size up to 50, allocate + precisely. + * tree-ssa.h (init_tree_ssa): Update prototype. + +2020-11-23 Nathan Sidwell + + * diagnostic.c (diagnostic_report_current_module): Adjust for C++ + module importation. + +2020-11-23 Jozef Lawrynowicz + + * config/msp430/msp430.c (msp430_section_attr): Don't warn for "lower" + attribute used with "noinit" or "persistent" attributes. + (msp430_persist_attr): Remove. + (attr_lower_exclusions): Remove ATTR_PERSIST exclusion. + (attr_upper_exclusions): Likewise. + (attr_either_exclusions): Likewise. + (attr_persist_exclusions): Remove. + (msp430_attribute_table): Remove ATTR_PERSIST handling. + (msp430_handle_generic_attribute): Remove ATTR_PERSIST section conflict + handling. + (TARGET_ASM_INIT_SECTIONS): Remove. + (msp430_init_sections): Remove. + (msp430_select_section): Use default_elf_select_section for decls with + the "persistent" attribute. + (msp430_section_type_flags): Remove ".persistent" section handling. + * doc/extend.texi (MSP430 Variable Attributes): Remove "noinit" and + "persistent" documentation. + +2020-11-23 Richard Biener + + * tree-vect-slp.c (maybe_push_to_hybrid_worklist): Skip + debug stmts. + +2020-11-23 Jozef Lawrynowicz + + * doc/extend.texi (Common Variable Attributes): Document the + "persistent" variable attribute. + * doc/sourcebuild.texi (Effective-Target Keywords): Document + the "persistent" effective target keyword. + * tree.h (DECL_PERSISTENT_P): Define. + * varasm.c (bss_initializer_p): Return false for a + DECL_PERSISTENT_P decl initialized to zero. + (default_section_type_flags): Handle the ".persistent" section. + (default_elf_select_section): Likewise. + (default_unique_section): Likewise. + +2020-11-23 Jozef Lawrynowicz + + * tree.h (DECL_NOINIT_P): Define. + * varasm.c (DECL_NOINIT_P): Check DECL_NOINIT_P before using + unnamed bss/lcomm sections for bss_initializer variables. + (default_elf_select_section): Use DECL_NOINIT_P instead of + looking up attribute for .noinit section selection. + (default_unique_section): Check DECL_NOINIT_P for .noinit + section selection. + +2020-11-23 Matthew Malcomson + + * doc/install.texi: Document bootstrap-asan option. + +2020-11-22 Uroš Bizjak + + PR target/97873 + * config/i386/i386.md (abs2): Use SWI48DWI mode iterator. + (*abs2_doubleword): Use DWIH mode iterator. + (3): Use SWI48DWI mode iterator. + (*3_doubleword): Use DWIH mode iterator. + +2020-11-22 Austin Law + + * config/h8300/addsub.md: Turn existing patterns into + define_insn_and_split style patterns where the splitter + adds a clobber of the condition code register. Drop "cc" + attribute. Add _clobber_flags patterns to match output of + the splitters. + (add3_incdec): Remove pattern + (adds/subs splitter): Only run before reload. + * config/h8300/bitfield.md: Turn existing patterns into + define_insn_and_split style patterns where the splitter + adds a clobber of the condition code register. Drop "cc" + attribute. Add _clobber_flags patterns to match output + of the splitters. + (cstoreqi4, cstorehi4, cstoresi4): Comment out + (*bstzhireg, *cmpstz, *bstz, *bistz, *cmpcondset): Likewise + (*condbset, *cmpcondbclr, *condbclr): Likewise. + (*cmpcondbsetreg, *condbsetreg, *cmpcondbclrreg): Likewise. + (*condbclrreg): Likewise. + * config/h8300/combiner.md: Turn existing patterns into + define_insn_and_split style patterns where the splitter + adds a clobber of the condition code register. Drop "cc" + attribute. Add _clobber_flags patterns to match output of + the splitters. Add appropriate CC register clobbers to + existing splitters. + (*addsi3_and_r_1): Disable for now. + (*addsi3_and_not_r_1, bit-test branches): Likewise. + * config/h8300/divmod.md: Turn existing patterns into + define_insn_and_split style patterns where the splitter + adds a clobber of the condition code register. Drop "cc" + attribute. Add _clobber_flags patterns to match output of + the splitters. + * config/h8300/extensions.md: Turn existing patterns into + define_insn_and_split style patterns where the splitter + adds a clobber of the condition code register. Drop "cc" + attribute. Add _clobber_flags patterns to match output of + the splitters. + * config/h8300/genmova.sh: Drop "cc" attribute from patterns. + * config/h8300/mova.md: Drop "cc" attribute from patterns. + * config/h8300/h8300-modes.def: Add CCZN and CCZNV modes. + * config/h8300/h8300-protos.h (output_plussi): Update prototype. + (compute_plussi_length): Likewise. + (h8300_select_cc_mode): Add prototype. + (compute_a_shift_cc): Remove prototype + (cmpute_logical_op_cc): Likewise. + * config/h8300/h8300.c (names_big): Add "cc" register. + (names_extended, names_upper_extended): Likewise. + (h8300_emit_stack_adjustment): Be more selective about setting + RTX_FRAME_RELATED_P. + (h8300_print_operand): Handle CCZN mode + (h8300_select_cc_mode): New function. + (notice_update_cc): if-0 out. Only kept for reference purposes. + (h8300_expand_store): Likewise. + (h8300_binary_length): Handle new insn forms. + (output_plussi): Add argument for NEED_FLAGS and handle that case. + (compute_plussi_length): Likewise. + (compute_logical_op_cc): Return integer. + (TARGET_FLAGS_REGNUM): Define. + * config/h8300/h8300.h (FIRST_PSEUDO_REGISTER): Bump for cc register. + (FIXED_REGISTERS, CALL_USED_REGISTERS): Handle cc register. + (REG_ALLOC_ORDER, REGISTER_NAMES): Likewise. + (SELECT_CC_MODE): Define. + * config/h8300/h8300.md: Add CC_REG. + Do not include peepholes.md for now. + * config/h8300/jumpcall.md (cbranchqi4): Consolidate into + cbranch4. + (cbranchhi4, cbranchsi4): Likewise. + (cbranch4): New expander. + (branch): New define_insn_and_split for use before reload. + (branch_1, branch_1_false): New patterns to match splitter output. + Remove code to manage cc_status.flags. + * config/h8300/logical.md: Turn existing patterns into + define_insn_and_split style patterns where the splitter + adds a clobber of the condition code register. Drop "cc" + attribute. Add _clobber_flags patterns to match output of + the splitters. Move various peepholes into this file. + * config/h8300/movepush.md: Turn existing patterns into + define_insn_and_split style patterns where the splitter + adds a clobber of the condition code register. Drop "cc" + attribute. Add _clobber_flags patterns to match output of + the splitters. + * config/h8300/multiply.md: Turn existing patterns into + define_insn_and_split style patterns where the splitter + adds a clobber of the condition code register. Drop "cc" + attribute. Add _clobber_flags patterns to match output of + the splitters. + * config/h8300/other.md: Turn existing patterns into + define_insn_and_split style patterns where the splitter + adds a clobber of the condition code register. Drop "cc" + attribute. Add _clobber_flags patterns to match output of + the splitters. + * config/h8300/peepholes.md: Remove peepholes that were moved + elsewhere. + * config/h8300/predicates.md (simple_memory_operand): New. + * config/h8300/proepi.md: Drop "cc" attribute setting. + * config/h8300/shiftrotate.md: Turn existing patterns into + define_insn_and_split style patterns where the splitter + adds a clobber of the condition code register. Drop "cc" + attribute. Add _clobber_flags patterns to match output of + the splitters. + * config/h8300/testcompare.md: Turn existing patterns into + define_insn_and_split style patterns where the splitter + adds a clobber of the condition code register. Drop "cc" + attribute. Add _clobber_flags patterns to match output of + the splitters. Disable various patterns for now. + Move some peepholes that were previously in peepholes.md here. + * config/h8300/save.md: New file. + +2020-11-22 Jakub Jelinek + + PR tree-optimization/95853 + * tree-ssa-math-opts.c (uaddsub_overflow_check_p): Add maxval + argument, if non-NULL, instead look for r > maxval or r <= maxval + comparisons. + (match_uaddsub_overflow): Pattern recognize even other forms of + __builtin_add_overflow, in particular when addition is performed + in a wider type and result compared to maximum of the narrower + type. + +2020-11-22 Jeff Law + + * config/h8300/jumpcall.md (branch_true, branch_false): Revert + recent change. Ensure operand[0] is always the target label. + +2020-11-22 Iain Sandoe + + * config/darwin-c.c (struct f_align_stack): Rename + to type from align_stack to f_align_stack. + (push_field_alignment): Likewise. + (pop_field_alignment): Likewise. + +2020-11-21 Marek Polacek + + PR c++/94695 + * doc/invoke.texi: Update the -Wrange-loop-construct description. + +2020-11-21 Jan Hubicka + + * tree-ssa-alias.c (ao_compare::compare_ao_refs, + ao_compare::hash_ao_ref): Use OEP_MATCH_SIDE_EFFECTS. + +2020-11-21 Jan Hubicka + + * ipa-icf.c (sem_function::equals_wpa): Do not compare ODR type with + -fno-devirtualize. + (sem_item_optimizer::update_hash_by_addr_refs): Hash anonymous ODR + types by TYPE_UID of their main variant. + +2020-11-21 Aaron Sawdey + + * config/rs6000/rs6000.c (rs6000_option_override_internal): + Enable vector pair memcpy/memmove expansion. + +2020-11-21 Aaron Sawdey + + * config/rs6000/mma.md (unspec): Add assemble/extract UNSPECs. + (movoi): Change to movoo. + (*movpoi): Change to *movoo. + (movxi): Change to movxo. + (*movpxi): Change to *movxo. + (mma_assemble_pair): Change to OO mode. + (*mma_assemble_pair): New define_insn_and_split. + (mma_disassemble_pair): New define_expand. + (*mma_disassemble_pair): New define_insn_and_split. + (mma_assemble_acc): Change to XO mode. + (*mma_assemble_acc): Change to XO mode. + (mma_disassemble_acc): New define_expand. + (*mma_disassemble_acc): New define_insn_and_split. + (mma_): Change to XO mode. + (mma_): Change to XO mode. + (mma_): Change to XO mode. + (mma_): Change to OO mode. + (mma_): Change to XO/OO mode. + (mma_): Change to XO mode. + (mma_): Change to XO mode. + (mma_): Change to XO mode. + (mma_): Change to XO mode. + (mma_): Change to XO mode. + (mma_): Change to XO mode. + (mma_): Change to XO/OO mode. + (mma_): Change to XO/OO mode. + (mma_): Change to XO mode. + (mma_): Change to XO mode. + * config/rs6000/predicates.md (input_operand): Allow opaque. + (mma_disassemble_output_operand): New predicate. + * config/rs6000/rs6000-builtin.def: + Changes to disassemble builtins. + * config/rs6000/rs6000-call.c (rs6000_return_in_memory): + Disallow __vector_pair/__vector_quad as return types. + (rs6000_promote_function_mode): Remove function return type + check because we can't test it here any more. + (rs6000_function_arg): Do not allow __vector_pair/__vector_quad + as as function arguments. + (rs6000_gimple_fold_mma_builtin): + Handle mma_disassemble_* builtins. + (rs6000_init_builtins): Create types for XO/OO modes. + * config/rs6000/rs6000-modes.def: DElete OI, XI, + POI, and PXI modes, and create XO and OO modes. + * config/rs6000/rs6000-string.c (expand_block_move): + Update to OO mode. + * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok_uncached): + Update for XO/OO modes. + (rs6000_rtx_costs): Make UNSPEC_MMA_XXSETACCZ cost 0. + (rs6000_modes_tieable_p): Update for XO/OO modes. + (rs6000_debug_reg_global): Update for XO/OO modes. + (rs6000_setup_reg_addr_masks): Update for XO/OO modes. + (rs6000_init_hard_regno_mode_ok): Update for XO/OO modes. + (reg_offset_addressing_ok_p): Update for XO/OO modes. + (rs6000_emit_move): Update for XO/OO modes. + (rs6000_preferred_reload_class): Update for XO/OO modes. + (rs6000_split_multireg_move): Update for XO/OO modes. + (rs6000_mangle_type): Update for opaque types. + (rs6000_invalid_conversion): Update for XO/OO modes. + * config/rs6000/rs6000.h (VECTOR_ALIGNMENT_P): + Update for XO/OO modes. + * config/rs6000/rs6000.md (RELOAD): Update for XO/OO modes. + +2020-11-21 Aaron Sawdey + + * typeclass.h: Add opaque_type_class. + * builtins.c (type_to_class): Identify opaque type class. + * dwarf2out.c (is_base_type): Handle opaque types. + (gen_type_die_with_usage): Handle opaque types. + * expr.c (count_type_elements): Opaque types should + never have initializers. + * ipa-devirt.c (odr_types_equivalent_p): No type-specific handling + for opaque types is needed as it eventually checks the underlying + mode which is what is important. + * tree-streamer.c (record_common_node): Handle opaque types. + * tree.c (type_contains_placeholder_1): Handle opaque types. + (type_cache_hasher::equal): No additional comparison needed for + opaque types. + +2020-11-20 Michael Meissner + + * config/rs6000/rs6000-call.c (rs6000_expand_builtin): Add missing + XSCMP* cases for IEEE 128-bit long double. + +2020-11-20 Jason Merrill + + PR c++/97918 + * dwarf2out.c (dwarf2out_early_finish): flush_limbo_die_list + after gen_scheduled_generic_parms_dies. + +2020-11-20 Martin Sebor + + PR middle-end/97879 + * tree-core.h (enum attribute_flags): Add ATTR_FLAG_INTERNAL. + +2020-11-20 Jan Hubicka + + * ipa-icf-gimple.c (func_checker::hash_operand): Improve hashing of + decls. + +2020-11-20 Jan Hubicka + + * ipa-icf-gimple.c (func_checker::compare_decl): Do not compare types + of local variables. + +2020-11-20 Nathan Sidwell + + * doc/invoke.texi: Replace a couple of @code with @command + +2020-11-20 Tamar Christina + + * tree-vect-slp.c (vectorizable_slp_permutation): Update types on nodes + when needed. + +2020-11-20 Richard Biener + + * tree-vect-slp.c (maybe_push_to_hybrid_worklist): New function. + (vect_detect_hybrid_slp): Use it. Perform a backward walk + over the IL. + +2020-11-20 Richard Biener + + * tree-vect-slp.c (vect_print_slp_tree): Also dump + SLP_TREE_REPRESENTATIVE. + +2020-11-20 Jakub Jelinek + + PR libstdc++/88101 + * builtins.def (BUILT_IN_CLEAR_PADDING): New built-in function. + * gimplify.c (gimplify_call_expr): Rewrite single argument + BUILT_IN_CLEAR_PADDING into two-argument variant. + * gimple-fold.c (clear_padding_unit, clear_padding_buf_size): New + const variables. + (struct clear_padding_struct): New type. + (clear_padding_flush, clear_padding_add_padding, + clear_padding_emit_loop, clear_padding_type, + clear_padding_union, clear_padding_real_needs_padding_p, + clear_padding_type_may_have_padding_p, + gimple_fold_builtin_clear_padding): New functions. + (gimple_fold_builtin): Handle BUILT_IN_CLEAR_PADDING. + * doc/extend.texi (__builtin_clear_padding): Document. + +2020-11-20 Jakub Jelinek + + PR target/97528 + * config/arm/arm.c (neon_vector_mem_operand): For POST_MODIFY, require + first POST_MODIFY operand is a REG and is equal to the first operand + of PLUS. + +2020-11-20 Eric Botcazou + + * gimple-ssa-store-merging.c (struct merged_store_group): Add + new 'consecutive' field. + (merged_store_group): Set it to true. + (do_merge): Set it to false if the store is not consecutive and + set string_concatenation to false in this case. + (merge_into): Call do_merge on entry. + (merge_overlapping): Likewise. + +2020-11-20 Jan Hubicka + + * ipa-icf-gimple.c (func_checker::operand_equal_p): Fix comment. + +2020-11-20 Jan Hubicka + + * ipa-icf-gimple.c (func_checker::hash_operand): Hash gimple clobber. + (func_checker::operand_equal_p): Special case gimple clobber. + +2020-11-20 Uroš Bizjak + + PR target/97873 + * config/i386/i386.md (*neg2_2): Rename from + "*neg2_cmpz". Use CCGOCmode instead of CCZmode. + (*negsi2_zext): Rename from *negsi2_cmpz_zext. + Use CCGOCmode instead of CCZmode. + (*neg_ccc_1): New insn pattern. + (*neg2_doubleword): Use *neg_ccc_1. + (abs2): Add FLAGS_REG clobber. + Use TARGET_CMOVE insn predicate. + (*abs2_1): New insn_and_split pattern. + (*absdi2_doubleword): Ditto. + (3): Use SWI48x mode iterator. + (*3): Use SWI48 mode iterator. + * config/i386/i386-features.c + (general_scalar_chain::compute_convert_gain): Handle ABS code. + (general_scalar_chain::convert_insn): Ditto. + (general_scalar_to_vector_candidate_p): Ditto. + +2020-11-20 Jakub Jelinek + + PR other/97911 + * configure.ac: In SERIAL_LIST use lang words without .serial + suffix. Change $lang.prev from a target to variable and instead + of depending on *.serial expand to the *.serial variable if + the word is in the SERIAL_LIST at all, otherwise to nothing. + * configure: Regenerated. + +2020-11-20 Kewen Lin + + * config/rs6000/rs6000.md (p8_mtvsrd_df): Fix insn type. + +2020-11-20 Martin Uecker + + * gimplify.c (gimplify_modify_expr_rhs): Optimizie + NOP_EXPRs that contain compound literals. + +2020-11-19 Jakub Jelinek + + PR tree-optimization/91029 + * range-op.cc (operator_trunc_mod::op1_range): Don't require signed + types, nor require that op2 >= 0. Implement (a % b) >= x && x > 0 + implies a >= x and (a % b) <= x && x < 0 implies a <= x. + (operator_trunc_mod::op2_range): New method. + +2020-11-19 Andrew MacLeod + + PR tree-optimization/93781 + * range-op.cc (get_shift_range): Rename from + undefined_shift_range_check and now return valid shift ranges. + (operator_lshift::fold_range): Use result from get_shift_range. + (operator_rshift::fold_range): Ditto. + +2020-11-19 Jan Hubicka + + * fold-const.c (operand_compare::operand_equal_p): Fix thinko in + COMPONENT_REF handling and guard types_same_for_odr by + virtual_method_call_p. + (operand_compare::hash_operand): Likewise. + +2020-11-19 Jakub Jelinek + + PR c/97860 + * tree.c (array_type_nelts): For complete arrays with zero min + and NULL max and zero size return -1. + +2020-11-19 Nathan Sidwell + + * configure.ac: Add tests for fstatat, sighandler_t, O_CLOEXEC, + unix-domain and ipv6 sockets. + * config.in: Rebuilt. + * configure: Rebuilt. + +2020-11-19 Dimitar Dimitrov + + * config/pru/alu-zext.md: Add lmbd patterns for zero_extend + variants. + * config/pru/pru.c (enum pru_builtin): Add HALT and LMBD. + (pru_init_builtins): Ditto. + (pru_builtin_decl): Ditto. + (pru_expand_builtin): Ditto. + * config/pru/pru.h (CLZ_DEFINED_VALUE_AT_ZERO): Define PRU + value for CLZ with zero value parameter. + * config/pru/pru.md: Add halt, lmbd and clz patterns. + * doc/extend.texi: Document PRU builtins. + +2020-11-19 Richard Sandiford + + * doc/invoke.texi (-fvect-cost-model): Add a very-cheap model. + * common.opt (fvect-cost-model=): Add very-cheap as a possible option. + (fsimd-cost-model=): Likewise. + (vect_cost_model): Add very-cheap. + * flag-types.h (vect_cost_model): Add VECT_COST_MODEL_VERY_CHEAP. + Put the values in order of increasing aggressiveness. + * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Use + range checks when comparing against VECT_COST_MODEL_CHEAP. + (vect_prune_runtime_alias_test_list): Do not allow any alias + checks for the very-cheap cost model. + * tree-vect-loop.c (vect_analyze_loop_costing): Do not allow + any peeling for the very-cheap cost model. Also require one + iteration of the vector loop to pay for itself. + +2020-11-19 Wilco Dijkstra + + * config/aarch64/aarch64.c (neoversen1_tunings): Use new + cortexa76_extra_costs. + (neoversev1_tunings): Likewise. + (neoversen2_tunines): Likewise. + * config/arm/aarch-cost-tables.h (cortexa76_extra_costs): + add new costs. + +2020-11-19 Wilco Dijkstra + + * config/aarch64/aarch64.c (aarch64_expand_cpymem): Cleanup code and + comments, tweak expansion decisions and improve tail expansion. + +2020-11-19 Richard Biener + + * fold-const.c (operand_compare::hash_operand): Fix typo. + +2020-11-19 Richard Biener + + * tree-ssa-reassoc.c (get_rank): Refactor to consistently + use the cache and dump ranks assigned. + +2020-11-19 Jan Hubicka + + * fold-const.c (operand_compare::operand_equal_p): More OBJ_TYPE_REF + matching to correct place; drop OEP_ADDRESS_OF for TOKEN, OBJECT and + class. + (operand_compare::hash_operand): Hash ODR type for OBJ_TYPE_REF. + +2020-11-19 Joel Hutton + + * config/aarch64/aarch64-simd.md: Add vec_widen_lshift_hi/lo + patterns. + * tree-vect-stmts.c (vectorizable_conversion): Fix for widen_lshift + case. + +2020-11-19 Joel Hutton + + * doc/generic.texi: Document new widen_plus/minus_lo/hi tree codes. + * doc/md.texi: Document new widenening add/subtract hi/lo optabs. + * expr.c (expand_expr_real_2): Add widen_add, widen_subtract cases. + * optabs-tree.c (optab_for_tree_code): Add case for widening optabs. + * optabs.def (OPTAB_D): Define vectorized widen add, subtracts. + * tree-cfg.c (verify_gimple_assign_binary): Add case for widening adds, + subtracts. + * tree-inline.c (estimate_operator_cost): Add case for widening adds, + subtracts. + * tree-vect-generic.c (expand_vector_operations_1): Add case for + widening adds, subtracts + * tree-vect-patterns.c (vect_recog_widen_add_pattern): New recog + pattern. + (vect_recog_widen_sub_pattern): New recog pattern. + (vect_recog_average_pattern): Update widened add code. + (vect_recog_average_pattern): Update widened add code. + * tree-vect-stmts.c (vectorizable_conversion): Add case for widened add, + subtract. + (supportable_widening_operation): Add case for widened add, subtract. + * tree.def + (WIDEN_PLUS_EXPR): New tree code. + (WIDEN_MINUS_EXPR): New tree code. + (VEC_WIDEN_ADD_HI_EXPR): New tree code. + (VEC_WIDEN_PLUS_LO_EXPR): New tree code. + (VEC_WIDEN_MINUS_HI_EXPR): New tree code. + (VEC_WIDEN_MINUS_LO_EXPR): New tree code. + +2020-11-19 Joel Hutton + + * config/aarch64/aarch64-simd.md: New patterns + vec_widen_saddl_lo/hi_. + +2020-11-19 Richard Biener + + PR tree-optimization/97901 + * tree-ssa-propagate.c (clean_up_loop_closed_phi): Compute + dominators and use replace_uses_by. + +2020-11-19 Eric Botcazou + + * dwarf2out.h (struct fixed_point_type_info) : Turn + numerator and denominator into a tree. + * dwarf2out.c (base_type_die): In the case of a fixed-point type + with arbitrary scale factor, call add_scalar_info on numerator and + denominator to emit the appropriate attributes. + +2020-11-19 Richard Biener + + PR tree-optimization/97897 + * tree-complex.c (complex_propagate::visit_stmt): Make sure + abnormally used SSA names are VARYING. + (complex_propagate::visit_phi): Likewise. + * tree-ssa.c (verify_phi_args): Verify PHI arguments on abnormal + edges are SSA names. + +2020-11-19 Uroš Bizjak + + * config/i386/i386.md (*2_i387_1): + Disable for TARGET_SSE_MATH modes. + +2020-11-19 Jeff Law + + * config/h8300/constraints.md (R constraint): Add argument to call + to h8300_shift_needs_scratch_p. + (S and T constraints): Similary. + * config/h8300/h8300-protos.h: Update h8300_shift_needs_scratch_p + prototype. + * config/h8300/h8300.c (expand_a_shift): Emit a different pattern + if the shift does not require a scratch register. + (h8300_shift_needs_scratch_p): Refine to be more accurate. + * config/h8300/shiftrotate.md (shiftqi_noscratch): New pattern. + (shifthi_noscratch, shiftsi_noscratch): Similarly. + +2020-11-18 Roger Sayle + + PR middle-end/85811 + * fold-const.c (tree_expr_finite_p): New function to test whether + a tree expression must be finite, i.e. not a FP NaN or infinity. + (tree_expr_infinite_p): New function to test whether a tree + expression must be infinite, i.e. a FP infinity. + (tree_expr_maybe_infinite_p): New function to test whether a tree + expression may be infinite, i.e. a FP infinity. + (tree_expr_signaling_nan_p): New function to test whether a tree + expression must evaluate to a signaling NaN (sNaN). + (tree_expr_maybe_signaling_nan_p): New function to test whether a + tree expression may be a signaling NaN (sNaN). + (tree_expr_nan_p): New function to test whether a tree expression + must evaluate to a (quiet or signaling) NaN. + (tree_expr_maybe_nan_p): New function to test whether a tree + expression me be a (quiet or signaling) NaN. + (tree_binary_nonnegative_warnv_p) [MAX_EXPR]: In the presence + of NaNs, MAX_EXPR is only guaranteed to be non-negative, if both + operands are non-negative. + (tree_call_nonnegative_warnv_p) [CASE_CFN_FMAX,CASE_CFN_FMAX_FN]: + In the presence of signaling NaNs, fmax is only guaranteed to be + non-negative if both operands are negative. In the presence of + quiet NaNs, fmax is non-negative if either operand is non-negative + and not a qNaN, or both operands are non-negative. + * fold-const.h (tree_expr_finite_p, tree_expr_infinite_p, + tree_expr_maybe_infinite_p, tree_expr_signaling_nan_p, + tree_expr_maybe_signaling_nan_p, tree_expr_nan_p, + tree_expr_maybe_nan_p): Prototype new functions here. + * builtins.c (fold_builtin_classify) [BUILT_IN_ISINF]: Fold to + a constant if argument is known to be (or not to be) an Infinity. + [BUILT_IN_ISFINITE]: Fold to a constant if argument is known to + be (or not to be) finite. + [BUILT_IN_ISNAN]: Fold to a constant if argument is known to be + (or not to be) a NaN. + (fold_builtin_fpclassify): Check tree_expr_maybe_infinite_p and + tree_expr_maybe_nan_p instead of HONOR_INFINITIES and HONOR_NANS + respectively. + (fold_builtin_unordered_cmp): Fold UNORDERED_EXPR to a constant + when its arguments are known to be (or not be) NaNs. Check + tree_expr_maybe_nan_p instead of HONOR_NANS when choosing between + unordered and regular forms of comparison operators. + * match.pd (ordered(x,y)->true/false): Constant fold ORDERED_EXPR + if its operands are known to be (or not to be) NaNs. + (unordered(x,y)->true/false): Constant fold UNORDERED_EXPR if its + operands are known to be (or not to be) NaNs. + (sqrt(x)*sqrt(x)->x): Check tree_expr_maybe_signaling_nan_p instead + of HONOR_SNANS. + +2020-11-18 Jakub Jelinek + + PR tree-optimization/91029 + PR tree-optimization/97888 + * range-op.cc (operator_trunc_mod::op1_range): Only set op1 + range to >= 0 if lhs is > 0, rather than >= 0. Fix up comments. + +2020-11-18 Jakub Jelinek + + * opts.h (struct cl_var): New type. + (cl_vars): Declare. + * optc-gen.awk: Generate cl_vars array. + +2020-11-18 Eugene Rozenfeld + + PR tree-optimization/96671 + * match.pd (three xor patterns): New patterns. + +2020-11-18 Jakub Jelinek + + * optc-save-gen.awk: Initialize var_opt_init. In + cl_optimization_stream_out for params with default values larger than + 10, xor the default value with the actual parameter value. In + cl_optimization_stream_in repeat the above xor. + +2020-11-18 Jakub Jelinek + + * configure.ac: Add $lang.prev rules, INDEX.$lang and SERIAL_LIST and + SERIAL_COUNT variables to Make-hooks. + (--enable-link-serialization): New configure option. + * Makefile.in (DO_LINK_SERIALIZATION, LINK_PROGRESS): New variables. + * doc/install.texi (--enable-link-serialization): Document. + * configure: Regenerated. + +2020-11-18 Vladimir Makarov + + PR target/97870 + * lra-constraints.c (curr_insn_transform): Do not delete asm goto + with wrong constraints. Nullify it saving CFG. + +2020-11-18 Jozef Lawrynowicz + + * config/msp430/msp430.md (mulhi3): New. + (mulsi3): New. + (mulsidi3): Rename to *mulsidi3_inline. + (umulsidi3): Rename to *umulsidi3_inline. + (mulsidi3): New define_expand. + (umulsidi3): New define_expand. + +2020-11-18 Richard Biener + + PR tree-optimization/97886 + * tree-vect-loop.c (vectorizable_lc_phi): Properly assign + vector types to invariants for SLP. + +2020-11-18 Iain Buclaw + + * config.gcc (*-*-dragonfly*): Add dragonfly-d.o and t-dragonfly. + * config/dragonfly-d.c: New file. + * config/t-dragonfly: New file. + +2020-11-18 Jakub Jelinek + + PR middle-end/97862 + * omp-expand.c (expand_omp_for_init_vars): Don't use the sqrt path + if number of iterations is constant 0. + +2020-11-18 Kito Cheng + + * common/config/riscv/riscv-common.c (riscv_ext_version): New. + (riscv_ext_version_table): Ditto. + (get_default_version): Ditto. + (riscv_subset_t::implied_p): New field. + (riscv_subset_t::riscv_subset_t): Init implied_p. + (riscv_subset_list::add): New. + (riscv_subset_list::handle_implied_ext): Pass riscv_subset_t + instead of separated argument. + (riscv_subset_list::to_string): Handle zifencei and zicsr, and + omit version if version is unknown. + (riscv_subset_list::parsing_subset_version): New argument `ext`, + remove default_major_version and default_minor_version, get + default version info via get_default_version. + (riscv_subset_list::parse_std_ext): Update argument for + parsing_subset_version calls. + Handle 2.2 ISA spec, always enable zicsr and zifencei, they are + included in baseline ISA in that time. + (riscv_subset_list::parse_multiletter_ext): Update argument for + `parsing_subset_version` and `add` calls. + (riscv_subset_list::parse): Adjust argument for + riscv_subset_list::handle_implied_ext call. + * config.gcc (riscv*-*-*): Handle --with-isa-spec=. + * config.in (HAVE_AS_MISA_SPEC): New. + (HAVE_AS_MARCH_ZIFENCEI): Ditto. + * config/riscv/riscv-opts.h (riscv_isa_spec_class): New. + (riscv_isa_spec): Ditto. + * config/riscv/riscv.h (HAVE_AS_MISA_SPEC): New. + (ASM_SPEC): Pass -misa-spec if gas supported. + * config/riscv/riscv.opt (riscv_isa_spec_class) New. + * configure.ac (HAVE_AS_MARCH_ZIFENCEI): New test. + (HAVE_AS_MISA_SPEC): Ditto. + * configure: Regen. + +2020-11-18 Kito Cheng + + * common/config/riscv/riscv-common.c (riscv_implied_info): + d and f implied zicsr. + (riscv_ext_flag_table): Handle zicsr and zifencei. + * config/riscv/riscv-opts.h (MASK_ZICSR): New. + (MASK_ZIFENCEI): Ditto. + (TARGET_ZICSR): Ditto. + (TARGET_ZIFENCEI): Ditto. + * config/riscv/riscv.md (clear_cache): Check TARGET_ZIFENCEI. + (fence_i): Ditto. + * config/riscv/riscv.opt (riscv_zi_subext): New. + +2020-11-18 Kito Cheng + + * common/config/riscv/riscv-common.c (single_letter_subset_rank): New. + (multi_letter_subset_rank): Ditto. + (subset_cmp): Ditto. + (riscv_subset_list::add): Insert subext in canonical ordering. + (riscv_subset_list::parse_std_ext): Move handle_implied_ext to ... + (riscv_subset_list::parse): ... here. + +2020-11-18 Jiufu Guo + + * cfgloop.h (loop_optimizer_finalize): Add flag argument. + * loop-init.c (loop_optimizer_finalize): Call clean_up_loop_closed_phi. + * tree-cfgcleanup.h (clean_up_loop_closed_phi): New declare. + * tree-ssa-loop.c (tree_ssa_loop_done): Call loop_optimizer_finalize + with flag argument. + * tree-ssa-propagate.c (clean_up_loop_closed_phi): New function. + +2020-11-17 Sebastian Pop + + * config.gcc: add configure flags --with-{cpu,arch,tune}-{32,64} + as alias flags for --with-{cpu,arch,tune} on AArch64. + * doc/install.texi: Document new flags for aarch64. + +2020-11-17 Sebastian Pop + + * config.gcc: Add --with-tune to AArch64 configure flags. + +2020-11-17 Andrew MacLeod + + PR tree-optimization/91029 + * range-op.cc (operator_trunc_mod::op1_range): New. + +2020-11-17 Jan Hubicka + + * ipa-icf.c (sem_function::hash_stmt): Fix conditional on + variably_modified_type_p. + +2020-11-17 Nathan Sidwell + + * tree.h (cache_integer_cst): Add defaulted might_duplicate parm. + * tree.c (cache_integer_cst): Return the integer cst, add + might_duplicate parm to permit finding a small duplicate. + +2020-11-17 Andrew MacLeod + + PR tree-optimization/83072 + * range-op.cc (wi_optimize_and_or): Remove zero from IOR range when + mask is non-zero. + +2020-11-17 Joseph Myers + + * ginclude/float.h (CR_DECIMAL_DIG): Also define for + [__STDC_WANT_IEC_60559_EXT__]. + +2020-11-17 Joseph Myers + + * ginclude/float.h [__STDC_VERSION__ > 201710L] (FLT_IS_IEC_60559, + DBL_IS_IEC_60559, LDBL_IS_IEC_60559): New macros. + +2020-11-17 Aaron Sawdey + + PR target/96791 + * mode-classes.def: Add MODE_OPAQUE. + * machmode.def: Add OPAQUE_MODE. + * tree.def: Add OPAQUE_TYPE for types that will use + MODE_OPAQUE. + * doc/generic.texi: Document OPAQUE_TYPE. + * doc/rtl.texi: Document MODE_OPAQUE. + * machmode.h: Add OPAQUE_MODE_P(). + * genmodes.c (complete_mode): Add MODE_OPAQUE. + (opaque_mode): New function. + * tree.c (tree_code_size): Add OPAQUE_TYPE. + * tree.h: Add OPAQUE_TYPE_P(). + * stor-layout.c (int_mode_for_mode): Treat MODE_OPAQUE modes + like BLKmode. + * ira.c (find_moveable_pseudos): Treat MODE_OPAQUE modes more + like integer/float modes here. + * dbxout.c (dbxout_type): Treat OPAQUE_TYPE like VOID_TYPE. + * tree-pretty-print.c (dump_generic_node): Treat OPAQUE_TYPE + like like other types. + +2020-11-17 Jan Hubicka + Martin Liska + + * ipa-icf.c: Include data-streamer.h and alias.h. + (sem_function::sem_function): Initialize memory_access_types + and m_alias_sets_hash. + (sem_function::hash_stmt): For memory accesses and when going to + do lto streaming add base and ref types into memory_access_types. + (sem_item_optimizer::write_summary): Stream memory access types. + (sem_item_optimizer::read_section): Likewise and also iniitalize + m_alias_sets_hash. + (sem_item_optimizer::execute): Call + sem_item_optimizer::update_hash_by_memory_access_type. + (sem_item_optimizer::update_hash_by_memory_access_type): Updat. + * ipa-icf.h (sem_function): Add memory_access_types and + m_alias_sets_hash. + +2020-11-17 Jan Hubicka + + PR bootstrap/97857 + * ipa-devirt.c (odr_based_tbaa_p): Do not ICE when + odr_hash is not initialized + * ipa-utils.h (type_with_linkage_p): Do not sanity check + CXX_ODR_P. + * tree-streamer-out.c (pack_ts_type_common_value_fields): Set + CXX_ODR_P according to the canonical type. + +2020-11-17 Nathan Sidwell + + * langhooks-def.h (LANG_HOOKS_PREPROCESS_MAIN_FILE) + (LANG_HOOKS_PREPROCESS_OPTIONS, LANG_HOOKS_PREPROCESS_UNDEF) + (LANG_HOOKS_PREPROCESS_TOKEN): New. + (LANG_HOOKS_INITIALIZER): Add them. + * langhooks.h (struct lang_hooks): Add preprocess_main_file, + preprocess_options, preprocess_undef, preprocess_token hooks. Add + enum PT_flags. + +2020-11-17 Richard Sandiford + + PR tree-optimization/97693 + * tree-vect-stmts.c (vectorizable_call): Pass the required vectype + to vect_get_vec_defs_for_operand. + +2020-11-17 Liu Hao + + * config/i386/msformat-c.c: Add more length modifiers. + +2020-11-17 Tamar Christina + + PR driver/97574 + * gcc.c (convert_filename): Don't add suffix to things that are + not files. + (not_actual_file_p): Use supplied argument. + +2020-11-17 Haochen Gui + + * final.c (final_scan_insn_1): Set jump table relocatable as the + second argument of targetm.asm_out.function_rodata_section. + * output.h (default_function_rodata_section, + default_no_function_rodata_section): Add the second argument to the + declarations. + * target.def (function_rodata_section): Change the doc and add + the second argument. + * doc/tm.texi: Regenerate. + * varasm.c (jumptable_relocatable): Implement. + (default_function_rodata_section): Add the second argument + and the support for relocatable read only sections. + (default_no_function_rodata_section): Add the second argument. + (function_mergeable_rodata_prefix): Set the second argument to false. + * config/mips/mips.c (mips_function_rodata_section): Add the second + arugment and set it to false. + * config/s390/s390.c (targetm.asm_out.function_rodata_section): Set + the second argument to false. + * config/s390/s390.md: Likewise. + +2020-11-17 liuhongt + + PR target/97194 + * config/i386/i386-expand.c (ix86_expand_vector_set_var): New function. + * config/i386/i386-protos.h (ix86_expand_vector_set_var): New Decl. + * config/i386/predicates.md (vec_setm_operand): New predicate, + true for const_int_operand or register_operand under TARGET_AVX2. + * config/i386/sse.md (vec_set): Support both constant + and variable index vec_set. + +2020-11-17 Martin Sebor + + * tree-ssa-uninit.c (maybe_warn_operand): Call is_empty_type. + * tree.c (default_is_empty_type): Rename... + (is_empty_type): ...to this. + * tree.h (is_empty_type): Declare. + +2020-11-17 Martin Sebor + + PR middle-end/95673 + * tree-ssa-strlen.c (used_only_for_zero_equality): Rename... + (use_in_zero_equality): ...to this. Add a default argument. + (handle_builtin_memcmp): Adjust to the name change above. + (handle_builtin_string_cmp): Same. + (maybe_warn_pointless_strcmp): Same. Pass in an explicit argument. + +2020-11-17 Joseph Myers + + * ginclude/float.h (DEC32_SNAN, DEC64_SNAN, DEC128_SNAN): New C2x + macros. + +2020-11-17 Joseph Myers + + * ginclude/float.h (INFINITY, NAN, FLT_SNAN, DBL_SNAN, LDBL_SNAN) + (FLT16_SNAN, FLT32_SNAN, FLT64_SNAN, FLT128_SNAN, FLT32X_SNAN) + (FLT64X_SNAN, FLT128X_SNAN, DEC_INFINITY, DEC_NAN): New C2x + macros. + * doc/sourcebuild.texi (Effective-Target Keywords): Document inff. + +2020-11-17 Armin Brauns via Gcc-patches + + * gcc.c: Document %T spec file directive. + * doc/invoke.texi: Remove %p, %P spec file directives. + Add %M, %R, %V, %nSTR, %>S, % + + PR rtl-optimization/92180 + * config/i386/i386.c (ix86_hardreg_mov_ok): New function to + determine whether (set DST SRC) should be allowed at this point. + * config/i386/i386-protos.h (ix86_hardreg_mov_ok): Prototype here. + * config/i386/i386-expand.c (ix86_expand_move): Check whether + this is a complex set of a likely spilled hard register, and if + so place the value in a pseudo, and load the hard reg from it. + * config/i386/i386.md (*movdi_internal, *movsi_internal) + (*movhi_internal, *movqi_internal): Make these instructions + conditional on ix86_hardreg_mov_ok. + (*lea): Make this define_insn_and_split conditional on + ix86_hardreg_mov_ok. + +2020-11-16 Martin Liska + + * params.opt: Add missing dot. + +2020-11-16 Jan Hubicka + + * ipa-modref.c (escape_point): New type. + (modref_lattice): New type. + (escape_entry): New type. + (escape_summary): New type. + (escape_summaries_t): New type. + (escape_summaries): New static variable. + (eaf_flags_useful_p): New function. + (modref_summary::useful_p): Add new check_flags + attribute; check eaf_flags for usefulness. + (modref_summary_lto): Add arg_flags. + (modref_summary_lto::useful_p): Add new check_flags + attribute; check eaf_flags for usefulness. + (dump_modref_edge_summaries): New function. + (remove_modref_edge_summaries): New function. + (ignore_retval_p): New predicate. + (ignore_stores_p): Also ignore for const. + (remove_summary): Call remove_modref_edge_summaries. + (modref_lattice::init): New member function. + (modref_lattice::release): New member unction. + (modref_lattice::dump): New member function. + (modref_lattice::add_escape_point): New member function. + (modref_lattice::merge): Two new member functions. + (modref_lattice::merge_deref): New member functions. + (modref_lattice::merge_direct_load): New member function. + (modref_lattice::merge_direct_store): New member function. + (call_lhs_flags): Rename to ... + (merge_call_lhs_flags): ... this one; reimplement using + modreflattice. + (analyze_ssa_name_flags): Replace KNOWN_FLAGS param by LATTICE; + add IPA parametr; use modref_lattice. + (analyze_parms): New parameter IPA and SUMMARY_LTO; update for + modref_lattice; initialize escape_summary. + (analyze_function): Allocate escape_summaries; update uses of useful_p. + (modref_write_escape_summary): New function. + (modref_read_escape_summary): New function. + (modref_write): Write escape summary. + (read_section): Read escape summary. + (modref_read): Initialie escape_summaries. + (remap_arg_flags): New function. + (update_signature): Use it. + (escape_map): New structure. + (update_escape_summary_1, update_escape_summary): New functions. + (ipa_merge_modref_summary_after_inlining): Merge escape summaries. + (propagate_unknown_call): Do not remove useless summaries. + (remove_useless_summaries): Remove them here. + (modref_propagate_in_scc): Update; do not dump scc. + (modref_propagate_dump_scc): New function. + (modref_merge_call_site_flags): New function. + (modref_propagate_flags_in_scc): New function. + (pass_ipa_modref::execute): Use modref_propagate_flags_in_scc + and modref_propagate_dump_scc; delete escape_summaries. + (ipa_modref_c_finalize): Remove escape_summaries. + * ipa-modref.h (modref_summary): Update prototype of useful_p. + * params.opt (param=modref-max-escape-points): New param. + * doc/invoke.texi (modref-max-escape-points): Document. + +2020-11-16 Jan Hubicka + + PR middle-end/97840 + * ipa-modref.c (analyze_ssa_name_flags): Skip clobbers if inlining + is done. + * tree-ssa-uninit.c (maybe_warn_pass_by_reference): Make stmt gcall; + skip const calls and unused arguments. + (warn_uninitialized_vars): Update prototype. + +2020-11-16 Richard Biener + + * tree-vectorizer.h (vect_gather_slp_loads): Declare. + * tree-vect-loop.c (vect_analyze_loop_2): Call + vect_gather_slp_loads. + * tree-vect-slp.c (vect_build_slp_instance): Do not gather + SLP loads here. + (vect_gather_slp_loads): Remove wrapper, new function. + (vect_slp_analyze_bb_1): Call it. + +2020-11-16 Richard Biener + + * tree-ssa-loop-im.c (analyze_memory_references): Add + store_motion parameter and elide unnecessary work. + (tree_ssa_lim_initialize): Likewise. + (loop_invariant_motion_in_fun): Pass down store_motion. + +2020-11-16 Martin Liska + + * params.opt: All modref parameters miss Optimization and Param + keyword as seen in testsuite failure. + +2020-11-16 Jan Hubicka + + * params.opt (-param=modref-max-depth=): Add missing full stop. + +2020-11-16 Sebastian Huber + + * common.opt (fprofile-info-section): New. + * coverage.c (build_gcov_info_var_registration): New. + (coverage_obj_init): Evaluate profile_info_section and use + build_gcov_info_var_registration(). + * doc/invoke.texi (fprofile-info-section): Document. + * opts.c (common_handle_option): Process fprofile-info-section + option. + +2020-11-16 Richard Biener + + PR tree-optimization/97838 + * tree-vect-slp.c (vect_slp_build_vertices): Properly handle + not backwards reachable cycles. + (vect_optimize_slp): Check a node is leaf before marking it + visited. + +2020-11-16 Martin Liska + + PR tree-optimization/97736 + * tree-switch-conversion.c (switch_decision_tree::analyze_switch_statement): + Prefer bit tests. + +2020-11-16 Richard Biener + + PR tree-optimization/97835 + * tree-vect-loop.c (vectorizable_induction): Convert step + scalars rather than step vector. + +2020-11-16 Richard Biener + + PR tree-optimization/97830 + * tree-ssa-sccvn.c (vn_reference_eq): Check for incomplete + types before comparing TYPE_SIZE. + +2020-11-16 Cui,Lili + + * config/i386/i386.h: Add PREFETCHW to march=broadwell. + * doc/invoke.texi: Put PREFETCHW back to relation arch. + +2020-11-15 Jozef Lawrynowicz + + * config/msp430/msp430.c (msp430_output_labelref): Don't process mspabi + hwmult library function names into GCC-style names. + +2020-11-15 Jozef Lawrynowicz + + * config/msp430/msp430.c (msp430_use_16bit_hwmult): New. + (use_32bit_hwmult): Rename to.. + (msp430_use_32bit_hwmult): ..this. + (msp430_muldiv_costs): Use msp430_use_16bit_hwmult and + msp430_use_32bit_hwmult. + (msp430_expand_helper): Use msp430_use_16bit_hwmult and + msp430_use_32bit_hwmult. + (msp430_output_labelref): Use msp430_use_32bit_hwmult. + +2020-11-15 Maciej W. Rozycki + + * config/vax/vax.c (vax_rtx_costs): Use `rtx_code' rather than + `int' for `code'. + +2020-11-15 Maciej W. Rozycki + + * config/vax/vax.c (vax_output_int_add) : Fix a typo + in NO_EXTERNAL_INDIRECT_ADDRESS. + +2020-11-15 Maciej W. Rozycki + + * config/vax/vax.c (vax_output_int_add) : Also check + `operands[2]' for being symbolic with PIC rather than checking + `operands[1]' twice. + +2020-11-15 Aldy Hernandez + + * vr-values.c (vr_values::extract_range_builtin): Rename to... + (vr_values::extract_range_from_ubsan_builtin): ...this. + Remove everything but UBSAN code. + (vr_values::extract_range_basic): Call ranger version for + everything except UBSAN built-ins. + * vr-values.h (class vr_values): Rename extract_range_builtin to + extract_range_from_ubsan_builtin. + +2020-11-15 Vladimir N. Makarov + + * lra.c (lra_process_new_insns): Don't put reload insns in the + last empty BB. + +2020-11-15 Jan Hubicka + + * ipa-modref.c (analyze_ssa_name_flags): Make return to clear + EAF_UNUSED flag. + +2020-11-14 Jan Hubicka + + * gimple.c: Include ipa-modref-tree.h and ipa-modref.h. + (gimple_call_arg_flags): Use modref to determine flags. + * ipa-modref.c: Include gimple-ssa.h, tree-phinodes.h, + tree-ssa-operands.h, stringpool.h and tree-ssanames.h. + (analyze_ssa_name_flags): Declare. + (modref_summary::useful_p): Summary is also useful if arg flags are + known. + (dump_eaf_flags): New function. + (modref_summary::dump): Use it. + (get_modref_function_summary): Be read for current_function_decl + being NULL. + (memory_access_to): New function. + (deref_flags): New function. + (call_lhs_flags): New function. + (analyze_parms): New function. + (analyze_function): Use it. + * ipa-modref.h (struct modref_summary): Add arg_flags. + * doc/invoke.texi (ipa-modref-max-depth): Document. + * params.opt (ipa-modref-max-depth): New param. + +2020-11-14 Jakub Jelinek + + PR debug/97599 + * dwarf2out.c (gen_subprogram_die): Call + gen_unspecified_parameters_die even if not early dwarf, but only + if subr_die is a newly created DIE. + +2020-11-14 Monk Chiang + + PR target/97682 + * config/riscv/riscv.h (RISCV_PROLOGUE_TEMP_REGNUM): Change register + to t0. + (RISCV_CALL_ADDRESS_TEMP_REGNUM): New Marco, define t1 register. + (RISCV_CALL_ADDRESS_TEMP): Use it for call instructions. + * config/riscv/riscv.c (riscv_legitimize_call_address): Use + RISCV_CALL_ADDRESS_TEMP. + (riscv_compute_frame_info): Change temporary register to t0 form t1. + (riscv_trampoline_init): Adjust comment. + +2020-11-14 Jim Wilson + cooper.joshua + + * config/riscv/riscv.c (riscv_asan_shadow_offset): New. + (TARGET_ASAN_SHADOW_OFFSET): New. + * doc/tm.texi: Regenerated. + * target.def (asan_shadow_offset); Mention that it can return zero. + * toplev.c (process_options): Check for and handle zero return from + targetm.asan_shadow_offset call. + +2020-11-14 Jakub Jelinek + + * gimplify.c (gimplify_omp_for): Add OMP_CLAUSE_ALLOCATE_ALLOCATOR + decls as firstprivate on task clauses even when allocate clause + decl is not lastprivate. + * omp-low.c (install_var_field): Don't dereference omp_is_reference + types if mask is 33 rather than 1. + (scan_sharing_clauses): Populate allocate_map even for task + constructs. For now remove it back for variables mentioned in + reduction and in_reduction clauses on task/taskloop constructs + or on VLA task firstprivates. For firstprivate on task construct, + install the var field into field_map with by_ref and 33 instead + of false and 1 if mentioned in allocate clause. + (lower_private_allocate): Set TREE_THIS_NOTRAP on the created + MEM_REF. + (lower_rec_input_clauses): Handle allocate for task firstprivatized + non-VLA variables. + (create_task_copyfn): Likewise. + +2020-11-13 Jan Hubicka + + * tree-ssa-alias.c (ao_ref_base_alias_ptr_type): Remove accidental + commit. + (ao_ref_alias_ptr_type): Remove accidental commit. + +2020-11-13 Kwok Cheung Yeung + + * omp-oacc-kernels-decompose.cc (maybe_build_inner_data_region): + Use langhook instead of accessing language-specific decl + information. + +2020-11-13 Gergö Barany + Thomas Schwinge + + * omp-oacc-kernels-decompose.cc: New. + * Makefile.in (OBJS): Add it. + * passes.def: Instantiate it. + * tree-pass.h (make_pass_omp_oacc_kernels_decompose): Declare. + * flag-types.h (enum openacc_kernels): Add. + * doc/invoke.texi (-fopenacc-kernels): Document. + * gimple.h (enum gf_mask): Add + 'GF_OMP_TARGET_KIND_OACC_PARALLEL_KERNELS_PARALLELIZED', + 'GF_OMP_TARGET_KIND_OACC_PARALLEL_KERNELS_GANG_SINGLE', + 'GF_OMP_TARGET_KIND_OACC_DATA_KERNELS'. + (is_gimple_omp_oacc, is_gimple_omp_offloaded): Handle these. + * gimple-pretty-print.c (dump_gimple_omp_target): Likewise. + * omp-expand.c (expand_omp_target, build_omp_regions_1) + (omp_make_gimple_edges): Likewise. + * omp-low.c (scan_sharing_clauses, scan_omp_for) + (check_omp_nesting_restrictions, lower_oacc_reductions) + (lower_oacc_head_mark, lower_omp_target): Likewise. + * omp-offload.c (execute_oacc_device_lower): Likewise. + +2020-11-13 Thomas Schwinge + + * omp-low.c (scan_sharing_clauses, scan_omp_for) + (lower_oacc_reductions, lower_omp_target): More explicit checking + of which OMP constructs we're expecting. + +2020-11-13 Thomas Schwinge + + * omp-expand.c (expand_omp_target): Attach an attribute to all + outlined OpenACC compute regions. + * omp-offload.c (execute_oacc_device_lower): Adjust. + +2020-11-13 Jan Hubicka + + * ipa-modref.c (modref_summaries::insert, + modref_summaries_lto::insert): Remove summary if ipa-modref is disabled. + +2020-11-13 Jan Hubicka + + * attr-fnspec.h (attr_fnspec::arg_readonly_p): Accept '1'...'9'. + +2020-11-13 Peter Jones + + * doc/extend.texi: Clarify the documentation for the ms_abi + function attribute. + +2020-11-13 Andrew MacLeod + + * gimple-range.h (gimple_range_handler): Cast to gimple stmt + kinds before asking for code and type. + * gimple.h (gimple_expr_code): Call gassign and gcond routines + to get their expr_code. + +2020-11-13 Jason Merrill + + * dwarf2out.c (gen_enumeration_type_die): Call + equate_decl_number_to_die for enumerators. + (gen_member_die): Don't move enumerators to their + enclosing class. + (dwarf2out_imported_module_or_decl_1): Allow importing + individual enumerators. + (force_decl_die): Handle CONST_DECL. + +2020-11-13 Vladimir N. Makarov + + * cfgexpand.c (expand_asm_stmt): Output asm goto with outputs too. + Place insns after asm goto on edges. + * doc/extend.texi: Reflect the changes in asm goto documentation. + * gimple.c (gimple_build_asm_1): Remove an assert checking output + absence for asm goto. + * gimple.h (gimple_asm_label_op, gimple_asm_set_label_op): Take + possible asm goto outputs into account. + * ira.c (ira): Remove critical edges for potential asm goto output + reloads. + (ira_nullify_asm_goto): New function. + * ira.h (ira_nullify_asm_goto): New prototype. + * lra-assigns.c (lra_split_hard_reg_for): Use ira_nullify_asm_goto. + Check that splitting is done inside a basic block. + * lra-constraints.c (curr_insn_transform): Permit output reloads + for any jump insn. + * lra-spills.c (lra_final_code_change): Remove USEs added in ira + for asm gotos. + * lra.c (lra_process_new_insns): Place output reload insns after + jumps in the beginning of destination BBs. + * reload.c (find_reloads): Report error for asm gotos with + outputs. Modify them to keep CFG consistency to avoid crashes. + * tree-into-ssa.c (rewrite_stmt): Don't put debug stmt after asm + goto. + +2020-11-13 Jakub Jelinek + + * omp-low.c (scan_sharing_clauses): For now remove for reduction + clauses with inscan or task modifiers decl from allocate_map. + (lower_private_allocate): Handle TYPE_P (new_var). + (lower_rec_input_clauses): Handle allocate clause for C/C++ array + reductions. + +2020-11-13 Martin Jambor + + PR ipa/97816 + * ipa-cp.c (value_topo_info::propagate_effects): Use + safe_add instead of a simple addition. + +2020-11-13 Jozef Lawrynowicz + + * config/msp430/msp430.c (TARGET_INSN_COST): Define. + (msp430_insn_cost): New function. + * config/msp430/msp430.h (BRANCH_COST): Define. + (LOGICAL_OP_NON_SHORT_CIRCUIT): Define. + +2020-11-13 Jozef Lawrynowicz + + * config/msp430/msp430-protos.h (msp430x_extendhisi): Return int + instead of char *. + (msp430_output_asm_shift_insns): Likewise. + Add new return_length argument. + (msp430x_insn_required): Add prototype. + * config/msp430/msp430.c (msp430_output_asm_shift_insns): Return the + total length, in bytes, of the emitted instructions. + (msp430x_insn_required): New function. + (msp430x_extendhisi): Return the total length, in bytes, of the + emitted instructions. + * config/msp430/msp430.h (ADJUST_INSN_LENGTH): Define. + * config/msp430/msp430.md: New define_attr "type". + New define_attr "extension". + New define_attr "length_multiplier". + New define_attr "extra_length". + Rewrite define_attr "length". + Set type, extension, length, length_multiplier or extra_length insn + attributes on all insns, as appropriate. + (andneghi3): Rewrite using constraints instead of C code to decide + output insns. + * config/msp430/predicates.md (msp430_cheap_operand): New predicate. + (msp430_high_memory_operand): New predicate. + +2020-11-13 Jozef Lawrynowicz + + * config/msp430/msp430.c (use_helper_for_const_shift): Add forward + declaration. + Remove unused argument. + (struct msp430_multlib_costs): New struct. + (msp430_is_mem_indirect): New function. + (msp430_costs): Likewise. + (msp430_shift_costs): Likewise. + (msp430_muldiv_costs): Likewise. + (msp430_get_inner_dest_code): Likewise. + (msp430_single_op_cost): Likewise. + (msp430_rtx_costs): Rewrite from scratch. + (msp430_expand_shift): Adjust use_helper_for_const_shift call. + +2020-11-13 Jozef Lawrynowicz + + * config/msp430/msp430.c (struct single_op_cost): New struct. + (struct double_op_cost): Likewise. + (TARGET_REGISTER_MOVE_COST): Don't define but add comment. + (TARGET_MEMORY_MOVE_COST): Define to... + (msp430_memory_move_cost): New function. + (BRANCH_COST): Don't define but add comment. + +2020-11-13 Jan Hubicka + + * ipa-icf-gimple.c: Include tree-ssa-alias-compare.h. + (find_checker::func_checker): Initialize m_tbaa. + (func_checker::hash_operand): Use hash_ao_ref for memory accesses. + (func_checker::compare_operand): Use compare_ao_refs for memory + accesses. + (func_checker::cmopare_gimple_assign): Do not check LHS types + of memory stores. + * ipa-icf-gimple.h (func_checker): Derive from ao_compare; + add m_tbaa. + * ipa-icf.c: Include tree-ssa-alias-compare.h. + (sem_function::equals_private): Update call of + func_checker::func_checker. + * ipa-utils.h (lto_streaming_expected_p): New inline + predicate. + * tree-ssa-alias-compare.h: New file. + * tree-ssa-alias.c: Include tree-ssa-alias-compare.h + and bultins.h + (view_converted_memref_p): New function. + (types_equal_for_same_type_for_tbaa_p): New function. + (ao_ref_alias_ptr_type, ao_ref_base_alias_ptr_type): New functions. + (ao_compare::compare_ao_refs): New member function. + (ao_compare::hash_ao_ref): New function + * tree-ssa-alias.h (ao_ref_base_alias_ptr_type, + ao_ref_alias_ptr_type): Declare. + +2020-11-13 Jan Hubicka + + * ipa-icf-gimple.c: Include gimple-walk.h. + (func_checker::compare_ssa_name): Update call of compare_operand. + (func_checker::hash_operand): Fix comment and add variant taking + operand_access_type parameter. + (func_checker::compare_operand): Add operand_access_type parameter. + (func_checker::compare_asm_inputs_outputs): Add + operand_access_type_map parameter; update use of + func_checker::compare_operand. + (func_checker::compare_gimple_call): Update use of + func_checker::compare_operand. + (func_checker::compare_gimple_assign): Likewise. + (func_checker::compare_gimple_cond): Likewise. + (func_checker::compare_gimple_switch): Likewise. + (func_checker::compare_gimple_return): Likewise. + (func_checker::compare_gimple_goto): Likewise. + (func_checker::compare_gimple_asm): Likewise. + (visit_load_store): New static functio. + (func_checker::classify_operands): New member function. + (func_checker::get_operand_access_type): New member function. + * ipa-icf-gimple.h (func_checker::operand_access_type): New enum + (func_checker::operand_access_type_map): New typedef. + (func_checker::compare_operand): Update prototype. + (func_checker::compare_asm_inputs_outputs): Likewise. + (func_checker::cleassify_operands): Declare. + (func_checker::get_operand_access_type): Declare. + (func_checker::hash_operand): New variant with operand_access_type. + * ipa-icf.c (sem_function::hash_stmt): Update uses of hash_operand. + (sem_function::compare_phi_node): Update use of compare_operand. + +2020-11-13 Andrea Corallo + + * config/arm/aarch-common.c (aarch_accumulator_forwarding): Use + RTL predicates where possible. + * config/arm/arm.c (legitimate_pic_operand_p) + (legitimize_pic_address, arm_is_segment_info_known) + (can_avoid_literal_pool_for_label_p) + (thumb1_legitimate_address_p, arm_legitimize_address) + (arm_tls_referenced_p, thumb_legitimate_constant_p) + (REG_OR_SUBREG_REG, thumb1_rtx_costs, thumb1_size_rtx_costs) + (arm_adjust_cost, arm_coproc_mem_operand_wb) + (neon_vector_mem_operand, neon_struct_mem_operand) + (symbol_mentioned_p, label_mentioned_p, ) + (load_multiple_sequence, store_multiple_sequence) + (arm_select_cc_mode, arm_reload_in_hi, arm_reload_out_hi) + (mem_ok_for_ldrd_strd, arm_emit_call_insn, output_move_neon) + (arm_attr_length_move_neon, arm_assemble_integer) + (arm_emit_coreregs_64bit_shift, arm_valid_symbolic_address_p) + (extract_base_offset_in_addr, fusion_load_store): Likewise. + +2020-11-13 Andrew MacLeod + + * gimple-range.cc: (gimple_ranger::range_of_range_op): Check for + ADDR_EXPR and call range_of_address. + (gimple_ranger::range_of_address): Rename from + range_of_non_trivial_assignment and match vrp_stmt_computes_nonzero. + * gimple-range.h: (range_of_address): Renamed. + * range-op.cc: (pointer_table): Add INTEGER_CST handler. + +2020-11-13 Martin Jambor + + PR tree-optimization/94406 + * tree-ssa-loop-im.c (tree_ssa_lim): Renamed to + loop_invariant_motion_in_fun, added a parameter to control store + motion. + (pass_lim::execute): Adjust call to tree_ssa_lim, now + loop_invariant_motion_in_fun. + * tree-ssa-loop-manip.h (loop_invariant_motion_in_fun): Declare. + * gimple-loop-interchange.cc (pass_linterchange::execute): Call + loop_invariant_motion_in_fun if any interchange has been done. + +2020-11-13 Richard Biener + + * tree-ssa-sccvn.c (vn_phi_compute_hash): Always hash the + number of predecessors. Hash the block number also for + loop header PHIs. + (expressions_equal_p): Short-cut SSA name compares, remove + test for NULL operands. + (vn_phi_eq): Cache number of predecessors, change inlined + test from expressions_equal_p. + +2020-11-13 Iain Sandoe + + * doc/extend.texi: Don't try to line-wrap an @r command. + +2020-11-13 Richard Biener + + PR tree-optimization/97812 + * tree-vrp.c (register_edge_assert_for_2): Extend the range + according to its sign before seeing whether it fits. + +2020-11-13 Andrea Corallo + + * config/aarch64/aarch64.c (tls_symbolic_operand_type) + (aarch64_load_symref_appropriately, aarch64_mov128_immediate) + (aarch64_expand_mov_immediate) + (aarch64_maybe_expand_sve_subreg_move) + (aarch64_tls_referenced_p, aarch64_cannot_force_const_mem) + (aarch64_base_register_rtx_p, aarch64_classify_index) + (aarch64_classify_address, aarch64_symbolic_address_p) + (aarch64_reinterpret_float_as_int, aarch64_float_const_rtx_p) + (aarch64_can_const_movi_rtx_p, aarch64_select_cc_mode) + (aarch64_print_operand, aarch64_label_mentioned_p) + (aarch64_secondary_reload, aarch64_preferred_reload_class) + (aarch64_address_cost, aarch64_tls_symbol_p) + (aarch64_classify_symbol, aarch64_legitimate_pic_operand_p) + (aarch64_legitimate_constant_p) + (aarch64_sve_float_arith_immediate_p) + (aarch64_sve_float_mul_immediate_p, aarch64_mov_operand_p) + (fusion_load_store): Use RTL operands where possible. + +2020-11-13 Sudakshina Das + + * config/aarch64/aarch64-protos.h (aarch64_expand_setmem): New + declaration. + * config/aarch64/aarch64.c (aarch64_gen_store_pair): Add case for + E_V16QImode. + (aarch64_set_one_block_and_progress_pointer): New helper for + aarch64_expand_setmem. + (aarch64_expand_setmem): Define the expansion for memset. + * config/aarch64/aarch64.h (CLEAR_RATIO): Tweak to favor + aarch64_expand_setmem when allowed and profitable. + (SET_RATIO): Likewise. + * config/aarch64/aarch64.md: Define pattern for setmemdi. + +2020-11-13 Iain Sandoe + + PR objc/90707 + * doc/extend.texi: Document the objc_nullability attribute. + +2020-11-13 Iain Sandoe + + PR objc/77404 + * doc/extend.texi: Document the objc_root_class attribute. + * doc/invoke.texi: Document -Wobjc-root-class. + +2020-11-13 Richard Biener + + * cfgexpand.c (gimple_assign_rhs_to_tree): Use + gimple_assign_rhs_class. + (expand_gimple_stmt_1): Likewise. + * gimplify-me.c (gimple_regimplify_operands): Use + gimple_assign_single_p. + * ipa-icf-gimple.c (func_checker::compare_gimple_assign): + Remove redundant compare. + (func_checker::compare_gimple_cond): Use gimple_cond_code. + * tree-ssa-tail-merge.c (gimple_equal_p): Likewise. + * predict.c (predict_loops): Use gimple_assign_rhs_code. + +2020-11-13 Aldy Hernandez + + * tree-vrp.c (class vrp_folder): Make visit_stmt, visit_phi, + and m_vr_values private. + (vrp_folder::vrp_evaluate_conditional): Remove. + (vrp_folder::vrp_simplify_stmt_using_ranges): Remove. + (vrp_folder::fold_predicate_in): Inline + vrp_evaluate_conditional and vrp_simplify_stmt_using_ranges. + (vrp_folder::fold_stmt): Same. + +2020-11-13 Aldy Hernandez + + * tree-vrp.c (class vrp_prop): Rename vr_values to m_vr_values. + (vrp_prop::vrp_prop): New. + (vrp_prop::initialize): Rename vr_values to m_vr_values. + (vrp_prop::visit_stmt): Same. + (vrp_prop::visit_phi): Same. + (vrp_prop::finalize): Same. + (execute_vrp): Instantiate vrp_vr_values and pass it to folder + and propagator. + +2020-11-13 Aldy Hernandez + + * tree-vrp.c (class vrp_prop): Move entire class... + (class vrp_folder): ...before here. + +2020-11-13 Aldy Hernandez + + * tree-vrp.c (identify_jump_threads): Refactor to.. + (vrp_jump_threader::vrp_jump_threader): ...here + (vrp_jump_threader::~vrp_jump_threader): ...and here. + (vrp_jump_threader::after_dom_children): Rename vr_values to + m_vr_values. + (execute_vrp): Use vrp_jump_threader. + +2020-11-13 Aldy Hernandez + + * tree-vrp.c (struct assert_locus): Move. + (class vrp_insert): Rename to vrp_asserts. + (vrp_insert::build_assert_expr_for): Move to vrp_asserts. + (fp_predicate): Same. + (vrp_insert::dump): Same. + (vrp_insert::register_new_assert_for): Same. + (extract_code_and_val_from_cond_with_ops): Move. + (vrp_insert::finish_register_edge_assert_for): Move to vrp_asserts. + (maybe_set_nonzero_bits): Move. + (vrp_insert::find_conditional_asserts): Move to vrp_asserts. + (stmt_interesting_for_vrp): Move. + (struct case_info): Move. + (compare_case_labels): Move. + (lhs_of_dominating_assert): Move. + (find_case_label_index): Move. + (find_case_label_range): Move. + (class vrp_asserts): New. + (vrp_asserts::build_assert_expr_for): Rename from vrp_insert. + (vrp_asserts::dump): Same. + (vrp_asserts::register_new_assert_for): Same. + (vrp_asserts::finish_register_edge_assert_for): Same. + (vrp_asserts::find_conditional_asserts): Same. + (vrp_asserts::compare_case_labels): Same. + (vrp_asserts::find_switch_asserts): Same. + (vrp_asserts::find_assert_locations_in_bb): Same. + (vrp_asserts::find_assert_locations): Same. + (vrp_asserts::process_assert_insertions_for): Same. + (vrp_asserts::compare_assert_loc): Same. + (vrp_asserts::process_assert_insertions): Same. + (vrp_asserts::insert_range_assertions): Same. + (vrp_asserts::all_imm_uses_in_stmt_or_feed_cond): Same. + (vrp_asserts::remove_range_assertions): Same. + (class vrp_prop): Move. + (all_imm_uses_in_stmt_or_feed_cond): Move. + (vrp_prop::vrp_initialize): Move. + (class vrp_folder): Move. + (vrp_folder::fold_predicate_in): Move. + (vrp_folder::fold_stmt): Move. + (vrp_prop::initialize): Move. + (vrp_prop::visit_stmt): Move. + (enum ssa_prop_result): Move. + (vrp_prop::visit_phi): Move. + (vrp_prop::finalize): Move. + (class vrp_dom_walker): Rename to... + (class vrp_jump_threader): ...this. + (vrp_jump_threader::before_dom_children): Rename from + vrp_dom_walker. + (simplify_stmt_for_jump_threading): Rename to... + (vrp_jump_threader::simplify_stmt): ...here. + (vrp_jump_threader::after_dom_children): Same. + (identify_jump_threads): Move. + (vrp_prop::vrp_finalize): Move array bounds setup code to... + (execute_vrp): ...here. + +2020-11-13 Andrew MacLeod + + * gimple-range.h (gimple_range_handler): Use gimple_assign and + gimple_cond routines to get type and code. + * range-op.cc (range_op_handler): Check for integral types. + +2020-11-12 Nelson Chu + + * configure: Regenerated. + * configure.ac: If ifunc was supported in the binutils for + linux toolchain, then set enable_gnu_indirect_function to yes. + +2020-11-12 Joseph Myers + + * doc/cpp.texi (__has_attribute): Document when scopes are allowed + for C. + (__has_c_attribute): New. + +2020-11-12 Jakub Jelinek + + * builtin-types.def (BT_FN_PTR_SIZE_SIZE_PTRMODE): New function type. + * omp-builtins.def (BUILT_IN_GOACC_DECLARE): Move earlier. + (BUILT_IN_GOMP_ALLOC, BUILT_IN_GOMP_FREE): New builtins. + * gimplify.c (gimplify_scan_omp_clauses): Force allocator into a + decl if it is not NULL, INTEGER_CST or decl. + (gimplify_adjust_omp_clauses): Clear GOVD_EXPLICIT on explicit clauses + which are being removed. Remove allocate clauses for variables not seen + if they are private, firstprivate or linear too. Call + omp_notice_variable on the allocator otherwise. + (gimplify_omp_for): Handle iterator vars mentioned in allocate clauses + similarly to non-is_gimple_reg iterators. + * omp-low.c (struct omp_context): Add allocate_map field. + (delete_omp_context): Delete it. + (scan_sharing_clauses): Fill it from allocate clauses. Remove it + if mentioned also in shared clause. + (lower_private_allocate): New function. + (lower_rec_input_clauses): Handle allocate clause for privatized + variables, except for task/taskloop, C/C++ array reductions for now + and task/inscan variables. + (lower_send_shared_vars): Don't consider variables in allocate_map + as shared. + * omp-expand.c (expand_omp_for_generic, expand_omp_for_static_nochunk, + expand_omp_for_static_chunk): Use expand_omp_build_assign instead of + gimple_build_assign + gsi_insert_after. + * builtins.c (builtin_fnspec): Handle BUILTIN_GOMP_ALLOC and + BUILTIN_GOMP_FREE. + * tree-ssa-ccp.c (evaluate_stmt): Handle BUILTIN_GOMP_ALLOC. + * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Handle + BUILTIN_GOMP_ALLOC. + (mark_all_reaching_defs_necessary_1): Handle BUILTIN_GOMP_ALLOC + and BUILTIN_GOMP_FREE. + (propagate_necessity): Likewise. + +2020-11-12 Martin Jambor + + * cgraphclones.c (cgraph_node::materialize_clone): Check that clone + info is not NULL before attempting to dump it. + +2020-11-12 Martin Jambor + + * ipa-cp.c (class ipcp_value_base): Change the type of + local_time_benefit and prop_time_benefit to sreal. Adjust the + constructor initializer. + (ipcp_lattice::print): Dump sreals. + (struct caller_statistics): Change the type of freq_sum to sreal. + (gather_caller_stats): Work with sreal freq_sum. + (incorporate_penalties): Work with sreal evaluation. + (good_cloning_opportunity_p): Adjusted for sreal sreal time_benefit + and freq_sum. Bail out if size_cost is INT_MAX. + (perform_estimation_of_a_value): Work with sreal time_benefit. Avoid + unnecessary capping. + (estimate_local_effects): Pass sreal time benefit to + good_cloning_opportunity_p without capping it. Adjust dumping. + (safe_add): If there can be overflow, return INT_MAX. + (propagate_effects): Work with sreal times. + (get_info_about_necessary_edges): Work with sreal frequencies. + (decide_about_value): Likewise and with sreal time benefits. + +2020-11-12 Marek Polacek + + * system.h (WARN_UNUSED_RESULT): Define for GCC >= 3.4. + * tree.h (maybe_wrap_with_location): Add WARN_UNUSED_RESULT. + +2020-11-12 Jan Hubicka + + * fold-const.c (operand_compare::operand_equal_p): Compare field + offsets in operand_equal_p and OEP_ADDRESS_OF. + (operand_compare::hash_operand): Update. + +2020-11-12 Richard Biener + + * bitmap.c (bitmap_list_view): Restore head->current. + * tree-ssa-pre.c (pre_expr_DFS): Elide expr_visited bitmap. + Special-case value expression bitmaps with one element. + (bitmap_find_leader): Likewise. + (sorted_array_from_bitmap_set): Elide expr_visited bitmap. + +2020-11-12 Jan Hubicka + + * attr-fnspec.h: Update topleve comment. + (attr_fnspec::arg_direct_p): Accept 1...9. + (attr_fnspec::arg_maybe_written_p): Reject 1...9. + (attr_fnspec::arg_copied_to_arg_p): New member function. + * builtins.c (builtin_fnspec): Update fnspec of block copy. + * tree-ssa-alias.c (attr_fnspec::verify): Update. + +2020-11-12 Richard Biener + + * tree-ssa-pre.c (bitmap_value_replace_in_set): Return + whether we have changed anything. + (do_pre_regular_insertion): Get topologically sorted array + of expressions from caller. + (do_pre_partial_partial_insertion): Likewise. + (insert): Compute topologically sorted arrays of expressions + here and locally iterate actual insertion. Iterate only + when AVAIL_OUT of an already visited block source changed. + +2020-11-12 Alex Coplan + + PR target/97730 + * config/aarch64/aarch64-sve2.md (@aarch64_sve2_bcax): + Change to define_expand, add missing (trivially-predicated) not + rtx to fix wrong code bug. + (*aarch64_sve2_bcax): New. + +2020-11-12 Richard Biener + + PR tree-optimization/97806 + * tree-ssa-pre.c (pre_expr_DFS): New overload for visiting + values, visiting all leaders for a value. Use a bitmap + for visited values. + (sorted_array_from_bitmap_set): Walk over values and adjust. + +2020-11-12 Andreas Krebbel + + PR target/97326 + * config/s390/vector.md: Support vector floating point modes in + vec_cmp. + +2020-11-12 Andreas Krebbel + + * config/s390/vector.md: Rename tointvec to TOINTVEC. + * config/s390/vx-builtins.md: Likewise. + +2020-11-12 Jason Merrill + + PR debug/97060 + * dwarf2out.c (gen_subprogram_die): It's a declaration + if DECL_INITIAL isn't set. + +2020-11-12 David Malcolm + + PR tree-optimization/97424 + * doc/invoke.texi (Static Analyzer Options): Add + -Wno-analyzer-shift-count-negative and + -Wno-analyzer-shift-count-overflow. + (-Wno-analyzer-shift-count-negative): New. + (-Wno-analyzer-shift-count-overflow): New. + +2020-11-11 Iain Sandoe + + * config/darwin-protos.h (darwin_make_eh_symbol_indirect): New. + * config/darwin.c (darwin_make_eh_symbol_indirect): New. Use + Mach-O semantics for personality and ldsa indirections. + * config/darwin.h (TARGET_ASM_MAKE_EH_SYMBOL_INDIRECT): New. + * doc/tm.texi: Regenerate. + * doc/tm.texi.in: Add TARGET_ASM_MAKE_EH_SYMBOL_INDIRECT hook. + * dwarf2out.c (dwarf2out_do_cfi_startproc): If the target defines + a hook for indirecting personality and ldsa references, use that + otherwise default to ELF semantics. + * target.def (make_eh_symbol_indirect): New target hook. + +2020-11-11 Patrick Palka + + PR c++/88115 + * common.opt (-fabi-version): Document =15. + * doc/invoke.texi (C++ Dialect Options): Likewise. + +2020-11-11 Marek Polacek + + PR c++/97518 + * tree.c (maybe_wrap_with_location): Don't add a location + wrapper around an artificial and ignored decl. + +2020-11-11 Richard Biener + + PR tree-optimization/97623 + * tree-ssa-pre.c (create_expression_by_pieces): Guard + NEW_SETS access. + (insert_into_preds_of_block): Likewise. + +2020-11-11 Richard Biener + + * tree-ssa-pre.c (pre_expr_DFS): New function. + (sorted_array_from_bitmap_set): Use it to properly + topologically sort the expression set. + (clean): Verify we've cleaned everything we should. + +2020-11-11 Richard Biener + + PR tree-optimization/97623 + * params.opt (-param=max-pre-hoist-insert-iterations): Remove + again. + * doc/invoke.texi (max-pre-hoist-insert-iterations): Likewise. + * tree-ssa-pre.c (insert): Move hoist insertion after PRE + insertion iteration and do not iterate it. + +2020-11-11 Richard Sandiford + + * config/aarch64/aarch64-sve.md (@vcond_mask_): Extend + from SVE_FULL to SVE_ALL. + (*vcond_mask_): Likewise. + (@aarch64_sel_dup): Likewise. + (vcond): Extend to... + (vcond): ...this, but requiring the + sizes of the container modes to match. + (vcondu): Extend to... + (vcondu): ...this. + (vec_cmp): Extend to... + (vec_cmp): ...this. + (vec_cmpu): Extend to... + (vec_cmpu): ...this. + (@aarch64_pred_cmp): Extend to... + (@aarch64_pred_cmp): ...this. + (*cmp_cc): Extend to... + (*cmp_cc): ...this. + (*cmp_ptest): Extend to... + (*cmp_ptest): ...this. + (*cmp_and): Extend to... + (*cmp_and): ...this. + +2020-11-11 Richard Sandiford + + * optabs-tree.c (expand_vec_cond_expr_p): Allow the compared values + and the selected values to have different mode sizes. + * gimple-isel.cc (gimple_expand_vec_cond_expr): Likewise. + +2020-11-11 Hongtao Liu + Hongyu Wang + + * common/config/i386/cpuinfo.h (get_available_features): + Detect AVXVNNI. + * common/config/i386/i386-common.c + (OPTION_MASK_ISA2_AVXVNNI_SET, + OPTION_MASK_ISA2_AVXVNNI_UNSET): New. + (OPTION_MASK_ISA2_AVX2_UNSET): Add AVXVNNI. + (ix86_hanlde_option): Handle -mavxvnni, unset avxvnni when + avx2 is disabled. + * common/config/i386/i386-cpuinfo.h (enum processor_features): + Add FEATURE_AVXVNNI. + * common/config/i386/i386-isas.h: Add ISA_NAMES_TABLE_ENTRY + for avxvnni. + * config.gcc: Add avxvnniintrin.h. + * config/i386/avx512vnnivlintrin.h: Reimplement 128/256 bit non-mask + intrinsics with macros to support unified interface. + * config/i386/avxvnniintrin.h: New header file. + * config/i386/cpuid.h (bit_AVXVNNI): New. + * config/i386/i386-builtins.c (def_builtin): Handle AVXVNNI mask + for unified builtin. + * config/i386/i386-builtin.def (BDESC): Adjust AVX512VNNI + builtins for AVXVNNI. + * config/i386/i386-c.c (ix86_target_macros_internal): Define + __AVXVNNI__. + * config/i386/i386-expand.c (ix86_expand_builtin): Handle bisa + for AVXVNNI to support unified intrinsic name, since there is no + dependency between AVX512VNNI and AVXVNNI. + * config/i386/i386-options.c (isa2_opts): Add -mavxvnni. + (ix86_valid_target_attribute_inner_p): Handle avxnnni. + (ix86_option_override_internal): Ditto. + * config/i386/i386.h (TARGET_AVXVNNI, TARGET_AVXVNNI_P, + TARGET_AVXVNNI_P, PTA_AVXVNNI): New. + (PTA_SAPPHIRERAPIDS): Add AVX_VNNI. + (PTA_ALDERLAKE): Likewise. + * config/i386/i386.md ("isa"): Add avxvnni, avx512vnnivl. + ("enabled"): Adjust for avxvnni and avx512vnnivl. + * config/i386/i386.opt: Add option -mavxvnni. + * config/i386/immintrin.h: Include avxvnniintrin.h. + * config/i386/sse.md (vpdpbusd_): Adjust for AVXVNNI. + (vpdpbusds_): Likewise. + (vpdpwssd_): Likewise. + (vpdpwssds_): Likewise. + (vpdpbusd_v16si): New. + (vpdpbusds_v16si): Likewise. + (vpdpwssd_v16si): Likewise. + (vpdpwssds_v16si): Likewise. + * doc/invoke.texi: Document -mavxvnni. + * doc/extend.texi: Document avxvnni. + * doc/sourcebuild.texi: Document target avxvnni. + +2020-11-11 Martin Liska + + * tree.c (copy_node): Fix spelling. + +2020-11-11 Richard Biener + + * tree-ssa-pre.c (phi_translate_set): Do not sort the + expression set topologically. + +2020-11-11 Aldy Hernandez + + * value-range.cc (irange::set): Early exit on VR_VARYING. + +2020-11-11 Zhiheng Xie + Nannan Zheng + + * config/aarch64/aarch64-simd-builtins.def: Add proper FLAG + for arithmetic operation intrinsics. + +2020-11-11 Strager Neds + + * cgraph.h (symtab_node::set_section_for_node): Declare new + overload. + (symtab_node::set_section_from_string): Rename from set_section. + (symtab_node::set_section_from_node): Declare. + * symtab.c (symtab_node::set_section_for_node): Define new + overload. + (symtab_node::set_section_from_string): Rename from set_section. + (symtab_node::set_section_from_node): Define. + (symtab_node::set_section): Call renamed set_section_from_string. + (symtab_node::set_section): Call new set_section_from_node. + +2020-11-11 Strager Neds + + * symtab.c (symtab_node::set_section_for_node): Extract reference + counting logic into ... + (retain_section_hash_entry): ... here (new function) and ... + (release_section_hash_entry): ... here (new function). + +2020-11-11 liuhongt + + * config/i386/i386.h (PTA_MOVDIRI, PTA_MOVDIR64B, + PTA_AMX_TILE, PTA_AMX_INT8, PTA_AMX_BF16, PTA_HRESET): + Formatting. + +2020-11-11 Ilya Leoshkevich + + * config/s390/s390.h (HAVE_TF): Use opaque value when + GENERATOR_FILE is defined. + +2020-11-10 Strager Neds + + * cgraph.h (symtab_node::get_section): Constify. + (symtab_node::set_section): Declare new overload. + * symtab.c (symtab_node::set_section): Define new overload. + (symtab_node::copy_visibility_from): Use new overload of + symtab_node::set_section. + (symtab_node::resolve_alias): Same. + * tree.h (set_decl_section_name): Declare new overload. + * tree.c (set_decl_section_name): Define new overload. + * tree-emutls.c (get_emutls_init_templ_addr): Same. + * cgraphclones.c (cgraph_node::create_virtual_clone): Use new + overload of symtab_node::set_section. + (cgraph_node::create_version_clone_with_body): Same. + * trans-mem.c (ipa_tm_create_version): Same. + +2020-11-10 Aldy Hernandez + + * value-range.cc (irange::set): Early exit for poly ints. + +2020-11-10 Tobias Burnus + + * gimplify.c (gimplify_scan_omp_clauses, gimplify_omp_loop): Use 'do' + instead of 'for' in error messages for Fortran. + * omp-low.c (check_omp_nesting_restrictions): Likewise + +2020-11-10 Matthew Malcomson + + * opts.c (control_options_for_live_patching): Reform 'is incompatible + with' error messages to use a standard message with differing format + arguments. + (finish_options): Likewise. + +2020-11-10 Richard Biener + + PR tree-optimization/97769 + * tree-vect-data-refs.c (vect_update_misalignment_for_peel): + Remove assert. + +2020-11-10 Richard Biener + + PR tree-optimization/97780 + * tree-ssa-pre.c (fini_pre): Deal with added basic blocks + when freeing PHI_TRANS_TABLE. + +2020-11-10 Zhiheng Xie + Nannan Zheng + + * config/aarch64/aarch64-simd-builtins.def: Add proper FLAG + for tbl/tbx intrinsics. + +2020-11-10 Chung-Lin Tang + + * gimplify.c (is_or_contains_p): New static helper function. + (omp_target_reorder_clauses): New function. + (gimplify_scan_omp_clauses): Add use of omp_target_reorder_clauses to + reorder clause list according to OpenMP 5.0 rules. Add handling of + GOMP_MAP_ATTACH_DETACH for OpenMP cases. + * omp-low.c (is_omp_target): New static helper function. + (scan_sharing_clauses): Add scan phase handling of GOMP_MAP_ATTACH/DETACH + for OpenMP cases. + (lower_omp_target): Add lowering handling of GOMP_MAP_ATTACH/DETACH for + OpenMP cases. + +2020-11-10 Ilya Leoshkevich + + * config/s390/s390-modes.def (FPRX2): New mode. + * config/s390/s390-protos.h (s390_fma_allowed_p): New function. + * config/s390/s390.c (s390_fma_allowed_p): Likewise. + (s390_build_signbit_mask): Support 128-bit masks. + (print_operand): Support printing the second word of a TFmode + operand as vector register. + (constant_modes): Add FPRX2mode. + (s390_class_max_nregs): Return 1 for TFmode on z14+. + (s390_is_fpr128): New function. + (s390_is_vr128): Likewise. + (s390_can_change_mode_class): Use s390_is_fpr128 and + s390_is_vr128 in order to determine whether mode refers to a FPR + pair or to a VR. + (s390_emit_compare): Force TFmode operands into registers on + z14+. + * config/s390/s390.h (HAVE_TF): New macro. + (EXPAND_MOVTF): New macro. + (EXPAND_TF): Likewise. + * config/s390/s390.md (PFPO_OP_TYPE_FPRX2): PFPO_OP_TYPE_TF + alias. + (ALL): Add FPRX2. + (FP_ALL): Add FPRX2 for z14+, restrict TFmode to z13-. + (FP): Likewise. + (FP_ANYTF): New mode iterator. + (BFP): Add FPRX2 for z14+, restrict TFmode to z13-. + (TD_TF): Likewise. + (xde): Add FPRX2. + (nBFP): Likewise. + (nDFP): Likewise. + (DSF): Likewise. + (DFDI): Likewise. + (SFSI): Likewise. + (DF): Likewise. + (SF): Likewise. + (fT0): Likewise. + (bt): Likewise. + (_d): Likewise. + (HALF_TMODE): Likewise. + (tf_fpr): New mode_attr. + (type): New mode_attr. + (*cmp_ccz_0): Use type instead of mode with fsimp. + (*cmp_ccs_0_fastmath): Likewise. + (*cmptf_ccs): New pattern for wfcxb. + (*cmptf_ccsfps): New pattern for wfkxb. + (mov): Rename to mov. + (signbit2): Rename to signbit2. + (isinf2): Renamed to isinf2. + (*TDC_insn_): Use type instead of mode with fsimp. + (fixuns_trunc2): Rename to + fixuns_trunc2. + (fix_trunctf2): Rename to fix_trunctf2_fpr. + (floatdi2): Rename to floatdi2, use type + instead of mode with itof. + (floatsi2): Rename to floatsi2, use type + instead of mode with itof. + (*floatuns2): Use type instead of mode for + itof. + (floatuns2): Rename to + floatuns2. + (trunctf2): Rename to trunctf2_fpr, use type instead + of mode with fsimp. + (extend2): Rename to + extend2. + (2): Rename to + 2, use type instead of + mode with fsimp. + (rint2): Rename to rint2, use + type instead of mode with fsimp. + (2): Use type instead of mode for + fsimp. + (rint2): Likewise. + (trunc2): Rename to + trunc2. + (trunc2): Rename to + trunc2. + (extend2): Rename to + extend2. + (extend2): Rename to + extend2. + (add3): Rename to add3, use type instead of + mode with fsimp. + (*add3_cc): Use type instead of mode with fsimp. + (*add3_cconly): Likewise. + (sub3): Rename to sub3, use type instead of + mode with fsimp. + (*sub3_cc): Use type instead of mode with fsimp. + (*sub3_cconly): Likewise. + (mul3): Rename to mul3, use type instead of + mode with fsimp. + (fma4): Restrict using s390_fma_allowed_p. + (fms4): Restrict using s390_fma_allowed_p. + (div3): Rename to div3, use type instead of + mode with fdiv. + (neg2): Rename to neg2. + (*neg2_cc): Use type instead of mode with fsimp. + (*neg2_cconly): Likewise. + (*neg2_nocc): Likewise. + (*neg2): Likeiwse. + (abs2): Rename to abs2, use type instead of + mode with fdiv. + (*abs2_cc): Use type instead of mode with fsimp. + (*abs2_cconly): Likewise. + (*abs2_nocc): Likewise. + (*abs2): Likewise. + (*negabs2_cc): Likewise. + (*negabs2_cconly): Likewise. + (*negabs2_nocc): Likewise. + (*negabs2): Likewise. + (sqrt2): Rename to sqrt2, use type instead + of mode with fsqrt. + (cbranch4): Use FP_ANYTF instead of FP. + (copysign3): Rename to copysign3, use type + instead of mode with fsimp. + * config/s390/s390.opt (flag_vx_long_double_fma): New + undocumented option. + * config/s390/vector.md (V_HW): Add TF for z14+. + (V_HW2): Likewise. + (VFT): Likewise. + (VF_HW): Likewise. + (V_128): Likewise. + (tf_vr): New mode_attr. + (tointvec): Add TF. + (mov): Rename to mov. + (movetf): New dispatcher. + (*vec_tf_to_v1tf): Rename to *vec_tf_to_v1tf_fpr, restrict to + z13-. + (*vec_tf_to_v1tf_vr): New pattern for z14+. + (*fprx2_to_tf): Likewise. + (*mov_tf_to_fprx2_0): Likewise. + (*mov_tf_to_fprx2_1): Likewise. + (add3): Rename to add3. + (addtf3): New dispatcher. + (sub3): Rename to sub3. + (subtf3): New dispatcher. + (mul3): Rename to mul3. + (multf3): New dispatcher. + (div3): Rename to div3. + (divtf3): New dispatcher. + (sqrt2): Rename to sqrt2. + (sqrttf2): New dispatcher. + (fma4): Restrict using s390_fma_allowed_p. + (fms4): Likewise. + (neg_fma4): Likewise. + (neg_fms4): Likewise. + (neg2): Rename to neg2. + (negtf2): New dispatcher. + (abs2): Rename to abs2. + (abstf2): New dispatcher. + (floattf2_vr): New forwarder. + (floattf2): New dispatcher. + (floatunstf2_vr): New forwarder. + (floatunstf2): New dispatcher. + (fix_trunctf2_vr): New forwarder. + (fix_trunctf2): New dispatcher. + (fixuns_trunctf2_vr): New forwarder. + (fixuns_trunctf2): New dispatcher. + (2): New pattern. + (tf2): New forwarder. + (rint2): New pattern. + (rinttf2): New forwarder. + (*trunctfdf2_vr): New pattern. + (trunctfdf2_vr): New forwarder. + (trunctfdf2): New dispatcher. + (trunctfsf2_vr): New forwarder. + (trunctfsf2): New dispatcher. + (extenddftf2_vr): New pattern. + (extenddftf2): New dispatcher. + (extendsftf2_vr): New forwarder. + (extendsftf2): New dispatcher. + (signbittf2_vr): New forwarder. + (signbittf2): New dispatchers. + (isinftf2_vr): New forwarder. + (isinftf2): New dispatcher. + * config/s390/vx-builtins.md (*vftci_cconly): Use VF_HW + instead of VECF_HW, add missing constraint, add vw support. + (vftci_intcconly): Use VF_HW instead of VECF_HW. + (*vftci): Rename to vftci, use VF_HW instead of + VECF_HW, and vw support. + (vftci_intcc): Use VF_HW instead of VECF_HW. + +2020-11-10 Eric Botcazou + + * range-op.cc (operator_logical_not::fold_range): Tidy up. + (operator_logical_not::op1_range): Call above method. + (operator_bitwise_not::fold_range): If the type is compatible + with boolean, call op_logical_not.fold_range. + (operator_bitwise_not::op1_range): If the type is compatible + with boolean, call op_logical_not.op1_range. + +2020-11-10 Richard Biener + + * tree-ssa-pre.c (pre_expr_d::value_id): Add. + (constant_value_expressions): Turn into an array of pre_expr. + (get_or_alloc_expr_for_nary): New function. + (get_or_alloc_expr_for_reference): Likewise. + (add_to_value): For constant values only ever add a single + CONSTANT. + (get_expr_value_id): Return the new value_id member. + (vn_valnum_from_value_id): Split out and simplify constant + value id handling. + (get_or_alloc_expr_for_constant): Set the value_id member. + (phi_translate_1): Use get_or_alloc_expr_for_*. + (compute_avail): Likewise. + (bitmap_find_leader): Simplify constant value id handling. + +2020-11-10 Alex Coplan + + * doc/md.texi (Modifiers): Fix grammar in description of + earlyclobber constraint modifier. + +2020-11-10 Jakub Jelinek + + PR tree-optimization/97764 + * tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): For + little-endian stores with negative pd.offset, subtract + BITS_PER_UNIT - amnt from size if amnt is non-zero. + +2020-11-10 Richard Biener + + PR tree-optimization/97760 + * tree-vect-loop.c (check_reduction_path): Reject + reduction paths we do not handle in epilogue generation. + +2020-11-10 Aldy Hernandez + + PR tree-optimization/97767 + * value-range.cc (dump_bound_with_infinite_markers): Use + wi::min_value and wi::max_value. + (range_tests_strict_enum): New. + (range_tests): Call range_tests_strict_enum. + * value-range.h (irange::varying_p): Use wi::min_value + and wi::max_value. + (irange::set_varying): Same. + (irange::normalize_min_max): Remove comment. + +2020-11-10 Andrew MacLeod + + PR tree-optimization/97567 + * gimple-range-gori.cc: (gori_compute::logical_combine): False + OR operations should intersect the 2 results. + (gori_compute::compute_logical_operands_in_chain): If def chains + are outside the current basic block, don't follow them. + +2020-11-09 Claudiu Zissulescu + + * config/arc/arc.c (arc_split_move): Recognize vadd2 instructions. + * config/arc/arc.md (movdi_insn): Update pattern to use vadd2 + instructions. + (movdf_insn): Likewise. + (maddhisi4): New pattern. + (umaddhisi4): Likewise. + * config/arc/simdext.md (mov_int): Update pattern to use + vadd2. + (sdot_prodv4hi): New pattern. + (udot_prodv4hi): Likewise. + (arc_vec_mac_hi_v4hi): Update/renamed to + arc_vec_mac_v2hiv2si. + (arc_vec_mac_v2hiv2si_zero): New pattern. + * config/arc/constraints.md (Ral): Accumulator register + constraint. + +2020-11-09 Aldy Hernandez + + * function-tests.c (test_ranges): Call range_op_tests. + * range-op.cc (build_range3): Move to value-range.cc. + (range3_tests): Same. + (int_range_max_tests): Same. + (multi_precision_range_tests): Same. + (range_tests): Same. + (operator_tests): Split up... + (range_op_tests): Split up... + (range_op_cast_tests): ...here. + (range_op_lshift_tests): ...here. + (range_op_rshift_tests): ...here. + (range_op_bitwise_and_tests): ...here. + * selftest.h (range_op_tests): New. + * value-range.cc (build_range3): New. + (range_tests_irange3): New. + (range_tests_int_range_max): New. + (range_tests_legacy): New. + (range_tests_misc): New. + (range_tests): New. + +2020-11-09 Richard Biener + + PR tree-optimization/97761 + * tree-vect-slp.c (vect_bb_slp_mark_live_stmts): Remove + premature end of DFS walk. + +2020-11-09 Aldy Hernandez + + * value-range.cc (irange::swap_out_of_order_endpoints): Rewrite + into static function. + (irange::set): Cleanup redundant manipulations. + * value-range.h (irange::normalize_min_max): Modify object + in-place instead of modifying arguments. + +2020-11-09 Andrea Corallo + + * config/aarch64/aarch64-builtins.c + (aarch64_expand_fcmla_builtin): Do not alter force_reg returned + register. + +2020-11-09 Richard Biener + + PR tree-optimization/97753 + * tree-vect-loop.c (vectorizable_induction): Fill vec_steps + when CSEing inside the group. + +2020-11-09 Richard Biener + + PR tree-optimization/97746 + * tree-vect-patterns.c (vect_determine_precisions): First walk PHIs. + +2020-11-09 Richard Biener + + * tree-ssa-pre.c (get_representative_for): CSE VN_INFO calls. + (create_expression_by_pieces): Likewise. + (insert_into_preds_of_block): Likewsie. + (do_pre_regular_insertion): Likewsie. + * tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_insert): + Likewise. + (eliminate_dom_walker::eliminate_stmt): Likewise. + +2020-11-09 Richard Biener + + PR tree-optimization/97765 + * tree-ssa-pre.c (bb_bitmap_sets::phi_translate_table): Add. + (PHI_TRANS_TABLE): New macro. + (phi_translate_table): Remove. + (expr_pred_trans_d::pred): Remove. + (expr_pred_trans_d::hash): Simplify. + (expr_pred_trans_d::equal): Likewise. + (phi_trans_add): Adjust. + (phi_translate): Likewise. Remove hash-table expansion + detection and optimization. + (phi_translate_set): Allocate PHI_TRANS_TABLE here. + (init_pre): Adjsust. + (fini_pre): Free PHI_TRANS_TABLE. + +2020-11-09 Lili Cui + + PR target/97685 + * config/i386/i386.h: + (PTA_BROADWELL): Delete PTA_PRFCHW. + (PTA_SILVERMONT): Add PTA_PRFCHW. + (PTA_KNL): Add PTA_PREFETCHWT1. + (PTA_TREMONT): Add PTA_MOVDIRI, PTA_MOVDIR64B, PTA_CLDEMOTE and PTA_WAITPKG. + * doc/invoke.texi: Delete PREFETCHW for broadwell, skylake, knl, knm, + skylake-avx512, cannonlake, icelake-client, icelake-server, cascadelake, + cooperlake, tigerlake and sapphirerapids. + Add PREFETCHW for silvermont, goldmont, goldmont-plus and tremont. + Add XSAVEC and XSAVES for goldmont, goldmont-plus and tremont. + Add MOVDIRI, MOVDIR64B, CLDEMOTE and WAITPKG for tremont. + Add KEYLOCKER and HREST for alderlake. + Add AMX-BF16, AMX-TILE, AMX-INT8 and UINTR for sapphirerapids. + Add KEYLOCKER for tigerlake. + +2020-11-09 Kewen Lin + + PR rtl-optimization/97705 + * ira.c (ira): Refactor some regstat free/init/compute invocation + into lambda function regstat_recompute_for_max_regno, and call it + when max_regno increases as remove_scratches succeeds. + +2020-11-08 David Edelsohn + + * config/rs6000/rs6000.c (rs6000_mangle_decl_assembler_name): Change + DECL_IS_BUILTIN -> DECL_IS_UNDECLARED_BUILTIN. + +2020-11-07 Martin Uecker + + * doc/extend.texi: Document mixing labels and code. + * doc/invoke.texi: Likewise. + +2020-11-06 Segher Boessenkool + + * config/rs6000/rs6000.md (@tablejump_normal): Don't abuse + operands[]. + (@tablejump_nospec): Ditto. + +2020-11-06 Peter Bergner + + * config/rs6000/rs6000.h (BIGGEST_ALIGNMENT): Revert previous commit + so as not to break the ABI. + * config/rs6000/rs6000-call.c (rs6000_init_builtins): Set the ABI + mandated alignment for __vector_pair and __vector_quad types. + +2020-11-06 Jeff Law + + PR target/91489 + * config/i386/i386.md (simple_return): Also check + for ms_hook_prologue function attribute. + * config/i386/i386.c (ix86_can_use_return_insn_p): + Also check for ms_hook_prologue function attribute. + * config/i386/i386-protos.h (ix86_function_ms_hook_prologue): Declare. + +2020-11-06 Segher Boessenkool + + PR target/96933 + * config/rs6000/rs6000.c (rs6000_expand_vector_init): Use + TARGET_POWERPC64 instead of TARGET_64BIT. + +2020-11-06 Joseph Myers + + * builtins.def (BUILT_IN_NANSD32, BUILT_IN_NANSD64) + (BUILT_IN_NANSD128): New built-in functions. + * fold-const-call.c (fold_const_call): Handle the new built-in + functions. + * doc/extend.texi (__builtin_nansd32, __builtin_nansd64) + (__builtin_nansd128): Document. + * doc/sourcebuild.texi (Effective-Target Keywords): Document + fenv_exceptions_dfp. + +2020-11-06 Bin Cheng + + * tree-ssa-uninit.c (find_var_cmp_const): New function. + (use_pred_not_overlap_with_undef_path_pred): Call above. + +2020-11-06 Iain Sandoe + + * config/darwin-c.c: Allow for Darwin20 to correspond to macOS 11. + * config/darwin-driver.c: Likewise. + +2020-11-06 Richard Biener + + * tree-ssa-pre.c (expr_pred_trans_d): Modify so elements + are embedded rather than allocated. Remove hashval member, + make all members integers. + (phi_trans_add): Adjust accordingly. + (phi_translate): Likewise. Deal with re-allocation + of the table. + +2020-11-06 Andrew MacLeod + + PR tree-optimization/97737 + PR tree-optimization/97741 + * gimple-range.cc: (gimple_ranger::range_of_stmt): Intersect newly + calculated ranges with the existing known global range. + +2020-11-06 Darius Galis + + * config/rx/rx.md (CTRLREG_PC): Add. + * config/rx/rx.c (CTRLREG_PC): Add + (rx_expand_builtin_mvtc): Add warning: PC register cannot + be used as dest. + +2020-11-06 Nathan Sidwell + + * tree.h (DECL_IS_BUILTIN): Rename to ... + (DECL_IS_UNDECLARED_BUILTIN): ... here. No need to use SOURCE_LOCUS. + * calls.c (maybe_warn_alloc_args_overflow): Adjust for rename. + * cfgexpand.c (pass_expand::execute): Likewise. + * dwarf2out.c (base_type_die, is_naming_typedef_decl): Likewise. + * godump.c (go_decl, go_type_decl): Likewise. + * print-tree.c (print_decl_identifier): Likewise. + * tree-pretty-print.c (dump_generic_node): Likewise. + * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Likewise. + * xcoffout.c (xcoff_assign_fundamental_type_number): Likewise. + +2020-11-06 David Candler + + * config/aarch64/aarch64-builtins.c + (TYPES_SHIFT2IMM): Add define. + (TYPES_SHIFT2IMM_UUSS): Add define. + (TYPES_USHIFT2IMM): Add define. + * config/aarch64/aarch64-simd.md + (aarch64_qshrn2_n): Add new insn for upper saturating shift right. + * config/aarch64/aarch64-simd-builtins.def: Add intrinsics. + * config/aarch64/arm_neon.h: + (vqrshrn_high_n_s16): Expand using intrinsic rather than inline asm. + (vqrshrn_high_n_s32): Likewise. + (vqrshrn_high_n_s64): Likewise. + (vqrshrn_high_n_u16): Likewise. + (vqrshrn_high_n_u32): Likewise. + (vqrshrn_high_n_u64): Likewise. + (vqrshrun_high_n_s16): Likewise. + (vqrshrun_high_n_s32): Likewise. + (vqrshrun_high_n_s64): Likewise. + (vqshrn_high_n_s16): Likewise. + (vqshrn_high_n_s32): Likewise. + (vqshrn_high_n_s64): Likewise. + (vqshrn_high_n_u16): Likewise. + (vqshrn_high_n_u32): Likewise. + (vqshrn_high_n_u64): Likewise. + (vqshrun_high_n_s16): Likewise. + (vqshrun_high_n_s32): Likewise. + (vqshrun_high_n_s64): Likewise. + +2020-11-06 Richard Sandiford + + * config/aarch64/aarch64-modes.def (VNx2BF, VNx4BF): Adjust nunits + and alignment based on the current VG. + * config/aarch64/iterators.md (SVE_ALL, SVE_24, SVE_2, SVE_4): Add + partial SVE BF modes. + (UNSPEC_REVBHW): New unspec. + (Vetype, Vesize, Vctype, VEL, Vel, vwcore, V_INT_CONTAINER) + (v_int_container, VPRED, vpred): Handle partial SVE BF modes. + (container_bits, Vcwtype): New mode attributes. + * config/aarch64/aarch64-sve.md + (@aarch64_sve_revbhw_): New pattern. + (@aarch64_sve_dup_lane): Extended from SVE_FULL to SVE_ALL. + (@aarch64_sve_rev, @aarch64_sve_): Likewise. + (@aarch64_sve_ext): Likewise. + * config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle + E_VNx2BFmode and E_VNx4BFmode. + (aarch64_evpc_rev_local): Base the analysis on the container size + instead of the element size. Use the new aarch64_sve_revbhw + patterns for SVE. + (aarch64_evpc_dup): Handle partial SVE data modes. Use the + container size instead of the element size when applying the + SVE immediate limit. Fix a previously incorrect bounds check. + (aarch64_expand_vec_perm_const_1): Handle partial SVE data modes. + +2020-11-06 Martin Liska + + * common.opt: Add new -fbit-tests option. + * doc/invoke.texi: Document the option. + * tree-switch-conversion.c (bit_test_cluster::find_bit_tests): + Use the option. + * tree-switch-conversion.h (is_enabled): New function. + +2020-11-06 Richard Biener + + * tree-ssa-sccvn.h (get_max_constant_value_id): Declare. + (get_next_constant_value_id): Likewise. + (value_id_constant_p): Inline and simplify. + * tree-ssa-sccvn.c (constant_value_ids): Remove. + (next_constant_value_id): Add. + (get_or_alloc_constant_value_id): Adjust. + (value_id_constant_p): Remove definition. + (get_max_constant_value_id): Define. + (get_next_value_id): Add assert for overflow. + (get_next_constant_value_id): Define. + (run_rpo_vn): Adjust. + (free_rpo_vn): Likewise. + (do_rpo_vn): Initialize next_constant_value_id. + * tree-ssa-pre.c (constant_value_expressions): New. + (add_to_value): Split into constant/non-constant value + handling. Avoid exact re-allocation. + (vn_valnum_from_value_id): Adjust. + (phi_translate_1): Remove spurious exact re-allocation. + (bitmap_find_leader): Adjust. Make sure we return + a CONSTANT value for a constant value id. + (do_pre_regular_insertion): Use 2 auto-elements for avail. + (do_pre_partial_partial_insertion): Likewise. + (init_pre): Allocate constant_value_expressions. + (fini_pre): Release constant_value_expressions. + +2020-11-06 Richard Biener + + PR tree-optimization/97706 + * tree-vect-patterns.c (possible_vector_mask_operation_p): + PHIs are possible mask operations. + (vect_determine_mask_precision): Handle PHIs. + (vect_determine_precisions): Walk PHIs in BB analysis. + +2020-11-06 Richard Biener + + * tree-vect-slp.c (vect_analyze_slp): Pass down the + SLP graph entry kind. + (vect_analyze_slp_instance): Simplify. + (vect_build_slp_instance): Adjust. + (vect_slp_check_for_constructors): Perform more + eligibility checks here. + +2020-11-06 Jan Hubicka + + * ipa-ref.h (enum ipa_ref_use): Remove GTY marker. + (struct ipa_ref): Remove GTY marker; reorder for better packing. + (struct ipa_ref_list): Remove GTY marker; turn references + nad referring to va_heap, vl_ptr vectors; update accesors. + * cgraph.h (symtab_node::iterate_reference): Update. + * ipa-ref.c (ipa_ref::remove_reference): Update. + * symtab.c (symtab_node::create_reference): Update. + (symtab_node::remove_all_references): Update. + (symtab_node::resolve_alias): Update. + +2020-11-06 Jakub Jelinek + + * ipa-modref-tree.h: Fix comment typos. + * ipa-modref.c: Likewise. + +2020-11-06 Andreas Krebbel + + * config/s390/s390.c (s390_option_override_internal): Remove + override of inline params. + +2020-11-06 Richard Biener + + PR tree-optimization/97706 + * tree-vect-patterns.c (vect_determine_mask_precision): + Remove worklist operation. + (vect_determine_stmt_precisions): Do not call + vect_determine_mask_precision here. + (vect_determine_precisions): Compute mask precision + in a forward walk. + +2020-11-06 Richard Biener + + PR tree-optimization/97732 + * tree-vect-loop.c (vectorizable_induction): Convert the + init elements to the vector component type. + * gimple-fold.c (gimple_build_vector): Use CONSTANT_CLASS_P + rather than TREE_CONSTANT to determine if elements are + eligible for VECTOR_CSTs. + +2020-11-06 Jan Hubicka + + * attr-fnspec.h (attr_fnspec::get_str): New accessor + * ipa-fnsummary.c (read_ipa_call_summary): Store also parm info + for builtins. + * ipa-modref.c (class fnspec_summary): New type. + (class fnspec_summaries_t): New type. + (modref_summary::modref_summary): Initialize writes_errno. + (struct modref_summary_lto): Add writes_errno. + (modref_summary_lto::modref_summary_lto): Initialize writes_errno. + (modref_summary::dump): Check for NULL pointers. + (modref_summary_lto::dump): Dump writes_errno. + (collapse_loads): Move up in source file. + (collapse_stores): New function. + (process_fnspec): Handle also internal calls. + (analyze_call): Likewise. + (analyze_stmt): Store fnspec string if needed. + (analyze_function): Initialize fnspec_sumarries. + (modref_summaries_lto::duplicate): Copy writes_errno. + (modref_write): Store writes_errno and fnspec summaries. + (read_section): Read writes_errno and fnspec summaries. + (modref_read): Initialize fnspec summaries. + (update_signature): Fix formating. + (compute_parm_map): Return true if sucessful. + (get_parm_type): New function. + (get_access_for_fnspec): New function. + (propagate_unknown_call): New function. + (modref_propagate_in_scc): Use it. + (pass_ipa_modref::execute): Delete fnspec_summaries. + (ipa_modref_c_finalize): Delete fnspec_summaries. + * ipa-prop.c: Include attr-fnspec.h. + (ipa_compute_jump_functions_for_bb): Also compute jump functions + for functions with fnspecs. + (ipa_read_edge_info): Read jump functions for builtins. + +2020-11-06 Jan Hubicka + + * ipa-fnsummary.h (class size_time_entry): Do not GTY annotate. + (class ipa_fnsummary): Turn size_time_table to auto_vec and + call_size_time_table to effecient vec; update constructors. + * ipa-fnsummary.c (ipa_fn_summary::account_size_time): Update. + (ipa_fn_summary::~ipa_fn_summary): Update. + (ipa_fn_summary_t::duplicate): Update. + (ipa_dump_fn_summary): Update. + (set_switch_stmt_execution_predicate): Update. + (analyze_function_body): Update. + (estimate_calls_size_and_time): Update. + (ipa_call_context::estimate_size_and_time): Update. + (ipa_merge_fn_summary_after_inlining): Update. + (ipa_update_overall_fn_summary): Update. + (inline_read_section): Update. + (ipa_fn_summary_write): Update. + +2020-11-06 Richard Biener + + PR tree-optimization/97733 + * tree-vect-slp.c (vect_analyze_slp_instance): If less + than two reductions were relevant or live do nothing. + +2020-11-06 Jeff Law + + PR tree-optimization/97223 + * match.pd (overflow detection and optimization): Handle conversions. + +2020-11-06 Eugene Rozenfeld + + * match.pd (x >> x): New pattern. + +2020-11-06 Kito Cheng + + * common/config/riscv/riscv-common.c (riscv_implied_info): + Add static and const. + (riscv_subset_list::handle_implied_ext): Add const due to + riscv_implied_info changed to const. + +2020-11-06 Kito Cheng + + PR target/96307 + * toplev.c (process_options): Remove param_asan_stack checking for kasan + option checking. + +2020-11-05 Marek Polacek + + PR c++/97675 + * doc/invoke.texi: Document -Wexceptions. + +2020-11-05 Marek Polacek + + PR c++/25814 + * doc/invoke.texi: Document -Wvexing-parse. + +2020-11-05 Andrew MacLeod + + PR tree-optimization/97725 + * range-op.cc (operator_equal::fold_range): Use new tmp value. + (operator_not_equal::fold_range): Ditto. + * value-query.cc (range_query::value_of_expr): Use int_range_max + not a value_range. + (range_query::value_on_edge): Ditto. + (range_query::value_of_stmt): Ditto. + +2020-11-05 Olivier Hainque + + * config/aarch64/aarch64-vxworks.h (TARGET_OS_USES_R18): + Remove definition. + (STATIC_CHAIN_REGNUM): Redefine to 9. + +2020-11-05 Olivier Hainque + + * config/aarch64/aarch64.md: Define PROBE_STACK_FIRST_REGNUM + and PROBE_STACK_SECOND_REGNUM constants, designating r10/r11. + Replacements for the PROBE_STACK_FIRST/SECOND_REG constants in + aarch64.c. + * config/aarch64/aarch64.c (PROBE_STACK_FIRST_REG): Remove. + (PROBE_STACK_SECOND_REG): Remove. + (aarch64_emit_probe_stack_range): Adjust to the _REG -> _REGNUM + suffix update for PROBE_STACK register numbers. + +2020-11-05 Jan Hubicka + + * gimple.c (gimple_call_fnspec): Handle C++ new and delete. + * gimple.h (gimple_call_from_new_or_delete): Constify parameter. + +2020-11-05 Aldy Hernandez + + PR tree-optimization/97721 + * gimple-range.cc (get_tree_range): Drop overflow from constants. + +2020-11-05 David Malcolm + + * tree-diagnostic-path.cc (struct path_summary::event_range): Move + out of path_summary to... + (struct event_range): ...here. + (class path_summary): Convert to... + (struct path_summary): ...this. + (path_summary::m_ranges): Drop "private". + (path_summary::print): Convert to... + (print_path_summary_as_text): ...this, passing in the path_summary + explicitly. + (default_tree_diagnostic_path_printer): Update for above change. + (selftest::test_empty_path): Likewise. + (selftest::test_intraprocedural_path): Likewise. + (selftest::test_interprocedural_path_1): Likewise. + (selftest::test_interprocedural_path_2): Likewise. + (selftest::test_recursion): Likewise. + +2020-11-05 qing zhao + + PR target/97715 + * config/i386/i386.c (zero_all_st_registers): Return + earlier when the FPU is disabled. + +2020-11-05 Jan Hubicka + + * ipa-modref.c (parm_map_for_arg): Initialize parm_offset and + parm_offset_knonw. + (read_section): Set writes_errno to false. + +2020-11-05 Richard Biener + + * tree-vect-data-refs.c (vect_slp_analyze_node_dependences): + Use the original stmts. + (vect_slp_analyze_node_alignment): Use the pattern stmt. + * tree-vect-slp.c (vect_fixup_store_groups_with_patterns): + New function. + (vect_slp_analyze_bb_1): Call it. + +2020-11-05 Tamar Christina + + * tree-vect-slp.c (vect_slp_tree_permute_noop_p): New. + (vect_optimize_slp): Optimize permutes. + (vectorizable_slp_permutation): Fix typo. + +2020-11-05 Richard Biener + + PR debug/97718 + * dwarf2out.c (add_abstract_origin_attribute): Make sure to + point to the abstract instance. + +2020-11-05 Tamar Christina + + * tree-vect-loop.c (vect_analyze_loop_2): Check kind. + * tree-vect-slp.c (vect_build_slp_instance): New. + (enum slp_instance_kind): Move to... + * tree-vectorizer.h (enum slp_instance_kind): .. Here + (SLP_INSTANCE_KIND): New. + +2020-11-05 Kewen Lin + + PR target/96933 + * config/rs6000/rs6000.c (rs6000_expand_vector_init): Use direct move + instructions for vector construction with char/short types. + * config/rs6000/rs6000.md (p8_mtvsrwz_v16qisi2): New define_insn. + (p8_mtvsrd_v16qidi2): Likewise. + +2020-11-04 Tamar Christina + + * tree-vect-slp.c (vect_analyze_slp_instance): Moved load/store lanes + check to ... + * tree-vect-loop.c (vect_analyze_loop_2): ..Here + +2020-11-04 Ilya Leoshkevich + + * config/s390/s390.c (NR_C_MODES): Unhardcode. + (s390_alloc_pool): Use size_t for iterating from 0 to + NR_C_MODES. + (s390_add_constant): Likewise. + (s390_find_constant): Likewise. + (s390_dump_pool): Likewise. + (s390_free_pool): Likewise. + +2020-11-04 Ilya Leoshkevich + + * config/s390/s390.md (RRe): Remove. + (RXe): Remove. + +2020-11-04 Andrew MacLeod + + PR tree-optimization/97515 + * gimple-range-cache.h (class ranger_cache): New prototypes plus + temporal cache pointer. + * gimple-range-cache.cc (struct range_timestamp): New. + (class temporal_cache): New. + (temporal_cache::temporal_cache): New. + (temporal_cache::~temporal_cache): New. + (temporal_cache::get_timestamp): New. + (temporal_cache::set_dependency): New. + (temporal_cache::temporal_value): New. + (temporal_cache::current_p): New. + (temporal_cache::set_timestamp): New. + (temporal_cache::set_always_current): New. + (ranger_cache::ranger_cache): Allocate the temporal cache. + (ranger_cache::~ranger_cache): Free temporal cache. + (ranger_cache::get_non_stale_global_range): New. + (ranger_cache::set_global_range): Add a timestamp. + (ranger_cache::register_dependency): New. Add timestamp dependency. + * gimple-range.cc (gimple_ranger::range_of_range_op): Add operand + dependencies. + (gimple_ranger::range_of_phi): Ditto. + (gimple_ranger::range_of_stmt): Check if global range is stale, and + recalculate if so. + +2020-11-04 Tobias Burnus + + * targhooks.c (default_zero_call_used_regs): Fix flag-name typo + in sorry. + +2020-11-04 Richard Biener + + * tree-vectorizer.h (vectorizable_phi): Adjust prototype. + * tree-vect-stmts.c (vect_transform_stmt): Adjust. + (vect_analyze_stmt): Pass cost_vec to vectorizable_phi. + * tree-vect-loop.c (vectorizable_phi): Do costing. + +2020-11-04 Richard Biener + + PR tree-optimization/97709 + * tree-vect-loop.c (vectorizable_live_operation): Set + SSA_NAME_OCCURS_IN_ABNORMAL_PHI when necessary. + +2020-11-04 Jakub Jelinek + + PR tree-optimization/97690 + * tree-ssa-phiopt.c (conditional_replacement): Also optimize + cond ? pow2p_cst : 0 as ((type) cond) << cst. + +2020-11-04 Richard Biener + + * tree-vect-loop.c (vectorizable_induction): Re-instantiate + previously removed CSE of SLP IVs. + +2020-11-04 Uroš Bizjak + + * config/i386/i386-options.c (ix86_recompute_optlev_based_flags): + Fix Intel MCU psABI comment w.r.t DEFAULT_PCC_STRUCT_RETURN. + +2020-11-04 Richard Biener + + PR bootstrap/97666 + * tree-vect-slp.c (vect_build_slp_tree_2): Revert previous + fix and instead adjust the memset. + +2020-11-04 Pat Bernardi + + * config/i386/i386elf.h (SUBTARGET_RETURN_IN_MEMORY): Remove. + (ASM_OUTPUT_ASCII): Likewise. + (DEFAULT_PCC_STRUCT_RETURN): Define. + * config/i386/i386.c (ix86_return_in_memory): Remove + SUBTARGET_RETURN_IN_MEMORY. + +2020-11-04 liuhongt + + PR target/97540 + * ira.c: (ira_setup_alts): Extract memory from operand only + for special memory constraint. + * recog.c (asm_operand_ok): Ditto. + * lra-constraints.c (process_alt_operands): MEM_P is + required for normal memory constraint. + +2020-11-04 liuhongt + + PR target/97532 + * lra-constraints.c (valid_address_p): Handle operand of + special memory constraint. + (process_address_1): Ditto. + +2020-11-03 Jan Hubicka + + PR ipa/97695 + * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Fix ICE with + in dumping code. + (cgraph_node::remove): Save clone info before releasing it and pass it + to unregister. + * cgraph.h (symtab_node::unregister): Add clone_info parameter. + (cgraph_clone::unregister): Likewise. + * cgraphclones.c (cgraph_node::find_replacement): Copy clone info + * symtab-clones.cc (clone_infos_t::duplicate): Remove. + (clone_info::get_create): Simplify. + * symtab.c (symtab_node::unregister): Pass around clone info. + * varpool.c (varpool_node::remove): Update. + +2020-11-03 Thomas Schwinge + + * omp-low.c (scan_omp_for) : Use proper location to + 'inform' of enclosing parent compute construct. + +2020-11-03 Jan Hubicka + + PR ipa/97698 + * cgraphclones.c (duplicate_thunk_for_node): Check that info is + non-NULL. + +2020-11-03 Uroš Bizjak + + * config/i386/i386.c (ix86_function_arg_regno_p): Use up to + SSE_REGPARM_MAX registers to pass function parameters + for 32bit Mach-O targets. + * config/i386/i386.h (X86_32_MMX_REGPARM_MAX): New macro. + (MMX_REGPARM_MAX): Use it. + +2020-11-03 Dennis Zhang + + * config/aarch64/aarch64-simd-builtins.def (vget_lo_half): New entry. + (vget_hi_half): Likewise. + * config/aarch64/aarch64-simd.md (aarch64_vget_lo_halfv8bf): New entry. + (aarch64_vget_hi_halfv8bf): Likewise. + * config/aarch64/arm_neon.h (vget_low_bf16): New intrinsic. + (vget_high_bf16): Likewise. + +2020-11-03 Yang Yang + + * cgraph.h (struct cgraph_simd_clone): Change field "simdlen" of + struct cgraph_simd_clone from unsigned int to poly_uint64. + * config/aarch64/aarch64.c + (aarch64_simd_clone_compute_vecsize_and_simdlen): adaptation of + operations on "simdlen". + * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen): + Printf formats update. + * gengtype.c (main): Handle poly_uint64. + * omp-simd-clone.c (simd_clone_mangle): Likewise.Re + (simd_clone_adjust_return_type): Likewise. + (create_tmp_simd_array): Likewise. + (simd_clone_adjust_argument_types): Likewise. + (simd_clone_init_simd_arrays): Likewise. + (ipa_simd_modify_function_body): Likewise. + (simd_clone_adjust): Likewise. + (expand_simd_clones): Likewise. + * poly-int-types.h (vector_unroll_factor): New macro. + * poly-int.h (constant_multiple_p): Add two-argument versions. + * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise. + +2020-11-03 Richard Biener + + PR tree-optimization/97623 + * params.opt (-param=max-pre-hoist-insert-iterations): New. + * doc/invoke.texi (max-pre-hoist-insert-iterations): Document. + * tree-ssa-pre.c (insert): Do at most max-pre-hoist-insert-iterations + hoist insert iterations. + +2020-11-03 Richard Biener + + PR middle-end/97579 + * gimple-isel.cc (gimple_expand_vec_cond_expr): Use + the correct types for the vcond_mask/vec_cmp optab queries. + +2020-11-03 Andrew MacLeod + + * gimple-range-cache.cc (ssa_global_cache::get_global_range): Return + true if there was a previous range set. + (ranger_cache::ranger_cache): Take a gimple_ranger parameter. + (ranger_cache::set_global_range): Propagate the value if updating. + (ranger_cache::propagate_cache): Renamed from iterative_cache_update. + (ranger_cache::propagate_updated_value): New. Split from: + (ranger_cache::fill_block_cache): Split out value propagator. + * gimple-range-cache.h (ssa_global_cache): Update prototypes. + (ranger_cache): Update prototypes. + +2020-11-03 Andrew MacLeod + + * gimple-range-cache.h (block_range_cache): Add new entry point. + (ranger_cache): Privatize global abnd block cache members. + * gimple-range-cache.cc (ssa_block_ranges::set_bb_range): Add bounds + check. + (ssa_block_ranges::set_bb_varying): Ditto. + (ssa_block_ranges::get_bb_range): Ditto. + (ssa_block_ranges::bb_range_p): Ditto. + (block_range_cache::get_block_ranges): Fix formatting. + (block_range_cache::query_block_ranges): New. + (block_range_cache::get_bb_range): Use Query_block_ranges. + (block_range_cache::bb_range_p): Ditto. + (ranger_cache::dump): New. + (ranger_cache::get_global_range): New. + (ranger_cache::set_global_range): New. + * gimple-range.cc (gimple_ranger::range_of_expr): Use new API. + (gimple_ranger::range_of_stmt): Ditto. + (gimple_ranger::export_global_ranges): Ditto. + (gimple_ranger::dump): Ditto. + +2020-11-03 Bernd Edlinger + + * fold-const.c (getbyterep): Remove duplicated statement. + +2020-11-03 Bernd Edlinger + + PR target/97205 + * cfgexpand.c (align_local_variable): Make SSA_NAMEs + at least MODE_ALIGNED. + (expand_one_stack_var_at): Increase MEM_ALIGN for SSA_NAMEs. + +2020-11-03 Zhiheng Xie + Nannan Zheng + + * config/aarch64/aarch64-simd-builtins.def: Add proper FLAG + for AES/SHA/SM3/SM4 intrinsics. + +2020-11-03 Zhiheng Xie + Nannan Zheng + + * config/aarch64/aarch64-simd-builtins.def: Add proper FLAG + for compare intrinsics. + +2020-11-03 Richard Biener + + * dwarf2out.c (maybe_create_die_with_external_ref): Remove + hashtable entry. + +2020-11-03 Andrea Corallo + + * config/arm/arm_neon.h (vst2_lane_bf16, vst2q_lane_bf16) + (vst3_lane_bf16, vst3q_lane_bf16, vst4_lane_bf16) + (vst4q_lane_bf16): New intrinsics. + * config/arm/arm_neon_builtins.def: Touch it for: + __builtin_neon_vst2_lanev4bf, __builtin_neon_vst2_lanev8bf, + __builtin_neon_vst3_lanev4bf, __builtin_neon_vst3_lanev8bf, + __builtin_neon_vst4_lanev4bf,__builtin_neon_vst4_lanev8bf. + +2020-11-03 Andrea Corallo + + * config/arm/arm_neon.h (vld2_lane_bf16, vld2q_lane_bf16) + (vld3_lane_bf16, vld3q_lane_bf16, vld4_lane_bf16) + (vld4q_lane_bf16): Add intrinsics. + * config/arm/arm_neon_builtins.def: Touch for: + __builtin_neon_vld2_lanev4bf, __builtin_neon_vld2_lanev8bf, + __builtin_neon_vld3_lanev4bf, __builtin_neon_vld3_lanev8bf, + __builtin_neon_vld4_lanev4bf, __builtin_neon_vld4_lanev8bf. + * config/arm/iterators.md (VQ_HS): Add V8BF to the iterator. + +2020-11-03 Andrea Corallo + + * config/arm/arm_neon.h (vst1_bf16, vst1q_bf16): Add intrinsics. + * config/arm/arm_neon_builtins.def : Touch for: + __builtin_neon_vst1v4bf, __builtin_neon_vst1v8bf. + +2020-11-03 Andrea Corallo + + * config/arm/arm-builtins.c (VAR14): Define macro. + * config/arm/arm_neon_builtins.def: Touch for: + __builtin_neon_vld1v4bf, __builtin_neon_vld1v8bf. + * config/arm/arm_neon.h (vld1_bf16, vld1q_bf16): Add intrinsics. + +2020-11-03 Andrea Corallo + + * config/arm/arm_neon.h (vst1_lane_bf16, vst1q_lane_bf16): Add + intrinsics. + * config/arm/arm_neon_builtins.def (STORE1LANE): Add v4bf, v8bf. + +2020-11-03 Andrea Corallo + + * config/arm/arm_neon_builtins.def: Add to LOAD1LANE v4bf, v8bf. + * config/arm/arm_neon.h (vld1_lane_bf16, vld1q_lane_bf16): Add + intrinsics. + +2020-11-03 Richard Biener + + PR bootstrap/97666 + * tree-vect-slp.c (vect_build_slp_tree_2): Scale + allocation of skip_args by sizeof (bool). + +2020-11-03 Richard Biener + + PR tree-optimization/80928 + * tree-vect-loop.c (vectorizable_induction): SLP vectorize + nested inductions. + +2020-11-03 Jan Hubicka + + PR ipa/97578 + * ipa-inline-transform.c (maybe_materialize_called_clones): New + function. + (inline_transform): Use it. + +2020-11-03 Richard Biener + + PR tree-optimization/97678 + * tree-vect-slp.c (vect_build_slp_tree_2): Do not track + the initial values of inductions when not nested. + * tree-vect-loop.c (vectorizable_induction): Look at + PHI node initial values again for SLP and not nested + inductions. Handle LOOP_VINFO_MASK_SKIP_NITERS and cost + invariants. + +2020-11-03 Uroš Bizjak + + * config/i386/sse.md (aesu8): + Do not use xmm_regs array. Fix whitespace. + +2020-11-03 Uroš Bizjak + + * config/i386/i386-expand.c (ix86_expand_builtin): Fix comment. + +2020-11-03 Thomas Schwinge + + * omp-low.c (scan_omp_for) : Move earlier inconsistent + nested 'reduction' clauses checking. + +2020-11-03 Thomas Schwinge + + * omp-low.c (scan_omp_for) : More precise diagnostics for + 'gang', 'worker', 'vector' clauses with arguments only allowed in + 'kernels' regions. + +2020-11-03 Kewen Lin + + PR tree-optimization/96789 + * function.h (struct function): New member unsigned pending_TODOs. + * passes.c (class pass_pre_slp_scalar_cleanup): New class. + (make_pass_pre_slp_scalar_cleanup): New function. + (pass_data_pre_slp_scalar_cleanup): New pass data. + * passes.def: (pass_pre_slp_scalar_cleanup): New pass, add + pass_fre and pass_dse as its children. + * timevar.def (TV_SCALAR_CLEANUP): New timevar. + * tree-pass.h (PENDING_TODO_force_next_scalar_cleanup): New + pending TODO flag. + (make_pass_pre_slp_scalar_cleanup): New declare. + * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): + Once any outermost loop gets unrolled, flag cfun pending_TODOs + PENDING_TODO_force_next_scalar_cleanup on. + +2020-11-02 Alan Modra + + PR middle-end/97267 + * calls.h (maybe_complain_about_tail_call): Declare. + * calls.c (maybe_complain_about_tail_call): Make global. + (can_implement_as_sibling_call_p): Delete reg_parm_stack_space + param. Adjust caller. Move REG_PARM_STACK_SPACE check to.. + * config/i386/i386.c (ix86_function_ok_for_sibcall): ..here. + +2020-11-02 Vladimir N. Makarov + + * ira.c (ira_remove_scratches): Rename to remove_scratches. Make + it static and returning flag of any change. + (ira.c): Call ira_expand_reg_equiv in case of removing scratches. + +2020-11-02 H.J. Lu + + PR target/97140 + * config/i386/i386-expand.c (ix86_expand_builtin): Require MMX + for __builtin_ia32_maskmovq. + +2020-11-02 Martin Sebor + + * doc/invoke.texi (-Wstringop-overflow): Correct default setting. + (-Wstringop-overread): Move past -Wstringop-overflow. + +2020-11-02 François-Xavier Coudert + + PR bootstrap/57076 + * Makefile.in (gcc-vers.texi): Quote @, { and }. + +2020-11-02 Carl Love + + PR target/93449 + * config/rs6000/altivec.h (__builtin_bcdadd, __builtin_bcdadd_lt, + __builtin_bcdadd_eq, __builtin_bcdadd_gt, __builtin_bcdadd_ofl, + __builtin_bcdadd_ov, __builtin_bcdsub, __builtin_bcdsub_lt, + __builtin_bcdsub_eq, __builtin_bcdsub_gt, __builtin_bcdsub_ofl, + __builtin_bcdsub_ov, __builtin_bcdinvalid, __builtin_bcdmul10, + __builtin_bcddiv10, __builtin_bcd2dfp, __builtin_bcdcmpeq, + __builtin_bcdcmpgt, __builtin_bcdcmplt, __builtin_bcdcmpge, + __builtin_bcdcmple): Add defines. + * config/rs6000/altivec.md: Add UNSPEC_BCDSHIFT. + (BCD_TEST): Add le, ge to code iterator. + Add VBCD mode iterator. + (bcd_test, *bcd_test2, + bcd_, bcd_): Add mode to name. + Change iterator from V1TI to VBCD. + (*bcdinvalid_, bcdshift_v16qi): New define_insn. + (bcdinvalid_, bcdmul10_v16qi, bcddiv10_v16qi): New define. + * config/rs6000/dfp.md (dfp_denbcd_v16qi_inst): New define_insn. + (dfp_denbcd_v16qi): New define_expand. + * config/rs6000/rs6000-builtin.def (BU_P8V_MISC_1): New define. + (BCDADD): Replaced with BCDADD_V1TI and BCDADD_V16QI. + (BCDADD_LT): Replaced with BCDADD_LT_V1TI and BCDADD_LT_V16QI. + (BCDADD_EQ): Replaced with BCDADD_EQ_V1TI and BCDADD_EQ_V16QI. + (BCDADD_GT): Replaced with BCDADD_GT_V1TI and BCDADD_GT_V16QI. + (BCDADD_OV): Replaced with BCDADD_OV_V1TI and BCDADD_OV_V16QI. + (BCDSUB_V1TI, BCDSUB_V16QI, BCDSUB_LT_V1TI, BCDSUB_LT_V16QI, + BCDSUB_LE_V1TI, BCDSUB_LE_V16QI, BCDSUB_EQ_V1TI, BCDSUB_EQ_V16QI, + BCDSUB_GT_V1TI, BCDSUB_GT_V16QI, BCDSUB_GE_V1TI, BCDSUB_GE_V16QI, + BCDSUB_OV_V1TI, BCDSUB_OV_V16QI, BCDINVALID_V1TI, BCDINVALID_V16QI, + BCDMUL10_V16QI, BCDDIV10_V16QI, DENBCD_V16QI): New builtin definitions. + (BCDADD, BCDADD_LT, BCDADD_EQ, BCDADD_GT, BCDADD_OV, BCDSUB, BCDSUB_LT, + BCDSUB_LE, BCDSUB_EQ, BCDSUB_GT, BCDSUB_GE, BCDSUB_OV, BCDINVALID, + BCDMUL10, BCDDIV10, DENBCD): New overload definitions. + * config/rs6000/rs6000-call.c (P8V_BUILTIN_VEC_BCDADD, P8V_BUILTIN_VEC_BCDADD_LT, + P8V_BUILTIN_VEC_BCDADD_EQ, P8V_BUILTIN_VEC_BCDADD_GT, P8V_BUILTIN_VEC_BCDADD_OV, + P8V_BUILTIN_VEC_BCDINVALID, P9V_BUILTIN_VEC_BCDMUL10, P8V_BUILTIN_VEC_DENBCD. + P8V_BUILTIN_VEC_BCDSUB, P8V_BUILTIN_VEC_BCDSUB_LT, P8V_BUILTIN_VEC_BCDSUB_LE, + P8V_BUILTIN_VEC_BCDSUB_EQ, P8V_BUILTIN_VEC_BCDSUB_GT, P8V_BUILTIN_VEC_BCDSUB_GE, + P8V_BUILTIN_VEC_BCDSUB_OV): New overloaded specifications. + (CODE_FOR_bcdadd): Replaced with CODE_FOR_bcdadd_v16qi and CODE_FOR_bcdadd_v1ti. + (CODE_FOR_bcdadd_lt): Replaced with CODE_FOR_bcdadd_lt_v16qi and CODE_FOR_bcdadd_lt_v1ti. + (CODE_FOR_bcdadd_eq): Replaced with CODE_FOR_bcdadd_eq_v16qi and CODE_FOR_bcdadd_eq_v1ti. + (CODE_FOR_bcdadd_gt): Replaced with CODE_FOR_bcdadd_gt_v16qi and CODE_FOR_bcdadd_gt_v1ti. + (CODE_FOR_bcdsub): Replaced with CODE_FOR_bcdsub_v16qi and CODE_FOR_bcdsub_v1ti. + (CODE_FOR_bcdsub_lt): Replaced with CODE_FOR_bcdsub_lt_v16qi and CODE_FOR_bcdsub_lt_v1ti. + (CODE_FOR_bcdsub_eq): Replaced with CODE_FOR_bcdsub_eq_v16qi and CODE_FOR_bcdsub_eq_v1ti. + (CODE_FOR_bcdsub_gt): Replaced with CODE_FOR_bcdsub_gt_v16qi and CODE_FOR_bcdsub_gt_v1ti. + (rs6000_expand_ternop_builtin): Add CODE_FOR_dfp_denbcd_v16qi to else if. + * doc/extend.texi: Add documentation for new builtins. + +2020-11-02 Nathan Sidwell + + * tree.c (cache_integer_cst): Fixup pointer caching to match + wide_int_to_type_1's expectations. Add comment. + +2020-11-02 Nathan Sidwell + + * tree.h (id_equal): Call the symetric predicate with swapped + arguments. + +2020-11-02 Nathan Sidwell + + * print-tree.c (print_node): Display all the operands of a call + expr. + +2020-11-02 Vladimir N. Makarov + + * config/rs6000/vsx.md (*vsx_extract__store_p9): Add hint * + to 2nd alternative of the 1st scratch. + +2020-11-02 Sudakshina Das + + PR target/97638 + * config/aarch64/aarch64-bti-insert.c (aarch64_pac_insn_p): Update + return value on INSN_P check. + +2020-11-02 Richard Biener + + * tree.h (build_real_from_wide): Declare. + * tree.c (build_real_from_wide): New function. + * tree-vect-slp.c (vect_build_slp_tree_2): Remove + restriction on induction vectorization, represent + the initial value. + * tree-vect-loop.c (vect_model_induction_cost): Inline ... + (vectorizable_induction): ... here. Rewrite SLP + code generation. + +2020-11-02 Martin Jambor + + * dbgcnt.def (ipa_cp_values): New counter. + (ipa_cp_vr): Likewise. + * ipa-cp.c (decide_about_value): Check and bump ipa_cp_values debug + counter. + (decide_whether_version_node): Likewise. + (ipcp_store_vr_results):Check and bump ipa_cp_vr debug counter. + +2020-11-02 Christophe Lyon + + * config/arm/arm.c (arm_thumb1_mi_thunk): Build mi_delta in r3 and + do not emit function address and delta when -mpure-code is used. + +2020-11-02 Christophe Lyon + + * config/arm/thumb1.md (thumb1_movsi_insn): Call + thumb1_gen_const_int_print. + * config/arm/arm-protos.h (thumb1_gen_const_int_print): Add + prototype. + * config/arm/arm.c (thumb1_gen_const_int_print): New. + +2020-11-02 Christophe Lyon + + * config/arm/arm.c (thumb1_const_rtl, thumb1_const_print): New + classes. + (thumb1_gen_const_int): Rename to ... + (thumb1_gen_const_int_1): ... New helper function. Add capability + to emit either RTL or asm, improve generated code. + (thumb1_gen_const_int_rtl): New function. + * config/arm/arm-protos.h (thumb1_gen_const_int): Rename to + thumb1_gen_const_int_rtl. + * config/arm/thumb1.md: Call thumb1_gen_const_int_rtl instead + of thumb1_gen_const_int. + +2020-11-02 Richard Biener + + PR tree-optimization/97558 + * tree-vect-loop.c (vectorizable_reduction): For nested SLP + cycles compute invariant operands vector type. + +2020-11-02 Richard Biener + + PR tree-optimization/97558 + * tree-vect-loop.c (vect_fixup_scalar_cycles_with_patterns): + Check for any mismatch in pattern vs. non-pattern and dissolve + the group if there is one. + * tree-vect-slp.c (vect_analyze_slp_instance): Avoid + analyzing not relevant reductions. + (vect_analyze_slp): Avoid analyzing not relevant reduction + groups. + +2020-11-02 Richard Biener + + PR tree-optimization/97650 + * tree-vect-slp.c (vect_get_and_check_slp_defs): Check + for SSA_NAME before checking SSA_NAME_IS_DEFAULT_DEF. + +2020-11-02 Kito Cheng + + * common/config/riscv/riscv-common.c + (riscv_subset_list::parse_multiletter_ext): Checking multiletter + extension has more than 1 letter. + +2020-11-02 Kito Cheng + + * config.gcc (riscv*-*-*): Handle --with-multilib-generator. + * configure: Regen. + * configure.ac: Add --with-multilib-generator. + * config/riscv/multilib-generator: Exit when parsing arch string error. + * config/riscv/t-withmultilib-generator: New. + * doc/install.texi: Document --with-multilib-generator. + +2020-11-02 Christophe Lyon + + PR target/96770 + * config/arm/arm.c (thumb_legitimate_constant_p): Accept + (symbol_ref + addend) when literal pool is disabled. + (arm_valid_symbolic_address_p): Add support for thumb-1 without + MOVT/MOVW. + * config/arm/thumb1.md (*thumb1_movsi_insn): Accept (symbol_ref + + addend) in the pure-code alternative. + +2020-11-02 Christophe Lyon + + PR target/96967 + * config/arm/arm.c (thumb_legitimate_constant_p): Add support for + disabled literal pool in thumb-1. + * config/arm/thumb1.md (thumb1_movsi_symbol_ref): Remove. + (*thumb1_movsi_insn): Add support for SYMBOL_REF with -mpure-code. + +2020-11-01 Iain Sandoe + + * config/host-darwin.c: Align pch_address_space to 16384. + +2020-11-01 Pat Bernardi + + * config/i386/i386.c (ix86_expand_prologue): Set the stack usage to 0 + for naked functions. + +2020-11-01 Iain Buclaw + + PR ipa/97660 + * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Don't call + clone_info::get when cgraph_node::get returns NULL. + +2020-10-31 Jan Hubicka + + * Makefile.in: (OBJS): Add symtab-clones.o + (GTFILES): Add symtab-clones.h + * cgraph.c: Include symtab-clones.h. + (cgraph_edge::resolve_speculation): Fix formating + (cgraph_edge::redirect_call_stmt_to_callee): Update. + (cgraph_update_edges_for_call_stmt): Update + (release_function_body): Fix formating. + (cgraph_node::remove): Fix formating. + (cgraph_node::dump): Fix formating. + (cgraph_node::get_availability): Fix formating. + (cgraph_node::call_for_symbol_thunks_and_aliases): Fix formating. + (set_const_flag_1): Fix formating. + (set_pure_flag_1): Fix formating. + (cgraph_node::can_remove_if_no_direct_calls_p): Fix formating. + (collect_callers_of_node_1): Fix formating. + (clone_of_p): Update. + (cgraph_node::verify_node): Update. + (cgraph_c_finalize): Call clone_info::release (). + * cgraph.h (struct cgraph_clone_info): Move to symtab-clones.h. + (cgraph_node): Remove clone_info. + (symbol_table): Add m_clones. + * cgraphclones.c: Include symtab-clone.h. + (duplicate_thunk_for_node): Update. + (cgraph_node::create_clone): Update. + (cgraph_node::create_virtual_clone): Update. + (cgraph_node::find_replacement): Update. + (cgraph_node::materialize_clone): Update. + * gengtype.c (open_base_files): Include symtab-clones.h. + * ipa-cp.c: Include symtab-clones.h. + (initialize_node_lattices): Update. + (want_remove_some_param_p): Update. + (create_specialized_node): Update. + * ipa-fnsummary.c: Include symtab-clones.h. + (ipa_fn_summary_t::duplicate): Update. + * ipa-modref.c: Include symtab-clones.h. + (update_signature): Update. + * ipa-param-manipulation.c: Include symtab-clones.h. + (ipa_param_body_adjustments::common_initialization): Update. + * ipa-prop.c: Include symtab-clones.h. + (adjust_agg_replacement_values): Update. + (ipcp_get_parm_bits): Update. + (ipcp_update_bits): Update. + (ipcp_update_vr): Update. + * ipa-sra.c: Include symtab-clones.h. + (process_isra_node_results): Update. + (disable_unavailable_parameters): Update. + * lto-cgraph.c: Include symtab-clone.h. + (output_cgraph_opt_summary_p): Update. + (output_node_opt_summary): Update. + (input_node_opt_summary): Update. + * symtab-clones.cc: New file. + * symtab-clones.h: New file. + * tree-inline.c (expand_call_inline): Update. + (update_clone_info): Update. + (tree_function_versioning): Update. + +2020-10-31 Jan Hubicka + + * ipa-modref.c (modref_summary::dump): Dump writes_errno. + (parm_map_for_arg): Break out from ... + (merge_call_side_effects): ... here. + (get_access_for_fnspec): New function. + (process_fnspec): New function. + (analyze_call): Use it. + (analyze_stmt): Update. + (analyze_function): Initialize writes_errno. + (modref_summaries::duplicate): Duplicate writes_errno. + * ipa-modref.h (struct modref_summary): Add writes_errno. + * tree-ssa-alias.c (call_may_clobber_ref_p_1): Check errno. + +2020-10-30 Michael Meissner + + * config/rs6000/rs6000.c (glibc_supports_ieee_128bit): New helper + function. + (rs6000_option_override_internal): Call it. + +2020-10-30 Qing Zhao + H.J.Lu + + * common.opt: Add new option -fzero-call-used-regs + * config/i386/i386.c (zero_call_used_regno_p): New function. + (zero_call_used_regno_mode): Likewise. + (zero_all_vector_registers): Likewise. + (zero_all_st_registers): Likewise. + (zero_all_mm_registers): Likewise. + (ix86_zero_call_used_regs): Likewise. + (TARGET_ZERO_CALL_USED_REGS): Define. + * df-scan.c (df_epilogue_uses_p): New function. + (df_get_exit_block_use_set): Replace EPILOGUE_USES with + df_epilogue_uses_p. + * df.h (df_epilogue_uses_p): Declare. + * doc/extend.texi: Document the new zero_call_used_regs attribute. + * doc/invoke.texi: Document the new -fzero-call-used-regs option. + * doc/tm.texi: Regenerate. + * doc/tm.texi.in (TARGET_ZERO_CALL_USED_REGS): New hook. + * emit-rtl.h (struct rtl_data): New field must_be_zero_on_return. + * flag-types.h (namespace zero_regs_flags): New namespace. + * function.c (gen_call_used_regs_seq): New function. + (class pass_zero_call_used_regs): New class. + (pass_zero_call_used_regs::execute): New function. + (make_pass_zero_call_used_regs): New function. + * optabs.c (expand_asm_reg_clobber_mem_blockage): New function. + * optabs.h (expand_asm_reg_clobber_mem_blockage): Declare. + * opts.c (zero_call_used_regs_opts): New structure array + initialization. + (parse_zero_call_used_regs_options): New function. + (common_handle_option): Handle -fzero-call-used-regs. + * opts.h (zero_call_used_regs_opts): New structure array. + * passes.def: Add new pass pass_zero_call_used_regs. + * recog.c (valid_insn_p): New function. + * recog.h (valid_insn_p): Declare. + * resource.c (init_resource_info): Replace EPILOGUE_USES with + df_epilogue_uses_p. + * target.def (zero_call_used_regs): New hook. + * targhooks.c (default_zero_call_used_regs): New function. + * targhooks.h (default_zero_call_used_regs): Declare. + * tree-pass.h (make_pass_zero_call_used_regs): Declare. + +2020-10-30 Vladimir N. Makarov + + * lra.c (get_scratch_reg): New function. + (remove_scratches_1): Rename remove_insn_scratches. Use + ira_remove_insn_scratches and get_scratch_reg. + (remove_scratches): Do not + initialize scratches, scratch_bitmap, and scratch_operand_bitmap. + (lra): Call ira_restore_scratches instead of restore_scratches. + (struct sloc, sloc_t, scratches, scratch_bitmap) + (scratch_operand_bitmap, lra_former_scratch_p) + (lra_former_scratch_operand_p, lra_register_new_scratch_op) + (restore_scratches): Move them to ... + * ira.c: ... here. + (former_scratch_p, former_scratch_operand_p): Rename to + ira_former_scratch_p and ira_former_scratch_operand_p. + (contains_X_constraint_p): New function. + (register_new_scratch_op): Rename to ira_register_new_scratch_op. + Change it to work for IRA and LRA. + (restore_scratches): Rename to ira_restore_scratches. + (get_scratch_reg, ira_remove_insn_scratches): New functions. + (ira): Call ira_remove_scratches if we use LRA. + * ira.h (ira_former_scratch_p, ira_former_scratch_operand_p): New + prototypes. + (ira_register_new_scratch_op, ira_restore_scratches): New prototypes. + (ira_remove_insn_scratches): New prototype. + * lra-int.h (lra_former_scratch_p, lra_former_scratch_operand_p): + Remove prototypes. + (lra_register_new_scratch_op): Ditto. + * lra-constraints.c: Rename lra_former_scratch_p and + lra_former_scratch_p to ira_former_scratch_p and to + ira_former_scratch_p. + * lra-remat.c: Ditto. + * lra-spills.c: Rename lra_former_scratch_p to ira_former_scratch_p. + +2020-10-30 Martin Sebor + + PR middle-end/97556 + * builtins.c (access_ref::add_offset): Cap offset lower bound + to at most the the upper bound. + +2020-10-30 Jan Hubicka + + PR pch/97593 + * cgraph.c (cgraph_node::create_thunk): Register thunk as early during + parsing. + * cgraphunit.c (analyze_functions): Call + thunk_info::process_early_thunks. + * symtab-thunks.cc (struct unprocessed_thunk): New struct. + (thunks): New static variable. + (thunk_info::register_early): New member function. + (thunk_info::process_early_thunks): New member function. + * symtab-thunks.h (thunk_info::register_early): Declare. + (thunk_info::process_early_thunks): Declare. + +2020-10-30 Richard Biener + + PR tree-optimization/97623 + * tree-ssa-pre.c (insert): First do hoist insertion in + a backward walk. + +2020-10-30 Richard Biener + + PR tree-optimization/97626 + * tree-vect-slp.c (vect_slp_analyze_node_operations): + Exchange the lvisited hash-set for a vector, roll back + recursive adds to visited when analysis failed. + (vect_slp_analyze_operations): Likewise. + +2020-10-30 Zhiheng Xie + Nannan Zheng + + * config/aarch64/aarch64-simd-builtins.def: Add proper FLAG + for conversion intrinsics. + +2020-10-30 Richard Biener + + PR tree-optimization/97633 + * tree-vect-slp.c (): Update backedges in single-node cycles. + Optimize processing of externals. + +2020-10-30 Alex Coplan + + PR target/96998 + * combine.c (make_extraction): Also handle shifts written as + (mult x 2^n), avoid creating an extract rtx for these. + * config/aarch64/aarch64.c (aarch64_is_extend_from_extract): Delete. + (aarch64_classify_index): Remove extract-based address handling. + (aarch64_strip_extend): Likewise. + (aarch64_rtx_arith_op_extract_p): Likewise, remove now-unused parameter. + Update callers... + (aarch64_rtx_costs): ... here. + +2020-10-30 Olivier Hainque + + * config/rs6000/vxworks.h (TARGET_OS_CPP_BUILTINS): Also + builtin_define __ppc and __ppc__ for VxWorks 7. + +2020-10-30 Olivier Hainque + Douglas Rupp + Pat Bernardi + + * config.gcc: Adjust the ix86/x86_64-wrs-vxworks filters + to apply to VxWorks 7 as well. + * config/i386/t-vxworks (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): + Remove the fPIC multilib and add one for the large code model + on x86_64. + * config/i386/vxworks.h: Separate sections for TARGET_VXWORKS7, + other variants and common bits. + (TARGET_OS_CPP_BUILTINS): Augment to support a range of CPU + families. Leverage VX_CPU_PREFIX. + (CC1_SPEC): Add definition. + (STACK_CHECK_PROTECT): Use conditional expression instead of + heavier to read conditioned macro definitions. + +2020-10-30 Jakub Jelinek + + * gimplify.c (gimplify_scan_omp_clauses): Force + OMP_CLAUSE_ALLOCATE_ALLOCATOR into a temporary if it is non-NULL and + non-constant. + (gimplify_omp_for): Only put allocate on inner taskloop if lastprivate + for the same variable is going to be put there, and in that case + if the OMP_CLAUSE_ALLOCATE_ALLOCATOR is non-NULL non-constant, make + the allocator firstprivate on task. + +2020-10-30 Michael Meissner + + * config/rs6000/rs6000.c (rs6000_option_override_internal): Allow + long double type to be changed for C/C++ if glibc 2.32 or newer. + (rs6000_invalid_binary_op): Update error messages about mixing IBM + long double and IEEE 128-bit. + +2020-10-29 Richard Biener + + * tree-ssa-pre.c (compute_avail): Free operands consistently. + * tree-vect-loop.c (vectorizable_phi): Make sure all operand + defs vectors are released. + +2020-10-29 Jan Hubicka + + * vec.h (vec::copy): Pass mem stat info. + +2020-10-29 Jan Hubicka + + * wide-int.h (trailing_wide_ints ): Turn len to array of structures + so it does not imply typeless storage. + (trailing_wide_ints ::operator): update + (trailing_wide_ints ::operator []): Update. + +2020-10-29 Joseph Myers + + * ginclude/stdbool.h [__STDC_VERSION__ > 201710L] (true, false): + Define with type _Bool. + +2020-10-29 Aldy Hernandez + + PR tree-optimization/97505 + * vr-values.c (vr_values::extract_range_basic): Enable + trap again for everything except UBSAN builtins. + +2020-10-29 Richard Sandiford + + * tree-vectorizer.h (vect_transform_slp_perm_load): Take an + optional extra parameter. + * tree-vect-slp.c (vect_transform_slp_perm_load): Calculate + the number of loads as well as the number of permutes, taking + the counting loop from... + * tree-vect-stmts.c (vect_model_load_cost): ...here. Use the + value computed by vect_transform_slp_perm_load for ncopies. + +2020-10-29 Martin Liska + + PR lto/97508 + * langhooks.c (lhd_begin_section): Call get_section with + not_existing = true. + * output.h (get_section): Add new argument. + * varasm.c (get_section): Fail when NOT_EXISTING is true + and a section already exists. + * ipa-cp.c (ipcp_write_summary): Remove. + (ipcp_read_summary): Likewise. + * ipa-fnsummary.c (ipa_fn_summary_read): Always read jump + functions summary. + (ipa_fn_summary_write): Always stream it. + +2020-10-29 Richard Biener + + * tree-vect-slp.c (vect_bb_slp_scalar_cost): Pass + SLP_TREE_VECTYPE to record_stmt_cost. + +2020-10-29 Martin Liska + + * optc-gen.awk: Check that params start with -param=. + * params.opt: Fix ipa-jump-function-lookups. + +2020-10-29 Alexandre Oliva + + * tree-ssa-math-opts.c (sincos_stats): Add conv_removed. + (execute_cse_conv_1): New. + (execute_cse_sincos_1): Call it. Fix return within + FOR_EACH_IMM_USE_STMT. + (pass_cse_sincos::execute): Report conv_inserted. + +2020-10-29 Xuepeng Guo + Hongyu Wang + Hongtao Liu + + * common/config/i386/cpuinfo.h (get_available_features): + Detect KL, AESKLE and WIDEKL features. + * common/config/i386/i386-common.c + (OPTION_MASK_ISA_KL_SET): New. + (OPTION_MASK_ISA_WIDEKL_SET): Likewise. + (OPTION_MASK_ISA_KL_UNSET): Likewise. + (OPTION_MASK_ISA_WIDEKL_UNSET): Likewise. + (OPTION_MASK_ISA2_AVX2_UNSET): Likewise. + (OPTION_MASK_ISA2_AVX_UNSET): Likewise. + (OPTION_MASK_ISA2_SSE4_2_UNSET): Likewise. + (OPTION_MASK_ISA2_SSE4_1_UNSET): Likewise. + (OPTION_MASK_ISA2_SSE4_UNSET): Likewise. + (OPTION_MASK_ISA2_SSSE3_UNSET): Likewise. + (OPTION_MASK_ISA2_SSE3_UNSET): Likewise. + (OPTION_MASK_ISA2_SSE2_UNSET): Likewise. + (OPTION_MASK_ISA2_SSE_UNSET): Likewise. + (ix86_handle_option): Handle kl and widekl, add dependency chain + for KL and SSE2. + * common/config/i386/i386-cpuinfo.h (enum processor_features): + (FEATURE_KL, FEATURE_AESKLE, FEATURE_WIDEKL): New. + * common/config/i386/i386-isas.h: Add ISA_NAMES_TABLE_ENTRY + for KL, AESKLE and WIDEKL. + * config.gcc: Add keylockerintrin.h. + * doc/invoke.texi: Document new option -mkl and -mwidekl. + * doc/extend.texi: Document kl and widekl. + * config/i386/cpuid.h (bit_KL, bit_AESKLE, bit_WIDEKL): New. + * config/i386/i386-builtin-types.def ((UINT, UINT, V2DI, V2DI, PVOID), + (UINT, UINT, V2DI, PVOID), (VOID, V2DI, V2DI, V2DI, UINT), + (UINT8, PV2DI, V2DI, PCVOID), (UINT8, PV2DI, PCV2DI, PCVOID)): New + function types. + * config/i386/i386-builtin.def: Add + __builtin_ia32_loadiwkey, + __builtin_ia32_aesdec128kl_u8, + __builtin_ia32_aesdec256kl_u8, + __builtin_ia32_aesenc128kl_u8, + __builtin_ia32_aesenc256kl_u8, + __builtin_ia32_aesdecwide128kl_u8, + __builtin_ia32_aesdecwide256kl_u8, + __builtin_ia32_aesencwide128kl_u8, + __builtin_ia32_aesencwide256kl_u8, + __builtin_ia32_encodekey128_u32, + __builtin_ia32_encodekey256_u32. + * config/i386/i386-c.c (ix86_target_macros_internal): Handle + kl and widekl. + * config/i386/i386-options.c (isa2_opts): Add -mkl and -mwidekl. + (ix86_option_override_internal): Handle KL and WIDEKL. + (ix86_valid_target_attribute_inner_p): Add attribute for kl and widekl. + * config/i386/i386-expand.c + (ix86_expand_builtin): Expand Keylocker Builtins. + * config/i386/i386.h (TARGET_KL): New. + (TARGET_KL_P): Likewise. + (TARGET_WIDEKL): Likewise. + (TARGET_WIDEKL_P): Likewise. + (PTA_KL): Likewise. + (PTA_WIDEKL): Likewise. + (PTA_TIGERLAKE): Add PTA_KL, PTA_WIDEKL. + (PTA_ALDERLAKE): Likewise. + * config/i386/i386.opt: Add new option mkl and mwidekl. + * config/i386/keylockerintrin.h: New header file for Keylocker. + * config/i386/immintrin.h: Include keylockerintrin.h. + * config/i386/predicates.md (encodekey128_operation): New + predicate. + (encodekey256_operation): Likewise. + (aeswidekl_operation): Likewise. + * config/i386/sse.md (UNSPECV_LOADIWKEY): New. + (UNSPECV_AESDEC128KLU8): Likewise. + (UNSPECV_AESENC128KLU8): Likewise. + (UNSPECV_AESDEC256KLU8): Likewise. + (UNSPECV_AESENC256KLU8): Likewise. + (UNSPECV_AESDECWIDE128KLU8): Likewise. + (UNSPECV_AESENCWIDE128KLU8): Likewise. + (UNSPECV_AESDECWIDE256KLU8): Likewise. + (UNSPECV_AESENCWIDE256KLU8): Likewise. + (UNSPECV_ENCODEKEY128U32): Likewise. + (UNSPECV_ENCODEKEY256U32): Likewise. + (encodekey128u32): New expander. + (encodekey256u32): Likewise. + (aesu8): Likewise. + (loadiwkey): New insn pattern. + (*encodekey128u32): Likewise. + (*encodekey256u32): Likewise. + (aesu8): Likewise. + (*aesu8): Likewise. + +2020-10-29 Richard Biener + + * tree-vect-slp.c (vect_build_slp_tree_2): Allow splatting + not vectorizable loads. + (vect_build_slp_instance): Amend dumping with address. + (vect_slp_convert_to_external): Likewise. + +2020-10-29 Andrew MacLeod + + PR tree-optimization/97609 + * gimple-range-cache.cc (non_null_ref::process_name): Call + infer_nonnull_range directly instead of infer_value_range. + +2020-10-29 David Malcolm + + * Makefile.in (ANALYZER_OBJS): Add analyzer/complexity.o. + +2020-10-28 Marek Polacek + + PR c++/97573 + * doc/invoke.texi: Document -Wdeprecated-enum-enum-conversion + and -Wdeprecated-enum-float-conversion. -Wenum-conversion is + no longer C/ObjC only. + +2020-10-28 Richard Sandiford + + PR tree-optimization/97457 + * value-range.cc (irange::set): Don't decay POLY_INT_CST ranges + to integer ranges. + +2020-10-28 Carl Love + + * config/rs6000/vsx.md(xxgenpcvm__internal): Remove TARGET_64BIT. + +2020-10-28 Richard Biener + + * tree-vect-slp.c (vect_slp_analyze_node_operations_1): Dump + when shared vectype update fails. + +2020-10-28 Richard Biener + + * tree-vect-slp.c (vect_get_and_check_slp_defs): For skipped + args just push NULLs and vect_uninitialized_def. + (vect_build_slp_tree_2): Allocate skip_args for all ops + and pass it down to vect_get_and_check_slp_defs. + +2020-10-28 Richard Biener + + PR tree-optimization/97615 + * tree-vect-slp.c (vect_build_slp_tree_2): Do not build + an external from pattern defs. + +2020-10-28 Richard Biener + + * tree-vect-slp.c (vect_optimize_slp): Fix iteration over + all loads. + +2020-10-28 Richard Biener + + * tree-vect-slp.c (vect_build_slp_instance): Split the store + group at the failure boundary and also re-analyze a large enough + matching rest. + +2020-10-28 Richard Biener + + * tree-vect-data-refs.c (vect_slp_analyze_node_alignment): + Dump when vect_update_shared_vectype fails. + +2020-10-28 Andrea Corallo + + * config/aarch64/arm_neon.h (__ST2_LANE_FUNC, __ST3_LANE_FUNC) + (__ST4_LANE_FUNC): Rename the macro generating the 'q' variants + into __ST2Q_LANE_FUNC, __ST2Q_LANE_FUNC, __ST2Q_LANE_FUNC so they + all can be undefed at the and of the file. + (vst2_lane_bf16, vst2q_lane_bf16, vst3_lane_bf16, vst3q_lane_bf16) + (vst4_lane_bf16, vst4q_lane_bf16): Add new intrinsics. + +2020-10-28 Andrea Corallo + + * config/aarch64/arm_neon.h (__LD2_LANE_FUNC, __LD3_LANE_FUNC) + (__LD4_LANE_FUNC): Rename the macro generating the 'q' variants + into __LD2Q_LANE_FUNC, __LD2Q_LANE_FUNC, __LD2Q_LANE_FUNC so they + all can be undefed at the and of the file. + (vld2_lane_bf16, vld2q_lane_bf16, vld3_lane_bf16, vld3q_lane_bf16) + (vld4_lane_bf16, vld4q_lane_bf16): Add new intrinsics. + +2020-10-28 Jakub Jelinek + + * tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_ALLOCATE. + * tree.h (OMP_CLAUSE_ALLOCATE_ALLOCATOR, + OMP_CLAUSE_ALLOCATE_COMBINED): Define. + * tree.c (omp_clause_num_ops, omp_clause_code_name): Add allocate + clause. + (walk_tree_1): Handle OMP_CLAUSE_ALLOCATE. + * tree-pretty-print.c (dump_omp_clause): Likewise. + * gimplify.c (gimplify_scan_omp_clauses, gimplify_adjust_omp_clauses, + gimplify_omp_for): Likewise. + * tree-nested.c (convert_nonlocal_omp_clauses, + convert_local_omp_clauses): Likewise. + * omp-low.c (scan_sharing_clauses): Likewise. + +2020-10-28 Jakub Jelinek + + * omp-offload.c (omp_declare_target_tgt_fn_r): Handle direct calls to + declare variant base functions. + +2020-10-28 Jakub Jelinek + + PR lto/96680 + * lto-streamer.h (omp_lto_output_declare_variant_alt, + omp_lto_input_declare_variant_alt): Declare variant. + * symtab.c (symtab_node::get_partitioning_class): Return + SYMBOL_DUPLICATE for declare_variant_alt nodes. + * passes.c (ipa_write_summaries): Add declare_variant_alt to + partition. + * lto-cgraph.c (output_refs): Call omp_lto_output_declare_variant_alt + on declare_variant_alt nodes. + (input_refs): Call omp_lto_input_declare_variant_alt on + declare_variant_alt nodes. + * lto-streamer-out.c (output_function): Don't call + collect_block_tree_leafs if DECL_INITIAL is error_mark_node. + (lto_output): Call output_function even for declare_variant_alt + nodes. + * omp-general.c (omp_lto_output_declare_variant_alt, + omp_lto_input_declare_variant_alt): New functions. + +2020-10-28 Jakub Jelinek + + * wide-int.cc (wi::set_bit_large): Call canonize unless setting + msb bit and clearing bits above it. + +2020-10-28 Andrew MacLeod + + * gimple-range-gori.cc (gori_compute_cache::cache_stmt): Accumulate + return values and only set cache when everything returned true. + * gimple-range.cc (get_tree_range): Set the return range to UNDEFINED + when the range isn't supported. + (gimple_ranger::calc_stmt): Return varying if the type is supported, + even if the stmt processing failed. False otherwise. + (range_of_builtin_ubsan_call): Don't use gcc_assert. + (range_of_builtin_call): Ditto. + (gimple_ranger::range_of_cond_expr): Ditto. + (gimple_ranger::range_of_expr): Ditto + (gimple_ranger::range_on_entry): Ditto. + (gimple_ranger::range_on_exit): Ditto. + (gimple_ranger::range_on_edge): DItto. + (gimple_ranger::range_of_stmt): Don't use gcc_assert, and initialize + return value to UNDEFINED. + +2020-10-27 Andreas Krebbel + + PR rtl-optimization/97497 + * config/s390/s390.c (s390_hard_regno_call_part_clobbered): Do not + return true for r12 when -fpic is used. + +2020-10-27 Tamar Christina + + PR target/97535 + * config/aarch64/aarch64.c (aarch64_expand_cpymem): Use unsigned + arithmetic in check. + +2020-10-27 Andrea Corallo + + * config/aarch64/arm_neon.h (vcopy_lane_bf16, vcopyq_lane_bf16) + (vcopyq_laneq_bf16, vcopy_laneq_bf16): New intrinsics. + +2020-10-27 Olivier Hainque + + * config/vxworks.h (VX_CPU_PREFIX): #define here. + * config/rs6000/vxworks.h: Remove #definition. + +2020-10-27 Olivier Hainque + + * config/rs6000/vxworks.h (CPP_SPEC): Fix macro definition + for -mcpu=e6500. + +2020-10-27 Richard Biener + + * tree-vect-slp.c (vect_build_slp_instance): Use ceil_log2 + to compute maximum group-size. + +2020-10-27 Jan Hubicka + + PR ipa/97586 + * ipa-modref-tree.h (modref_tree::remap_params): New member function. + * ipa-modref.c (modref_summaries_lto::duplicate): Check that + optimization summaries are not duplicated. + (remap_arguments): Remove. + (modref_transform): Rename to ... + (update_signature): ... this one; handle also lto summary. + (pass_ipa_modref::execute): Update signatures here rather + than in transform hook. + +2020-10-27 Richard Biener + + * tree-vect-slp.c (vect_slp_bbs): Remove no-op + slp-max-insns-in-bb check. + (vect_slp_function): Dump when splitting the function. + Adjust the split condition for control altering stmts. + * params.opt (-param=slp-max-insns-in-bb): Remove. + * doc/invoke.texi (-param=slp-max-insns-in-bb): Likewise. + +2020-10-27 Richard Biener + + * gimple.h (gimple_expr_type): For PHIs return the type + of the result. + * tree-vect-loop-manip.c (slpeel_tree_duplicate_loop_to_edge_cfg): + Make sure edge order into copied loop headers line up with the + originals. + * tree-vect-loop.c (vect_transform_cycle_phi): Handle nested + loops with SLP. + (vectorizable_phi): New function. + (vectorizable_live_operation): For BB vectorization compute insert + location here. + * tree-vect-slp.c (vect_free_slp_tree): Deal with NULL + SLP_TREE_CHILDREN entries. + (vect_create_new_slp_node): Add overloads with pre-existing node + argument. + (vect_print_slp_graph): Likewise. + (vect_mark_slp_stmts): Likewise. + (vect_mark_slp_stmts_relevant): Likewise. + (vect_gather_slp_loads): Likewise. + (vect_optimize_slp): Likewise. + (vect_slp_analyze_node_operations): Likewise. + (vect_bb_slp_scalar_cost): Likewise. + (vect_remove_slp_scalar_calls): Likewise. + (vect_get_and_check_slp_defs): Handle PHIs. + (vect_build_slp_tree_1): Handle PHIs. + (vect_build_slp_tree_2): Continue SLP build, following PHI + arguments. Fix memory leak. + (vect_build_slp_tree): Put stub node into the hash-map so + we can discover cycles directly. + (vect_build_slp_instance): Set the backedge SLP def for + reduction chains. + (vect_analyze_slp_backedges): Remove. + (vect_analyze_slp): Do not call it. + (vect_slp_convert_to_external): Release SLP_TREE_LOAD_PERMUTATION. + (vect_slp_analyze_node_operations): Handle stray failed + backedge defs by failing. + (vect_slp_build_vertices): Adjust leaf condition. + (vect_bb_slp_mark_live_stmts): Handle PHIs, use visited + hash-set to handle cycles. + (vect_slp_analyze_operations): Adjust. + (vect_bb_partition_graph_r): Likewise. + (vect_slp_function): Adjust split condition to allow CFG + merges. + (vect_schedule_slp_instance): Rename to ... + (vect_schedule_slp_node): ... this. Move DFS walk to ... + (vect_schedule_scc): ... this new function. + (vect_schedule_slp): Call it. Remove ad-hoc vectorized + backedge fill code. + * tree-vect-stmts.c (vect_analyze_stmt): Call + vectorizable_phi. + (vect_transform_stmt): Likewise. + (vect_is_simple_use): Handle vect_backedge_def. + * tree-vectorizer.c (vec_info::new_stmt_vec_info): Only + set loop header PHIs to vect_unknown_def_type for loop + vectorization. + * tree-vectorizer.h (enum vect_def_type): Add vect_backedge_def. + (enum stmt_vec_info_type): Add phi_info_type. + (vectorizable_phi): Declare. + +2020-10-27 Richard Biener + + * tree-vect-slp.c (vect_build_slp_tree_2): When vectorizing + BBs splat uniform operands and stop SLP discovery. + +2020-10-27 Iain Buclaw + + * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_D_CRITSEC_SIZE): + Remove. + * config/glibc-d.c (glibc_d_critsec_size): Likewise. + (TARGET_D_CRITSEC_SIZE): Likewise. + * config/i386/linux-common.h (GNU_USER_TARGET_D_CRITSEC_SIZE): + Likewise. + * config/sol2-d.c (solaris_d_critsec_size): Likewise. + (TARGET_D_CRITSEC_SIZE): Likewise. + * doc/tm.texi.in (TARGET_D_CRITSEC_SIZE): Likewise. + * doc/tm.texi: Regenerate. + +2020-10-27 Martin Liska + + PR gcov-profile/97461 + * gcov-io.h (GCOV_PREALLOCATED_KVP): Pre-allocate 64 + static counters. + +2020-10-27 Jan Hubicka + + * tree-ssa-alias.c (attr_fnspec::verify): Re-enabl checking. + +2020-10-27 Jan Hubicka + + * builtin-attrs.def (STRERRNOC): New macro. + (STRERRNOP): New macro. + (ATTR_ERRNOCONST_NOTHROW_LEAF_LIST): New attr list. + (ATTR_ERRNOPURE_NOTHROW_LEAF_LIST): New attr list. + * builtins.def (ATTR_MATHFN_ERRNO): Use + ATTR_ERRNOCONST_NOTHROW_LEAF_LIST. + (ATTR_MATHFN_FPROUNDING_ERRNO): Use ATTR_ERRNOCONST_NOTHROW_LEAF_LIST + or ATTR_ERRNOPURE_NOTHROW_LEAF_LIST. + +2020-10-27 Kito Cheng + + * common/config/riscv/riscv-common.c (opt_var_ref_t): New. + (riscv_ext_flag_table_t): New. + (riscv_ext_flag_table): New. + (riscv_parse_arch_string): Pass gcc_options* instead of + &opts->x_target_flags only, and using riscv_arch_option_table to + setup flags. + (riscv_handle_option): Update argument for riscv_parse_arch_string. + (riscv_expand_arch): Ditto. + (riscv_expand_arch_from_cpu): Ditto. + +2020-10-27 Jan Hubicka + + * tree-ssa-ccp.c (evaluate_stmt): Use EAF_RETURN_ARG; do not handle + string buitings specially. + +2020-10-27 Jan Hubicka + + * tree.c (set_call_expr_flags): Fix string for ECF_RET1. + (build_common_builtin_nodes): Do not set ECF_RET1 for memcpy, memmove, + and memset. They are handled by builtin_fnspec. + +2020-10-27 Jan Hubicka + + * builtins.c (builtin_fnspec): Add bzero, memcmp, memcmp_eq, bcmp, + strncmp, strncmp_eq, strncasecmp, rindex, strlen, strlnen, strcasecmp, + strcspn, strspn, strcmp, strcmp_eq. + +2020-10-27 Richard Biener + + * tree-vectorizer.h (slp_tree_pool): Declare. + (_slp_tree::operator new): Likewise. + (_slp_tree::operator delete): Likewise. + * tree-vectorizer.c (vectorize_loops): Allocate and free the + slp_tree_pool. + (pass_slp_vectorize::execute): Likewise. + * tree-vect-slp.c (slp_tree_pool): Define. + (_slp_tree::operator new): Likewise. + (_slp_tree::operator delete): Likewise. + +2020-10-27 Martin Liska + + * lto-wrapper.c (run_gcc): Do not use sub-make when jobserver is + not detected properly. + +2020-10-27 Martin Liska + + * symbol-summary.h (call_summary_base): Pass symtab hooks to + base and register (or unregister) hooks directly. + +2020-10-27 Martin Liska + + * symbol-summary.h (function_summary_base::unregister_hooks): + Call disable_insertion_hook and disable_duplication_hook. + (function_summary_base::symtab_insertion): New field. + (function_summary_base::symtab_removal): Likewise. + (function_summary_base::symtab_duplication): Likewise. + Register hooks in function_summary_base and directly register + (or unregister) hooks. + +2020-10-26 Andrew MacLeod + + PR tree-optimization/97567 + * gimple-range-gori.cc (gori_compute::logical_combine): Union the + ranges of operand1 and operand2, not intersect. + +2020-10-26 Jan Hubicka + + * attr-fnspec.h: Update toplevel comment. + (attr_fnspec::attr_fnspec): New constructor. + (attr_fnspec::arg_read_p, + attr_fnspec::arg_written_p, + attr_fnspec::arg_access_size_given_by_arg_p, + attr_fnspec::arg_single_access_p + attr_fnspec::loads_known_p + attr_fnspec::stores_known_p, + attr_fnspec::clobbers_errno_p): New member functions. + (gimple_call_fnspec): Declare. + (builtin_fnspec): Declare. + * builtins.c: Include attr-fnspec.h + (builtin_fnspec): New function. + * builtins.def (BUILT_IN_MEMCPY): Do not specify RET1 fnspec. + (BUILT_IN_MEMMOVE): Do not specify RET1 fnspec. + (BUILT_IN_MEMSET): Do not specify RET1 fnspec. + (BUILT_IN_STRCAT): Do not specify RET1 fnspec. + (BUILT_IN_STRCPY): Do not specify RET1 fnspec. + (BUILT_IN_STRNCAT): Do not specify RET1 fnspec. + (BUILT_IN_STRNCPY): Do not specify RET1 fnspec. + (BUILT_IN_MEMCPY_CHK): Do not specify RET1 fnspec. + (BUILT_IN_MEMMOVE_CHK): Do not specify RET1 fnspec. + (BUILT_IN_MEMSET_CHK): Do not specify RET1 fnspec. + (BUILT_IN_STRCAT_CHK): Do not specify RET1 fnspec. + (BUILT_IN_STRCPY_CHK): Do not specify RET1 fnspec. + (BUILT_IN_STRNCAT_CHK): Do not specify RET1 fnspec. + (BUILT_IN_STRNCPY_CHK): Do not specify RET1 fnspec. + * gimple.c (gimple_call_fnspec): Return attr_fnspec. + (gimple_call_arg_flags): Update. + (gimple_call_return_flags): Update. + * tree-ssa-alias.c (check_fnspec): New function. + (ref_maybe_used_by_call_p_1): Use fnspec for builtin handling. + (call_may_clobber_ref_p_1): Likewise. + (attr_fnspec::verify): Update verifier. + * calls.c (decl_fnspec): New function. + (decl_return_flags): Use it. + +2020-10-26 Aldy Hernandez + + PR tree-optimization/97555 + * range-op.cc (range_tests): Test 1-bit signed invert. + * value-range.cc (subtract_one): Adjust comment. + (add_one): New. + (irange::invert): Call add_one. + +2020-10-26 Jan Hubicka + + * cgraph.h (cgraph_node::optimize_for_size_p): Return + optimize_size_level. + (cgraph_node::optimize_for_size_p): Update. + * coretypes.h (enum optimize_size_level): New enum. + * predict.c (unlikely_executed_edge_p): Microoptimize. + (optimize_function_for_size_p): Return optimize_size_level. + (optimize_bb_for_size_p): Likewise. + (optimize_edge_for_size_p): Likewise. + (optimize_insn_for_size_p): Likewise. + (optimize_loop_nest_for_size_p): Likewise. + * predict.h (optimize_function_for_size_p): Update declaration. + (optimize_bb_for_size_p): Update declaration. + (optimize_edge_for_size_p): Update declaration. + (optimize_insn_for_size_p): Update declaration. + (optimize_loop_for_size_p): Update declaration. + (optimize_loop_nest_for_size_p): Update declaration. + +2020-10-26 Richard Biener + + * tree-vect-slp.c (enum slp_instance_kind): New. + (vect_build_slp_instance): Split out from... + (vect_analyze_slp_instance): ... this. + +2020-10-26 Andrew MacLeod + + * gimple-range.cc (range_of_builtin_call): Initialize zerov to 0. + +2020-10-26 Jan Hubicka + + PR ipa/97576 + * cgraphclones.c (cgraph_node::materialize_clone): Clear stmt + references. + * cgraphunit.c (mark_functions_to_output): Do not clear them here. + * ipa-inline-transform.c (inline_transform): Clear stmt references. + * symtab.c (symtab_node::clear_stmts_in_references): Make recursive + for clones. + * tree-ssa-structalias.c (ipa_pta_execute): Do not clear references. + +2020-10-26 Zhiheng Xie + Nannan Zheng + + * config/aarch64/aarch64-builtins.c: Add FLAG STORE. + * config/aarch64/aarch64-simd-builtins.def: Add proper FLAG + for store intrinsics. + +2020-10-26 Kyrylo Tkachov + + PR tree-optimization/97546 + * gimple-ssa-store-merging.c (find_bswap_or_nop): Return NULL if + type is not INTEGER_CST. + +2020-10-26 Richard Biener + + PR middle-end/97521 + * expr.c (const_scalar_mask_from_tree): Remove. + (expand_expr_real_1): Always VIEW_CONVERT integer mode + vector constants to an integer type. + * tree.c (build_truth_vector_type_for_mode): Use a single-bit + boolean component type for non-vector-mode mask_mode. + +2020-10-26 H.J. Lu + + PR target/95458 + * config/i386/i386-expand.c (ix86_expand_cmpstrn_or_cmpmem): + Return false for -mno-inline-all-stringops. + +2020-10-26 H.J. Lu + + PR target/95151 + * config/i386/i386-expand.c (ix86_expand_cmpstrn_or_cmpmem): New + function. + * config/i386/i386-protos.h (ix86_expand_cmpstrn_or_cmpmem): New + prototype. + * config/i386/i386.md (cmpmemsi): New pattern. + +2020-10-26 Andreas Krebbel + + * config/s390/vector.md ("vcond_mask_"): New expander. + +2020-10-26 Richard Biener + + * sbitmap.c (sbitmap_vector_alloc): Use size_t for byte + quantities to avoid overflow. + +2020-10-26 Richard Biener + + PR tree-optimization/97539 + * tree-vect-loop-manip.c (vect_do_peeling): Reset out-of-loop + debug uses before peeling. + +2020-10-26 Jan Hubicka + + * cgraph.h (struct cgraph_node): Make ipa_transforms_to_apply vl_ptr. + * ipa-inline-analysis.c (initialize_growth_caches): Disable insertion + and duplication hooks. + * ipa-inline-transform.c (clone_inlined_nodes): Clear + ipa_transforms_to_apply. + (save_inline_function_body): Disable insertion hoook for + ipa_saved_clone_sources. + * ipa-prop.c (ipcp_transformation_initialize): Disable insertion hook. + * ipa-prop.h (ipa_node_params_t): Disable insertion hook. + * ipa-reference.c (propagate): Disable insertion hoook. + * ipa-sra.c (ipa_sra_summarize_function): Move out of anonymous + namespace. + (ipa_sra_function_summaries::insert): New virtual function. + * passes.c (execute_one_pass): Do not add transforms to inline clones. + * symbol-summary.h (function_summary_base): Make insert and duplicate + hooks fail instead of silently producing empty summaries; add way to + disable duplication hooks + (call_summary_base): Likewise. + * tree-nested.c (nested_function_info::get_create): Disable insertion + hooks + (maybe_record_nested_function): Likewise. + +2020-10-26 Xionghu Luo + + * cfg.c (debug_bb): New overloaded function. + (debug_bb_n): New overloaded function. + * cfg.h (debug_bb): New declaration. + (debug_bb_n): New declaration. + * print-rtl.c (debug_bb_slim): Call debug_bb with flags. + +2020-10-24 H.J. Lu + + PR bootstrap/97451 + * configure.ac (HAVE_AS_WORKING_DWARF_4_FLAG): Renamed to ... + (HAVE_AS_WORKING_DWARF_N_FLAG): This. Don't define if there is + an extra assembly input file in debug info. Replace success + with dwarf4_success in the 32-bit --gdwarf-4 check. + * dwarf2out.c (asm_outputs_debug_line_str): Check + HAVE_AS_WORKING_DWARF_N_FLAG instead of + HAVE_AS_WORKING_DWARF_4_FLAG. + * gcc.c (ASM_DEBUG_SPEC): Likewise. + (ASM_DEBUG_OPTION_SPEC): Likewise. + * config.in: Regenerated. + * configure: Likewise. + +2020-10-24 Aldy Hernandez + + PR tree-optimization/97538 + * calls.c (get_size_range): Handle undefined ranges. + +2020-10-24 Martin Liska + + * cgraph.c (cgraph_node::former_thunk_p): Move out of CHECKING_P + macro. + +2020-10-24 Alan Modra + + * config/rs6000/rs6000.c (rs6000_legitimate_address_p): Limit + AND addressing to just lvx/stvx style addresses. + +2020-10-24 Alan Modra + + * config/rs6000/rs6000.md (cstore4): Don't call + rs6000_emit_int_cmove for power10 when -mno-isel. + +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-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 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 af[...] [diff truncated at 524288 bytes]