+2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
+
+ * optabs-query.c (can_vec_perm_var_p): Check whether lowering
+ to qimode could truncate the indices.
+ * optabs.c (expand_vec_perm_var): Likewise.
+
+2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
+
+ * Makefile.in (OBJS): Add vec-perm-indices.o.
+ * vec-perm-indices.h: New file.
+ * vec-perm-indices.c: Likewise.
+ * target.h (vec_perm_indices): Replace with a forward class
+ declaration.
+ (auto_vec_perm_indices): Move to vec-perm-indices.h.
+ * optabs.h: Include vec-perm-indices.h.
+ (expand_vec_perm): Delete.
+ (selector_fits_mode_p, expand_vec_perm_var): Declare.
+ (expand_vec_perm_const): Declare.
+ * target.def (vec_perm_const_ok): Replace with...
+ (vec_perm_const): ...this new hook.
+ * doc/tm.texi.in (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Replace with...
+ (TARGET_VECTORIZE_VEC_PERM_CONST): ...this new hook.
+ * doc/tm.texi: Regenerate.
+ * optabs.def (vec_perm_const): Delete.
+ * doc/md.texi (vec_perm_const): Likewise.
+ (vec_perm): Refer to TARGET_VECTORIZE_VEC_PERM_CONST.
+ * expr.c (expand_expr_real_2): Use expand_vec_perm_const rather than
+ expand_vec_perm for constant permutation vectors. Assert that
+ the mode of variable permutation vectors is the integer equivalent
+ of the mode that is being permuted.
+ * optabs-query.h (selector_fits_mode_p): Declare.
+ * optabs-query.c: Include vec-perm-indices.h.
+ (selector_fits_mode_p): New function.
+ (can_vec_perm_const_p): Check whether targetm.vectorize.vec_perm_const
+ is defined, instead of checking whether the vec_perm_const_optab
+ exists. Use targetm.vectorize.vec_perm_const instead of
+ targetm.vectorize.vec_perm_const_ok. Check whether the indices
+ fit in the vector mode before using a variable permute.
+ * optabs.c (shift_amt_for_vec_perm_mask): Take a mode and a
+ vec_perm_indices instead of an rtx.
+ (expand_vec_perm): Replace with...
+ (expand_vec_perm_const): ...this new function. Take the selector
+ as a vec_perm_indices rather than an rtx. Also take the mode of
+ the selector. Update call to shift_amt_for_vec_perm_mask.
+ Use targetm.vectorize.vec_perm_const instead of vec_perm_const_optab.
+ Use vec_perm_indices::new_expanded_vector to expand the original
+ selector into bytes. Check whether the indices fit in the vector
+ mode before using a variable permute.
+ (expand_vec_perm_var): Make global.
+ (expand_mult_highpart): Use expand_vec_perm_const.
+ * fold-const.c: Includes vec-perm-indices.h.
+ * tree-ssa-forwprop.c: Likewise.
+ * tree-vect-data-refs.c: Likewise.
+ * tree-vect-generic.c: Likewise.
+ * tree-vect-loop.c: Likewise.
+ * tree-vect-slp.c: Likewise.
+ * tree-vect-stmts.c: Likewise.
+ * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm_const):
+ Delete.
+ * config/aarch64/aarch64-simd.md (vec_perm_const<mode>): Delete.
+ * config/aarch64/aarch64.c (aarch64_expand_vec_perm_const)
+ (aarch64_vectorize_vec_perm_const_ok): Fuse into...
+ (aarch64_vectorize_vec_perm_const): ...this new function.
+ (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
+ (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
+ * config/arm/arm-protos.h (arm_expand_vec_perm_const): Delete.
+ * config/arm/vec-common.md (vec_perm_const<mode>): Delete.
+ * config/arm/arm.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
+ (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
+ (arm_expand_vec_perm_const, arm_vectorize_vec_perm_const_ok): Merge
+ into...
+ (arm_vectorize_vec_perm_const): ...this new function. Explicitly
+ check for NEON modes.
+ * config/i386/i386-protos.h (ix86_expand_vec_perm_const): Delete.
+ * config/i386/sse.md (VEC_PERM_CONST, vec_perm_const<mode>): Delete.
+ * config/i386/i386.c (ix86_expand_vec_perm_const_1): Update comment.
+ (ix86_expand_vec_perm_const, ix86_vectorize_vec_perm_const_ok): Merge
+ into...
+ (ix86_vectorize_vec_perm_const): ...this new function. Incorporate
+ the old VEC_PERM_CONST conditions.
+ * config/ia64/ia64-protos.h (ia64_expand_vec_perm_const): Delete.
+ * config/ia64/vect.md (vec_perm_const<mode>): Delete.
+ * config/ia64/ia64.c (ia64_expand_vec_perm_const)
+ (ia64_vectorize_vec_perm_const_ok): Merge into...
+ (ia64_vectorize_vec_perm_const): ...this new function.
+ * config/mips/loongson.md (vec_perm_const<mode>): Delete.
+ * config/mips/mips-msa.md (vec_perm_const<mode>): Delete.
+ * config/mips/mips-ps-3d.md (vec_perm_constv2sf): Delete.
+ * config/mips/mips-protos.h (mips_expand_vec_perm_const): Delete.
+ * config/mips/mips.c (mips_expand_vec_perm_const)
+ (mips_vectorize_vec_perm_const_ok): Merge into...
+ (mips_vectorize_vec_perm_const): ...this new function.
+ * config/powerpcspe/altivec.md (vec_perm_constv16qi): Delete.
+ * config/powerpcspe/paired.md (vec_perm_constv2sf): Delete.
+ * config/powerpcspe/spe.md (vec_perm_constv2si): Delete.
+ * config/powerpcspe/vsx.md (vec_perm_const<mode>): Delete.
+ * config/powerpcspe/powerpcspe-protos.h (altivec_expand_vec_perm_const)
+ (rs6000_expand_vec_perm_const): Delete.
+ * config/powerpcspe/powerpcspe.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK):
+ Delete.
+ (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
+ (altivec_expand_vec_perm_const_le): Take each operand individually.
+ Operate on constant selectors rather than rtxes.
+ (altivec_expand_vec_perm_const): Likewise. Update call to
+ altivec_expand_vec_perm_const_le.
+ (rs6000_expand_vec_perm_const): Delete.
+ (rs6000_vectorize_vec_perm_const_ok): Delete.
+ (rs6000_vectorize_vec_perm_const): New function.
+ (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
+ an element count and rtx array.
+ (rs6000_expand_extract_even): Update call accordingly.
+ (rs6000_expand_interleave): Likewise.
+ * config/rs6000/altivec.md (vec_perm_constv16qi): Delete.
+ * config/rs6000/paired.md (vec_perm_constv2sf): Delete.
+ * config/rs6000/vsx.md (vec_perm_const<mode>): Delete.
+ * config/rs6000/rs6000-protos.h (altivec_expand_vec_perm_const)
+ (rs6000_expand_vec_perm_const): Delete.
+ * config/rs6000/rs6000.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
+ (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
+ (altivec_expand_vec_perm_const_le): Take each operand individually.
+ Operate on constant selectors rather than rtxes.
+ (altivec_expand_vec_perm_const): Likewise. Update call to
+ altivec_expand_vec_perm_const_le.
+ (rs6000_expand_vec_perm_const): Delete.
+ (rs6000_vectorize_vec_perm_const_ok): Delete.
+ (rs6000_vectorize_vec_perm_const): New function. Remove stray
+ reference to the SPE evmerge intructions.
+ (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
+ an element count and rtx array.
+ (rs6000_expand_extract_even): Update call accordingly.
+ (rs6000_expand_interleave): Likewise.
+ * config/sparc/sparc.md (vec_perm_constv8qi): Delete in favor of...
+ * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): ...this
+ new function.
+ (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
+
+2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
+
+ * optabs.c (expand_vec_perm_1): Assert that SEL has an integer
+ vector mode and that that mode matches the mode of the data
+ being permuted.
+ (expand_vec_perm): Split handling of non-CONST_VECTOR selectors
+ out into expand_vec_perm_var. Do all CONST_VECTOR handling here,
+ directly using expand_vec_perm_1 when forcing selectors into
+ registers.
+ (expand_vec_perm_var): New function, split out from expand_vec_perm.
+
+2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
+
+ * optabs-query.h (can_vec_perm_p): Delete.
+ (can_vec_perm_var_p, can_vec_perm_const_p): Declare.
+ * optabs-query.c (can_vec_perm_p): Split into...
+ (can_vec_perm_var_p, can_vec_perm_const_p): ...these two functions.
+ (can_mult_highpart_p): Use can_vec_perm_const_p to test whether a
+ particular selector is valid.
+ * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
+ * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
+ (vect_grouped_load_supported): Likewise.
+ (vect_shift_permute_load_chain): Likewise.
+ * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
+ (vect_transform_slp_perm_load): Likewise.
+ * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
+ (vectorizable_bswap): Likewise.
+ (vect_gen_perm_mask_checked): Likewise.
+ * fold-const.c (fold_ternary_loc): Likewise. Don't take
+ implementations of variable permutation vectors into account
+ when deciding which selector to use.
+ * tree-vect-loop.c (have_whole_vector_shift): Don't check whether
+ vec_perm_const_optab is supported; instead use can_vec_perm_const_p
+ with a false third argument.
+ * tree-vect-generic.c (lower_vec_perm): Use can_vec_perm_const_p
+ to test whether the constant selector is valid and can_vec_perm_var_p
+ to test whether a variable selector is valid.
+
+2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
+
+ * optabs-query.h (can_vec_perm_p): Take a const vec_perm_indices *.
+ * optabs-query.c (can_vec_perm_p): Likewise.
+ * fold-const.c (fold_vec_perm): Take a const vec_perm_indices &
+ instead of vec_perm_indices.
+ * tree-vectorizer.h (vect_gen_perm_mask_any): Likewise,
+ (vect_gen_perm_mask_checked): Likewise,
+ * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise,
+ (vect_gen_perm_mask_checked): Likewise,
+
+2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
+
+ * optabs-query.h (qimode_for_vec_perm): Declare.
+ * optabs-query.c (can_vec_perm_p): Split out qimode search to...
+ (qimode_for_vec_perm): ...this new function.
+ * optabs.c (expand_vec_perm): Use qimode_for_vec_perm.
+
+2018-01-02 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
+
+ * rtlanal.c (canonicalize_condition): Return 0 if final rtx
+ does not have a conditional at the top.
+
+2018-01-02 Richard Biener <rguenther@suse.de>
+
+ * ipa-inline.c (big_speedup_p): Fix expression.
+
+2018-01-02 Jan Hubicka <hubicka@ucw.cz>
+
+ PR target/81616
+ * config/i386/x86-tune-costs.h: Increase cost of integer load costs
+ for generic 4->6.
+
+2018-01-02 Jan Hubicka <hubicka@ucw.cz>
+
+ PR target/81616
+ Generic tuning.
+ * x86-tune-costs.h (generic_cost): Reduce cost of FDIV 20->17,
+ cost of sqrt 20->14, DIVSS 18->13, DIVSD 32->17, SQRtSS 30->14
+ and SQRTsD 58->18, cond_not_taken_branch_cost. 2->1. Increase
+ cond_taken_branch_cost 3->4.
+
+2018-01-01 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/83581
+ * tree-loop-distribution.c (pass_loop_distribution::execute): Return
+ TODO_cleanup_cfg if any changes have been made.
+
+ PR middle-end/83608
+ * expr.c (store_expr_with_bounds): Use simplify_gen_subreg instead of
+ convert_modes if target mode has the right side, but different mode
+ class.
+
+ PR middle-end/83609
+ * expr.c (expand_assignment): Fix up a typo in simplify_gen_subreg
+ last argument when extracting from CONCAT. If either from_real or
+ from_imag is NULL, use expansion through memory. If result is not
+ a CONCAT and simplify_gen_subreg fails, try to simplify_gen_subreg
+ the parts directly to inner mode, if even that fails, use expansion
+ through memory.
+
+ PR middle-end/83623
+ * expmed.c (expand_shift_1): For 2-byte rotates by BITS_PER_UNIT,
+ check for bswap in mode rather than HImode and use that in expand_unop
+ too.
+
+2017-12-31 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/83536
+ * config/i386/i386.c (ix86_attribute_table): Remove excess
+ initializer for "shared" attribute.
+
+2017-12-30 Tom de Vries <tom@codesourcery.com>
+
+ PR libgomp/83046
+ * omp-expand.c (expand_omp_target): If in_lto_p, mark offload_funcs with
+ DECL_PRESERVE_P.
+ * lto-streamer-out.c (prune_offload_funcs): New function. Remove
+ offload_funcs entries that no longer have a corresponding cgraph_node.
+ Mark the remaining ones as DECL_PRESERVE_P.
+ (output_lto): Call prune_offload_funcs.
+
+2017-12-30 Jakub Jelinek <jakub@redhat.com>
+
+ * config/i386/sse.md (vgf2p8affineinvqb_<mode><mask_name>,
+ vgf2p8affineqb_<mode><mask_name>, vgf2p8mulb_<mode><mask_name>,
+ vpshrd_<mode><mask_name>, vpshld_<mode><mask_name>,
+ vpshrdv_<mode>, vpshrdv_<mode>_mask, vpshrdv_<mode>_maskz,
+ vpshrdv_<mode>_maskz_1, vpshldv_<mode>, vpshldv_<mode>_mask,
+ vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1, vpdpbusd_<mode>,
+ vpdpbusd_<mode>_mask, vpdpbusd_<mode>_maskz, vpdpbusd_<mode>_maskz_1,
+ vpdpbusds_<mode>, vpdpbusds_<mode>_mask, vpdpbusds_<mode>_maskz,
+ vpdpbusds_<mode>_maskz_1, vpdpwssd_<mode>, vpdpwssd_<mode>_mask,
+ vpdpwssd_<mode>_maskz, vpdpwssd_<mode>_maskz_1, vpdpwssds_<mode>,
+ vpdpwssds_<mode>_mask, vpdpwssds_<mode>_maskz,
+ vpdpwssds_<mode>_maskz_1, vaesdec_<mode>, vaesdeclast_<mode>,
+ vaesenc_<mode>, vpclmulqdq_<mode>,
+ avx512vl_vpshufbitqmb<mode><mask_scalar_merge_name>): Formatting fixes.
+
+2017-12-28 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ * builtins.def: (_Float<N> and _Float<N>X BUILT_IN_CEIL): Add
+ _Float<N> and _Float<N>X variants for rounding built-in
+ functions.
+ (_Float<N> and _Float<N>X BUILT_IN_FLOOR): Likewise.
+ (_Float<N> and _Float<N>X BUILT_IN_NEARBYINT): Likewise.
+ (_Float<N> and _Float<N>X BUILT_IN_RINT): Likewise.
+ (_Float<N> and _Float<N>X BUILT_IN_ROUND): Likewise.
+ (_Float<N> and _Float<N>X BUILT_IN_TRUNC): Likewise.
+ * builtins.c (mathfn_built_in_2): Likewise.
+ * internal-fn.def (CEIL): Likewise.
+ (FLOOR): Likewise.
+ (NEARBYINT): Likewise.
+ (RINT): Likewise.
+ (ROUND): Likewise.
+ (TRUNC): Likewise.
+ * convert.c (convert_to_integer_1): Likewise.
+ * fold-const.c (tree_call_nonnegative_warnv_p): Likewise.
+ (integer_valued_real_call_p): Likewise.
+ * fold-const-call.c (fold_const_call_ss): Likewise.
+ * gencfn-macros.c (print_case_cfn): Change CFN and operator
+ printers to take a const char * suffix instead of a bool.
+ (print_define_operator_list): Likewise.
+ (fltall_suffixes): New list of suffixes, that include the
+ traditional suffixes as well as all of the _Float<N> and
+ _Float<N>X suffixes.
+ (main): For _Float<N> and _Float<N>X functions, emit both
+ <name>_FN and <name>_ALL variants. The <macro>_FN variant only
+ has the _Float<N> and _Float<N>X case names or operators. The
+ <name>_ALL variant has both the traditional and the
+ _Float<N>/_Float<N>X case names or operators.
+ * match.pd (COPYSIGN optimizations): Provide optimizations for
+ _Float<N> and _Float<N>X types where possible.
+ (MIN/MAX optimizations): Likewise.
+ (sqrt optimizations): Likewise.
+ (rounding optimizations): Likewise.
+
+2017-12-28 Richard Sandiford <richard.sandiford@linaro.org>
+
+ * config/powerpcspe/powerpcspe.md (ieee_128bit_negative_zero): Use
+ gen_int_mode rather than GEN_INT.
+ * config/rs6000/rs6000.md (ieee_128bit_negative_zero): Likewise.
+
+2017-12-28 Richard Sandiford <richard.sandiford@linaro.org>
+
+ * emit-rtl.c (gen_const_vec_series): Use valid_for_const_vector_p
+ instead of CONSTANT_P.
+ (gen_vec_series): Likewise.
+ * simplify-rtx.c (simplify_binary_operation_1): Likewise.
+
+2017-12-28 Andreas Schwab <schwab@linux-m68k.org>
+
+ * config/m68k/m68k.md (ashrdi3_const1, lshrdi3_const1): Add
+ CC_STATUS_INIT.
+
+2017-12-27 Kugan Vivekanandarajah <kuganv@linaro.org>
+
+ * config/aarch64/aarch64-simd.md (aarch64_ld1x2<VQ:mode>): New.
+ (aarch64_ld1x2<VDC:mode>): Likewise.
+ (aarch64_simd_ld1<mode>_x2): Likewise.
+ (aarch64_simd_ld1<mode>_x2): Likewise.
+ * config/aarch64/arm_neon.h (vld1_u8_x2): New.
+ (vld1_s8_x2): Likewise.
+ (vld1_u16_x2): Likewise.
+ (vld1_s16_x2): Likewise.
+ (vld1_u32_x2): Likewise.
+ (vld1_s32_x2): Likewise.
+ (vld1_u64_x2): Likewise.
+ (vld1_s64_x2): Likewise.
+ (vld1_f16_x2): Likewise.
+ (vld1_f32_x2): Likewise.
+ (vld1_f64_x2): Likewise.
+ (vld1_p8_x2): Likewise.
+ (vld1_p16_x2): Likewise.
+ (vld1_p64_x2): Likewise.
+ (vld1q_u8_x2): Likewise.
+ (vld1q_s8_x2): Likewise.
+ (vld1q_u16_x2): Likewise.
+ (vld1q_s16_x2): Likewise.
+ (vld1q_u32_x2): Likewise.
+ (vld1q_s32_x2): Likewise.
+ (vld1q_u64_x2): Likewise.
+ (vld1q_s64_x2): Likewise.
+ (vld1q_f16_x2): Likewise.
+ (vld1q_f32_x2): Likewise.
+ (vld1q_f64_x2): Likewise.
+ (vld1q_p8_x2): Likewise.
+ (vld1q_p16_x2): Likewise.
+ (vld1q_p64_x2): Likewise.
+
+2017-12-27 Martin Liska <mliska@suse.cz>
+
+ PR tree-optimization/83552
+ * tree-ssa-strlen.c (fold_strstr_to_strncmp): Assign result
+ of get_string_lenth to a SSA_NAME if not a GIMPLE value.
+
+2017-12-27 Tom de Vries <tom@codesourcery.com>
+
+ * config/nvptx/nvptx.c (nvptx_option_override): Disable
+ -gstatement-frontiers.
+
+2017-12-26 Alexander Monakov <amonakov@ispras.ru>
+
+ PR rtl-optimization/83513
+ * sel-sched.c (sel_rank_for_schedule): Order by non-zero usefulness
+ before priority comparison.
+
+2017-12-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/83488
+ * config/i386/i386.opt (-mavx512vpopcntdq, -mmavx512bitalg): Move from
+ ix86_isa_flags2 to ix86_isa_flags.
+ * config/i386/i386-c.c (ix86_target_macros_internal): Test
+ OPTION_MASK_ISA_AVX512BITALG and OPTION_MASK_ISA_AVX512VPOPCNTDQ in
+ isa_flags rather than isa_flags2.
+ * config/i386/i386.c (ix86_target_string): Move -mavx512vpopcntdq
+ and -mavx512bitalg from isa2_opts to isa_opts.
+ (ix86_option_override_internal): Test OPTION_MASK_ISA_AVX512VPOPCNTDQ
+ in x_ix86_isa_flags_explicit rather than x_ix86_isa_flags2_explicit
+ and set it in x_ix86_isa_flags rather than x_ix86_isa_flags2.
+ Formatting fixes.
+ (def_builtin): Treat OPTION_MASK_ISA_AVX512BW or
+ OPTION_MASK_ISA_AVX512F ored with another option similarly to
+ OPTION_MASK_ISA_AVX512VL. Even for OPTION_MASK_ISA_AVX512VL don't
+ clear it if mask is just OPTION_MASK_ISA_AVX512VL itself.
+ (ix86_expand_builtin): Don't handle OPTION_MASK_ISA_GFNI and
+ OPTION_MASK_ISA_VPCLMULQDQ specially, instead handle
+ OPTION_MASK_ISA_AVX512BW and OPTION_MASK_ISA_AVX512F that way.
+ * config/i386/i386-builtin.def: Move AVX512VPOPCNTDQ and AVX512BITALG
+ builtins from bdesc_args2 to bdesc_args section.
+ (__builtin_ia32_compressstoreuqi512_mask,
+ __builtin_ia32_compressstoreuhi512_mask,
+ __builtin_ia32_compressstoreuqi256_mask,
+ __builtin_ia32_expandloadqi512_mask,
+ __builtin_ia32_expandloadqi512_maskz,
+ __builtin_ia32_expandloadhi512_mask,
+ __builtin_ia32_expandloadhi512_maskz,
+ __builtin_ia32_compressqi512_mask, __builtin_ia32_compresshi512_mask,
+ __builtin_ia32_compressqi256_mask, __builtin_ia32_expandqi512_mask,
+ __builtin_ia32_expandqi512_maskz, __builtin_ia32_expandhi512_mask,
+ __builtin_ia32_expandhi512_maskz, __builtin_ia32_expandqi256_mask,
+ __builtin_ia32_expandqi256_maskz, __builtin_ia32_vpshrd_v32hi_mask,
+ __builtin_ia32_vpshld_v32hi_mask, __builtin_ia32_vpshrdv_v32hi_mask,
+ __builtin_ia32_vpshrdv_v32hi_maskz, __builtin_ia32_vpshldv_v32hi_mask,
+ __builtin_ia32_vpshldv_v32hi_maskz,
+ __builtin_ia32_vpopcountb_v64qi_mask,
+ __builtin_ia32_vpopcountw_v32hi_mask,
+ __builtin_ia32_vpshufbitqmb512_mask,
+ __builtin_ia32_vpshufbitqmb256_mask): Add
+ " | OPTION_MASK_ISA_AVX512BW".
+ (__builtin_ia32_expandloadqi256_mask,
+ __builtin_ia32_expandloadqi256_maskz,
+ __builtin_ia32_vpopcountb_v32qi_mask): Add
+ " | OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_AVX512BW".
+ (__builtin_ia32_expandloadhi256_mask,
+ __builtin_ia32_expandloadhi256_maskz,
+ __builtin_ia32_expandloadqi128_mask,
+ __builtin_ia32_expandloadqi128_maskz,
+ __builtin_ia32_expandloadhi128_mask,
+ __builtin_ia32_expandloadhi128_maskz,
+ __builtin_ia32_vpshrd_v16hi, __builtin_ia32_vpshrd_v16hi_mask,
+ __builtin_ia32_vpshrd_v8hi, __builtin_ia32_vpshrd_v8hi_mask,
+ __builtin_ia32_vpshrd_v8si, __builtin_ia32_vpshrd_v8si_mask,
+ __builtin_ia32_vpshrd_v4si, __builtin_ia32_vpshrd_v4si_mask,
+ __builtin_ia32_vpshrd_v4di, __builtin_ia32_vpshrd_v4di_mask,
+ __builtin_ia32_vpshrd_v2di, __builtin_ia32_vpshrd_v2di_mask,
+ __builtin_ia32_vpshld_v16hi, __builtin_ia32_vpshld_v16hi_mask,
+ __builtin_ia32_vpshld_v8hi, __builtin_ia32_vpshld_v8hi_mask,
+ __builtin_ia32_vpshld_v8si, __builtin_ia32_vpshld_v8si_mask,
+ __builtin_ia32_vpshld_v4si, __builtin_ia32_vpshld_v4si_mask,
+ __builtin_ia32_vpshld_v4di, __builtin_ia32_vpshld_v4di_mask,
+ __builtin_ia32_vpshld_v2di, __builtin_ia32_vpshld_v2di_mask,
+ __builtin_ia32_vpshrdv_v16hi, __builtin_ia32_vpshrdv_v16hi_mask,
+ __builtin_ia32_vpshrdv_v16hi_maskz, __builtin_ia32_vpshrdv_v8hi,
+ __builtin_ia32_vpshrdv_v8hi_mask, __builtin_ia32_vpshrdv_v8hi_maskz,
+ __builtin_ia32_vpshrdv_v8si, __builtin_ia32_vpshrdv_v8si_mask,
+ __builtin_ia32_vpshrdv_v8si_maskz, __builtin_ia32_vpshrdv_v4si,
+ __builtin_ia32_vpshrdv_v4si_mask, __builtin_ia32_vpshrdv_v4si_maskz,
+ __builtin_ia32_vpshrdv_v4di, __builtin_ia32_vpshrdv_v4di_mask,
+ __builtin_ia32_vpshrdv_v4di_maskz, __builtin_ia32_vpshrdv_v2di,
+ __builtin_ia32_vpshrdv_v2di_mask, __builtin_ia32_vpshrdv_v2di_maskz,
+ __builtin_ia32_vpshldv_v16hi, __builtin_ia32_vpshldv_v16hi_mask,
+ __builtin_ia32_vpshldv_v16hi_maskz, __builtin_ia32_vpshldv_v8hi,
+ __builtin_ia32_vpshldv_v8hi_mask, __builtin_ia32_vpshldv_v8hi_maskz,
+ __builtin_ia32_vpshldv_v8si, __builtin_ia32_vpshldv_v8si_mask,
+ __builtin_ia32_vpshldv_v8si_maskz, __builtin_ia32_vpshldv_v4si,
+ __builtin_ia32_vpshldv_v4si_mask, __builtin_ia32_vpshldv_v4si_maskz,
+ __builtin_ia32_vpshldv_v4di, __builtin_ia32_vpshldv_v4di_mask,
+ __builtin_ia32_vpshldv_v4di_maskz, __builtin_ia32_vpshldv_v2di,
+ __builtin_ia32_vpshldv_v2di_mask, __builtin_ia32_vpshldv_v2di_maskz,
+ __builtin_ia32_vpopcountb_v32qi, __builtin_ia32_vpopcountb_v16qi,
+ __builtin_ia32_vpopcountb_v16qi_mask, __builtin_ia32_vpopcountw_v16hi,
+ __builtin_ia32_vpopcountw_v16hi_mask, __builtin_ia32_vpopcountw_v8hi,
+ __builtin_ia32_vpopcountw_v8hi_mask): Add
+ " | OPTION_MASK_ISA_AVX512VL".
+ * config/i386/avx512vbmi2intrin.h (_mm512_shrdi_epi16,
+ _mm512_shrdi_epi32, _mm512_mask_shrdi_epi32, _mm512_maskz_shrdi_epi32,
+ _mm512_shrdi_epi64, _mm512_mask_shrdi_epi64, _mm512_maskz_shrdi_epi64,
+ _mm512_shldi_epi16, _mm512_shldi_epi32, _mm512_mask_shldi_epi32,
+ _mm512_maskz_shldi_epi32, _mm512_shldi_epi64, _mm512_mask_shldi_epi64,
+ _mm512_maskz_shldi_epi64, _mm512_shrdv_epi16, _mm512_shrdv_epi32,
+ _mm512_mask_shrdv_epi32, _mm512_maskz_shrdv_epi32, _mm512_shrdv_epi64,
+ _mm512_mask_shrdv_epi64, _mm512_maskz_shrdv_epi64, _mm512_shldv_epi16,
+ _mm512_shldv_epi32, _mm512_mask_shldv_epi32, _mm512_maskz_shldv_epi32,
+ _mm512_shldv_epi64, _mm512_mask_shldv_epi64,
+ _mm512_maskz_shldv_epi64): Don't require avx512bw for these intrinsics.
+ * config/i386/avx512bitalgintrin.h (_mm_bitshuffle_epi64_mask,
+ _mm_mask_bitshuffle_epi64_mask): Likewise.
+ * common/config/i386/i386-common.c
+ (OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET,
+ OPTION_MASK_ISA_AVX512BITALG_SET): Or in OPTION_MASK_ISA_AVX512F_SET.
+ (OPTION_MASK_ISA_AVX512F_UNSET): Or in
+ OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET and
+ OPTION_MASK_ISA_AVX512BITALG_UNSET.
+ (OPTION_MASK_ISA2_AVX512F_UNSET,
+ OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET): Define.
+ (ix86_handle_option): For -mno-general-regs-only, clear from
+ ix86_isa_flags2 OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET rather than
+ just OPTION_MASK_ISA_MPX. For -mno-sse{,2,3,4,4.1,4.2,avx,avx2} and
+ -mno-ssse3 clear OPTION_MASK_ISA2_AVX512F_UNSET bits from
+ ix86_isa_flags2. For -mno-avx512f likewise, instead of masking
+ individually listed ISAs. For -m{,no-}avx512{vpopcntdq,bitalg} adjust
+ for moving from ix86_isa_flags2 to ix86_isa_flags.
+
+2017-12-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/83553
+ * fold-const.c (struct contains_label_data): New type.
+ (contains_label_1): Return non-NULL even for CASE_LABEL_EXPR, unless
+ inside of a SWITCH_BODY seen during the walk.
+ (contains_label_p): Use walk_tree instead of
+ walk_tree_without_duplicates, prepare data for contains_label_1 and
+ provide own pset.
+
+2017-12-22 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/83547
+ * tree-iterator.c (alloc_stmt_list): Start with cleared
+ TREE_SIDE_EFFECTS regardless whether a new STATEMENT_LIST is allocated
+ or old one reused.
+
+ PR target/83488
+ * config/i386/avx512vnniintrin.h: Don't check for __AVX512F__ nor
+ enable avx512f explicitly in #pragma GCC target.
+ * config/i386/i386-builtin.def (__builtin_ia32_vpdpbusd_v8si,
+ __builtin_ia32_vpdpbusd_v8si_mask, __builtin_ia32_vpdpbusd_v8si_maskz,
+ __builtin_ia32_vpdpbusd_v4si, __builtin_ia32_vpdpbusd_v4si_mask,
+ __builtin_ia32_vpdpbusd_v4si_maskz, __builtin_ia32_vpdpbusds_v8si,
+ __builtin_ia32_vpdpbusds_v8si_mask,
+ __builtin_ia32_vpdpbusds_v8si_maskz, __builtin_ia32_vpdpbusds_v4si,
+ __builtin_ia32_vpdpbusds_v4si_mask,
+ __builtin_ia32_vpdpbusds_v4si_maskz, __builtin_ia32_vpdpwssd_v8si,
+ __builtin_ia32_vpdpwssd_v8si_mask, __builtin_ia32_vpdpwssd_v8si_maskz,
+ __builtin_ia32_vpdpwssd_v4si, __builtin_ia32_vpdpwssd_v4si_mask,
+ __builtin_ia32_vpdpwssd_v4si_maskz, __builtin_ia32_vpdpwssds_v8si,
+ __builtin_ia32_vpdpwssds_v8si_mask,
+ __builtin_ia32_vpdpwssds_v8si_maskz, __builtin_ia32_vpdpwssds_v4si,
+ __builtin_ia32_vpdpwssds_v4si_mask,
+ __builtin_ia32_vpdpwssds_v4si_maskz): Use
+ OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL instead of
+ just OPTION_MASK_ISA_AVX512VNNI.
+
+2017-12-22 Martin Jambor <mjambor@suse.cz>
+
+ PR lto/82027
+ * lto-cgraph.c (output_cgraph_opt_summary_p): Also check former
+ clones.
+
+2017-12-22 Julia Koval <julia.koval@intel.com>
+ Sebastian Peryt <sebastian.peryt@intel.com>
+
+ * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512BITALG_SET,
+ OPTION_MASK_ISA_AVX512BITALG_UNSET): New.
+ (ix86_handle_option): Handle -mavx512bitalg, fix 4VNNIW formatting.
+ * config.gcc: Add avx512vpopcntdqvlintrin.h and avx512bitalgintrin.h.
+ * config/i386/avx512bitalgintrin.h (_mm512_popcnt_epi8, _mm512_popcnt_epi16,
+ _mm512_mask_popcnt_epi8, _mm512_maskz_popcnt_epi8, _mm512_mask_popcnt_epi16,
+ _mm512_maskz_popcnt_epi16, _mm512_bitshuffle_epi64_mask, _mm256_popcnt_epi8,
+ _mm512_mask_bitshuffle_epi64_mask, _mm256_mask_popcnt_epi8, _mm_popcnt_epi8,
+ _mm256_maskz_popcnt_epi8, _mm_bitshuffle_epi64_mask, _mm256_popcnt_epi16,
+ _mm_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask,
+ _mm256_mask_bitshuffle_epi64_mask, _mm_popcnt_epi16, _mm_maskz_popcnt_epi8,
+ _mm256_mask_popcnt_epi16, _mm256_maskz_popcnt_epi16, _mm_mask_popcnt_epi8,
+ _mm_mask_popcnt_epi16, _mm_maskz_popcnt_epi16): New intrinsics.
+ * config/i386/avx512vpopcntdqvlintrin.h (_mm_popcnt_epi32, _mm_popcnt_epi64,
+ _mm_mask_popcnt_epi32, _mm_maskz_popcnt_epi32, _mm256_popcnt_epi32,
+ _mm256_mask_popcnt_epi32, _mm256_maskz_popcnt_epi32, _mm_mask_popcnt_epi64,
+ _mm_maskz_popcnt_epi64, _mm256_popcnt_epi64, _mm256_mask_popcnt_epi64,
+ _mm256_maskz_popcnt_epi64): New intrinsics.
+ * config/i386/cpuid.h (bit_AVX512BITALG): New bit.
+ * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mavx512bitalg.
+ * config/i386/i386-builtin-types.def (V64QI_FTYPE_V64QI, V64QI_FTYPE_V64QI,
+ V4DI_FTYPE_V4DI, UHI_FTYPE_V2DI_V2DI_UHI, USI_FTYPE_V4DI_V4DI_USI,
+ V4SI_FTYPE_V4SI_V4SI_UHI, V8SI_FTYPE_V8SI_V8SI_UHI): New types.
+ * config/i386/i386-builtin.def (__builtin_ia32_vpopcountq_v4di,
+ __builtin_ia32_vpopcountq_v4di_mask, __builtin_ia32_vpopcountq_v2di,
+ __builtin_ia32_vpopcountq_v2di_mask, __builtin_ia32_vpopcountd_v4si,
+ __builtin_ia32_vpopcountd_v4si_mask, __builtin_ia32_vpopcountd_v8si,
+ __builtin_ia32_vpopcountd_v8si_mask, __builtin_ia32_vpopcountb_v64qi,
+ __builtin_ia32_vpopcountb_v64qi_mask, __builtin_ia32_vpopcountb_v32qi,
+ __builtin_ia32_vpopcountb_v32qi_mask, __builtin_ia32_vpopcountb_v16qi,
+ __builtin_ia32_vpopcountb_v16qi_mask, __builtin_ia32_vpopcountw_v32hi,
+ __builtin_ia32_vpopcountw_v32hi_mask, __builtin_ia32_vpopcountw_v16hi,
+ __builtin_ia32_vpopcountw_v16hi_mask, __builtin_ia32_vpopcountw_v8hi,
+ __builtin_ia32_vpopcountw_v8hi_mask, __builtin_ia32_vpshufbitqmb128_mask,
+ __builtin_ia32_vpshufbitqmb256_mask,
+ __builtin_ia32_vpshufbitqmb512_mask): New builtins.
+ * config/i386/i386-c.c (__AVX512BITALG__): New.
+ * config/i386/i386.c (isa2_opts): Add -mavx512bitalg.
+ (ix86_valid_target_attribute_inner_p): Ditto.
+ (ix86_expand_args_builtin): Handle new types.
+ * config/i386/i386.h (TARGET_AVX512BITALG, TARGET_AVX512BITALG_P): New.
+ * config/i386/i386.opt: Add -mavx512bitalg.
+ * config/i386/immintrin.h: Add avx512vpopcntdqvlintrin.h and
+ avx512bitalgintrin.h.
+ * config/i386/sse.md (VI48_AVX512VLBW): New iterator.
+ (vpopcount<mode><mask_name>): Add more types.
+ (avx512vl_vpshufbitqmb<mode><mask_scalar_merge_name>): New.
+ * doc/invoke.texi: Add -mavx512bitalg and -mavx512vpopcntdq.
+
+2017-12-22 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
+
+ * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VNNI_SET):
+ Or in OPTION_MASK_ISA_AVX512F_SET.
+ (OPTION_MASK_ISA_AVX512F_UNSET): Or in
+ OPTION_MASK_ISA_AVX512VNNI_UNSET.
+ (ix86_handle_option): Adjust for
+ OPTION_MASK_ISA_AVX512VNNI_*SET being in ix86_isa_flags.
+ * config/i386/i386-builtin.def: Move VNNI builtins from ARGS2
+ section to ARGS.
+ * config/i386/i386-c.c: Check for OPTION_MASK_ISA_AVX512VNNI in
+ isa_flag instead of isa_flag2.
+ * config/i386/i386.c (ix86_target_string): Move -mavx512vnni from
+ isa_opts2 to isa_opts.
+ * config/i386/i386.opt (mavx512vnni): Move from ix86_isa_flags2
+ to ix86_isa_flags.
+
+2017-12-22 Mike Stump <mikestump@comcast.net>
+ Eric Botcazou <ebotcazou@adacore.com>
+
+ * doc/extend.texi (Loop-Specific Pragmas): Document pragma GCC unroll.
+
+2017-12-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/83487
+ * config/i386/i386.c (ix86_function_arg_boundary): Return
+ PARM_BOUNDARY for TYPE_EMPTY_P types.
+
+ PR c/83448
+ * gimple-ssa-sprintf.c (maybe_warn): Don't call set_caret_index
+ if navail is >= dir.len.
+
+2017-12-21 Steve Ellcey <sellcey@cavium.com>
+
+ * config/aarch64/t-aarch64-linux (MULTILIB_OSDIRNAMES): Fix
+ triplet for ilp32.
+
+2017-12-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/80747
+ PR rtl-optimization/83512
+ * cfgrtl.c (force_nonfallthru_and_redirect): When splitting
+ succ edge from ENTRY, copy partition from e->dest to the newly
+ created bb.
+ * bb-reorder.c (reorder_basic_blocks_simple): If last_tail is
+ ENTRY, use BB_PARTITION of its successor block as current_partition.
+ Don't copy partition when splitting succ edge from ENTRY.
+
+ PR tree-optimization/83523
+ * tree-ssa-math-opts.c (is_widening_mult_p): Return false if
+ for INTEGER_TYPE TYPE_OVERFLOW_TRAPS.
+ (convert_mult_to_fma): Likewise.
+
+ PR tree-optimization/83521
+ * tree-ssa-phiopt.c (factor_out_conditional_conversion): Use
+ gimple_build_assign without code on result of
+ fold_build1 (VIEW_CONVERT_EXPR, ...), as it might not create
+ a VIEW_CONVERT_EXPR.
+
+2017-12-21 Andrew Pinski <apinski@cavium.com>
+ Steve Ellcey <sellcey@cavium.com>
+
+ * config/aarch64/t-aarch64-linux (MULTILIB_OSDIRNAMES): Handle
+ multi-arch for ilp32.
+
+2017-12-21 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/83467
+ * config/i386/i386.md (*ashl<mode>3_mask): Add operand
+ constraints to operand 2.
+ (*ashl<mode>3_mask_1): Ditto.
+ (*<shift_insn><mode>3_mask): Ditto.
+ (*<shift_insn><mode>3_mask_1): Ditto.
+ (*<rotate_insn><mode>3_mask): Ditto.
+ (*<rotate_insn><mode>3_mask_1): Ditto.
+
+2017-12-21 Alexandre Oliva <aoliva@redhat.com>
+
+ * reorg.c (make_return_insns): Reemit each insn with its own location.
+
+2017-12-21 James Greenhalgh <james.greenhalgh@arm.com>
+
+ * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code
+ generation for cases where splatting a value is not useful.
+ * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
+ across a vec_duplicate and a paradoxical subreg forming a vector
+ mode to a vec_concat.
+
+2017-12-21 James Greenhalgh <james.greenhalgh@arm.com>
+
+ * combine.c (simplify_set): Do not transform subregs to zero_extends
+ if the destination is not a scalar int mode.
+
+2017-12-21 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR c++/82872
+ * convert.c (convert_to_integer_1) <POINTER_TYPE>: Do not return the
+ shared zero if the input has overflowed.
+
+2017-12-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ * config/arm/driver-arm.c (arm_cpu_table): Specify dotprod
+ support for Cortex-A55 and Cortex-A75.
+
+2017-12-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ * common/config/arm/arm-common.c (compare_opt_names): Add function
+ comment. Use strcmp instead of manual loop.
+
+2017-12-21 Martin Liska <mliska@suse.cz>
+
+ PR gcov-profile/83509
+ * gcov-dump.c (dump_gcov_file): Do not read info about
+ support_unexecuted_blocks for gcda files.
+
+2017-12-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/82973
+ * emit-rtl.h (valid_for_const_vec_duplicate_p): Rename to ...
+ (valid_for_const_vector_p): ... this.
+ * emit-rtl.c (valid_for_const_vec_duplicate_p): Rename to ...
+ (valid_for_const_vector_p): ... this. Adjust function comment.
+ (gen_vec_duplicate): Adjust caller.
+ * optabs.c (expand_vector_broadcast): Likewise.
+ * simplify-rtx.c (simplify_const_unary_operation): Don't optimize into
+ CONST_VECTOR if some element isn't simplified valid_for_const_vector_p
+ constant.
+ (simplify_const_binary_operation): Likewise. Use CONST_FIXED_P macro
+ instead of GET_CODE == CONST_FIXED.
+ (simplify_subreg): Use CONST_FIXED_P macro instead of
+ GET_CODE == CONST_FIXED.
+
+ PR target/83488
+ * config/i386/i386.c (ix86_target_string): Move -mavx512vbmi2 and
+ -mshstk entries from isa_opts2 to isa_opts and -mhle, -mmovbe,
+ -mclzero and -mmwaitx entries from isa_opts to isa_opts2.
+ (ix86_option_override_internal): Adjust for
+ OPTION_MASK_ISA_{HLE,MOVBE,CLZERO,MWAITX} moving to ix86_isa_flags2
+ and OPTION_MASK_ISA_SHSTK moving to ix86_isa_flags.
+ (BDESC_VERIFYS): Remove SPECIAL_ARGS2 related checks.
+ (ix86_init_mmx_sse_builtins): Remove bdesc_special_args2 handling.
+ Use def_builtin2 instead of def_builtin for OPTION_MASK_ISA_MWAITX
+ and OPTION_MASK_ISA_CLZERO builtins. Use def_builtin instead of
+ def_builtin2 for CET builtins.
+ (ix86_expand_builtin): Remove bdesc_special_args2 handling. Fix
+ up formatting in IX86_BUILTIN_RDPID code.
+ * config/i386/i386-builtin.def: Move VBMI2 builtins from SPECIAL_ARGS2
+ section to SPECIAL_ARGS and from ARGS2 section to ARGS.
+ * config/i386/i386.opt (mavx512vbmi2, mshstk): Move from
+ ix86_isa_flags2 to ix86_isa_flags.
+ (mhle, mmovbe, mclzero, mmwaitx): Move from ix86_isa_flags to
+ ix86_isa_flags2.
+ * config/i386/i386-c.c (ix86_target_macros_internal): Check for
+ OPTION_MASK_ISA_{CLZERO,MWAITX} in isa_flag2 instead of isa_flag.
+ Check for OPTION_MASK_ISA_{SHSTK,AVX512VBMI2} in isa_flag instead
+ of isa_flag2.
+ * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VBMI2_SET):
+ Or in OPTION_MASK_ISA_AVX512F_SET.
+ (OPTION_MASK_ISA_AVX512F_UNSET): Or in
+ OPTION_MASK_ISA_AVX512VBMI2_UNSET.
+ (ix86_handle_option): Adjust for
+ OPTION_MASK_ISA_{SHSTK,AVX512VBMI2}_*SET being in ix86_isa_flags
+ and OPTION_MASK_ISA_{MOVBE,MWAITX,CLZERO}_*SET in ix86_isa_flags2.
+
+2017-12-21 Richard Sandiford <richard.sandiford@linaro.org>
+ Alan Hayward <alan.hayward@arm.com>
+ David Sherwood <david.sherwood@arm.com>
+
+ * tree-data-ref.h (prune_runtime_alias_test_list): Take the
+ factor as a poly_uint64 rather than an unsigned HOST_WIDE_INT.
+ * tree-data-ref.c (prune_runtime_alias_test_list): Likewise.
+ Track polynomial offsets.
+
+2017-12-21 Richard Sandiford <richard.sandiford@linaro.org>
+ Alan Hayward <alan.hayward@arm.com>
+ David Sherwood <david.sherwood@arm.com>
+
+ * tree-vect-data-refs.c (vect_compute_data_ref_alignment):
+ Treat drb->init as a poly_int. Fail if its misalignment wrt
+ vector_alignment isn't known.
+
+2017-12-21 Richard Sandiford <richard.sandiford@linaro.org>
+ Alan Hayward <alan.hayward@arm.com>
+ David Sherwood <david.sherwood@arm.com>
+
+ * tree-vectorizer.h (_loop_vec_info): Add a versioning_threshold
+ field.
+ (LOOP_VINFO_VERSIONING_THRESHOLD): New macro
+ (vect_loop_versioning): Take the loop versioning threshold as a
+ separate parameter.
+ * tree-vect-loop-manip.c (vect_loop_versioning): Likewise.
+ * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
+ versioning_threshold.
+ (vect_analyze_loop_2): Compute the loop versioning threshold
+ whenever loop versioning is needed, and store it in the new
+ field rather than combining it with the cost model threshold.
+ (vect_transform_loop): Update call to vect_loop_versioning.
+ Try to combine the loop versioning and cost thresholds here.
+
+2017-12-21 Richard Sandiford <richard.sandiford@linaro.org>
+ Alan Hayward <alan.hayward@arm.com>
+ David Sherwood <david.sherwood@arm.com>
+
+ * tree-ssa-loop-ivopts.h (strip_offset): Return the offset as
+ poly_uint64_pod rather than an unsigned HOST_WIDE_INT.
+ * tree-loop-distribution.c (classify_builtin_st): Update accordingly.
+ * tree-ssa-loop-ivopts.c (iv_use::addr_offset): Change from
+ an unsigned HOST_WIDE_INT to a poly_uint64_pod.
+ (group_compare_offset): Update accordingly.
+ (split_small_address_groups_p): Likewise.
+ (record_use): Take addr_offset as a poly_uint64 rather than
+ an unsigned HOST_WIDE_INT.
+ (strip_offset): Return the offset as a poly_uint64 rather than
+ an unsigned HOST_WIDE_INT.
+ (record_group_use, split_address_groups): Track polynomial offsets.
+ (add_iv_candidate_for_use): Likewise.
+ (addr_offset_valid_p): Take the offset as a poly_int64 rather
+ than a HOST_WIDE_INT.
+ (strip_offset_1): Return the offset as a poly_int64 rather than
+ a HOST_WIDE_INT.
+
+2017-12-21 Richard Sandiford <richard.sandiford@linaro.org>
+ Alan Hayward <alan.hayward@arm.com>
+ David Sherwood <david.sherwood@arm.com>
+
+ * tree.h (get_binfo_at_offset): Take the offset as a poly_int64
+ rather than a HOST_WIDE_INT.
+ * tree.c (get_binfo_at_offset): Likewise.
+
+2017-12-21 Richard Sandiford <richard.sandiford@linaro.org>
+ Alan Hayward <alan.hayward@arm.com>
+ David Sherwood <david.sherwood@arm.com>
+
+ * ipa-prop.h (build_ref_for_offset): Take the offset as a poly_int64
+ rather than a HOST_WIDE_INT.
+ * tree-sra.c (build_ref_for_offset): Likewise.
+
+2017-12-21 Richard Sandiford <richard.sandiford@linaro.org>
+ Alan Hayward <alan.hayward@arm.com>
+ David Sherwood <david.sherwood@arm.com>
+
+ * fold-const.h (mem_ref_offset): Return a poly_offset_int rather
+ than an offset_int.
+ * tree.c (mem_ref_offset): Likewise.
+ (build_simple_mem_ref_loc): Treat MEM_REF offsets as poly_ints.
+ * builtins.c (get_object_alignment_2): Likewise.
+ * expr.c (get_inner_reference, expand_expr_real_1): Likewise.
+ * gimple-fold.c (get_base_constructor): Likewise.
+ * gimple-ssa-strength-reduction.c (restructure_reference): Likewise.
+ * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref):
+ Likewise.
+ * ipa-polymorphic-call.c
+ (ipa_polymorphic_call_context::ipa_polymorphic_call_context): Likewise.
+ * ipa-prop.c (compute_complex_assign_jump_func): Likewise.
+ (get_ancestor_addr_info): Likewise.
+ * ipa-param-manipulation.c (ipa_get_adjustment_candidate): Likewise.
+ * match.pd: Likewise.
+ * tree-data-ref.c (dr_analyze_innermost): Likewise.
+ * tree-dfa.c (get_addr_base_and_unit_offset_1): Likewise.
+ * tree-eh.c (tree_could_trap_p): Likewise.
+ * tree-object-size.c (addr_object_size): Likewise.
+ * tree-ssa-address.c (copy_ref_info): Likewise.
+ * tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Likewise.
+ (indirect_refs_may_alias_p): Likewise.
+ * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
+ * tree-ssa.c (maybe_rewrite_mem_ref_base): Likewise.
+ (non_rewritable_mem_ref_base): Likewise.
+ * tree-vect-data-refs.c (vect_check_gather_scatter): Likewise.
+ * tree-vrp.c (vrp_prop::check_array_ref): Likewise.
+ * varasm.c (decode_addr_const): Likewise.
+
+2017-12-21 Richard Sandiford <richard.sandiford@linaro.org>
+ Alan Hayward <alan.hayward@arm.com>
+ David Sherwood <david.sherwood@arm.com>
+
+ * gimple-ssa-stor-merging.c (find_bswap_or_nop_load): Track polynomial
+ offsets for MEM_REFs.
+
+2017-12-21 Richard Sandiford <richard.sandiford@linaro.org>
+ Alan Hayward <alan.hayward@arm.com>
+ David Sherwood <david.sherwood@arm.com>
+
+ * tree-ssanames.h (adjust_ptr_info_misalignment): Take the increment
+ as a poly_uint64 rather than an unsigned int.
+ * tree-ssanames.c (adjust_ptr_info_misalignment): Likewise.
+
+2017-12-21 Richard Sandiford <richard.sandiford@linaro.org>
+ Alan Hayward <alan.hayward@arm.com>
+ David Sherwood <david.sherwood@arm.com>
+
+ * varasm.c (addr_const::offset): Change from HOST_WIDE_INT
+ to poly_int64.
+ (decode_addr_const): Update accordingly.
+
+2017-12-21 Richard Sandiford <richard.sandiford@linaro.org>
+ Alan Hayward <alan.hayward@arm.com>
+ David Sherwood <david.sherwood@arm.com>
+
+ * tree.h (bit_field_size, bit_field_offset): New functions.
+ * hsa-gen.c (gen_hsa_addr): Use them.
+ * tree-ssa-forwprop.c (simplify_bitfield_ref): Likewise.
+ (simplify_vector_constructor): Likewise.
+ * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
+ * tree-cfg.c (verify_expr): Require the sizes and offsets of a
+ BIT_FIELD_REF to be poly_uint64s rather than uhwis.
+ * fold-const.c (fold_ternary_loc): Protect tree_to_uhwi with
+ tree_fits_uhwi_p.
+
+2017-12-21 Richard Sandiford <richard.sandiford@linaro.org>
+ Alan Hayward <alan.hayward@arm.com>
+ David Sherwood <david.sherwood@arm.com>
+
+ * expr.h (emit_group_load, emit_group_load_into_temps)
+ (emit_group_store): Take the size as a poly_int64 rather than an int.
+ * expr.c (emit_group_load_1, emit_group_load): Likewise.
+ (emit_group_load_into_temp, emit_group_store): Likewise.
+
+2017-12-21 Richard Sandiford <richard.sandiford@linaro.org>
+ Alan Hayward <alan.hayward@arm.com>
+ David Sherwood <david.sherwood@arm.com>
+
+ * ira-int.h (ira_spilled_reg_stack_slot::width): Change from
+ an unsigned int to a poly_uint64.
+ * ira.h (ira_reuse_stack_slot, ira_mark_new_stack_slot): Take the
+ sizes as poly_uint64s rather than unsigned ints.
+ * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot):
+ Likewise.
+
+2017-12-21 Richard Sandiford <richard.sandiford@linaro.org>
+ Alan Hayward <alan.hayward@arm.com>
+ David Sherwood <david.sherwood@arm.com>
+
+ * lra-constraints.c (emit_inc): Change inc_amount from an int
+ to a poly_int64.
+
+2017-12-21 Richard Sandiford <richard.sandiford@linaro.org>
+ Alan Hayward <alan.hayward@arm.com>
+ David Sherwood <david.sherwood@arm.com>
+
+ * cfgexpand.c (stack_var::size): Change from a HOST_WIDE_INT
+ to a poly_uint64.
+ (add_stack_var, stack_var_cmp, partition_stack_vars)
+ (dump_stack_var_partition): Update accordingly.
+ (alloc_stack_frame_space): Take the size as a poly_int64 rather
+ than a HOST_WIDE_INT.
+ (expand_stack_vars, expand_one_stack_var_1): Handle polynomial sizes.
+ (defer_stack_allocation, estimated_stack_frame_size): Likewise.
+ (account_stack_vars, expand_one_var): Likewise. Return a poly_uint64
+ rather than a HOST_WIDE_INT.
+
+2017-12-21 Richard Sandiford <richard.sandiford@linaro.org>
+ Alan Hayward <alan.hayward@arm.com>
+ David Sherwood <david.sherwood@arm.com>
+
+ * target.def (return_pops_args): Treat both the input and output
+ sizes as poly_int64s rather than HOST_WIDE_INTS.
+ * targhooks.h (default_return_pops_args): Update accordingly.
+ * targhooks.c (default_return_pops_args): Likewise.
+ * doc/tm.texi: Regenerate.
+ * emit-rtl.h (incoming_args): Change pops_args, size and
+ outgoing_args_size from int to poly_int64_pod.
+ * function.h (expr_status): Change x_pending_stack_adjust and
+ x_stack_pointer_delta from int to poly_int64.
+ (args_size::constant): Change from HOST_WIDE_INT to poly_int64.
+ (ARGS_SIZE_RTX): Update accordingly.
+ * calls.c (highest_outgoing_arg_in_use): Change from int to
+ unsigned int.
+ (stack_usage_watermark, stored_args_watermark): New variables.
+ (stack_region_maybe_used_p, mark_stack_region_used): New functions.
+ (emit_call_1): Change the stack_size and rounded_stack_size
+ parameters from HOST_WIDE_INT to poly_int64. Track n_popped
+ as a poly_int64.
+ (save_fixed_argument_area): Check stack_usage_watermark.
+ (initialize_argument_information): Change old_pending_adj from
+ a HOST_WIDE_INT * to a poly_int64_pod *.
+ (compute_argument_block_size): Return the size as a poly_int64
+ rather than an int.
+ (finalize_must_preallocate): Track polynomial argument sizes.
+ (compute_argument_addresses): Likewise.
+ (internal_arg_pointer_based_exp): Track polynomial offsets.
+ (mem_overlaps_already_clobbered_arg_p): Rename to...
+ (mem_might_overlap_already_clobbered_arg_p): ...this and take the
+ size as a poly_uint64 rather than an unsigned HOST_WIDE_INT.
+ Check stored_args_used_watermark.
+ (load_register_parameters): Update accordingly.
+ (check_sibcall_argument_overlap_1): Likewise.
+ (combine_pending_stack_adjustment_and_call): Take the unadjusted
+ args size as a poly_int64 rather than an int. Return a bool
+ indicating whether the optimization was possible and return
+ the new adjustment by reference.
+ (check_sibcall_argument_overlap): Track polynomail argument sizes.
+ Update stored_args_watermark.
+ (can_implement_as_sibling_call_p): Handle polynomial argument sizes.
+ (expand_call): Likewise. Maintain stack_usage_watermark and
+ stored_args_watermark. Update calls to
+ combine_pending_stack_adjustment_and_call.
+ (emit_library_call_value_1): Handle polynomial argument sizes.
+ Call stack_region_maybe_used_p and mark_stack_region_used.
+ Maintain stack_usage_watermark.
+ (store_one_arg): Likewise. Update call to
+ mem_overlaps_already_clobbered_arg_p.
+ * config/arm/arm.c (arm_output_function_prologue): Add a cast to
+ HOST_WIDE_INT.
+ * config/avr/avr.c (avr_outgoing_args_size): Likewise.
+ * config/microblaze/microblaze.c (microblaze_function_prologue):
+ Likewise.
+ * config/cr16/cr16.c (cr16_return_pops_args): Update for new
+ TARGET_RETURN_POPS_ARGS interface.
+ (cr16_compute_frame, cr16_initial_elimination_offset): Add casts
+ to HOST_WIDE_INT.
+ * config/ft32/ft32.c (ft32_compute_frame): Likewise.
+ * config/i386/i386.c (ix86_return_pops_args): Update for new
+ TARGET_RETURN_POPS_ARGS interface.
+ (ix86_expand_split_stack_prologue): Add a cast to HOST_WIDE_INT.
+ * config/moxie/moxie.c (moxie_compute_frame): Likewise.
+ * config/m68k/m68k.c (m68k_return_pops_args): Update for new
+ TARGET_RETURN_POPS_ARGS interface.
+ * config/vax/vax.c (vax_return_pops_args): Likewise.
+ * config/pa/pa.h (STACK_POINTER_OFFSET): Add a cast to poly_int64.
+ (EXIT_IGNORE_STACK): Update reference to crtl->outgoing_args_size.
+ * config/arm/arm.h (CALLER_INTERWORKING_SLOT_SIZE): Likewise.
+ * config/powerpcspe/aix.h (STACK_DYNAMIC_OFFSET): Likewise.
+ * config/powerpcspe/darwin.h (STACK_DYNAMIC_OFFSET): Likewise.
+ * config/powerpcspe/powerpcspe.h (STACK_DYNAMIC_OFFSET): Likewise.
+ * config/rs6000/aix.h (STACK_DYNAMIC_OFFSET): Likewise.
+ * config/rs6000/darwin.h (STACK_DYNAMIC_OFFSET): Likewise.
+ * config/rs6000/rs6000.h (STACK_DYNAMIC_OFFSET): Likewise.
+ * dojump.h (saved_pending_stack_adjust): Change x_pending_stack_adjust
+ and x_stack_pointer_delta from int to poly_int64.
+ * dojump.c (do_pending_stack_adjust): Update accordingly.
+ * explow.c (allocate_dynamic_stack_space): Handle polynomial
+ stack_pointer_deltas.
+ * function.c (STACK_DYNAMIC_OFFSET): Add a cast to poly_int64.
+ (pad_to_arg_alignment): Track polynomial offsets.
+ (assign_parm_find_stack_rtl): Likewise.
+ (assign_parms, locate_and_pad_parm): Handle polynomial argument sizes.
+ * toplev.c (output_stack_usage): Update reference to
+ current_function_pushed_stack_size.
+
+2017-12-21 Richard Sandiford <richard.sandiford@linaro.org>
+ Alan Hayward <alan.hayward@arm.com>
+ David Sherwood <david.sherwood@arm.com>
+
+ * function.c (in_arg_offset, var_offset, dynamic_offset)
+ (out_arg_offset, cfa_offset): Change from int to poly_int64.
+ (instantiate_new_reg): Return the new offset as a poly_int64_pod
+ rather than a HOST_WIDE_INT.
+ (instantiate_virtual_regs_in_rtx): Track polynomial offsets.
+ (instantiate_virtual_regs_in_insn): Likewise.
+
+2017-12-21 Richard Sandiford <richard.sandiford@linaro.org>
+ Alan Hayward <alan.hayward@arm.com>
+ David Sherwood <david.sherwood@arm.com>
+
+ * rtl.h (get_args_size, add_args_size_note): New functions.
+ (find_args_size_adjust): Return a poly_int64 rather than a
+ HOST_WIDE_INT.
+ (fixup_args_size_notes): Likewise. Make the same change to the
+ end_args_size parameter.
+ * rtlanal.c (get_args_size, add_args_size_note): New functions.
+ * builtins.c (expand_builtin_trap): Use add_args_size_note.
+ * calls.c (emit_call_1): Likewise.
+ * explow.c (adjust_stack_1): Likewise.
+ * cfgcleanup.c (old_insns_match_p): Update use of
+ find_args_size_adjust.
+ * combine.c (distribute_notes): Track polynomial arg sizes.
+ * dwarf2cfi.c (dw_trace_info): Change beg_true_args_size,
+ end_true_args_size, beg_delay_args_size and end_delay_args_size
+ from HOST_WIDE_INT to poly_int64.
+ (add_cfi_args_size): Take the args_size as a poly_int64 rather
+ than a HOST_WIDE_INT.
+ (notice_args_size, notice_eh_throw, maybe_record_trace_start)
+ (maybe_record_trace_start_abnormal, scan_trace, connect_traces): Track
+ polynomial arg sizes.
+ * emit-rtl.c (try_split): Use get_args_size.
+ * recog.c (peep2_attempt): Likewise.
+ * reload1.c (reload_as_needed): Likewise.
+ * expr.c (find_args_size_adjust): Return the adjustment as a
+ poly_int64 rather than a HOST_WIDE_INT.
+ (fixup_args_size_notes): Change end_args_size from a HOST_WIDE_INT
+ to a poly_int64 and change the return type in the same way.
+ (emit_single_push_insn): Track polynomial arg sizes.
+
+2017-12-21 Richard Sandiford <richard.sandiford@linaro.org>
+ Alan Hayward <alan.hayward@arm.com>
+ David Sherwood <david.sherwood@arm.com>
+
+ * expr.h (push_block, emit_push_insn): Change the "extra" parameter
+ from HOST_WIDE_INT to poly_int64.
+ * expr.c (push_block, emit_push_insn): Likewise.
+
+2017-12-21 Richard Sandiford <richard.sandiford@linaro.org>
+ Alan Hayward <alan.hayward@arm.com>
+ David Sherwood <david.sherwood@arm.com>
+
+ * function.h (frame_space): Change start and length from HOST_WIDE_INT
+ to poly_int64.
+ (get_frame_size): Return the size as a poly_int64 rather than a
+ HOST_WIDE_INT.
+ (frame_offset_overflow): Take the offset as a poly_int64 rather
+ than a HOST_WIDE_INT.
+ (assign_stack_local_1, assign_stack_local, assign_stack_temp_for_type)
+ (assign_stack_temp): Likewise for the size.
+ * function.c (get_frame_size): Return a poly_int64 rather than
+ a HOST_WIDE_INT.
+ (frame_offset_overflow): Take the offset as a poly_int64 rather
+ than a HOST_WIDE_INT.
+ (try_fit_stack_local): Take the start, length and size as poly_int64s
+ rather than HOST_WIDE_INTs. Return the offset as a poly_int64_pod
+ rather than a HOST_WIDE_INT.
+ (add_frame_space): Take the start and end as poly_int64s rather than
+ HOST_WIDE_INTs.
+ (assign_stack_local_1, assign_stack_local, assign_stack_temp_for_type)
+ (assign_stack_temp): Likewise for the size.
+ (temp_slot): Change size, base_offset and full_size from HOST_WIDE_INT
+ to poly_int64.
+ (find_temp_slot_from_address): Handle polynomial offsets.
+ (combine_temp_slots): Likewise.
+ * emit-rtl.h (rtl_data::x_frame_offset): Change from HOST_WIDE_INT
+ to poly_int64.
+ * cfgexpand.c (alloc_stack_frame_space): Return the offset as a
+ poly_int64 rather than a HOST_WIDE_INT.
+ (expand_one_stack_var_at): Take the offset as a poly_int64 rather
+ than a HOST_WIDE_INT.
+ (expand_stack_vars, expand_one_stack_var_1, expand_used_vars): Handle
+ polynomial frame offsets.
+ * config/m32r/m32r-protos.h (m32r_compute_frame_size): Take the size
+ as a poly_int64 rather than an int.
+ * config/m32r/m32r.c (m32r_compute_frame_size): Likewise.
+ * config/v850/v850-protos.h (compute_frame_size): Likewise.
+ * config/v850/v850.c (compute_frame_size): Likewise.
+ * config/xtensa/xtensa-protos.h (compute_frame_size): Likewise.
+ * config/xtensa/xtensa.c (compute_frame_size): Likewise.
+ * config/pa/pa-protos.h (pa_compute_frame_size): Likewise.
+ * config/pa/pa.c (pa_compute_frame_size): Likewise.
+ * explow.h (get_dynamic_stack_base): Take the offset as a poly_int64
+ rather than a HOST_WIDE_INT.
+ * explow.c (get_dynamic_stack_base): Likewise.
+ * final.c (final_start_function): Use the constant lower bound
+ of the frame size for -Wframe-larger-than.
+ * ira.c (do_reload): Adjust for new get_frame_size return type.
+ * lra.c (lra): Likewise.
+ * reload1.c (reload): Likewise.
+ * config/avr/avr.c (avr_asm_function_end_prologue): Likewise.
+ * config/pa/pa.h (EXIT_IGNORE_STACK): Likewise.
+ * rtlanal.c (get_initial_register_offset): Return the offset as
+ a poly_int64 rather than a HOST_WIDE_INT.
+
+2017-12-21 Richard Sandiford <richard.sandiford@linaro.org>
+ Alan Hayward <alan.hayward@arm.com>
+ David Sherwood <david.sherwood@arm.com>
+
+ * reload1.c (elim_table): Change initial_offset, offset and
+ previous_offset from HOST_WIDE_INT to poly_int64_pod.
+ (offsets_at): Change the target array's element type from
+ HOST_WIDE_INT to poly_int64_pod.
+ (set_label_offsets, eliminate_regs_1, eliminate_regs_in_insn)
+ (elimination_costs_in_insn, update_eliminable_offsets)
+ (verify_initial_elim_offsets, set_offsets_for_label)
+ (init_eliminable_invariants): Update after above changes.
+
+2017-12-21 Richard Sandiford <richard.sandiford@linaro.org>
+ Alan Hayward <alan.hayward@arm.com>
+ David Sherwood <david.sherwood@arm.com>
+
+ * reload.h (reload::inc): Change from an int to a poly_int64_pod.
+ * reload.c (combine_reloads, debug_reload_to_stream): Likewise.
+ (decomposition): Change start and end from HOST_WIDE_INT
+ to poly_int64_pod.
+ (decompose, immune_p): Update accordingly.
+ (find_inc_amount): Return a poly_int64 rather than an int.
+ * reload1.c (inc_for_reload): Take the inc_amount as a poly_int64
+ rather than an int.
+
+2017-12-21 Richard Sandiford <richard.sandiford@linaro.org>
+ Alan Hayward <alan.hayward@arm.com>
+ David Sherwood <david.sherwood@arm.com>
+
+ * tree.h (get_inner_reference): Return the bitsize and bitpos
+ as poly_int64_pods rather than HOST_WIDE_INT.
+ * fold-const.h (ptr_difference_const): Return the pointer difference
+ as a poly_int64_pod rather than a HOST_WIDE_INT.
+ * expr.c (get_inner_reference): Return the bitsize and bitpos
+ as poly_int64_pods rather than HOST_WIDE_INT.
+ (expand_expr_addr_expr_1, expand_expr_real_1): Track polynomial
+ offsets and sizes.
+ * fold-const.c (make_bit_field_ref): Take the bitpos as a poly_int64
+ rather than a HOST_WIDE_INT. Update call to get_inner_reference.
+ (optimize_bit_field_compare): Update call to get_inner_reference.
+ (decode_field_reference): Likewise.
+ (fold_unary_loc): Track polynomial offsets and sizes.
+ (split_address_to_core_and_offset): Return the bitpos as a
+ poly_int64_pod rather than a HOST_WIDE_INT.
+ (ptr_difference_const): Likewise for the pointer difference.
+ * asan.c (instrument_derefs): Track polynomial offsets and sizes.
+ * config/mips/mips.c (r10k_safe_mem_expr_p): Likewise.
+ * dbxout.c (dbxout_expand_expr): Likewise.
+ * dwarf2out.c (loc_list_for_address_of_addr_expr_of_indirect_ref)
+ (loc_list_from_tree_1, fortran_common): Likewise.
+ * gimple-laddress.c (pass_laddress::execute): Likewise.
+ * gimple-ssa-store-merging.c (find_bswap_or_nop_load): Likewise.
+ * gimplify.c (gimplify_scan_omp_clauses): Likewise.
+ * simplify-rtx.c (delegitimize_mem_from_attrs): Likewise.
+ * tree-affine.c (tree_to_aff_combination): Likewise.
+ (get_inner_reference_aff): Likewise.
+ * tree-data-ref.c (split_constant_offset_1): Likewise.
+ (dr_analyze_innermost): Likewise.
+ * tree-scalar-evolution.c (interpret_rhs_expr): Likewise.
+ * tree-sra.c (ipa_sra_check_caller): Likewise.
+ * tree-vect-data-refs.c (vect_check_gather_scatter): Likewise.
+ * ubsan.c (maybe_instrument_pointer_overflow): Likewise.
+ (instrument_bool_enum_load, instrument_object_size): Likewise.
+ * gimple-ssa-strength-reduction.c (slsr_process_ref): Update call
+ to get_inner_reference.
+ * hsa-gen.c (gen_hsa_addr): Likewise.
+ * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Likewise.
+ * tsan.c (instrument_expr): Likewise.
+ * match.pd: Update call to ptr_difference_const.
+
+2017-12-21 Richard Sandiford <richard.sandiford@linaro.org>
+ Alan Hayward <alan.hayward@arm.com>
+ David Sherwood <david.sherwood@arm.com>
+
+ * fold-const.c (fold_comparison): Track sizes and offsets as
+ poly_int64s rather than HOST_WIDE_INTs when folding address
+ comparisons.
+
+2017-12-21 Richard Sandiford <richard.sandiford@linaro.org>
+ Alan Hayward <alan.hayward@arm.com>
+ David Sherwood <david.sherwood@arm.com>
+
+ * expr.h (get_bit_range): Return the bitstart and bitend as
+ poly_uint64s rather than unsigned HOST_WIDE_INTs. Return the bitpos
+ as a poly_int64 rather than a HOST_WIDE_INT.
+ * expr.c (get_bit_range): Likewise.
+ (expand_assignment): Update call accordingly.
+ * fold-const.c (optimize_bit_field_compare): Likewise.
+
2017-12-21 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
(expand_builtin_strcmp): Call maybe_warn_nonstring_arg.
(expand_builtin_strncmp): Same.
-2017-12-20 Alexandre Oliva <aoliva@redhat.com>
+2017-12-20 Alexandre Oliva <aoliva@redhat.com>
PR bootstrap/83396
* cfgexpand.c (label_rtx_for_bb): Revert SFN changes that
poly_int64. Use strip_offset_and_add to handle (plus X (const)).
2017-12-20 Richard Sandiford <richard.sandiford@linaro.org>
- Alan Hayward <alan.hayward@arm.com>
+ Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
* rtl.h (reg_attrs::offset): Change from HOST_WIDE_INT to poly_int64.
of a PARALLEL.
2017-12-20 Richard Sandiford <richard.sandiford@linaro.org>
- Alan Hayward <alan.hayward@arm.com>
+ Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
* target.def (truly_noop_truncation): Take poly_uint64s instead of
2017-12-20 Tom de Vries <tom@codesourcery.com>
PR middle-end/83423
- * config/i386/i386.c (ix86_static_chain): Move DECL_STATIC_CHAIN test ...
+ * config/i386/i386.c (ix86_static_chain): Move
+ DECL_STATIC_CHAIN test ...
* calls.c (rtx_for_static_chain): ... here. New function.
* calls.h (rtx_for_static_chain): Declare.
* builtins.c (expand_builtin_setjmp_receiver): Use rtx_for_static_chain
character load case, if get_stridx on MEM_REF's operand doesn't
look usable, retry with get_addr_stridx.
-2017-12-19 Alexandre Oliva <aoliva@redhat.com>
+2017-12-19 Alexandre Oliva <aoliva@redhat.com>
PR debug/83422
* var-tracking.c (vt_debug_insns_local): Do not drop markers.
* sched-rgn.c (sched_rgn_init): Likewise.
* diagnostic-show-locus.c (layout::show_ruler): Likewise.
* combine.c (find_split_point, simplify_if_then_else, force_to_mode,
- if_then_else_cond, simplify_shift_const_1, simplify_comparison): Likewise.
+ if_then_else_cond, simplify_shift_const_1, simplify_comparison):
+ Likewise.
* explow.c (eliminate_constant_term): Likewise.
* final.c (leaf_renumber_regs_insn): Likewise.
* cfgrtl.c (print_rtl_with_bb): Likewise.
PR c++/83489
* config/i386/i386.c (init_cumulative_args): Don't check TYPE_EMPTY_P
- on an error node.
+ on an error node.
2017-12-19 Claudiu Zissulescu <claziss@synopsys.com>
* doc/extend.texi (x86 Function Attributes): Reformat nocf_check
example to avoid overfull hbox.
* doc/invoke.texi (Option Summary): Add missing @gol.
- (C++ Dialect Options): Reformat -Wnoexcept-type example to avoid
+ (C++ Dialect Options): Reformat -Wnoexcept-type example to avoid
overfull hbox.
-
+
2017-12-17 Sandra Loosemore <sandra@codesourcery.com>
Kyrylo Tkachov <kyrylo.tkachov@arm.com>
optimizing for size. Don't pessimize blocks which will be
copied, but all the statements will be dead.
-2017-12-15 Alexandre Oliva <aoliva@redhat.com>
+2017-12-15 Alexandre Oliva <aoliva@redhat.com>
PR tree-optimization/81165
* tree-ssa-threadupdate.c (uses_in_bb): New.
(estimate_threading_killed_stmts): New.
* tree-ssa-threadupdate.h (estimate_threading_killed_stmts): Prototype.
- * tree-ssa-threadedge.c
+ * tree-ssa-threadedge.c
(record_temporary_equivalences_from_stmts_at_dest): Expand limit
when its hit.
2017-12-15 Julia Koval <julia.koval@intel.com>
* config/i386/i386-builtin.def (__builtin_ia32_vaesenclast_v16qi,
- __builtin_ia32_vaesenclast_v32qi, __builtin_ia32_vaesenclast_v64qi): New.
+ __builtin_ia32_vaesenclast_v32qi, __builtin_ia32_vaesenclast_v64qi):
+ New.
* config/i386/sse.md (vaesenclast_<mode>): New pattern.
* config/i386/vaesintrin.h (_mm256_aesenclast_epi128,
_mm512_aesenclast_epi128, _mm_aesenclast_epi128): New intrinsics.
2017-12-15 Julia Koval <julia.koval@intel.com>
* config/i386/i386-builtin.def (__builtin_ia32_vaesdeclast_v16qi,
- __builtin_ia32_vaesdeclast_v32qi, __builtin_ia32_vaesdeclast_v64qi): New.
+ __builtin_ia32_vaesdeclast_v32qi, __builtin_ia32_vaesdeclast_v64qi):
+ New.
* config/i386/sse.md (vaesdeclast_<mode>): New pattern.
* config/i386/vaesintrin.h (_mm256_aesdeclast_epi128,
_mm512_aesdeclast_epi128, _mm_aesdeclast_epi128): New intrinsics.
PR bootstrap/83396
* reload1.c (emit_input_reload_insns): Skip debug markers.
-2017-12-14 Alexandre Oliva <aoliva@redhat.com>
+2017-12-14 Alexandre Oliva <aoliva@redhat.com>
* config/i386/i386.c (rest_of_insert_endbranch): Use call loc
for its nop_endbr.
PR tree-optimization/83418
* vr-values.c (vr_values::extract_range_for_var_from_comparison_expr):
- Instead of asserting we don't get unfolded comparisons deal with
- them.
+ Instead of asserting we don't get unfolded comparisons deal with them.
2017-12-14 Jakub Jelinek <jakub@redhat.com>
(ASSERT_MAYBE_NE_AT): New macros.
2017-12-13 Eric Botcazou <ebotcazou@adacore.com>
- Dominik Vogt <vogt@linux.vnet.ibm.com>
+ Dominik Vogt <vogt@linux.vnet.ibm.com>
PR middle-end/78468
* emit-rtl.c (init_emit): Remove ??? comment.
* config/rs6000/ppc-auxv.h (PPC_FEATURE2_HTM_NO_SUSPEND): New define.
* config/rs6000/rs6000.c (cpu_supports_info): Use it.
-2017-12-13 Alexandre Oliva <aoliva@redhat.com>
+2017-12-13 Alexandre Oliva <aoliva@redhat.com>
PR bootstrap/83396
* reload1.c (eliminate_regs_in_insn): Skip debug markers.
* combine.c (move_deaths): If reg_stat points to a too new insn in
last_death, do not use it: find the proper insn instead.
+2017-12-12 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
+
+ PR target/82190
+ * config/rs6000/rs6000-string.c (expand_block_compare,
+ expand_strn_compare): Fix set_mem_size() calls.
+
2017-12-12 Jeff Law <law@redhat.com>
PR tree-optimization/83298