+2016-12-19 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.md (*popcounthi2_1): New insn_and_split pattern.
+
+2016-12-19 Sandra Loosemore <sandra@codesourcery.com>
+
+ * doc/cpp.texi: Clean up anachronistic C99 references and remove
+ discussion of very old GCC versions.
+ (Differences from previous versions): Delete entire section.
+
+2016-12-19 Will Schmidt <will_schmidt@vnet.ibm.com>
+
+ * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling for
+ early expansion of vector multiply and subtract builtins.
+
+2016-12-19 David Malcolm <dmalcolm@redhat.com>
+
+ * print-rtl.c (rtx_writer::print_rtx_operand_code_r): For
+ non-virtual pseudos in compact mode, wrap the regno in '<' and '>'
+ rather than using a '%' prefix.
+ * rtl-tests.c (selftest::test_dumping_regs): Update for above change.
+
+2016-12-19 Dominik Vogt <vogt@linux.vnet.ibm.com>
+
+ PR target/78748
+ * config/s390/s390.md ("*andc_split_<mode>"): Allow memory destination
+ only if it coincides with operand 2.
+
+2016-12-19 Dominik Vogt <vogt@linux.vnet.ibm.com>
+
+ * combine.c (change_zero_ext): Skip generation of redundant AND.
+
+2016-12-19 Krister Walfridsson <krister.walfridsson@gmail.com>
+
+ * config/netbsd.h (LINK_EH_SPEC): Define.
+
+2016-12-18 Eric Botcazou <ebotcazou@adacore.com>
+
+ * lra-constraints.c (process_address): Add forward declaration.
+ (simplify_operand_subreg): In the MEM case, if the adjusted memory
+ reference is not sufficient aligned and the address was invalid,
+ reload the address before reloading the original memory reference.
+ Fix long lines and add a final return for the sake of clarity.
+
+2016-12-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR sanitizer/78832
+ * sanopt.c (sanitize_asan_mark_unpoison): Remove next variable, use
+ continue if gsi_next should be skipped.
+ (sanitize_asan_mark_poison): Remove prev variable, use continue if
+ gsi_prev should be skipped. When removing ASAN_MARK, do gsi_prev
+ first and gsi_remove on a previously made copy of the iterator.
+
+2016-12-17 Andrew Senkevich <andrew.senkevich@intel.com>
+
+ * config/i386/avx512bwintrin.h: Add new k-mask intrinsics.
+ * config/i386/avx512dqintrin.h: Ditto.
+ * config/i386/avx512fintrin.h: Ditto.
+ * config/i386/i386-builtin.def (__builtin_ia32_kaddqi,
+ __builtin_ia32_kaddhi, __builtin_ia32_kaddsi,
+ __builtin_ia32_kadddi): New.
+ * config/i386/sse.md (kadd<mode>): New.
+
+2016-12-17 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.md (*tzcnt<mode>_1): Merge *tzcnt<mode>_1_falsedep_1
+ and *tzcnt<mode>_1 to define_insn_and_split pattern. Adjust split
+ condition to split after epilogue_completed.
+ (ctz<mode>2): Remove expander.
+ (ctz<mode>2): Merge *ctz<mode>2_falsedep_1 and *ctz<mode>2 to
+ define_insn_and_split pattern. Adjust split condition to split
+ after epilogue_completed.
+ (clz<mode>2_lznct): Remove expander.
+ (clz<mode>2_lzcnt): Merge *clz<mode>2_lzcnt_falsedep_1 and
+ *clz<mode>2 to define_insn_and_split pattern. Adjust split
+ condition to split after epilogue_completed.
+ (<lt_zcnt>_<mode>): Remove expander.
+ (<lt_zcnt>_<mode>): Merge *<lt_zcnt>_<mode>_falsedep_1 and
+ *<lt_zcnt>_<mode> to define_insn_and_split pattern. Adjust split
+ condition to split after epilogue_completed.
+ (<lt_zcnt>_hi): New insn pattern.
+ (popcount<mode>2): Remove expander.
+ (popcount<mode>2): Merge *popcount<mode>2_falsedep_1 and
+ *popcount<mode>2 to define_insn_and_split pattern. Adjust split
+ condition to split after epilogue_completed.
+ (popcounthi2): New insn pattern.
+
+2016-12-16 Kelvin Nilsen <kelvin@gcc.gnu.org>
+
+ * config/rs6000/altivec.md (UNSPEC_CMPRB): New unspec value.
+ (UNSPEC_CMPRB2): New unspec value.
+ (UNSPEC_CMPEQB): New unspec value.
+ (cmprb): New expansion.
+ (*cmprb_internal): New insn.
+ (*setb_internal): New insn.
+ (cmprb2): New expansion.
+ (*cmprb2_internal): New insn.
+ (cmpeqb): New expansion.
+ (*cmpeqb_internal): New insn.
+ * config/rs6000/rs6000-builtin.def (BU_P9_2): New macro.
+ (BU_P9_64BIT_2): Likewise.
+ (BU_P9_OVERLOAD_2): Likewise.
+ (CMPRB): Add byte-in-range built-in function.
+ (CMBRB2): Add byte-in-either-range built-in function.
+ (CMPEQB): Add byte-in-set built-in function.
+ (CMPRB): Add overload support for byte-in-range function.
+ (CMPRB2): Add overload support for byte-in-either-range function.
+ (CMPEQB): Add overload support for byte-in-set built-in function.
+ * config/rs6000/rs6000-c.c (P9_BUILTIN_CMPRB): Macro expansion to
+ define argument types for new builtin.
+ (P9_BUILTIN_CMPRB2): Likewise.
+ (P9_BUILTIN_CMPEQB): Likewise.
+ * doc/extend.texi (PowerPC AltiVec Built-in Functions): Rearrange
+ the order of presentation for certain built-in functions
+ (scalar_extract_exp, scalar_extract_sig, scalar_insert_exp)
+ (scalar_cmp_exp_gt, scalar_cmp_exp_lt, scalar_cmp_exp_eq)
+ (scalar_cmp_exp_unordered, scalar_test_data_class)
+ (scalar_test_neg) to improve locality and flow. Document
+ the new __builtin_scalar_byte_in_set,
+ __builtin_scalar_byte_in_range, and
+ __builtin_scalar_byte_in_either_range functions.
+
+2016-12-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ * config/aarch64/aarch64.md: New define_split above bswap<mode>2.
+
+2016-12-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ * config/aarch64/aarch64.md: New define_split above insv<mode>.
+
+2016-12-16 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/78408
+ * tree-ssa-ccp.c: Include tree-dfa.h.
+ (optimize_memcpy): New function.
+ (pass_fold_builtins::execute): Use it. Remove useless conditional
+ break after BUILT_IN_VA_*.
+
+2016-12-16 Marek Polacek <polacek@redhat.com>
+
+ PR tree-optimization/78819
+ * tree-vrp.c (find_switch_asserts): Return if the insertion limit is 0.
+ Don't register an assertion if the default case shares a label with
+ another case.
+
+2016-12-16 Wilco Dijkstra <wdijkstr@arm.com>
+
+ * config/arm/arm.md (subsi3_carryin): Add Thumb-2 RSC #0.
+ (arm_negdi2) Rename to negdi2_insn, allow on Thumb-2.
+ * config/arm/thumb2.md (thumb2_negdi2): Remove pattern.
+
+2016-12-16 Wilco Dijkstra <wdijkstr@arm.com>
+
+ * config/arm/arm.c (thumb_core_reg_alloc_order): Swap R12 and R14.
+
+2016-12-16 Claudiu Zissulescu <claziss@synopsys.com>
+
+ * config/arc/arc.md (call_prof): Remove.
+ (call_value_prof): Likewise.
+ (sibcall_prof): Likewise.
+ (sibcall_value_prof): Likewise.
+
+2016-12-16 Claudiu Zissulescu <claziss@synopsys.com>
+
+ * config/arc/arc.h (LINK_SPEC): Tidy up.
+ (ENDFILE_SPEC): Likewise.
+ (LIB_SPEC): Likewise.
+ (STARTFILE_SPEC): Include gcrt0 when profiling.
+ (FUNCTION_PROFILER): Use __mcount.
+ * config/arc/arc.opt (mucb-mcount): Remove.
+ * doc/invoke.texi (ARC): Remove mucb-mcount doc.
+ * arc/arc-protos.h (arc_profile_call): Remove.
+ * config/arc/arc.c (write_profile_sections): Likewise.
+ (arc_profile_call): Likewise.
+ (unspec_prof_hash): Likewise.
+ (unspec_prof_htab_eq): Likewise.
+ (arc_legitimate_constant_p): Remove UNSPEC_PROF.
+ (arc_reorg): Remove call to write_profile_sections.
+ * config/arc/arc.md (call): Remove call to arc_profile_call.
+ (call_value): Likewise.
+ (sibcall): Likewise.
+ (sibcall_value): Likewise.
+ (define_constants): Remove UNSPEC_PROF.
+
+2016-12-16 Claudiu Zissulescu <claziss@synopsys.com>
+
+ * config/arc/arc.md (mulsidi_600): Change to insn_and_split,
+ generate new mul64 insn for core multiplication work.
+ (umulsidi_600): Likewise, but use mulu64 insn.
+ (mul64): New pattern, content taken from old mulsidi_600 insn pattern.
+ (mulu64): Likewise, but using umulsidi_600.
+ (mulsidi3): Remove move to destination, this is now handled by
+ mulsidi_600 insn_and_split.
+ (umulsidi3): Likewise, but using umulsidi_600.
+
+2016-12-16 Richard Biener <rguenther@suse.de>
+
+ PR c++/71694
+ * langhooks-def.h (lhd_unit_size_without_reusable_padding): Declare.
+ (LANG_HOOKS_UNIT_SIZE_WITHOUT_REUSABLE_PADDING): Define.
+ (LANG_HOOKS_FOR_TYPES_INITIALIZER): Adjust.
+ * langhooks.h (struct lang_hooks_for_types): Add
+ unit_size_without_reusable_padding.
+ * langhooks.c (lhd_unit_size_without_reusable_padding): New.
+ * stor-layout.c (finish_bitfield_representative): Use
+ unit_size_without_reusable_padding langhook to decide on the
+ last representatives size.
+
+2016-12-16 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/71632
+ * expr.c (expand_cond_expr_using_cmove): Bail out early if
+ we end up recursing via TER.
+
+2016-12-15 Martin Sebor <msebor@redhat.com>
+
+ PR bootstrap/78817
+ * vec.h (vec<T, va_heap, vl_ptr>::safe_grow_cleared): Assert
+ a pointer is non-null.
+
+2016-12-15 Andrew Senkevich <andrew.senkevich@intel.com>
+
+ * config/i386/avx512bwintrin.h: Add new k-mask intrinsics.
+ * config/i386/avx512dqintrin.h: Ditto.
+ * config/i386/avx512fintrin.h: Ditto.
+ * config/i386/i386-builtin.def (__builtin_ia32_kmovb,
+ __builtin_ia32_kmovd, __builtin_ia32_kmovq): New.
+ (__builtin_ia32_kmov16): Rename to __builtin_ia32_kmovw.
+ * config/i386/sse.md (kmov<mskmodesuffix>): New.
+
+2016-12-15 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.md (ffs<mode>2): Generate CCCmode flags register
+ for TARGET_BMI.
+ (ffssi2_no_cmove): Ditto.
+ (*tzcnt<mode>_1_falsedep_1): New insn_and_split pattern.
+ (*tzcnt<mode>_1_falsedep): New insn pattern.
+
+ (LT_ZCNT): New mode iterator.
+ (lt_zcnt): New mode attribute.
+ (lt_zcnt_type): New mode attribute.
+ (<lt_zcnt>_<mode>): Macroize expander from bmi_tzcnt_<mode> and
+ lzcnt_<mode> using LT_ZCNT mode iterator.
+ (*<lt_zcnt>_<mode>_falsedep_1): Macroize insn from
+ *bmi_tzcnt_<mode>_falsedep_1 and *lzcnt_<mode>_falsedep_1
+ using LT_ZCNT mode iterator.
+ (*<lt_zcnt>_<mode>_falsedep): Macroize insn from
+ *bmi_tzcnt_<mode>_falsedep and *lzcnt_<mode>_falsedep
+ using LT_ZCNT mode iterator.
+ (*<lt_zcnt>_<mode>): Macroize insn from *bmi_tzcnt_<mode>
+ and *lzcnt_<mode> using LT_ZCNT mode iterator.
+ * config/i386/i386-builtin.def (__builtin_ia32_tzcnt_u16)
+ (__builtin_ia32_tzcnt_u32, __builtin_ia32_tzcnt_u64, __builtin_ctzs):
+ Update for rename.
+
+2016-12-15 Jakub Jelinek <jakub@redhat.com>
+
+ * ipa-cp.c (class ipcp_bits_lattice): Formatting fixes.
+ (print_ipcp_constant_value): Likewise.
+ (ipcp_cloning_candidate_p): Likewise.
+ (ipcp_bits_lattice::get_value_and_mask): Likewise.
+ (ipcp_bits_lattice::meet_with_1): Likewise.
+ (ipcp_bits_lattice::meet_with): Likewise.
+ (initialize_node_lattices): Likewise.
+ (ipcp_lattice::add_value): Likewise.
+ (propagate_vals_accross_pass_through): Renamed to ...
+ (propagate_vals_across_pass_through): ... this function.
+ (propagate_vals_accross_ancestor): Renamed to ...
+ (propagate_vals_across_ancestor): ... this.
+ (propagate_scalar_accross_jump_function): Renamed to ...
+ (propagate_scalar_across_jump_function): ... this.
+ Adjust calls to above functions.
+ (propagate_context_accross_jump_function): Renamed to ...
+ (propagate_context_across_jump_function): ... this.
+ (propagate_bits_accross_jump_function): Renamed to ...
+ (propagate_bits_accross_jump_function): ... this. Formatting fixes.
+ (propagate_vr_accross_jump_function): Renamed to ...
+ (propagate_vr_across_jump_function): ... this.
+ (merge_agg_lats_step): Formatting fixes.
+ (propagate_constants_accross_call): Renamed to ...
+ (propagate_constants_across_call): ... this. Adjust calls to above
+ functions.
+ (ipa_get_indirect_edge_target_1): Formatting fixes.
+ (gather_context_independent_values): Likewise.
+ (estimate_local_effects): Likewise.
+ (add_all_node_vals_to_toposort): Likewise.
+ (propagate_constants_topo): Adjust calls to above functions.
+ (get_replacement_map): Formatting fixes.
+ (dump_profile_updates): Likewise.
+ (update_profiling_info): Likewise.
+ (update_specialized_profile): Likewise.
+ (create_specialized_node): Likewise.
+ (find_more_contexts_for_caller_subset): Likewise.
+ (decide_whether_version_node): Likewise.
+ (identify_dead_nodes): Likewise.
+ (ipcp_decision_stage): Likewise.
+ (ipcp_store_bits_results): Likewise.
+ (ipcp_store_vr_results): Likewise.
+ (ipcp_driver): Likewise.
+
+2016-12-15 David Malcolm <dmalcolm@redhat.com>
+
+ PR preprocessor/78680
+ PR preprocessor/78811
+ * input.c (struct selftest::lexer_test): Add field
+ m_implicitly_expect_EOF.
+ (selftest::lexer_error_sink): New class.
+ (selftest::lexer_error_sink::s_singleton): New global.
+ (selftest::lexer_test::lexer_test): Initialize new field
+ "m_implicitly_expect_EOF".
+ (selftest::lexer_test::~lexer_test): Conditionalize the
+ check for the EOF token on the new field.
+ (selftest::test_lexer_string_locations_raw_string_unterminated):
+ New function.
+ (selftest::input_c_tests): Call the new test.
+
+2016-12-15 Wilco Dijkstra <wdijkstr@arm.com>
+
+ * config/arm/arm.h (TARGET_BACKTRACE): Use crtl->is_leaf.
+ * config/arm/arm.c (arm_option_check_internal): Improve comment.
+ (thumb_force_lr_save): Use crtl->is_leaf.
+ (arm_get_frame_offsets): Remove comment. Use crtl->is_leaf.
+ (thumb_far_jump_used_p): Remove comment.
+ (arm_frame_pointer_required): Use crtl->is_leaf.
+
+2016-12-15 Jakub Jelinek <jakub@redhat.com>
+
+ * doc/extend.texi: Clean up @xref{...} uses.
+ * doc/invoke.texi: Likewise.
+
2016-12-15 Richard Earnshaw <rearnsha@arm.com>
* arm-fpus.def: Add CNAME field to all FPU definitions.
* arm-opts.h (struct arm_arch_core_flag): Add new field ISA.
Initialize it.
- (arm_arch_core_flag): Delete flags field.
- (arm_arch_core_flags): Don't initialize flags field.
- * common/config/arm/arm-common.c (check_isa_bits_for): New function.
+ (arm_arch_core_flag): Delete flags field.
+ (arm_arch_core_flags): Don't initialize flags field.
+ * common/config/arm/arm-common.c (check_isa_bits_for): New function.
(arm_target_thumb_only): Use new isa bits arrays.
2016-12-15 Richard Earnshaw <rearnsha@arm.com>