| 2020-12-31 Richard Sandiford <richard.sandiford@arm.com> |
| |
| 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 <richard.sandiford@arm.com> |
| |
| PR tree-optimization/94994 |
| * tree-vect-data-refs.c (vect_vfa_align): Use dr_alignment. |
| |
| 2020-12-31 Richard Sandiford <richard.sandiford@arm.com> |
| |
| 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 <jakub@redhat.com> |
| |
| 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 <jakub@redhat.com> |
| |
| 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 <jakub@redhat.com> |
| |
| 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 <jakub@redhat.com> |
| |
| 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 <jakub@redhat.com> |
| |
| 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 <ubizjak@gmail.com> |
| |
| * config/i386/i386.md: Remove unnecessary clobbers |
| from combine splitters. |
| |
| 2020-12-30 Jakub Jelinek <jakub@redhat.com> |
| |
| PR target/98461 |
| * config/i386/sse.md (<sse2_avx2>_pmovmskb): Add splitters |
| for pmovmskb of NOT vector. |
| |
| 2020-12-29 Claudiu Zissulescu <claziss@synopsys.com> |
| |
| * 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 <claziss@synopsys.com> |
| |
| * config/arc/arc.c (arc_secondary_reload): Flip if-condition |
| predicates. |
| |
| 2020-12-29 Claudiu Zissulescu <claziss@synopsys.com> |
| |
| * config/arc/arc.h (REGNO_OK_FOR_BASE_P): Check if defined |
| reg_renumber. |
| |
| 2020-12-29 Claudiu Zissulescu <claziss@synopsys.com> |
| |
| * 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 <claziss@synopsys.com> |
| |
| * 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 <ubizjak@gmail.com> |
| |
| * 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 <gerald@pfeifer.com> |
| |
| * doc/standards.texi (HSAIL): Remove section. |
| |
| 2020-12-28 Uroš Bizjak <ubizjak@gmail.com> |
| |
| 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 <ubizjak@gmail.com> |
| |
| * config/i386/i386-expand.c (ix86_expand_trunc): Use |
| existing temporary register to avoid a call to force_reg. |
| |
| 2020-12-28 Hongyu Wang <hongyu.wang@intel.com> |
| |
| * config/i386/i386.md (optab): New code attr. |
| * config/i386/sse.md (<code>v32qiv32hi2): Rename to ... |
| (<optab>v32qiv32hi2) ... this. |
| (<code>v16qiv16hi2): Likewise. |
| (<code>v8qiv8hi2): Likewise. |
| (<code>v16qiv16si2): Likewise. |
| (<code>v8qiv8si2): Likewise. |
| (<code>v4qiv4si2): Likewise. |
| (<code>v16hiv16si2): Likewise. |
| (<code>v8hiv8si2): Likewise. |
| (<code>v4hiv4si2): Likewise. |
| (<code>v8qiv8di2): Likewise. |
| (<code>v4qiv4di2): Likewise. |
| (<code>v2qiv2di2): Likewise. |
| (<code>v8hiv8di2): Likewise. |
| (<code>v4hiv4di2): Likewise. |
| (<code>v2hiv2di2): Likewise. |
| (<code>v8siv8di2): Likewise. |
| (<code>v4siv4di2): Likewise. |
| (<code>v2siv2di2): Likewise. |
| |
| 2020-12-27 Gerald Pfeifer <gerald@pfeifer.com> |
| |
| * 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 <gerald@pfeifer.com> |
| |
| * doc/invoke.texi (C++ Module Mapper): Fix reference to libcody. |
| |
| 2020-12-24 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * 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 <kito.cheng@sifive.com> |
| |
| * config/riscv/multilib-generator (arch_canonicalize): Call |
| decode for the subprocess return value. |
| |
| 2020-12-23 Martin Sebor <msebor@redhat.com> |
| |
| 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 <msebor@redhat.com> |
| |
| PR c++/98413 |
| * builtins.c (get_offset_range): Avoid non-integers/-pointers. |
| |
| 2020-12-23 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * 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 <ubizjak@gmail.com> |
| |
| 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 <qianjh@cn.fujitsu.com> |
| |
| * 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_<shift>_<mode>): Set autodetect_type. |
| (*add_<shift>_si_uxtw): Likewise. |
| (*sub_<shift>_<mode>): Likewise. |
| (*sub_<shift>_si_uxtw): Likewise. |
| (*neg_<shift>_<mode>2): Likewise. |
| (*neg_<shift>_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. |
| (*<arith_shift_insn>_multsi): Likewise. |
| (*<arith_shift_insn>_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 <ubizjak@gmail.com> |
| |
| 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 <hongtao.liu@intel.com> |
| |
| * config/i386/i386.md (*one_cmpl<mode>2_1): Fix typo, change |
| alternative from 2 to 1 in attr isa. |
| |
| 2020-12-22 Ian Lance Taylor <iant@golang.org> |
| |
| * godump.c (go_output_typedef): If DECL_ORIGINAL_TYPE is NULL, use |
| TREE_TYPE. |
| |
| 2020-12-21 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/98353 |
| * gimplify.c (gimplify_init_ctor_eval_range): Gimplify value before |
| storing it into cref. |
| |
| 2020-12-21 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * config/darwin-driver.c (darwin_find_version_from_kernel): |
| Compute the minor OS version from the minor kernel version. |
| |
| 2020-12-21 Jakub Jelinek <jakub@redhat.com> |
| |
| 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 <jakub@redhat.com> |
| |
| 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 <jcmvbkbc@gmail.com> |
| |
| * config/xtensa/xtensa.md (bswapsi2, bswapdi2): New patterns. |
| |
| 2020-12-20 Jakub Jelinek <jakub@redhat.com> |
| |
| PR other/98400 |
| * doc/invoke.texi (-mbackchain): Fix a typo - -mmo-backchain -> |
| -mno-backchain. |
| |
| 2020-12-19 Jakub Jelinek <jakub@redhat.com> |
| |
| 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 <ibuclaw@gdcproject.org> |
| |
| 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 <jakub@redhat.com> |
| |
| PR tree-optimization/98378 |
| * gimple-ssa-store-merging.c (find_bswap_or_nop): Punt if CONSTRUCTOR |
| has no elements. |
| |
| 2020-12-18 Jakub Jelinek <jakub@redhat.com> |
| |
| * 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 <przemyslaw.wirkus@arm.com> |
| |
| 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 <kcy@codesourcery.com> |
| |
| * 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 <richard.sandiford@arm.com> |
| |
| * 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 <tamar.christina@arm.com> |
| |
| * config/arm/iterators.md (rot): Add UNSPEC_VCMUL, UNSPEC_VCMUL90, |
| UNSPEC_VCMUL180, UNSPEC_VCMUL270. |
| |
| 2020-12-17 Przemyslaw Wirkus <przemyslaw.wirkus@arm.com> |
| |
| * 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 <richard.sandiford@arm.com> |
| |
| 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 <hjl.tools@gmail.com> |
| |
| * targhooks.h (default_estimated_poly_value): Updated. |
| |
| 2020-12-17 Nathan Sidwell <nathan@acm.org> |
| |
| * doc/invoke.texi (C++ Modules): Document lack of std |
| library header units. |
| |
| 2020-12-17 Kyrylo Tkachov <kyrylo.tkachov@arm.com> |
| |
| * 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 <andrea.corallo@arm.com> |
| |
| * config/arm/arm_neon.h (vcreate_p64): Remove call to |
| '__builtin_neon_vcreatedi'. |
| |
| 2020-12-17 Andrew MacLeod <amacleod@redhat.com> |
| |
| PR tree-optimization/97750 |
| * range-op.cc (operator_cast::op1_range): Handle pointers better. |
| |
| 2020-12-17 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> |
| |
| * rtl-ssa.h: Include memmodel.h before tm_p.h. |
| |
| 2020-12-17 Jakub Jelinek <jakub@redhat.com> |
| |
| PR rtl-optimization/98289 |
| * shrink-wrap.c (can_get_prologue): Don't punt on EDGE_CROSSING |
| incoming edges. |
| |
| 2020-12-17 Marius Hillenbrand <mhillen@linux.ibm.com> |
| |
| * 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 <jjsuwa_sys3175@yahoo.co.jp> |
| |
| * config/xtensa/xtensa.md (*ashlsi3_1, *ashlsi3_3x, *ashrsi3_3x) |
| (*lshrsi3_3x): New patterns. |
| |
| 2020-12-17 Richard Sandiford <richard.sandiford@arm.com> |
| |
| * fwprop.c: Rewrite to use the RTL SSA framework. |
| |
| 2020-12-17 Richard Sandiford <richard.sandiford@arm.com> |
| |
| * 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 <functional> 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 <richard.sandiford@arm.com> |
| |
| * doc/rtl.texi (RTL SSA): New node. |
| |
| 2020-12-17 Richard Sandiford <richard.sandiford@arm.com> |
| |
| * rtl.h (simple_regno_set): Declare. |
| * rtlanal.c (simple_regno_set): New function. |
| |
| 2020-12-17 Richard Sandiford <richard.sandiford@arm.com> |
| |
| * 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 <richard.sandiford@arm.com> |
| |
| * recog.h (insn_change_watermark): New class. |
| |
| 2020-12-17 Richard Sandiford <richard.sandiford@arm.com> |
| |
| * 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 <richard.sandiford@arm.com> |
| |
| * 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 <richard.sandiford@arm.com> |
| |
| * 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 <richard.sandiford@arm.com> |
| |
| * 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 <richard.sandiford@arm.com> |
| |
| * 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 <richard.sandiford@arm.com> |
| |
| * print-rtl.h (print_insn_with_notes): Declare. |
| * print-rtl.c (print_insn_with_notes): Make non-static |
| |
| 2020-12-17 Richard Sandiford <richard.sandiford@arm.com> |
| |
| * cfgrtl.h (update_cfg_for_uncondjump): Declare. |
| * combine.c (update_cfg_for_uncondjump): Move to... |
| * cfgrtl.c: ...here. |
| |
| 2020-12-17 Richard Sandiford <richard.sandiford@arm.com> |
| |
| * vec.h (array_slice): New class. |
| |
| 2020-12-17 Richard Sandiford <richard.sandiford@arm.com> |
| |
| * Makefile.in (OBJS): Add splay-tree-utils.o. |
| * system.h: Include <array> 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 <richard.sandiford@arm.com> |
| |
| * mux-utils.h: New file. |
| |
| 2020-12-17 Richard Sandiford <richard.sandiford@arm.com> |
| |
| * obstack-utils.h: New file. |
| |
| 2020-12-17 Richard Sandiford <richard.sandiford@arm.com> |
| |
| * iterator-utils.h (derived_iterator): New class. |
| (const_derived_container, wrapper_iterator): Likewise. |
| (list_iterator): Likewise. |
| |
| 2020-12-17 Richard Sandiford <richard.sandiford@arm.com> |
| |
| * 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 <pkubaj@FreeBSD.org> |
| |
| * 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 <jjsuwa_sys3175@yahoo.co.jp> |
| |
| * 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 <tamar.christina@arm.com> |
| |
| * 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<mode, mve_vcmulq_rot180_f<mode>, |
| mve_vcmulq_rot270_f<mode>, mve_vcmulq_rot90_f<mode>, mve_vcmlaq_f<mode>, |
| mve_vcmlaq_rot180_f<mode>, mve_vcmlaq_rot270_f<mode>, |
| mve_vcmlaq_rot90_f<mode>): Removed. |
| (mve_vcmlaq<mve_rot><mode>, mve_vcmulq<mve_rot><mode>, |
| mve_vcaddq<mve_rot><mode>, cadd<rot><mode>3, mve_vcaddq<mve_rot><mode>): |
| 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 <tamar.christina@arm.com> |
| |
| * 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_<supf><mode, |
| mve_vcaddq_rot90_<supf><mode>, mve_vcaddq_rot270_f<mode>, |
| mve_vcaddq_rot90_f<mode>): Removed. |
| (mve_vcaddq<mve_rot><mode>, mve_vcaddq<mve_rot><mode>): 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 (cadd<rot><mode>3): New. |
| |
| 2020-12-16 Tamar Christina <tamar.christina@arm.com> |
| |
| * config/aarch64/aarch64-simd.md (cadd<rot><mode>3): New. |
| * config/aarch64/iterators.md (SVE2_INT_CADD_OP): New. |
| * config/aarch64/aarch64-sve.md (cadd<rot><mode>3): New. |
| * config/aarch64/aarch64-sve2.md (cadd<rot><mode>3): New. |
| |
| 2020-12-16 Pat Haugen <pthaugen@linux.ibm.com> |
| |
| * config/rs6000/mma.md (*movxo, mma_<vvi4i4i8>, mma_<avvi4i4i8>, |
| mma_<vvi4i4i2>, mma_<avvi4i4i2>, mma_<vvi4i4>, mma_<avvi4i4>, |
| mma_<pvi4i2>, mma_<apvi4i2>, mma_<vvi4i4i4>, mma_<avvi4i4i4>): |
| Remove explicit setting of length attribute. |
| |
| 2020-12-16 Jakub Jelinek <jakub@redhat.com> |
| |
| * 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 <hjl.tools@gmail.com> |
| |
| 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 <hjl.tools@gmail.com> |
| |
| 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 <hjl.tools@gmail.com> |
| |
| 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 <jakub@redhat.com> |
| |
| 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 <mliska@suse.cz> |
| |
| * 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 <mliska@suse.cz> |
| |
| * 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 <mliska@suse.cz> |
| |
| 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 <mliska@suse.cz> |
| |
| 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 <ebotcazou@adacore.com> |
| |
| 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 <linkw@linux.ibm.com> |
| |
| * config/rs6000/rs6000.c (rs6000_expand_vector_init): Use |
| paradoxical subreg instead of zero_extend for QI/HI promotion. |
| |
| 2020-12-16 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> |
| |
| 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 <prathamesh.kulkarni@linaro.org> |
| |
| 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 <prathamesh.kulkarni@linaro.org> |
| |
| 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 <jakub@redhat.com> |
| |
| PR tree-optimization/96094 |
| * match.pd (X / bool_range_Y -> X): New simplification. |
| |
| 2020-12-15 Nathan Sidwell <nathan@acm.org> |
| |
| * doc/cppopts.texi: Document new cpp opt. |
| * doc/invoke.texi: Add C++20 module option & documentation. |
| |
| 2020-12-15 Nathan Sidwell <nathan@acm.org> |
| |
| * Makefile.in (CODYINC, CODYLIB, CODYLIB_H): New. Use them. |
| |
| 2020-12-15 Jakub Jelinek <jakub@redhat.com> |
| |
| 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 <mliska@suse.cz> |
| |
| PR lto/98275 |
| * lto-wrapper.c: Do not use -j0 when we are unable to detect |
| number of cores. |
| |
| 2020-12-15 Jakub Jelinek <jakub@redhat.com> |
| |
| * 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 <mliska@suse.cz> |
| |
| 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 <gerald@pfeifer.com> |
| |
| * doc/invoke.texi (Instrumentation Options): Update link to |
| KernelAddressSanitizer. |
| |
| 2020-12-15 Max Filippov <jcmvbkbc@gmail.com> |
| |
| * 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 <pkubaj@FreeBSD.org> |
| Gerald Pfeifer <gerald@pfeifer.com> |
| |
| * config/rs6000/freebsd64.h (PROCESSOR_DEFAULT): Update |
| to PROCESSOR_PPC7450. |
| (PROCESSOR_DEFAULT64): Update to PROCESSOR_POWER8. |
| |
| 2020-12-14 Martin Sebor <msebor@redhat.com> |
| |
| 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 <spop@amazon.com> |
| |
| * config.gcc (aarch64*-*-*): Remove --with-{cpu,arch,tune}-32 flags. |
| |
| 2020-12-14 Wilco Dijkstra <wdijkstr@arm.com> |
| |
| * 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 <mliska@suse.cz> |
| |
| * gcov.c (output_json_intermediate_file): Update comments. |
| |
| 2020-12-14 Tamar Christina <tamar.christina@arm.com> |
| |
| PR middle-end/98264 |
| * tree-vect-slp-patterns.c (linear_loads_p): Exclude TOP permute. |
| |
| 2020-12-14 Christophe Lyon <christophe.lyon@linaro.org> |
| |
| * config/arm/mve.md (mve_vnegq_f): Use 'neg' instead of unspec. |
| (mve_vnegq_s): Likewise. |
| * config/arm/neon.md (neg<mode>2): Rename into neon_neg<mode>2. |
| (<absneg_str><mode>2): Rename into neon_<absneg_str><mode>2. |
| (neon_v<absneg_str><mode>): Call gen_neon_<absneg_str><mode>2. |
| (vashr<mode>3): Call gen_neon_neg<mode>2. |
| (vlshr<mode>3): Call gen_neon_neg<mode>2. |
| (neon_vneg<mode>): Call gen_neon_neg<mode>2. |
| * config/arm/unspecs.md (VNEGQ_F, VNEGQ_S): Remove. |
| * config/arm/vec-common.md (neg<mode>2): New expander. |
| |
| 2020-12-14 Christophe Lyon <christophe.lyon@linaro.org> |
| |
| * config/arm/iterators.md (VDQNOTM2): New mode iterator. |
| (supf): Remove VMVNQ_S and VMVNQ_U. |
| (VMVNQ): Remove. |
| * config/arm/mve.md (mve_vmvnq_u<mode>): New entry for vmvn |
| instruction using expression not. |
| (mve_vmvnq_s<mode>): New expander. |
| * config/arm/neon.md (one_cmpl<mode>2): Renamed into |
| one_cmpl<mode>2_neon. |
| * config/arm/unspecs.md (VMVNQ_S, VMVNQ_U): Remove. |
| * config/arm/vec-common.md (one_cmpl<mode>2): New expander. |
| |
| 2020-12-14 Christophe Lyon <christophe.lyon@linaro.org> |
| |
| * config/arm/iterators.md (supf): Remove VBICQ_S and VBICQ_U. |
| (VBICQ): Remove. |
| * config/arm/mve.md (mve_vbicq_u<mode>): New entry for vbic |
| instruction using expression and not. |
| (mve_vbicq_s<mode>): New expander. |
| (mve_vbicq_f<mode>): Replace use of unspec by 'and not'. |
| * config/arm/unspecs.md (VBICQ_S, VBICQ_U, VBICQ_F): Remove. |
| |
| 2020-12-14 Christophe Lyon <christophe.lyon@linaro.org> |
| |
| * config/arm/iterators.md (supf): Remove VEORQ_S and VEORQ_U. |
| (VEORQ): Remove. |
| * config/arm/mve.md (mve_veorq_u<mode>): New entry for veor |
| instruction using expression xor. |
| (mve_veorq_s<mode>): New expander. |
| (mve_veorq_f<mode>): Use 'xor' code instead of unspec. |
| * config/arm/neon.md (xor<mode>3): Renamed into xor<mode>3_neon. |
| * config/arm/unspecs.md (VEORQ_S, VEORQ_U, VEORQ_F): Remove. |
| * config/arm/vec-common.md (xor<mode>3): New expander. |
| |
| 2020-12-14 Przemyslaw Wirkus <przemyslaw.wirkus@arm.com> |
| |
| * 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 <nikhil.benesch@gmail.com> |
| |
| * 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 <macro@linux-mips.org> |
| |
| * config/vax/vax.c (vax_output_int_move): Unify push operation |
| selection. |
| |
| 2020-12-13 Maciej W. Rozycki <macro@linux-mips.org> |
| |
| * config/vax/vax.c (vax_output_int_move): Check the correct |
| operand for constant 0 push operation. |
| |
| 2020-12-13 Maciej W. Rozycki <macro@linux-mips.org> |
| |
| * config/vax/vax.c (vax_expand_addsub_di_operands): Handle equal |
| input operands with subtraction. |
| |
| 2020-12-13 Maciej W. Rozycki <macro@linux-mips.org> |
| |
| * config/vax/vax.c (vax_expand_addsub_di_operands): Handle the |
| addition or subtraction of 0. |
| |
| 2020-12-13 Maciej W. Rozycki <macro@linux-mips.org> |
| |
| * config/vax/vax.c (vax_expand_addsub_di_operands): Remove |
| unused register allocation. |
| |
| 2020-12-13 Maciej W. Rozycki <macro@linux-mips.org> |
| |
| * 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 <jakub@redhat.com> |
| |
| 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) <case BIT_NOT_EXPR>: |
| If match_uaddsub_overflow returned true, continue instead of break. |
| |
| 2020-12-13 Tamar Christina <tamar.christina@arm.com> |
| |
| Revert: |
| 2020-12-13 Tamar Christina <tamar.christina@arm.com> |
| |
| * 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_<supf><mode, mve_vcaddq_rot90_<supf><mode>, |
| mve_vcaddq_rot270_f<mode>, mve_vcaddq_rot90_f<mode>, mve_vcmulq_f<mode, |
| mve_vcmulq_rot180_f<mode>, mve_vcmulq_rot270_f<mode>, |
| mve_vcmulq_rot90_f<mode>, mve_vcmlaq_f<mode>, mve_vcmlaq_rot180_f<mode>, |
| mve_vcmlaq_rot270_f<mode>, mve_vcmlaq_rot90_f<mode>): Removed. |
| (mve_vcmlaq<mve_rot><mode>, mve_vcmulq<mve_rot><mode>, |
| mve_vcaddq<mve_rot><mode>, cadd<rot><mode>3, mve_vcaddq<mve_rot><mode>): |
| New. |
| (cmul<rot_op><mode>3): Exclude MVE types. |
| * config/arm/unspecs.md (UNSPEC_VCMUL90, UNSPEC_VCMUL270): New. |
| * config/arm/vec-common.md (cadd<rot><mode>3, cmul<rot_op><mode>3, |
| arm_vcmla<rot><mode>, cml<fcmac1><rot_op><mode>4): New. |
| * config/arm/unspecs.md (UNSPEC_VCMUL, UNSPEC_VCMUL180, UNSPEC_VCMLS, |
| UNSPEC_VCMLS180): New. |
| * config/arm/neon.md (cmul<rot_op><mode>3): New. |
| |
| 2020-12-13 Jakub Jelinek <jakub@redhat.com> |
| |
| 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 <tamar.christina@arm.com> |
| |
| * 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_<supf><mode, mve_vcaddq_rot90_<supf><mode>, |
| mve_vcaddq_rot270_f<mode>, mve_vcaddq_rot90_f<mode>, mve_vcmulq_f<mode, |
| mve_vcmulq_rot180_f<mode>, mve_vcmulq_rot270_f<mode>, |
| mve_vcmulq_rot90_f<mode>, mve_vcmlaq_f<mode>, mve_vcmlaq_rot180_f<mode>, |
| mve_vcmlaq_rot270_f<mode>, mve_vcmlaq_rot90_f<mode>): Removed. |
| (mve_vcmlaq<mve_rot><mode>, mve_vcmulq<mve_rot><mode>, |
| mve_vcaddq<mve_rot><mode>, cadd<rot><mode>3, mve_vcaddq<mve_rot><mode>): |
| New. |
| (cmul<rot_op><mode>3): Exclude MVE types. |
| * config/arm/unspecs.md (UNSPEC_VCMUL90, UNSPEC_VCMUL270): New. |
| * config/arm/vec-common.md (cadd<rot><mode>3, cmul<rot_op><mode>3, |
| arm_vcmla<rot><mode>, cml<fcmac1><rot_op><mode>4): New. |
| * config/arm/unspecs.md (UNSPEC_VCMUL, UNSPEC_VCMUL180, UNSPEC_VCMLS, |
| UNSPEC_VCMLS180): New. |
| * config/arm/neon.md (cmul<rot_op><mode>3): New. |
| |
| 2020-12-13 Tamar Christina <tamar.christina@arm.com> |
| |
| * config/arm/arm.c (arm_preferred_simd_mode): Add E_HFmode. |
| |
| 2020-12-13 Tamar Christina <tamar.christina@arm.com> |
| |
| * 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 <tamar.christina@arm.com> |
| |
| * 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 <ro@CeBiTec.Uni-Bielefeld.DE> |
| |
| * 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 <richard.sandiford@arm.com> |
| |
| * 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<const T *>): New specialization. |
| |
| 2020-12-13 Richard Sandiford <richard.sandiford@arm.com> |
| |
| * coretypes.h (iterator_range): Move to... |
| * iterator-utils.h: ...this new file. |
| |
| 2020-12-13 Richard Sandiford <richard.sandiford@arm.com> |
| |
| * rtlanal.c (noop_move_p): Don't check for REG_EQUAL notes. |
| |
| 2020-12-13 Richard Sandiford <richard.sandiford@arm.com> |
| |
| * vec.h (vnull::operator vec<T, A, L>): Make const. |
| |
| 2020-12-12 Jakub Jelinek <jakub@redhat.com> |
| |
| PR tree-optimization/96685 |
| * match.pd (~(X - Y) -> ~X + Y): New optimization. |
| (~X + Y -> (Y - X) - 1): Likewise. |
| |
| 2020-12-12 Jakub Jelinek <jakub@redhat.com> |
| |
| 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 <jakub@redhat.com> |
| |
| 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 <nathan@acm.org> |
| |
| * gcc.c (cpp_unique_options): Add Mmodules, Mno-modules. |
| * tree-core.h (enum tree_index): Add TI_MODULE_HWM. |
| |
| 2020-12-11 Jim Wilson <jimw@sifive.com> |
| |
| * varasm.c (get_section): Add DECL_P check before DECL_PRESERVE_P. |
| |
| 2020-12-11 Christophe Lyon <christophe.lyon@linaro.org> |
| |
| * config/arm/iterators.md (VDQ): Remove TARGET_HAVE_MVE |
| conditions. |
| * config/arm/vec-common.md (and<mode>3): Use |
| ARM_HAVE_<MODE>_ARITH. |
| (ior<mode>3): Likewise. |
| |
| 2020-12-11 Claudiu Zissulescu <claziss@synopsys.com> |
| |
| * 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 <claziss@synopsys.com> |
| |
| * config/arc/arc.c (arc_reorg): Avoid limm in BRcc. |
| |
| 2020-12-11 Claudiu Zissulescu <claziss@synopsys.com> |
| |
| * 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 <christophe.lyon@linaro.org> |
| |
| * config/arm/iterators.md (supf): Remove VORRQ_S and VORRQ_U. |
| (VORRQ): Remove. |
| * config/arm/mve.md (mve_vorrq_s<mode>): New entry for vorr |
| instruction using expression ior. |
| (mve_vorrq_u<mode>): New expander. |
| (mve_vorrq_f<mode>): Use ior code instead of unspec. |
| * config/arm/neon.md (ior<mode>3): Renamed into ior<mode>3_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 (ior<mode>3): New expander. |
| |
| 2020-12-11 Claudiu Zissulescu <claziss@synopsys.com> |
| |
| * config/arc/arc.md (mpyd<su_optab>_arcv2hs): New template |
| pattern. |
| (*pmpyd<su_optab>_arcv2hs): Likewise. |
| (*pmpyd<su_optab>_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 <hjl.tools@gmail.com> |
| |
| PR target/98219 |
| * config/i386/uintrintrin.h (__uintr_frame): Remove uirrv. |
| |
| 2020-12-11 Andrea Corallo <andrea.corallo@arm.com> |
| |
| * doc/sourcebuild.texi (arm_softfloat): Improve documentation. |
| |
| 2020-12-11 Jakub Jelinek <jakub@redhat.com> |
| |
| 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 <rguenther@suse.de> |
| |
| 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 <jakub@redhat.com> |
| |
| 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 <andrea.corallo@arm.com> |
| |
| PR rtl-optimization/97092 |
| * ira-color.c (update_costs_from_allocno): Do not carry over mode |
| between subsequent iterations. |
| |
| 2020-12-11 Richard Biener <rguenther@suse.de> |
| |
| 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 <hongyu.wang@intel.com> |
| |
| * common/config/i386/cpuinfo.h (get_available_features): |
| Move check for HRESET/AVX_VNNI/UINTR out of avx512_usable. |
| |
| 2020-12-10 Jakub Jelinek <jakub@redhat.com> |
| |
| 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 <amacleod@redhat.com> |
| |
| 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 <ebotcazou@adacore.com> |
| |
| * dwarf2out.c (loc_list_from_tree_1) <PLACEHOLDER_EXPR>: Deal with |
| a nested context type |
| |
| 2020-12-10 Bernd Edlinger <bernd.edlinger@hotmail.de> |
| |
| * 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 <rguenther@suse.de> |
| |
| * tree-vect-stmts.c (vectorizable_assignment): Remove special |
| allowance of VECTOR_BOOLEAN_TYPE_P conversions. |
| |
| 2020-12-10 Christophe Lyon <christophe.lyon@linaro.org> |
| |
| * 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<mode>): New entry for vand |
| instruction using expression 'and'. |
| (mve_vandq_s<mode>): New expander. |
| (mve_vaddq_n_f<mode>): Use 'and' code instead of unspec. |
| * config/arm/neon.md (and<mode>3): Rename into and<mode>3_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 (and<mode>3): New expander. |
| |
| 2020-12-10 Richard Sandiford <richard.sandiford@arm.com> |
| |
| 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 <joel.hutton@arm.com> |
| |
| 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 <joel.hutton@arm.com> |
| |
| * 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 <rguenther@suse.de> |
| |
| PR tree-optimization/98211 |
| * tree-vect-stmts.c (vectorizable_assignment): Disallow |
| invalid conversions to bool vector types. |
| |
| 2020-12-10 Alexandre Oliva <oliva@adacore.com> |
| |
| * tree.c (build_common_builtin_nodes): Drop __builtin_ from |
| __clear_cache libname. |
| |
| 2020-12-10 Jakub Jelinek <jakub@redhat.com> |
| |
| 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 <jakub@redhat.com> |
| |
| 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 <jakub@redhat.com> |
| |
| PR middle-end/98205 |
| * omp-expand.c (expand_omp_for_generic): Fix up broken_loop handling. |
| |
| 2020-12-10 Richard Biener <rguenther@suse.de> |
| |
| * 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 <simon.cook@embecosm.com> |
| |
| * config/riscv/multilib-generator (arch_canonicalize): Invoke |
| python interpreter when calling arch-canonicalize script. |
| |
| 2020-12-10 Nikhil Benesch <nikhil.benesch@gmail.com> |
| |
| * 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 <jakub@redhat.com> |
| |
| 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 <przemyslaw.wirkus@arm.com> |
| |
| * 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 <ubizjak@gmail.com> |
| |
| * config/i386/i386.h (REG_ALLOC_ORDER): Remove |
| |
| 2020-12-09 Richard Biener <rguenther@suse.de> |
| |
| 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 <kyrylo.tkachov@arm.com> |
| |
| * 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 <jakub@redhat.com> |
| |
| PR tree-optimization/98199 |
| * fold-const.c (native_encode_initializer): Fix handling bit-fields |
| when off > 0. |
| |
| 2020-12-09 Jakub Jelinek <jakub@redhat.com> |
| |
| 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 <mliska@suse.cz> |
| |
| 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 <nathan@acm.org> |
| |
| * 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 <prathamesh.kulkarni@linaro.org> |
| |
| 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 <jakub@redhat.com> |
| |
| 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 <rguenther@suse.de> |
| |
| PR tree-optimization/98192 |
| * tree-vect-slp.c (vect_build_slp_instance): Get scalar_stmts |
| by reference. |
| |
| 2020-12-08 Richard Biener <rguenther@suse.de> |
| |
| 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 <rguenther@suse.de> |
| |
| 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 <prathamesh.kulkarni@linaro.org> |
| |
| 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 <rguenther@suse.de> |
| |
| 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 <ebotcazou@adacore.com> |
| |
| 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 <kito.cheng@sifive.com> |
| |
| 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 <jakub@redhat.com> |
| |
| 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 <bernd.edlinger@hotmail.de> |
| |
| * ipa-param-manipulation.c |
| (ipa_param_body_adjustments::modify_call_stmt): Set location info. |
| |
| 2020-12-07 Jozef Lawrynowicz <jozef.l@mittosystems.com> |
| |
| * doc/extend.texi (used function attribute): Document saving |
| the declaration from linker garbage collection. |
| (used variable attribute): Likewise. |
| |
| 2020-12-07 Richard Biener <rguenther@suse.de> |
| |
| 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 <rguenther@suse.de> |
| |
| 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 <krebbel@linux.ibm.com> |
| |
| * config/s390/s390.c (s390_emit_stack_probe): Change Pmode to |
| word_mode. |
| |
| 2020-12-07 Martin Jambor <mjambor@suse.cz> |
| |
| PR ipa/97816 |
| * ipa-cp.c (safe_add): Removed. |
| (good_cloning_opportunity_p): Remove special handling of INT_MAX. |
| (value_topo_info<valtype>::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 <doko@ubuntu.com> |
| |
| * genextract.c (print_header): Undefine ENABLE_RTL_CHECKING |
| and ENABLE_RTL_FLAG_CHECKING. |
| |
| 2020-12-07 Richard Biener <rguenther@suse.de> |
| |
| 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 <hjl.tools@gmail.com> |
| |
| PR target/98162 |
| * doc/extend.texi: Remove -mcet. |
| |
| 2020-12-06 H.J. Lu <hjl.tools@gmail.com> |
| |
| PR target/98161 |
| * config/i386/i386-features.c (pseudo_reg_set): Check mode of |
| pseudo register push. |
| |
| 2020-12-06 Jakub Jelinek <jakub@redhat.com> |
| |
| 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 <jakub@redhat.com> |
| |
| PR tree-optimization/96232 |
| * match.pd (-(type)!A -> (type)A - 1): New optimization. |
| |
| 2020-12-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> |
| David Edelsohn <dje.gcc@gmail.com> |
| |
| * config/rs6000/xcoff.h (ASM_OUTPUT_DEF): Reference macro arguments. |
| |
| 2020-12-05 Maciej W. Rozycki <macro@linux-mips.org> |
| |
| 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 <macro@linux-mips.org> |
| |
| * 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 <macro@linux-mips.org> |
| |
| * config/pdp11/pdp11.md (fcc_cc, fcc_ccnz): Use |
| `const_double_zero' to express double zero constant. |
| |
| 2020-12-05 Maciej W. Rozycki <macro@linux-mips.org> |
| |
| * 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 <macro@linux-mips.org> |
| |
| * config/vax/vax.md (divmoddisi4, *amulsi4): Make the comment |
| notation consistent with the rest of the file. |
| |
| 2020-12-05 Maciej W. Rozycki <macro@linux-mips.org> |
| |
| * 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 <macro@linux-mips.org> |
| |
| * config/vax/vax.md (mulsidi3): Fix the multiplicand predicates. |
| (*maddsidi4, *maddsidi4_const): Likewise. Name insns. |
| |
| 2020-12-05 Maciej W. Rozycki <macro@linux-mips.org> |
| |
| * config/vax/vax.md (*cmpv_2): Name insn. |
| (*cmpv, *cmpzv, *cmpzv_2): Likewise. Fix location predicate and |
| constraint. |
| |
| 2020-12-05 Maciej W. Rozycki <macro@linux-mips.org> |
| |
| * config/vax/vax.md (extv): Rename insn to... |
| (*extv): ... this. |
| (extv): New expander. |
| |
| 2020-12-05 Maciej W. Rozycki <macro@linux-mips.org> |
| |
| * 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 <macro@linux-mips.org> |
| |
| * 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 <macro@linux-mips.org> |
| |
| * 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 <macro@linux-mips.org> |
| |
| * config/vax/vax.md (cpymemhi1): Rename insn to... |
| (movmemhi1): ... this. |
| (cpymemhi): Update accordingly. Remove constraints. |
| (movmemhi): New expander. |
| |
| 2020-12-05 Maciej W. Rozycki <macro@linux-mips.org> |
| |
| * config/vax/builtins.md: Add a peephole2 for QImode and HImode |
| `ctz' operations. |
| (any_extend): New code iterator. |
| |
| 2020-12-05 Maciej W. Rozycki <macro@linux-mips.org> |
| |
| * config/vax/builtins.md (width): New mode attribute. |
| (ffssi2): Rework expander into... |
| (ffs<mode>2): ... this. |
| (ctzsi2): Rework insn into... |
| (ctz<mode>2): ... this. |
| |
| 2020-12-05 Maciej W. Rozycki <macro@linux-mips.org> |
| |
| * 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 <macro@linux-mips.org> |
| |
| * config/vax/vax.md: Include `builtins.md'. |
| |
| 2020-12-05 Maciej W. Rozycki <macro@linux-mips.org> |
| |
| * 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<mode>): Remove `set' and `unspec' |
| operations, match operands only. Reformat. |
| (sync_lock_release<mode>): Likewise. Remove cruft. |
| (jbb<ccss>i<mode>): Wrap into `unspec_volatile', use |
| `any_memory_operand' predicate. |
| |
| 2020-12-05 Maciej W. Rozycki <macro@linux-mips.org> |
| |
| * config/vax/builtins.md (bit): New int iterator. |
| (ccss): New int attribute. |
| (jbbssi<mode>, jbbcci<mode>): Fold insns into... |
| (jbb<ccss>i<mode>): ... this. |
| |
| 2020-12-05 Maciej W. Rozycki <macro@linux-mips.org> |
| |
| * config/vax/builtins.md (bb_mem): New mode attribute. |
| (jbbssiqi, jbbssihi, jbbssisi): Fold insns into... |
| (jbbssi<mode>): ... this. |
| (jbbcciqi, jbbccihi, jbbccisi): Likewise... |
| (jbbcci<mode>): ... this. |
| |
| 2020-12-05 Maciej W. Rozycki <macro@linux-mips.org> |
| |
| * 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 <macro@linux-mips.org> |
| |
| * loop-doloop.c (add_test): Only remove the jump if `onlyjump_p'. |
| |
| 2020-12-05 Maciej W. Rozycki <macro@linux-mips.org> |
| |
| * cfgrtl.c (rtl_block_empty_p): Return false if `!onlyjump_p' |
| too. |
| |
| 2020-12-05 Maciej W. Rozycki <macro@linux-mips.org> |
| |
| * sel-sched-ir.c (maybe_tidy_empty_bb): Only try to remove a |
| conditional jump if `onlyjump_p'. |
| |
| 2020-12-05 Maciej W. Rozycki <macro@linux-mips.org> |
| |
| * loop-iv.c (simplify_using_initial_values): Only process jumps |
| that match `onlyjump_p'. |
| (check_simple_exit): Likewise. |
| |
| 2020-12-05 Maciej W. Rozycki <macro@linux-mips.org> |
| |
| * ifcvt.c (dead_or_predicable) [!IFCVT_MODIFY_TESTS]: Bail out |
| if `!onlyjump_p'. |
| |
| 2020-12-05 Maciej W. Rozycki <macro@linux-mips.org> |
| |
| * 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 <macro@linux-mips.org> |
| |
| * 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 <macro@linux-mips.org> |
| |
| * 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 <macro@linux-mips.org> |
| |
| * 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 <macro@linux-mips.org> |
| |
| * 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 <matt@3am-software.com> |
| Maciej W. Rozycki <macro@linux-mips.org> |
| |
| 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 <zhroma@ispras.ru> |
| |
| 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 <iain@sandoe.co.uk> |
| |
| PR target/97865 |
| * configure: Regenerate. |
| |
| 2020-12-05 Venkataramanan Kumar <Venkataramanan.Kumar@amd.com> |
| Sharavan Kumar <Shravan.Kumar@amd.com> |
| |
| * 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 <jakub@redhat.com> |
| |
| PR target/96226 |
| * config/i386/i386.md (splitter after *<rotate_insn><mode>3_mask, |
| splitter after *<rotate_insn><mode>3_mask_1): Drop the masking from |
| the patterns to split into. |
| |
| 2020-12-04 Jason Merrill <jason@redhat.com> |
| |
| * vec.h (begin, end): Add overloads for vec*. |
| * tree.c (build_constructor_from_vec): Remove *. |
| |
| 2020-12-04 David Edelsohn <dje.gcc@gmail.com> |
| |
| * config/rs6000/rs6000.c (rs6000_option_override_internal): |
| Change PTR_SIZE to POINTER_SIZE_UNITS. |
| |
| 2020-12-04 Hans-Peter Nilsson <hp@axis.com> |
| Martin Sebor <msebor@redhat.com> |
| |
| 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 <jakub@redhat.com> |
| |
| 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 <jakub@redhat.com> |
| |
| PR target/96226 |
| * config/i386/i386.md (splitter after *<rotate_insn><mode>3_mask, |
| splitter after *<rotate_insn><mode>3_mask_1): New combine splitters. |
| |
| 2020-12-04 Jakub Jelinek <jakub@redhat.com> |
| |
| PR libstdc++/93121 |
| * fold-const.c (native_encode_initializer): Use build_zero_cst |
| instead of build_constructor. |
| |
| 2020-12-04 Jakub Jelinek <jakub@redhat.com> |
| |
| 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 <jakub@redhat.com> |
| |
| * 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 <mliska@suse.cz> |
| |
| * 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 <ebotcazou@adacore.com> |
| |
| * ipa-sra.c (verify_access_tree_1): Relax assertion on the size. |
| |
| 2020-12-04 Martin Liska <mliska@suse.cz> |
| |
| * doc/invoke.texi: Add missing params. |
| |
| 2020-12-03 Martin Sebor <msebor@redhat.com> |
| |
| 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 <oliva@adacore.com> |
| |
| * 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 <sebastian.huber@embedded-brains.de> |
| |
| * config/arm/t-rtems: Add "-mthumb -mcpu=cortex-r52 |
| -mfloat-abi=hard" multilib. |
| |
| 2020-12-03 Uroš Bizjak <ubizjak@gmail.com> |
| Jakub Jelinek <jakub@redhat.com> |
| |
| 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 <krebbel@linux.ibm.com> |
| |
| * config/s390/s390.md ("@probe_stack2<mode>"): Change mode |
| iterator to W. |
| |
| 2020-12-03 Richard Sandiford <richard.sandiford@arm.com> |
| |
| * config/aarch64/aarch64-sve-builtins-base.cc (svundef_impl::fold): |
| Delete. |
| |
| 2020-12-03 Eric Botcazou <ebotcazou@adacore.com> |
| |
| 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 <ebotcazou@adacore.com> |
| |
| 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 <jakub@redhat.com> |
| |
| 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 <iii@linux.ibm.com> |
| |
| * 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 <iii@linux.ibm.com> |
| |
| * tree-ssa-strlen.c (printf_strlen_execute): Avoid division by |
| 0. |
| |
| 2020-12-03 Kito Cheng <kito.cheng@sifive.com> |
| |
| * 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 <przemyslaw.wirkus@arm.com> |
| |
| * 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 <hongtao.liu@intel.com> |
| |
| PR target/96906 |
| * config/i386/sse.md |
| (<avx512>_ucmp<mode>3<mask_scalar_merge_name>): Add a new |
| define_split after this insn. |
| |
| 2020-12-03 liuhongt <hongtao.liu@intel.com> |
| |
| 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. |
| (*<avx512>_load<mode>_mask): New define_insns for masked load |
| instructions. |
| (<avx512>_load<mode>_mask): Changed to define_expands which |
| specifically handle memory or all-ones mask operands. |
| (<avx512>_blendm<mode>): Changed to define_insns which are same |
| as original <avx512>_load<mode>_mask with adjustment of |
| operands order. |
| (*<avx512>_load<mode>): New define_insn_and_split which is |
| used to optimize for masked load with all one mask. |
| |
| 2020-12-03 Hongyu Wang <hongyu.wang@intel.com> |
| |
| PR target/97770 |
| * config/i386/sse.md (popcount<mode>2): New expander |
| for SI/DI vector modes. |
| (popcount<mode>2): Likewise for QI/HI vector modes. |
| |
| 2020-12-03 Alexandre Oliva <oliva@adacore.com> |
| |
| * 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 <iii@linux.ibm.com> |
| |
| * 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 <jakub@redhat.com> |
| |
| * 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 <qinzhao@gcc.gnu.org> |
| |
| 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 <iii@linux.ibm.com> |
| |
| * 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 <rguenther@suse.de> |
| |
| 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 <sss@li-snyder.org> |
| |
| 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<T>) to make it valid C++20 |
| after DR2237. |
| |
| 2020-12-02 Martin Liska <mliska@suse.cz> |
| |
| 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 <hjl.tools@gmail.com> |
| |
| 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 <hjl.tools@gmail.com> |
| |
| * config/i386/i386.opt: Add the missing '.' for -mneeded. |
| |
| 2020-12-02 Richard Biener <rguenther@suse.de> |
| |
| * 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 <jakub@redhat.com> |
| |
| * 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 <jakub@redhat.com> |
| |
| 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 <mliska@suse.cz> |
| |
| PR c/98087 |
| * gimple-fold.c (clear_padding_type): Do not divide by zero. |
| |
| 2020-12-02 Martin Liska <mliska@suse.cz> |
| |
| * gdbinit.in: Write what each command calls |
| for a debugging function. |
| |
| 2020-12-02 Kewen Lin <linkw@linux.ibm.com> |
| |
| * 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 <ubizjak@gmail.com> |
| |
| PR target/98079 |
| * config/i386/i386.md (abs<mode>2): Enable QImode |
| only for !TARGET_PARTIAL_REG_STALL. |
| (*abs<mode>2_1): Ditto. |
| (<maxmin:code><mode>3): Ditto. |
| (*<maxmin:code><mode>3_1): Ditto. |
| |
| 2020-12-02 Martin Liska <mliska@suse.cz> |
| |
| * diagnostic.c (diagnostic_report_diagnostic): ICE causes to |
| terminate compiler immediately, so I guess it should be printed |
| always. |
| |
| 2020-12-02 Martin Liska <mliska@suse.cz> |
| |
| 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 <mliska@suse.cz> |
| |
| PR tree-optimization/98084 |
| * gimple-if-to-switch.cc (find_conditions): Consider only |
| integral types. |
| |
| 2020-12-02 Jeff Law <law@redhat.com> |
| |
| * config/h8300/addsub.md (addqi3_clobber_flags): Rename to |
| addqi3_flags and annotate with a <cczn> for define_subst. |
| (addhi3_h8sx_clobber_flags): Likewise. |
| (subqi3_clobber_flags, sub<mode>3_clobber_flags): Likewise. |
| (neg<mode2>_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 <macro@linux-mips.org> |
| |
| * loop-iv.c: Fix a typo, s/bu/by/, in the `iv_analyze_expr' |
| description in the introduction. |
| |
| 2020-12-02 H.J. Lu <hjl.tools@gmail.com> |
| |
| * 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 <hjl.tools@gmail.com> |
| |
| * 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 <Eugene.Rozenfeld@microsoft.com> |
| |
| PR tree-optimization/96708 |
| * match.pd: New pattern for comparing X with MAX (X, Y) |
| or MIN (X, y). |
| |
| 2020-12-01 Jeff Law <law@redhat.com> |
| |
| * config/mcore/t-mcore (MULTILIB_EXCEPTIONS): Define. |
| |
| 2020-12-01 Martin Sebor <msebor@redhat.com> |
| |
| 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 <phdofthehouse@gmail.com> |
| |
| * doc/cpp.texi: Document new macros. |
| |
| 2020-12-01 Martin Sebor <msebor@redhat.com> |
| |
| 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 <ebotcazou@adacore.com> |
| |
| * 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 <iain@sandoe.co.uk> |
| |
| * config/darwin.h: Remove unused 'X' specs in the link spec |
| rather than driver self-specs. |
| |
| 2020-12-01 Nathan Sidwell <nathan@acm.org> |
| |
| * params.opt (lazy-modules): New. |
| * timevar.def (TV_MODULE_IMPORT, TV_MODULE_EXPORT) |
| (TV_MODULE_MAPPER): New. |
| |
| 2020-12-01 Jakub Jelinek <jakub@redhat.com> |
| |
| 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 <jakub@redhat.com> |
| |
| PR rtl-optimization/97954 |
| * loop-invariant.c (find_invariant_insn): Punt on JUMP_P insns. |
| |
| 2020-12-01 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * 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 <iain@sandoe.co.uk> |
| |
| * configure: Regnerated. |
| |
| 2020-12-01 Ilya Leoshkevich <iii@linux.ibm.com> |
| |
| * 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 <mliska@suse.cz> |
| |
| 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 <mhillen@linux.ibm.com> |
| |
| * 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 <mliska@suse.cz> |
| |
| PR ipa/98057 |
| * symtab.c (symtab_node::set_section_for_node): Drop |
| implicit_section if x_section is NULL. |
| |
| 2020-12-01 Jakub Jelinek <jakub@redhat.com> |
| |
| PR target/98063 |
| * config/i386/i386-expand.c (ix86_expand_call): Handle non-plt |
| CM_LARGE_PIC calls. |
| |
| 2020-12-01 Richard Biener <rguenther@suse.de> |
| |
| PR middle-end/98070 |
| * builtins.c (builtin_fnspec): realloc is ".Cw ". |
| |
| 2020-12-01 Jakub Jelinek <jakub@redhat.com> |
| |
| * dwarf2out.c (gen_compile_unit_die): Treat GNU C++20 |
| like C++14 for -gdwarf-5. |
| |
| 2020-12-01 Jakub Jelinek <jakub@redhat.com> |
| |
| 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 <kito.cheng@sifive.com> |
| |
| * config.gcc (riscv*-*-*): Drop some commited accidentally code. |
| |
| 2020-11-30 Jeff Law <law@redhat.com> |
| |
| * symtab.c (set_section_for_node): Add function comment. |
| (set_section_from_node): Likewise. |
| |
| 2020-11-30 David Malcolm <dmalcolm@redhat.com> |
| |
| * 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 <law@redhat.com> |
| |
| * 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 <richard.sandiford@arm.com> |
| |
| 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 <Eugene.Rozenfeld@microsoft.com> |
| |
| PR tree-optimization/96679 |
| * match.pd (((b | c) & a) | b -> (a & c) | b): New pattern. |
| |
| 2020-11-30 Martin Liska <mliska@suse.cz> |
| |
| * passes.c (emergency_dump_function): Dump symtab when |
| we are in an IPA pass. |
| |
| 2020-11-30 Richard Biener <rguenther@suse.de> |
| |
| PR tree-optimization/98064 |
| * tree-vect-loop.c (vectorizable_live_operation): Avoid |
| breaking LC SSA for BB vectorization. |
| |
| 2020-11-30 Jonathan Wakely <jwakely@redhat.com> |
| |
| * doc/sourcebuild.texi (Directives): Fix description of |
| dg-require-effective-target to include "target" in selector. |
| |
| 2020-11-30 Richard Biener <rguenther@suse.de> |
| |
| 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 <mliska@suse.cz> |
| |
| 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 <iii@linux.ibm.com> |
| |
| * 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 <ibuclaw@gdcproject.org> |
| |
| 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 <jakub@redhat.com> |
| |
| 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 <kito.cheng@sifive.com> |
| |
| * 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 <kito.cheng@sifive.com> |
| |
| * gcc.c (print_multilib_info): Check default arguments not |
| appeared in multi-lib option list with '!' |
| |
| 2020-11-30 Jeff Law <law@redhat.com> |
| |
| * config/ft32/ft32.md (umulsidi3): Do not allow constants as |
| arguments. |
| |
| 2020-11-29 Jan Hubicka <jh@suse.cz> |
| |
| * ipa-modref.c (ipa_merge_modref_summary_after_inlining): Fix |
| handling of ignore_stores. |
| |
| 2020-11-29 Jan Hubicka <jh@suse.cz> |
| |
| PR jit/97867 |
| * symtab-thunks.h (thunk_info::release): Use ggc_delete. |
| |
| 2020-11-29 Martin Sebor <msebor@redhat.com> |
| |
| 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 <ibuclaw@gdcproject.org> |
| |
| * 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 <jh@suse.cz> |
| |
| * tree-ssa-structalias.c (handle_pure_call): Skip EAF_UNUSED |
| parameters. |
| |
| 2020-11-29 Jan Hubicka <jh@suse.cz> |
| |
| * 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 <ebotcazou@adacore.com> |
| |
| 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 <hjl.tools@gmail.com> |
| |
| PR other/98027 |
| * doc/install.texi: Default to --enable-cet=auto. |
| |
| 2020-11-27 Thomas Schwinge <thomas@codesourcery.com> |
| |
| * 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 <rguenther@suse.de> |
| |
| 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 <jakub@redhat.com> |
| |
| * 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 <jakub@redhat.com> |
| |
| PR libstdc++/88101 |
| * gimple-fold.c (clear_padding_type): Ignore fields with is_empty_type |
| types. |
| |
| 2020-11-27 Tobias Burnus <tobias@codesourcery.com> |
| |
| 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 <kyrylo.tkachov@arm.com> |
| |
| * 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 <luoxhu@linux.ibm.com> |
| |
| * 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<mode>): Support both constant |
| and variable index vec_set. |
| |
| 2020-11-27 Haochen Gui <guihaoc@gcc.gnu.org> |
| |
| * 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<mode>_absolute, |
| tablejump<mode>_absolute_nospec): New expanders. |
| * config/rs6000/rs6000.opt (mrelative-jumptables): New. |
| |
| 2020-11-26 Eric Botcazou <ebotcazou@adacore.com> |
| |
| 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<P:mode>): Set type to call_no_delay_slot when |
| tls_delay_slot is false. |
| (tldm_call<P:mode>): Likewise. |
| |
| 2020-11-26 Jakub Jelinek <jakub@redhat.com> |
| |
| 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 <rguenther@suse.de> |
| |
| 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 <rguenther@suse.de> |
| |
| * gimple-isel.cc (gimple_expand_vec_cond_expr): Only |
| lower VECTOR_BOOLEAN_TYPE_P VEC_COND_EXPRs. |
| |
| 2020-11-26 Andrew Stubbs <ams@codesourcery.com> |
| |
| * config/gcn/mkoffload.c (copy_early_debug_info): Don't wipe |
| relocation symbols. |
| |
| 2020-11-26 Uroš Bizjak <ubizjak@gmail.com> |
| |
| * 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 <mliska@suse.cz> |
| |
| * dwarf2out.c (gen_compile_unit_die): Fix missing == 0 in a |
| strcmp. |
| |
| 2020-11-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> |
| |
| * config/sol2.h (TIME_LIBRARY): Remove. |
| |
| 2020-11-26 Kewen Lin <linkw@linux.ibm.com> |
| |
| * 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 <jakub@redhat.com> |
| |
| * 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 <jakub@redhat.com> |
| |
| 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 <hongtao.liu@intel.com> |
| |
| * config/i386/i386-expand.c |
| (ix86_expand_special_args_builtin): Delete last_arg_constant |
| and match. |
| |
| 2020-11-26 Uroš Bizjak <ubizjak@gmail.com> |
| |
| PR target/97873 |
| * config/i386/i386.md (abs<mode>2): Use SDWIM mode iterator. |
| (*abs<mode>2_1): Use SWI mode iterator. |
| (<maxmin:code><mode>3): Use SDWIM mode iterator. |
| (*<maxmin:code><mode>3_1): Use SWI mode iterator. |
| |
| 2020-11-26 Jakub Jelinek <jakub@redhat.com> |
| |
| PR target/96906 |
| * config/i386/sse.md (VI12_AVX2): Remove V64QI/V32HI modes. |
| (VI12_AVX2_AVX512BW): New mode iterator. |
| (<sse2_avx2>_<plusminus_insn><mode>3<mask_name>, |
| uavg<mode>3_ceil, <sse2_avx2>_uavg<mode>3<mask_name>): Use |
| VI12_AVX2_AVX512BW iterator instead of VI12_AVX2. |
| (*<sse2_avx2>_<plusminus_insn><mode>3<mask_name>): Likewise. |
| (*<sse2_avx2>_uavg<mode>3<mask_name>): Likewise. |
| (*<sse2_avx2>_<plusminus_insn><mode>3<mask_name>): Add a new |
| define_split after this insn. |
| |
| 2020-11-26 Martin Uecker <muecker@gwdg.de> |
| |
| PR c/65455 |
| PR c/92935 |
| * ginclude/stdatomic.h: Use comma operator to drop qualifiers. |
| |
| 2020-11-26 Vladimir Makarov <vmakarov@redhat.com> |
| |
| 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 <msebor@redhat.com> |
| |
| 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 <jh@suse.cz> |
| |
| * 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 <jh@suse.cz> |
| |
| * 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 <msebor@redhat.com> |
| |
| PR middle-end/97956 |
| * gimple-fold.c (gimple_fold_builtin_memchr): Use sizetype for pointer |
| offsets. |
| |
| 2020-11-25 Matthew Malcomson <matthew.malcomson@arm.com> |
| |
| * 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 <matthew.malcomson@arm.com> |
| |
| * 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 <matthew.malcomson@arm.com> |
| |
| * 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 <matthew.malcomson@arm.com> |
| |
| * doc/install.texi: Document new option. |
| |
| 2020-11-25 Richard Sandiford <richard.sandiford@arm.com> |
| |
| * config/aarch64/aarch64.c (aarch64_maybe_expand_sve_subreg_move): |
| Do not optimize LRA subregs. |
| * config/aarch64/aarch64-sve.md |
| (@aarch64_pred_<SVE_INT_UNARY:optab><mode>): Tie the input to the |
| output. |
| (@aarch64_sve_revbhw_<SVE_ALL:mode><PRED_HSD:mode>): Likewise. |
| (*<ANY_EXTEND:optab><SVE_PARTIAL_I:mode><SVE_HSDI:mode>2): Likewise. |
| (@aarch64_pred_sxt<SVE_FULL_HSDI:mode><SVE_PARTIAL_I:mode>): Likewise. |
| (*cnot<mode>): Likewise. |
| (@aarch64_pred_<SVE_COND_FP_UNARY:optab><mode>): Likewise. |
| (@aarch64_sve_<optab>_nontrunc<SVE_FULL_F:mode><SVE_FULL_HSDI:mode>): |
| Likewise. |
| (@aarch64_sve_<optab>_trunc<VNx2DF_ONLY:mode><VNx4SI_ONLY:mode>): |
| Likewise. |
| (@aarch64_sve_<optab>_nonextend<SVE_FULL_HSDI:mode><SVE_FULL_F:mode>): |
| Likewise. |
| (@aarch64_sve_<optab>_extend<VNx4SI_ONLY:mode><VNx2DF_ONLY:mode>): |
| Likewise. |
| (@aarch64_sve_<optab>_trunc<SVE_FULL_SDF:mode><SVE_FULL_HSF:mode>): |
| Likewise. |
| (@aarch64_sve_<optab>_trunc<VNx4SF_ONLY:mode><VNx8BF_ONLY:mode>): |
| Likewise. |
| (@aarch64_sve_<optab>_nontrunc<SVE_FULL_HSF:mode><SVE_FULL_SDF:mode>): |
| Likewise. |
| * config/aarch64/aarch64-sve2.md |
| (@aarch64_pred_<SVE2_COND_FP_UNARY_LONG:sve_fp_op><mode>): Likewise. |
| (@aarch64_pred_<SVE2_COND_FP_UNARY_NARROWB:sve_fp_op><mode>): Likewise. |
| (@aarch64_pred_<SVE2_U32_UNARY:sve_int_op><mode>): Likewise. |
| (@aarch64_pred_<SVE2_COND_INT_UNARY_FP:sve_fp_op><mode>): Likewise. |
| |
| 2020-11-25 Jakub Jelinek <jakub@redhat.com> |
| |
| 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 <jh@suse.cz> |
| |
| * 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 <rguenther@suse.de> |
| |
| 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 <jakub@redhat.com> |
| |
| 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 <ulrich.weigand@de.ibm.com> |
| |
| Revert: |
| 2020-11-24 Ulrich Weigand <uweigand@de.ibm.com> |
| |
| * 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 <vmakarov@redhat.com> |
| |
| 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 <rearnsha@arm.com> |
| |
| 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 <iii@linux.ibm.com> |
| |
| * config/s390/vector.md: Use vcond_comparison_operator |
| predicate. |
| |
| 2020-11-24 Ulrich Weigand <uweigand@de.ibm.com> |
| |
| * 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 <jakub@redhat.com> |
| |
| PR target/97950 |
| * config/i386/i386.md (*setcc_si_1_and): Macroize into... |
| (*setcc_<mode>_1_and): New define_insn_and_split with SWI24 iterator. |
| (*setcc_si_1_movzbl): Macroize into... |
| (*setcc_<mode>_1_movzbl): New define_insn_and_split with SWI24 |
| iterator. |
| |
| 2020-11-24 Jakub Jelinek <jakub@redhat.com> |
| |
| * 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 <thomas@codesourcery.com> |
| |
| * omp-expand.c (expand_oacc_for): More explicit checking of which |
| OMP constructs we're expecting. |
| |
| 2020-11-24 Thomas Schwinge <thomas@codesourcery.com> |
| |
| * doc/install.texi (Prerequisites) <Tcl>: Add comment. |
| |
| 2020-11-24 Jakub Jelinek <jakub@redhat.com> |
| |
| PR tree-optimization/96929 |
| * fold-const.c (wide_int_binop) <case LSHIFT_EXPR, case RSHIFT_EXPR>: |
| 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) <case LSHIFT_EXPR, |
| case RSHIFT_EXPR>: 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 <prathamesh.kulkarni@linaro.org> |
| |
| 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 <msebor@redhat.com> |
| |
| * tree-cfg.c (dump_function_to_file): Print type attributes |
| and return type. |
| |
| 2020-11-23 Martin Jambor <mjambor@suse.cz> |
| |
| * 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 <law@redhat.com> |
| |
| * config/h8300/h8300.c (h8300_rtx_costs): Handle the various |
| comparison rtx codes too. |
| |
| 2020-11-23 Jan Hubicka <jh@suse.cz> |
| |
| * 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 <jh@suse.cz> |
| |
| * 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 <nathan@acm.org> |
| |
| * diagnostic.c (diagnostic_report_current_module): Adjust for C++ |
| module importation. |
| |
| 2020-11-23 Jozef Lawrynowicz <jozef.l@mittosystems.com> |
| |
| * 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 <rguenther@suse.de> |
| |
| * tree-vect-slp.c (maybe_push_to_hybrid_worklist): Skip |
| debug stmts. |
| |
| 2020-11-23 Jozef Lawrynowicz <jozef.l@mittosystems.com> |
| |
| * 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 <jozef.l@mittosystems.com> |
| |
| * 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 <matthew.malcomson@arm.com> |
| |
| * doc/install.texi: Document bootstrap-asan option. |
| |
| 2020-11-22 Uroš Bizjak <ubizjak@gmail.com> |
| |
| PR target/97873 |
| * config/i386/i386.md (abs<mode>2): Use SWI48DWI mode iterator. |
| (*abs<dwi>2_doubleword): Use DWIH mode iterator. |
| (<maxmin:code><mode>3): Use SWI48DWI mode iterator. |
| (*<maxmin:code><dwi>3_doubleword): Use DWIH mode iterator. |
| |
| 2020-11-22 Austin Law <austinklaw@gmail.com> |
| |
| * 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. |
| (add<mod>3_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 |
| cbranch<mode>4. |
| (cbranchhi4, cbranchsi4): Likewise. |
| (cbranch<mode>4): 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 <jakub@redhat.com> |
| |
| 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 <law@redhat.com> |
| |
| * config/h8300/jumpcall.md (branch_true, branch_false): Revert |
| recent change. Ensure operand[0] is always the target label. |
| |
| 2020-11-22 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * 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 <polacek@redhat.com> |
| |
| PR c++/94695 |
| * doc/invoke.texi: Update the -Wrange-loop-construct description. |
| |
| 2020-11-21 Jan Hubicka <jh@suse.cz> |
| |
| * tree-ssa-alias.c (ao_compare::compare_ao_refs, |
| ao_compare::hash_ao_ref): Use OEP_MATCH_SIDE_EFFECTS. |
| |
| 2020-11-21 Jan Hubicka <jh@suse.cz> |
| |
| * 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 <acsawdey@linux.ibm.com> |
| |
| * config/rs6000/rs6000.c (rs6000_option_override_internal): |
| Enable vector pair memcpy/memmove expansion. |
| |
| 2020-11-21 Aaron Sawdey <acsawdey@linux.ibm.com> |
| |
| * 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_<acc>): Change to XO mode. |
| (mma_<vv>): Change to XO mode. |
| (mma_<avv>): Change to XO mode. |
| (mma_<pv>): Change to OO mode. |
| (mma_<apv>): Change to XO/OO mode. |
| (mma_<vvi4i4i8>): Change to XO mode. |
| (mma_<avvi4i4i8>): Change to XO mode. |
| (mma_<vvi4i4i2>): Change to XO mode. |
| (mma_<avvi4i4i2>): Change to XO mode. |
| (mma_<vvi4i4>): Change to XO mode. |
| (mma_<avvi4i4>): Change to XO mode. |
| (mma_<pvi4i2>): Change to XO/OO mode. |
| (mma_<apvi4i2>): Change to XO/OO mode. |
| (mma_<vvi4i4i4>): Change to XO mode. |
| (mma_<avvi4i4i4>): 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 <acsawdey@linux.ibm.com> |
| |
| * 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 <meissner@linux.ibm.com> |
| |
| * config/rs6000/rs6000-call.c (rs6000_expand_builtin): Add missing |
| XSCMP* cases for IEEE 128-bit long double. |
| |
| 2020-11-20 Jason Merrill <jason@redhat.com> |
| |
| PR c++/97918 |
| * dwarf2out.c (dwarf2out_early_finish): flush_limbo_die_list |
| after gen_scheduled_generic_parms_dies. |
| |
| 2020-11-20 Martin Sebor <msebor@redhat.com> |
| |
| PR middle-end/97879 |
| * tree-core.h (enum attribute_flags): Add ATTR_FLAG_INTERNAL. |
| |
| 2020-11-20 Jan Hubicka <jh@suse.cz> |
| |
| * ipa-icf-gimple.c (func_checker::hash_operand): Improve hashing of |
| decls. |
| |
| 2020-11-20 Jan Hubicka <jh@suse.cz> |
| |
| * ipa-icf-gimple.c (func_checker::compare_decl): Do not compare types |
| of local variables. |
| |
| 2020-11-20 Nathan Sidwell <nathan@acm.org> |
| |
| * doc/invoke.texi: Replace a couple of @code with @command |
| |
| 2020-11-20 Tamar Christina <tamar.christina@arm.com> |
| |
| * tree-vect-slp.c (vectorizable_slp_permutation): Update types on nodes |
| when needed. |
| |
| 2020-11-20 Richard Biener <rguenther@suse.de> |
| |
| * 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 <rguenther@suse.de> |
| |
| * tree-vect-slp.c (vect_print_slp_tree): Also dump |
| SLP_TREE_REPRESENTATIVE. |
| |
| 2020-11-20 Jakub Jelinek <jakub@redhat.com> |
| |
| 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 <jakub@redhat.com> |
| |
| 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 <ebotcazou@adacore.com> |
| |
| * 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 <jh@suse.cz> |
| |
| * ipa-icf-gimple.c (func_checker::operand_equal_p): Fix comment. |
| |
| 2020-11-20 Jan Hubicka <jh@suse.cz> |
| |
| * 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 <ubizjak@gmail.com> |
| |
| PR target/97873 |
| * config/i386/i386.md (*neg<mode>2_2): Rename from |
| "*neg<mode>2_cmpz". Use CCGOCmode instead of CCZmode. |
| (*negsi2_zext): Rename from *negsi2_cmpz_zext. |
| Use CCGOCmode instead of CCZmode. |
| (*neg<mode>_ccc_1): New insn pattern. |
| (*neg<dwi>2_doubleword): Use *neg<mode>_ccc_1. |
| (abs<mode>2): Add FLAGS_REG clobber. |
| Use TARGET_CMOVE insn predicate. |
| (*abs<mode>2_1): New insn_and_split pattern. |
| (*absdi2_doubleword): Ditto. |
| (<maxmin:code><mode>3): Use SWI48x mode iterator. |
| (*<maxmin:code><mode>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 <jakub@redhat.com> |
| |
| 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 <linkw@linux.ibm.com> |
| |
| * config/rs6000/rs6000.md (p8_mtvsrd_df): Fix insn type. |
| |
| 2020-11-20 Martin Uecker <muecker@gwdg.de> |
| |
| * gimplify.c (gimplify_modify_expr_rhs): Optimizie |
| NOP_EXPRs that contain compound literals. |
| |
| 2020-11-19 Jakub Jelinek <jakub@redhat.com> |
| |
| 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 <amacleod@redhat.com> |
| |
| 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 <jh@suse.cz> |
| |
| * 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 <jakub@redhat.com> |
| |
| 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 <nathan@acm.org> |
| |
| * 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 <dimitar@dinux.eu> |
| |
| * 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 <richard.sandiford@arm.com> |
| |
| * 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 <wdijkstr@arm.com> |
| |
| * 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 <wdijkstr@arm.com> |
| |
| * config/aarch64/aarch64.c (aarch64_expand_cpymem): Cleanup code and |
| comments, tweak expansion decisions and improve tail expansion. |
| |
| 2020-11-19 Richard Biener <rguenther@suse.de> |
| |
| * fold-const.c (operand_compare::hash_operand): Fix typo. |
| |
| 2020-11-19 Richard Biener <rguenther@suse.de> |
| |
| * tree-ssa-reassoc.c (get_rank): Refactor to consistently |
| use the cache and dump ranks assigned. |
| |
| 2020-11-19 Jan Hubicka <jh@suse.cz> |
| |
| * 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 <joel.hutton@arm.com> |
| |
| * config/aarch64/aarch64-simd.md: Add vec_widen_lshift_hi/lo<mode> |
| patterns. |
| * tree-vect-stmts.c (vectorizable_conversion): Fix for widen_lshift |
| case. |
| |
| 2020-11-19 Joel Hutton <joel.hutton@arm.com> |
| |
| * 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 <joel.hutton@arm.com> |
| |
| * config/aarch64/aarch64-simd.md: New patterns |
| vec_widen_saddl_lo/hi_<mode>. |
| |
| 2020-11-19 Richard Biener <rguenther@suse.de> |
| |
| 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 <ebotcazou@adacore.com> |
| |
| * dwarf2out.h (struct fixed_point_type_info) <scale_factor>: 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 <rguenther@suse.de> |
| |
| 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 <ubizjak@gmail.com> |
| |
| * config/i386/i386.md (*<absneg:code><mode>2_i387_1): |
| Disable for TARGET_SSE_MATH modes. |
| |
| 2020-11-19 Jeff Law <law@redhat.com> |
| |
| * 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 <roger@nextmovesoftware.com> |
| |
| 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
|