Use FOR_ALL_BB_FN in a few more places
[gcc.git] / gcc / ChangeLog
index 74749aee8a5d3dd021c04c5d91b809800aa071e7..6002ddee5bf48d9a686d436c87331390151355dd 100644 (file)
+2016-10-18  Thomas Schwinge  <thomas@codesourcery.com>
+
+       * cfg.c (clear_bb_flags): Use FOR_ALL_BB_FN.
+       * config/nvptx/nvptx.c (nvptx_find_sese): Likewise.
+
+2016-10-18  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+
+       * config/rs6000/altivec.h (vec_xl_len): New macro.
+       (vec_xst_len): New macro.
+       (vec_cmpnez): New macro.
+       (vec_cntlz_lsbb): New macro.
+       (vec_cnttz_lsbb): New macro.
+       (vec_xlx): New macro.
+       (vec_xrx): New macro.
+       (vec_all_nez): New C++ predicate template.
+       (vec_any_eqz): New C++ predicate template.
+       (vec_all_ne): Revised C++ predicate template under _ARCH_PWR9
+       conditional compilation.
+       (vec_any_eq): Revised C++ predicate template under _ARCH_PWR9
+       conditional compilation.
+       (vec_all_nez): New macro.
+       (vec_any_eqz): New macro.
+       (vec_all_ne): Revised macro under _ARCH_PWR9 conditional
+       compilation.
+       (vec_any_eq): Revised macro under _ARCH_PWR9 conditional
+       compilation.
+       * config/rs6000/vector.md (VI): Moved this mode iterator
+       definition from altivec.md to vector.md.
+       (UNSPEC_NEZ_P): New value.
+       (vector_ne_<mode>_p): New expansion for implementation of
+       vec_all_ne and vec_any_eq built-in functions.
+       (vector_nez_<mode>_p): New expansion for implementation of
+       vec_all_nez and vec_any_eqz built-in functions.
+       (vector_ne_v2di_p): New expansion for implementation of vec_all_ne
+       and vec_any_eq built-in function.
+       (cr6_test_for_zero): New commentary to explain this expansion.
+       (cr6_test_for_zero_reverse): New commentary to explain this expansion.
+       (cr6_test_for_lt): New commentary to explain this expansion.
+       (cr6_test_for_lt_reverse): New commentary to explain this
+       expansion.
+       * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
+       overloaded function prototypes for vec_all_ne, vec_all_nez,
+       vec_any_eq, vec_any_eqz, vec_cmpnez, vec_cntlz_lsbb,
+       vec_cnttz_lsbb, vec_xl_len, vec_xst_len, vec_xlx, and vec_xrx
+       built-in functions.
+       (altivec_resolve_overloaded_builtin): Modify the handling of
+       ALTIVEC_BUILTIN_VEC_CMPNE to use the Power9 instructions when
+       the compiler is configured to support TARGET_P9_VECTOR.
+       * config/rs6000/rs6000-builtin.def (BU_ALTIVEC_P): Add commentary
+       to explain the special processing that is given to predicate
+       built-ins introduced using this macro.
+       (BU_ALTIVEC_OVERLOAD_P): Add commentary to alert maintainers to
+       the special processing given to predicate built-ins introduced
+       using this macro.
+       (BU_VSX_P): Likewise.
+       (BU_P8V_AV_P): Likewise.
+       (BU_P9V_AV_P): Likewise.
+       (BU_P9V_AV_X): New macro.
+       (BU_P9V_64BIT_AV_X): New macro.
+       (BU_P9V_VSX_3): New macro.
+       (BU_P9V_OVERLOAD_P): New macro.
+       (LXVL): New BU_P9V_64BIT_VSX_2.
+       (VEXTUBLX): New BU_P9V_AV_2.
+       (VEXTUBRX): Likewise.
+       (VEXTUHLX): Likewise.
+       (VEXTUHRX): Likewise.
+       (VEXTUWLX): Likewise.
+       (VEXTUWRX): Likewise.
+       (STXVL): New BU_P9V_64BIT_AV_X.
+       (VCLZLSBB): New BU_P9V_AV_1.
+       (VCTZLSBB): Likewise.
+       (CMPNEB): New BU_P9V_AV_2.
+       (CMPNEH): Likewise.
+       (CMPNEW): Likewise.
+       (CMPNEF): Likewise.
+       (CMPNED): Likewise.
+       (VCMPNEB_P): New BU_P9V_AV_P.
+       (VCMPNEH_P): Likewise.
+       (VCMPNEW_P): Likewise.
+       (VCMPNED_P): Likewise.
+       (VCMPNEFP_P): Likewise.
+       (VCMPNEDP_P): Likewise.
+       (CMPNEZB): New BU_P9V_AV_2.
+       (CMPNEZH): Likewise.
+       (CMPNEZW): Likewise.
+       (VCMPNEZB_P): New BU_P9V_AV_P.
+       (VCMPNEZH_P): Likewise.
+       (VCMPNEZW_P): Likewise.
+       (LXVL): New BU_P9V_OVERLOAD_2.
+       (STXVL): New BU_P9V_OVERLOAD_3.
+       (VEXTULX): New BU_P9V_OVERLOAD_2.
+       (VEXTURX): Likewise.
+       (CMPNEZ): Likewise.
+       (VCMPNEZ_P): New BU_P9V_OVERLOAD_P.
+       (VCMPNE_P): Likewise.
+       (VCLZLSBB): New BU_P9V_OVERLOAD_1.
+       (VCTZLSBB): Likewise.
+       * config/rs6000/rs6000.c (altivec_expand_predicate_builtin): Add
+       comment to explain mode used for scratch register.
+       (altivec_expand_stxvl_builtin): New function.
+       (altivec_expand_builtin): Add case for new constant P9V_BUILTIN_STXVL.
+       (altivec_init_builtins): Add initialized variable
+       void_ftype_v16qi_pvoid_long and use this type to define the
+       built-in function __builtin_altivec_stxvl.
+       * config/rs6000/vsx.md (UNSPEC_LXVL): New value.
+       (UNSPEC_STXVL): New value.
+       (UNSPEC_VCLZLSBB): New value.
+       (UNSPEC_VCTZLSBB): New value.
+       (UNSPEC_VEXTUBLX): New value.
+       (UNSPEC_VEXTUHLX): New value.
+       (UNSPEC_VEXTUWLX): New value.
+       (UNSPEC_VEXTUBRX): New value.
+       (UNSPEC_VEXTUHRX): New value.
+       (UNSPEC_VEXTUWRX): New value.
+       (UNSPEC_VCMPNEB): New value.
+       (UNSPEC_VCMPNEZB): New value.
+       (UNSPEC_VCMPNEH): New value.
+       (UNSPEC_VCMPNEZH): New value.
+       (UNSPEC_VCMPNEW): New value.
+       (UNSPEC_VCMPNEZW): New value.
+       (*vsx_ne_<mode>_p): New insn for vector test all not equal with
+       vector of integer modes.
+       (*vsx_ne_<mode>_p): New insn for vector test all not equal with
+       vector of float or double modes.
+       (*vector_nez_<mode>_p): New insn for vector test all not equal or
+       zero.
+       (lxvl): New expand for load VSX vector with length.
+       (*lxvl): New insn for load VSX vector with length.
+       (stxvl): New expand for store VSX vector with length.
+       (*stxvl): New insn for store VSX vector with length.
+       (vcmpneb): New insn for vector of byte compare not equal.
+       (vcmpnezb): New insn for vector of byte compare not equal or zero.
+       (vcmpneh): New insn for vector of half word compare not equal.
+       (vcmpnezh): New insn for vector of half word compare not equal or
+       zero.
+       (vcmpnew): New insn for vector of word compare not equal.
+       (vcmpne<VSs>): New insn for vector of float or double compare not
+       equal.
+       (vcmpnezw): New insn for vector of word compare not equal or zero.
+       (vclzlsbb): New insn for vector count leading zero
+       least-significant bits byte.
+       (vctzlsbb): New insn for vector count trailing zero least
+       signficant bits byte.
+       (vextublx): New insn for vector extract unsigned byte left
+       indexed.
+       (vextubrx): New insn for vector extract unsigned byte right
+       indexed.
+       (vextuhlx): New insn for vector extract unsigned half word left
+       indexed.
+       (vextuhrx): New insn for vector extract unsigned half word right
+       indexed.
+       (vextuwlx): New insn for vector extract unsigned word left
+       indexed.
+       (vextuwrx): New insn for vector extract unsigned word right
+       indexed.
+       * config/rs6000/rs6000.h (RS6000_BTC_CONST): Enhance comment to
+       clarify intent of this constant.
+       * config/rs6000/altivec.md (VI): Move this mode iterator to vsx.md.
+       * doc/extend.texi (PowerPC Altivec Built-in Functions): Add
+       documentation for vec_all_nez, vec_any_eqz, vec_cmpnez,
+       vec_cntlz_lsbb, vec_cnttz_lsbb, vec_xl_len, vec_xst_len, vec_xlx,
+       and vec_xrx functions.
+
+2016-10-18  Andrew Pinski  <apinski@cavium.com>
+
+       PR tree-opt/65950
+       * predict.c (is_exit_with_zero_arg): New function.
+       (tree_bb_level_predictions): Don't consider paths leading to exit(0)
+       as nottaken.
+
+2016-10-18  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/77991
+       * config/i386/i386.c (legitimize_tls_address)
+       <case TLS_MODEL_INITIAL_EXEC>: For TARGET_64BIT || TARGET_ANY_GNU_TLS
+       convert dest to Pmode if different than Pmode.
+
+2016-10-18  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+
+       PR tree-optimization/77916
+       * gimple-ssa-strength-reduction.c (analyze_increments): Reinstate
+       stopgap fix, as pointers with -1 increment are still broken.
+
+2016-10-18  David Edelsohn  <dje.gcc@gmail.com>
+
+       * config/rs6000/rs6000.c (rs6000_output_symbol_ref): Move storage
+       mapping class decoration from here...
+       (rs6000_xcoff_encode_section): ...to here.
+
+       (rs6000_savres_strategy) [AIX,ELFv2]: Inline FPR save and restore
+       if shrink-wrapping and optimizing for speed.
+
+2016-10-18  Richard Biener  <rguenther@suse.de>
+
+       * tree-vrp.c (evrp_dom_walker::before_dom_children): Handle
+       not visited but non-executable predecessors.  Return taken edge.
+       Simplify conditions and refactor propagation vs. folding step.
+
+2016-10-18  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       * config/rs6000/rs6000.c (rs6000_savres_strategy): Do not select
+       {SAVE,REST}_MULTIPLE if shrink-wrapping separate components.
+       (rs6000_get_separate_components): Assert we do not have those
+       strategies selected.
+
+2016-10-18  Richard Biener  <rguenther@suse.de>
+
+       * tree-ssa-propagate.h (substitute_and_fold): Adjust prototype.
+       * tree-ssa-propagate.c (ssa_prop_fini): Remove final BB_VISITED
+       clearing.
+       (substitute_and_fold_dom_walker): Adjust constructor.
+       (substitute_and_fold_dom_walker::before_dom_children): Remove
+       do_dce flag and handling (always true).
+       (substitute_and_fold): Likewise.
+       * tree-vrp.c (vrp_finalize): Adjust.
+       (execute_early_vrp): Remove final BB_VISITED clearing.
+       * tree-ssa-ccp.c (ccp_finalize): Adjust.
+       * tree-ssa-copy.c (fini_copy_prop): Likewise.
+       * ira.c (ira): Call clear_bb_flags.
+
+2016-10-18  Richard Biener  <rguenther@suse.de>
+
+       * genmatch.c (dt_operand::gen_gimple_expr): Use get_name to
+       get at the operand to look at with TREE_OPERAND for generic
+       sub-nodes.
+
+2016-10-18  David Malcolm  <dmalcolm@redhat.com>
+
+       * genattrtab.c (attr_string): Use rtx_reader_ptr for call to
+       copy_md_ptr_loc.
+       (gen_attr): Use rtx_reader_ptr for lookup_enum_type call.
+       (write_test_expr): Use rtx_reader_ptr for calls to
+       fprint_c_condition.
+       (write_attr_value): Likewise.
+       * genconditions.c (write_one_condition): Use rtx_reader_ptr for
+       call to print_md_ptr_loc.
+       (write_one_condition): Likewise for calls to print_c_condition.
+       * genconstants.c: Include "statistics.h" and "vec.h".
+       (main): Update for conversion to member functions.
+       * genemit.c (emit_c_code): Use rtx_reader_ptr for
+       call to print_md_ptr_loc.
+       * genenums.c: Include "statistics.h" and "vec.h".
+       (main): Update for conversion of traverse_enum_types to a method.
+       * genmddeps.c: Include "statistics.h" and "vec.h".
+       * genoutput.c (process_template): Use rtx_reader_ptr for call to
+       print_md_ptr_loc.
+       * genpreds.c (write_predicate_subfunction): Likewise.
+       (write_predicate_expr): Likewise for calls to print_c_condition.
+       * genrecog.c (print_test): Likewise.
+       * gensupport.c (process_rtx): Likewise for calls to
+       copy_md_ptr_loc and join_c_conditions.
+       (alter_test_for_insn): Likewise for call to join_c_conditions.
+       (process_substs_on_one_elem): Likewise.
+       (gen_mnemonic_setattr): Update for move of string_obstack to a
+       field of rtx_reader.
+       (mnemonic_htab_callback): Likewise.  Fix formatting.
+       (gen_mnemonic_attr): Likewise.
+       * gentarget-def.c (def_target_insn): Use rtx_reader_ptr for calls
+       to print_c_condition.
+       * read-md.c: Include "statistics.h" and "vec.h".
+       (string_obstack): Convert this global to field "m_string_obstack"
+       of class rtx_reader.
+       (ptr_locs): Likewise, as "m_ptr_locs".
+       (ptr_loc_obstack): Likewise, as "m_ptr_loc_obstack".
+       (joined_conditions): Likewise, as "m_joined_conditions".
+       (joined_conditions_obstack): Likewise, as "m_joined_conditions_obstack".
+       (md_constants): Likewise, as "m_md_constants".
+       (enum_types): Likewise, as "m_enum_types".
+       (set_md_ptr_loc): Convert to...
+       (rtx_reader::set_md_ptr_loc): ...member function.
+       (get_md_ptr_loc): Convert to...
+       (rtx_reader::get_md_ptr_loc): ...member function.
+       (copy_md_ptr_loc): Convert to...
+       (rtx_reader::copy_md_ptr_loc): ...member function.
+       (fprint_md_ptr_loc): Convert to...
+       (rtx_reader::fprint_md_ptr_loc): ...member function.
+       (print_md_ptr_loc): Convert to...
+       (rtx_reader::print_md_ptr_loc): ...member function.
+       (join_c_conditions): Convert to...
+       (rtx_reader::join_c_conditions): ...member function.
+       (fprint_c_condition): Convert to...
+       (rtx_reader::fprint_c_condition): ...member function.
+       (print_c_condition): Convert to...
+       (rtx_reader::print_c_condition): ...member function.
+       (read_name): Convert to...
+       (rtx_reader::read_name): ...member function.
+       (read_escape): Convert to...
+       (rtx_reader::read_escape): ...member function.
+       (read_quoted_string): Convert to...
+       (rtx_reader::read_quoted_string): ...member function.
+       (read_braced_string): Convert to...
+       (rtx_reader::read_braced_string): ...member function.
+       (read_string): Convert to...
+       (rtx_reader::read_string): ...member function.
+       (read_skip_construct): Convert to...
+       (rtx_reader::read_skip_construct): ...member function.
+       (handle_constants): Convert to...
+       (rtx_reader::handle_constants): ...member function.
+       (traverse_md_constants): Convert to...
+       (rtx_reader::traverse_md_constants): ...member function.
+       (handle_enum): Convert to...
+       (rtx_reader::handle_enum): ...member function.
+       (lookup_enum_type): Convert to...
+       (rtx_reader::lookup_enum_type): ...member function.
+       (traverse_enum_types): Convert to...
+       (rtx_reader::traverse_enum_types): ...member function.
+       (rtx_reader::rtx_reader): Move initializations
+       of various former global data from rtx_reader::read_md_files to
+       here, as fields, along with the call to unlock_std_streams.
+       (rtx_reader::~rtx_reader): Clean up m_base_dir, and clean up
+       the new fields.
+       (rtx_reader::read_md_files): Move initializations of various
+       global data from here to the ctor.
+       * read-md.h (read_name): Convert to...
+       (rtx_reader::read_name): ...member function.
+       (rtx_reader::read_escape): New method decl.
+       (read_quoted_string): Convert to...
+       (rtx_reader::read_quoted_string): ...member function.
+       (rtx_reader::read_braced_string): New method decl.
+       (read_string): Convert to...
+       (rtx_reader::read_string): ...member function.
+       (rtx_reader::read_skip_construct): New method decl.
+       (rtx_reader::set_md_ptr_loc): New method decl.
+       (rtx_reader::get_md_ptr_loc): New method decl.
+       (copy_md_ptr_loc): Convert to...
+       (rtx_reader::copy_md_ptr_loc): ...member function.
+       (fprint_md_ptr_loc): Convert to...
+       (rtx_reader::fprint_md_ptr_loc): ...member function.
+       (print_md_ptr_loc): Convert to...
+       (rtx_reader::print_md_ptr_loc): ...member function.
+       (rtx_reader::lookup_enum_type): New method decl.
+       (rtx_reader::traverse_enum_types): New method decl.
+       (rtx_reader::handle_constants): New method decl.
+       (traverse_md_constants): Convert to...
+       (rtx_reader::traverse_md_constants): ...member function.
+       (rtx_reader::handle_enum): New method decl.
+       (rtx_reader::join_c_conditions): New method decl.
+       (fprint_c_condition): Convert to...
+       (rtx_reader::fprint_c_condition): ...member function.
+       (print_c_condition): Convert to...
+       (rtx_reader::print_c_condition): ...member function.
+       (rtx_reader::apply_iterator_to_string): New method decl.
+       (rtx_reader::copy_rtx_for_iterators): New method decl.
+       (rtx_reader::read_conditions): New method decl.
+       (rtx_reader::record_potential_iterator_use): New method decl.
+       (rtx_reader::read_mapping): New method decl.
+       (rtx_reader::read_rtx): New method decl.
+       (rtx_reader::read_rtx_code): New method decl.
+       (rtx_reader::read_rtx_operand): New method decl.
+       (rtx_reader::read_nested_rtx): New method decl.
+       (rtx_reader::read_rtx_variadic): New method decl.
+       (rtx_reader::get_string_obstack): New method.
+       (rtx_reader::get_md_constants): New method.
+       (string_obstack): Convert global variable decl to...
+       (rtx_reader::m_string_obstack): ...this new field.
+       (rtx_reader::m_ptr_locs): New field.
+       (rtx_reader::m_ptr_loc_obstack): New field.
+       (rtx_reader::m_joined_conditions): New field.
+       (rtx_reader::m_joined_conditions_obstack): New field.
+       (rtx_reader::m_md_constants): New field.
+       (rtx_reader::m_enum_types): New field.
+       * read-rtl.c (apply_iterator_to_string): Convert to...
+       (rtx_reader::apply_iterator_to_string): ...member function.
+       (copy_rtx_for_iterators): Convert to...
+       (rtx_reader::copy_rtx_for_iterators): ...member function.
+       (add_condition_to_string): Use rtx_reader_ptr for
+       calls join_c_conditions.
+       (apply_iterators): Use rtx_reader_ptr for calls to
+       join_c_conditions and copy_rtx_for_iterators.
+       (read_conditions): Convert to...
+       (rtx_reader::read_conditions): ...member function.
+       (record_potential_iterator_use): Convert to...
+       (rtx_reader::record_potential_iterator_use): ...member function.
+       (read_mapping): Convert to...
+       (rtx_reader::read_mapping): ...member function.
+       (read_subst_mapping): Use rtx_reader_ptr for read_string call.
+       (read_rtx): Convert to...
+       (rtx_reader::read_rtx): ...member function.
+       (read_rtx_code): Convert to...
+       (rtx_reader::read_rtx_code): ...member function.
+       (read_rtx_operand): Convert to...
+       (rtx_reader::read_rtx_operand): ...member function.  Update for move
+       of string_obstack to a field.
+       (read_nested_rtx): Convert to..
+       (rtx_reader::read_nested_rtx): ...member function.
+       (read_rtx_variadic): Convert to..
+       (rtx_reader::read_rtx_variadic): ...member function.
+
+2016-10-18  Kugan Vivekanandarajah  <kuganv@linaro.org>
+
+       * tree-vrp.c (get_value_range): Check get_ptr_nonnull.
+
+2016-10-18  Kugan Vivekanandarajah  <kuganv@linaro.org>
+
+       * ipa-prop.c (ipa_compute_jump_functions_for_edge): Set value range
+       for pointer type too.
+       (ipcp_update_vr): set_ptr_nonnull for pointer.
+
+2016-10-18  Kugan Vivekanandarajah  <kuganv@linaro.org>
+
+       * tree-ssa-alias.h (pt_solution_singleton_or_null_p): Renamed from
+       pt_solution_singleton_p.
+       * tree-ssa-ccp.c (fold_builtin_alloca_with_align): Use renamed
+       pt_solution_singleton_or_null_p from pt_solution_singleton_p.
+       * tree-ssa-structalias.c (find_what_p_points_to): Preserve
+       pointer nonnull computed by VRP.
+       Also Conservatively set pt.null to 1.
+       (pt_solution_reset): Conservatively set pt.null to 1.
+       (pt_solution_singleton_or_null_p): Renamed from
+       pt_solution_singleton_p.
+       * tree-ssanames.h (set_ptr_nonnull): Declare.
+       (get_ptr_nonnull): Likewise.
+       * tree-ssanames.c (set_ptr_nonnull): New.
+       (get_ptr_nonnull): Likewise.
+       * tree-vrp.c (vrp_finalize): Set ptr that are nonnull.
+       (evrp_dom_walker::before_dom_children): Likewise.
+
+2016-10-17  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * config/i386/i386.h (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Move to...
+       * config/i386/i386.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): ...here.
+       * config/ia64/ia64.h (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Move to...
+       * config/ia64/ia64.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): ...here.
+       * config/rs6000/rs6000.h (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Move to.
+       * config/rs6000/rs6000.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): ...here.
+       (rs6000_option_override_internal): Clear it if ABI_AIX.
+       * config/sparc/sparc.h (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Move to...
+       * config/sparc/sparc.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): ... here.
+
+2016-10-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+
+       * gimple-ssa-strength-reduction.c (record_increment): Remove
+       garbage comment.
+
+2016-10-17  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * expmed.c (expand_shift_1): Add MAY_FAIL parameter and do not assert
+       that the result is non-zero if it is true.
+       (maybe_expand_shift): New wrapper around expand_shift_1.
+       (emit_store_flag): Call maybe_expand_shift in lieu of expand_shift.
+
+2016-10-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+
+       PR tree-optimization/77916
+       * gimple-ssa-strength-reduction.c (create_add_on_incoming_edge):
+       Don't allow a MINUS_EXPR for pointer arithmetic for either known
+       or unknown strides.
+       (record_increment): Increments of -1 for unknown strides just use
+       a multiply initializer like other negative values.
+       (analyze_increments): Remove stopgap solution for -1 increment
+       applied to pointer arithmetic.
+
+2016-10-17  Yuri Rumyantsev  <ysrumyan@gmail.com>
+
+       * dominance.c (dom_info::dom_info): Add new constructor for region
+       which is vector of basic blocks.
+       (dom_init): New method to initialize members common for both
+       constructors.
+       (dom_info::dom_info): Invoke dom_init for partial initialization.
+       (dom_info::get_idom): Add check to corner cases on basic blocks which
+       are not in region.
+       (dom_info::calc_dfs_tree): Check M_FAKE_EXIT_EDGE instead of M_REVERSE
+       to detect unreachable bbs.
+       (dom_info::calc_idoms): Likewise.
+       (compute_dom_fast_query_in_region): New function.
+       (calculate_dominance_info_for_region): Likewise.
+       (free_dominance_info_for_region): Likewise.
+       * dominance.h: Add prototypes for introduced region-based functions
+       tree-if-conv.c: (build_region): New function.
+       (if_convertible_loop_p_1): Invoke local version of post-dominators
+       calculation before basic block predication with subsequent freeing
+       post-dominator info.
+       (tree_if_conversion): Remove free of post-dominator info
+       (pass_if_conversion::execute): Delete detection of infinite loops
+       and fake edges to exit block since post-dominator calculation is
+       performed per if-converted loop only.
+
+2016-10-17  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+       PR target/77308
+       * config/arm/arm.c (arm_emit_coreregs_64bit_shift): Clear the result
+       register explicitly.
+       * config/arm/arm.md (ashldi3, ashrdi3, lshrdi3): Don't FAIL if
+       optimizing for size.
+
+2016-10-17  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+
+       * config/aarch64/aarch64.c: Delete inclusion of
+       cortex-a57-fma-steering.h.
+       (aarch64_override_options): Delete call
+       to aarch64_register_fma_steering.
+       * config/aarch64/aarch64-protos.h (make_pass_fma_steering): Declare.
+       * config/aarch64/cortex-a57-fma-steering.h: Delete.
+       * config/aarch64/aarch64-passes.def: New file.
+       * config/aarch64/cortex-a57-fma-steering.c
+       (aarch64_register_fma_steering): Delete definition.
+       (make_pass_fma_steering): Remove static qualifier.
+       * config/aarch64/t-aarch64 (PASSES_EXTRA): New directive.
+       (cortex-a57-fma-steering.o): Remove dependency on
+       cortex-a57-fma-steering.h.
+
+2016-10-17  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * explow.c (validize_mem): Do not modify the argument in-place.
+
+2016-10-17  Thomas Schwinge  <thomas@codesourcery.com>
+
+       * tree-streamer.c (record_common_node): Explicitly list expected
+       tree codes.
+
+2016-10-17  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/77988
+       * tree-vrp.c (remove_range_assertions): Use replace_uses_by.
+
+2016-10-17  Marek Polacek  <polacek@redhat.com>
+
+       * Makefile.in (C_COMMON_OBJS): Add c-family/c-attribs.o.
+
+2016-10-17  Richard Biener  <rguenther@suse.de>
+
+       * bb-reorder.c (reorder_basic_blocks_simple): Clear BB_VISITED
+       before using it.
+
+2016-10-17  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+
+       PR tree-optimization/71636
+       * match.pd (x & ((1 << b) - 1) -> x & ~(~0 << b)): New pattern.
+
+2016-10-17  Richard Biener  <rguenther@suse.de>
+
+       * gimplify.c (gimplify_function_tree): Do not move the outer
+       binds block.
+
+2016-10-17  Jakub Jelinek  <jakub@redhat.com>
+
+       * langhooks.h (struct lang_hooks_for_decls): Remove
+       function_decl_explicit_p, function_decl_deleted_p and
+       function_decl_defaulted hooks.  Add decl_dwarf_attribute hook.
+       * langhooks-def.h (lhd_decl_dwarf_attribute): Declare.
+       (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P,
+       LANG_HOOKS_FUNCTION_DECL_DELETED_P,
+       LANG_HOOKS_FUNCTION_DECL_DEFAULTED): Remove.
+       (LANG_HOOKS_DECL_DWARF_ATTRIBUTE): Define.
+       (LANG_HOOKS_DECLS): Remove LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P,
+       LANG_HOOKS_FUNCTION_DECL_DELETED_P and
+       LANG_HOOKS_FUNCTION_DECL_DEFAULTED.  Add
+       LANG_HOOKS_DECL_DWARF_ATTRIBUTE.
+       * langhooks.c (lhd_decl_dwarf_attribute): New function.
+       * dwarf2out.c (gen_subprogram_die): Use
+       lang_hooks.decls.decl_dwarf_attribute instead of
+       lang_hooks.decls.function_decl_*.
+
+2016-10-16  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR ada/37139
+       PR ada/67205
+       * common.opt (-ftrampolines): New option.
+       * doc/invoke.texi (Code Gen Options): Document it.
+       * doc/tm.texi.in (Trampolines): Add TARGET_CUSTOM_FUNCTION_DESCRIPTORS.
+       * doc/tm.texi: Regenerate.
+       * builtins.def: Add init_descriptor and adjust_descriptor.
+       * builtins.c (expand_builtin_init_trampoline): Do not issue a warning
+       on platforms with descriptors.
+       (expand_builtin_init_descriptor): New function.
+       (expand_builtin_adjust_descriptor): Likewise.
+       (expand_builtin) <BUILT_IN_INIT_DESCRIPTOR>: New case.
+       <BUILT_IN_ADJUST_DESCRIPTOR>: Likewise.
+       * calls.c (prepare_call_address): Remove SIBCALLP parameter and add
+       FLAGS parameter.  Deal with indirect calls by descriptor and adjust.
+       Set STATIC_CHAIN_REG_P on the static chain register, if any.
+       (call_expr_flags): Set ECF_BY_DESCRIPTOR for calls by descriptor.
+       (expand_call): Likewise.  Move around call to prepare_call_address
+       and pass all flags to it.
+       * cfgexpand.c (expand_call_stmt): Reinstate CALL_EXPR_BY_DESCRIPTOR.
+       * gimple.h (enum gf_mask): New GF_CALL_BY_DESCRIPTOR value.
+       (gimple_call_set_by_descriptor): New setter.
+       (gimple_call_by_descriptor_p): New getter.
+       * gimple.c (gimple_build_call_from_tree): SetCALL_EXPR_BY_DESCRIPTOR.
+       (gimple_call_flags): Deal with GF_CALL_BY_DESCRIPTOR.
+       * langhooks.h (struct lang_hooks): Add custom_function_descriptors.
+       * langhooks-def.h (LANG_HOOKS_CUSTOM_FUNCTION_DESCRIPTORS): Define.
+       (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_CUSTOM_FUNCTION_DESCRIPTORS.
+       * rtl.h (STATIC_CHAIN_REG_P): New macro.
+       * rtlanal.c (find_first_parameter_load): Skip static chain registers.
+       * target.def (custom_function_descriptors): New POD hook.
+       * tree.h (FUNC_ADDR_BY_DESCRIPTOR): New flag on ADDR_EXPR.
+       (CALL_EXPR_BY_DESCRIPTOR): New flag on CALL_EXPR.
+       * tree-core.h (ECF_BY_DESCRIPTOR): New mask.
+       Document FUNC_ADDR_BY_DESCRIPTOR and CALL_EXPR_BY_DESCRIPTOR.
+       * tree.c (make_node_stat) <tcc_declaration>: Use FUNCTION_ALIGNMENT.
+       (build_common_builtin_nodes): Initialize init_descriptor and
+       adjust_descriptor.
+       * tree-nested.c: Include target.h.
+       (struct nesting_info): Add 'any_descr_created' field.
+       (get_descriptor_type): New function.
+       (lookup_element_for_decl): New function extracted from...
+       (create_field_for_decl): Likewise.
+       (lookup_tramp_for_decl): ...here.  Adjust.
+       (lookup_descr_for_decl): New function.
+       (convert_tramp_reference_op): Deal with descriptors.
+       (build_init_call_stmt): New function extracted from...
+       (finalize_nesting_tree_1): ...here.  Adjust and deal with descriptors.
+       * defaults.h (FUNCTION_ALIGNMENT): Define.
+       (TRAMPOLINE_ALIGNMENT): Set to above instead of FUNCTION_BOUNDARY.
+       * config/i386/i386.h (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Define.
+       * config/ia64/ia64.h (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Likewise.
+       * config/rs6000/rs6000.h (TARGET_CUSTOM_FUNCTION_DESCRIPTORS):Likewise.
+       * config/sparc/sparc.h (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Likewise.
+
+2016-10-16  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * config/sparc/sparc.c (sparc_expand_vector_init): Only accept literal
+       constants in CONST_VECTORs.
+
+2016-10-15  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * config/sparc/sparc.c (sparc_expand_vec_perm_bmask): Use a scratch
+       register as destination of bmask.
+       (vector_init_bshuffle): Likewise.
+       * config/sparc/sparc.md (vec_perm_constv8qi): Likewise.
+       (bmaskdi_vis): Enable only in 64-bit mode.
+
+2016-10-15  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       * config/rs6000/rs6000.c (rs6000_get_separate_components): Do not
+       make LR a separately shrink-wrapped component unless savres_strategy
+       contains all of {SAVE,REST}_INLINE_{GPRS,FPRS,VRS}.  Do not wrap
+       GPRs unless both {SAVE,REST}_INLINE_GPRS.  Do not disallow all
+       wrapping when not both {SAVE,REST}_INLINE_GPRS.
+
+2016-10-15  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * optabs.c (expand_parity): Fix mode mismatch, add final conversion
+       and keep looping on failure.
+
+2016-10-14  David Malcolm  <dmalcolm@redhat.com>
+
+       * print-rtl-function.c (print_edge): Omit "(flags)" when none are
+       set.
+       (print_rtx_function): Update example in comment for...
+       * print-rtl.c (print_rtx_operand_code_r): In compact mode, print
+       non-virtual pseudos with a '%' sigil followed by the regno, offset
+       by (LAST_VIRTUAL_REGISTER + 1), so that the first non-virtual
+       pseudo is dumped as "%0".
+
+2016-10-14  Jakub Jelinek  <jakub@redhat.com>
+
+       PR middle-end/77959
+       * expr.c (expand_expr_real_1) <case CONST_DECL>: For EXPAND_WRITE
+       return a MEM.
+
+2016-10-14  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * config/sparc/sparc-passes.def: New file.
+       * config/sparc/t-sparc (PASSES_EXTRA): Add sparc-passes.def.
+       * config/sparc/sparc-protos.h (make_pass_work_around_errata): New.
+       * config/sparc/sparc.c (sparc_option_override): Don't register passes.
+
+2016-10-14  Pat Haugen  <pthaugen@us.ibm.com>
+
+       * loop-unroll.c (unroll_loop_runtime_iterations): Condition initial
+       loop peel to loops with exit test at the beginning.
+
+2016-10-14  Pat Haugen  <pthaugen@us.ibm.com>
+
+       PR rtl-optimization/68212
+       * cfgloopmanip.c (duplicate_loop_to_header_edge): Use preheader edge
+       frequency when computing scale factor for peeled copies.
+       * loop-unroll.c (unroll_loop_runtime_iterations): Fix freq/count
+       values for switch/peel blocks/edges.
+
+2016-10-14  Pedro Alves  <palves@redhat.com>
+
+       * coretypes.h (OVERRIDE, FINAL): Delete, moved to include/ansidecl.h.
+
+2016-10-14  Catherine Moore  <clm@codesourcery.com>
+
+       * gcc/config/mips/mips.c (mips_prepare_pch_save): Initialize
+       micromips_globals to zero.
+
+2016-10-14  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/77979
+       * tree-vrp.c (compare_name_with_value): Handle released SSA names
+       in the equivalency sets.
+       (compare_names): Likewise.
+
+2016-10-14  Martin Liska  <mliska@suse.cz>
+
+       * builtins.h(target_char_cst_p): Declare the function.
+       * builtins.c (fold_builtin_memchr): Remove.
+       (target_char_cst_p): Move the function from gimple-fold.c.
+       (fold_builtin_3): Do not call the function.
+       * gimple-fold.c (gimple_fold_builtin_memchr): New function.
+       (gimple_fold_builtin): Call the function.
+       * fold-const-call.c (fold_const_call_1): Handle CFN_BUILT_IN_MEMCHR.
+
+2016-10-14  Martin Liska  <mliska@suse.cz>
+
+       * builtins.c (fold_builtin_strcmp): Remove function.
+       (fold_builtin_strncmp): Likewise.
+       (fold_builtin_2): Remove call of the function.
+       (fold_builtin_3): Likewise.
+       * fold-const-call.c (fold_const_call): Add constant folding
+       for CFN_BUILT_IN_STRCASECMP and CFN_BUILT_IN_STRNCASECMP.
+       * fold-const-call.h (build_cmp_result): Declare the function.
+       * gimple-fold.c (gimple_load_first_char): New function.
+       (gimple_fold_builtin_string_compare): Likewise.
+       (gimple_fold_builtin): Call the function.
+
+2016-10-14  Nathan Sidwell  <nathan@acm.org>
+
+       * gcov-io.c (gcov_open): Deconstify 'mode'.
+
+2016-10-14  Martin Liska  <mliska@suse.cz>
+
+       * fold-const.c (c_getstr): Support of properly \0-terminated
+       string constants.  New argument is added.
+       * fold-const.h: New argument is added.
+
+2016-10-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+
+       * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch):
+       New function.
+       (aarch64_print_hint_for_core): Likewise.
+       (aarch64_print_hint_for_arch): Likewise.
+       (aarch64_validate_march): Use it.  Fix indentation in type signature.
+       (aarch64_validate_mcpu): Use aarch64_print_hint_for_core_or_arch.
+       (aarch64_validate_mtune): Likewise.
+       (aarch64_handle_attr_arch): Likewise.
+       (aarch64_handle_attr_cpu): Likewise.
+       (aarch64_handle_attr_tune): Likewise.
+
+2016-10-14  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+
+       * optabs.def: Remove optab function gen_int_libfunc for sdivmod_optab
+       and udivmod_optab.
+
+2016-10-13  Andreas Schwab  <schwab@linux-m68k.org>
+
+       * config/m68k/m68k.c (m68k_option_override): Check
+       opt_fstack_limit_symbol_arg and opt_fstack_limit_register_no
+       instead of stack_limit_rtx.
+
+2016-10-13  Jakub Jelinek  <jakub@redhat.com>
+
+       * dwarf2out.c (gen_member_die): Handle inline static data member
+       definitions.
+
+2016-10-13  Nathan Sidwell  <nathan@acm.org>
+
+       * gcov-io.c (gcov_open): Fix documentation.  Simplify setting
+       gcov_var.mode.  Remove unnecessary fstat.
+
+2016-10-13  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       PR bootstrap/77962
+       * function.c (thread_prologue_and_epilogue_insns): Call all
+       make_*logue_seq in the same order as traditional.  Call them
+       all a second time if shrink_wrapped_separate.
+
+2016-10-13  Marek Polacek  <polacek@redhat.com>
+
+       * Makefile.in (insn-attrtab.o-warn, insn-dfatab.o-warn,
+       insn-latencytab.o-warn, insn-output.o-warn, insn-emit.o-warn): Don't
+       use -Wno-error.
+
+2016-10-13  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+
+       PR tree-optimization/77937
+       * gimple-ssa-strength-reduction.c (analyze_increments): Set cost
+       to infinite when we have a pointer with an increment of -1.
+
+2016-10-13  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+
+       * coretypes.h: Move MEMMODEL_* macros and enum memmodel definition
+       into ...
+       * memmodel.h: This file.
+       * alias.c, asan.c, auto-inc-dec.c, bb-reorder.c, bt-load.c,
+         caller-save.c, calls.c, ccmp.c, cfgbuild.c, cfgcleanup.c,
+         cfgexpand.c, cfgloopanal.c, cfgrtl.c, cilk-common.c, combine.c,
+         combine-stack-adj.c, common/config/aarch64/aarch64-common.c,
+         common/config/arm/arm-common.c, common/config/bfin/bfin-common.c,
+         common/config/c6x/c6x-common.c, common/config/i386/i386-common.c,
+         common/config/ia64/ia64-common.c, common/config/nvptx/nvptx-common.c,
+         compare-elim.c, config/aarch64/aarch64-builtins.c,
+         config/aarch64/aarch64-c.c, config/aarch64/cortex-a57-fma-steering.c,
+         config/arc/arc.c, config/arc/arc-c.c, config/arm/arm-builtins.c,
+         config/arm/arm-c.c, config/avr/avr.c, config/avr/avr-c.c,
+         config/avr/avr-log.c, config/bfin/bfin.c, config/c6x/c6x.c,
+         config/cr16/cr16.c, config/cris/cris.c, config/darwin-c.c,
+         config/darwin.c, config/epiphany/epiphany.c,
+         config/epiphany/mode-switch-use.c,
+         config/epiphany/resolve-sw-modes.c, config/fr30/fr30.c,
+         config/frv/frv.c, config/ft32/ft32.c, config/h8300/h8300.c,
+         config/i386/i386-c.c, config/i386/winnt.c, config/iq2000/iq2000.c,
+         config/lm32/lm32.c, config/m32c/m32c.c, config/m32r/m32r.c,
+         config/m68k/m68k.c, config/mcore/mcore.c,
+         config/microblaze/microblaze.c, config/mmix/mmix.c,
+         config/mn10300/mn10300.c, config/moxie/moxie.c,
+         config/msp430/msp430.c, config/nds32/nds32-cost.c,
+         config/nds32/nds32-intrinsic.c, config/nds32/nds32-md-auxiliary.c,
+         config/nds32/nds32-memory-manipulation.c,
+         config/nds32/nds32-predicates.c, config/nds32/nds32.c,
+         config/nios2/nios2.c, config/nvptx/nvptx.c, config/pa/pa.c,
+         config/pdp11/pdp11.c, config/rl78/rl78.c, config/rs6000/rs6000-c.c,
+         config/rx/rx.c, config/s390/s390-c.c, config/s390/s390.c,
+         config/sh/sh.c, config/sh/sh-c.c, config/sh/sh-mem.cc,
+         config/sh/sh_treg_combine.cc, config/sol2.c, config/spu/spu.c,
+         config/stormy16/stormy16.c, config/tilegx/tilegx.c,
+         config/tilepro/tilepro.c, config/v850/v850.c, config/vax/vax.c,
+         config/visium/visium.c, config/vms/vms-c.c, config/xtensa/xtensa.c,
+         coverage.c, cppbuiltin.c, cprop.c, cse.c, cselib.c, dbxout.c, dce.c,
+         df-core.c, df-problems.c, df-scan.c, dojump.c, dse.c, dwarf2asm.c,
+         dwarf2cfi.c, dwarf2out.c, emit-rtl.c, except.c, explow.c, expmed.c,
+         expr.c, final.c, fold-const.c, function.c, fwprop.c, gcse.c,
+         ggc-page.c, haifa-sched.c, hsa-brig.c, hsa-gen.c, hw-doloop.c,
+         ifcvt.c, init-regs.c, internal-fn.c, ira-build.c, ira-color.c,
+         ira-conflicts.c, ira-costs.c, ira-emit.c, ira-lives.c, ira.c, jump.c,
+         loop-doloop.c, loop-invariant.c, loop-iv.c, loop-unroll.c,
+         lower-subreg.c, lra.c, lra-assigns.c, lra-coalesce.c,
+         lra-constraints.c, lra-eliminations.c, lra-lives.c, lra-remat.c,
+         lra-spills.c, mode-switching.c, modulo-sched.c, omp-low.c, passes.c,
+         postreload-gcse.c, postreload.c, predict.c, print-rtl-function.c,
+         recog.c, ree.c, reg-stack.c, regcprop.c, reginfo.c, regrename.c,
+         reload.c, reload1.c, reorg.c, resource.c, rtl-chkp.c, rtl-tests.c,
+         rtlanal.c, rtlhooks.c, sched-deps.c, sched-rgn.c, sdbout.c,
+         sel-sched-ir.c, sel-sched.c, shrink-wrap.c, simplify-rtx.c,
+         stack-ptr-mod.c, stmt.c, stor-layout.c, target-globals.c,
+         targhooks.c, toplev.c, tree-nested.c, tree-outof-ssa.c,
+         tree-profile.c, tree-ssa-coalesce.c, tree-ssa-ifcombine.c,
+         tree-ssa-loop-ivopts.c, tree-ssa-loop.c, tree-ssa-reassoc.c,
+         tree-ssa-sccvn.c, tree-vect-data-refs.c, ubsan.c, valtrack.c,
+         var-tracking.c, varasm.c: Include memmodel.h.
+       * genattrtab.c (write_header): Include memmodel.h in generated file.
+       * genautomata.c (main): Likewise.
+       * gengtype.c (open_base_files): Likewise.
+       * genopinit.c (main): Likewise.
+       * genconditions.c (write_header): Include memmodel.h earlier in
+       generated file.
+       * genemit.c (main): Likewise.
+       * genoutput.c (output_prologue): Likewise.
+       * genpeep.c (main): Likewise.
+       * genpreds.c (write_insn_preds_c): Likewise.
+       * genrecog.c (write_header): Likewise.
+       * Makefile.in (PLUGIN_HEADERS): Include memmodel.h
+
+2016-10-13  David Malcolm  <dmalcolm@redhat.com>
+
+       * function-tests.c (selftest::test_expansion_to_rtl): Add "true"
+       for new "compact" param of print_rtx_function.  Check for "cinsn"
+       rather than "insn".
+       * print-rtl-function.c (flag_compact): New decl.
+       (print_rtx_function): Add param "compact" and use it to set
+       flag_compact, adding a description of the effect to the leading
+       comment, and updating the example output.
+       * print-rtl.c (flag_compact): New variable.
+       (print_rtx_operand_code_0): Omit the JUMP_LABEL reference in compact
+       mode.
+       (print_rtx_operand_code_i): When printing source locations, wrap
+       xloc.file in quotes.  Don't print INSN_CODEs in compact mode.
+       (print_rtx_operand_code_r): Don't print regnos for hard regs and
+       virtuals in compact mode.
+       (print_rtx_operand_code_u): Don't print insn UIDs in compact mode,
+       apart from in LABEL_REFs.
+       (print_rtx_operand): In case 'w', don't print in hex in compact mode.
+       Don't print basic block ids in compact mode.
+       (print_rtx):  In compact mode, prefix the code of insns with "c",
+       only print the INSN_UID of CODE_LABELs, and omit their LABEL_NUSES.
+       * print-rtl.h (print_rtx_function): Add "compact" param.
+
+2016-10-13  Richard Earnshaw  <rearnsha@arm.com>
+
+       * arm.h (TARGET_VFP): Delete.
+       (TARGET_VFPD32): Remove references to TARGET_VFP.
+       (TARGET_VFP3, TARGET_VFP5): Likewise.
+       (TARGET_VFP_SINGLE, TARGET_VFP_DOUBLE): Likewise.
+       (TARGET_NEON_FP16): Likewise.
+       (TARGET_FMA): Likewise.
+       (TARGET_CRYPTO): Likewise.
+       (TARGET_NEON): Likewise.
+       (SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
+       (FUNCTION_ARG_REGNO_P): Likewise.
+       * arm.c (arm_option_check_internal): Likewise.
+       (arm_option_override): Likewise.
+       (use_return_insn): Likewise.
+       (arm_function_value_regno_p): Likewise.
+       (arm_apply_result_size): Likewise.
+       (use_vfp_abi): Likewise.
+       (arm_legitimate_address_outer_p): Likewise.
+       (thumb2_legitimate_address_p): Likewise.
+       (arm_legitimate_index_p): Likewise.
+       (thumb2_legitimate_index_p): Likewise.
+       (arm_legitimate_address): Likewise.
+       (arm_get_vfp_saved_size): Likewise.
+       (arm_emit_vfp_multi_reg_pop): Likewise.
+       (arm_get_frame_offsets): Likewise.
+       (arm_save_coproc_regs): Likewise.
+       (arm_hard_regno_mode_ok): Likewise.
+       (arm_expand_epilogue_apcs_frame): Likewise.
+       (arm_expand_epilogue): Likewise.
+       (arm_file_start): Likewise.
+       (arm_conditional_register_usage): Likewise.
+       (arm_validize_comparison): Use vfp_compare_operand directly.
+       * arm-builtins.c (arm_init_builtins): Remove references to TARGET_VFP.
+       (arm_expand_vfp_builtin): Use TARGET_HARD_FLOAT for detecting
+       unsupported usage.
+       (arm_atomic_assign_expand_fenv): Likewise.
+       * arm.md (divsf3): Likewise.
+       (arm_negsi2): Likewise.
+       (absdf2): Likewise.
+       (arm_movdi): Likewise.
+       (arm_movt): Likewise.
+       (cbranchsf4): Change predicate to vfp_compare_operand.
+       (cbranchdf4): Change predicate to vfp_compare_operand.
+       (cstorehf4): Change predicate to vfp_compare_operand.
+       (cstoresf4): Change predicate to vfp_compare_operand.
+       (cstoredf4): Change predicate to vfp_compare_operand.
+       (vfp_pop_multiple_with_writeback): Remove references to TARGET_VFP.
+       (movhi_insn_arch4, movhi_bytes): Likewise.
+       * constraints.md (Dt): Likewise.
+       (Dp): Likewise.
+       * iterators.md (SDF): Likewise.
+       * predicates.md (arm_float_compare_operand): Delete.
+       (const_double_vcvt_power_of_two_reciprocal): Remove references to
+       TARGET_VFP.
+       (const_double_vcvt_power_of_two): Likewise.
+       * thumb2.md thumb2_movsi_insn): Likewise.
+       * vfp.md (arm_movhi_vfp, thumb2_movhi_vfp): Likewise.
+       (movhf_vfp): Likewise.
+       (arm_movsi_vfp, thumb2_movsi_vfp): Likewise.
+       (movdi_vfp, movdi_vfp_cortexa8): Likewise.
+       (movsf_vfp, thumb2_movsf_vfp): Likewise.
+       (movdf_vfp, thumb2_movdf_vfp): Likewise.
+       (movsfcc_vfp, abssf2_vfp, negsf2_vfp, addsf3_vfp): Likewise.
+       (subsf3_vfp, divsf3_vfp): Likewise.
+       (mulsf3_vfp, mulsf3negsf_vfp, negmulsf3_vfp): Likewise.
+       (mulsf3addsf_vfp, (mulsf3subsf_vfp, mulsf3negsfaddsf_vfp): Likewise.
+       (mulsf3negsfsubsf_vfp): Likewise.
+       (truncsisf2_vfp, fixuns_truncsfsi2, floatsisf2_vfp): Likewise.
+       (floatunssisf2, sqrtsf2_vfp): Likewise.
+       (movcc_vfp): Likewise.
+       (cmpsf_split_vfp, cmpsf_trap_split_vfp): Likewise.
+       (cmpsf_vfp, cmpsf_trap_vfp): Likewise.
+       (push_multi_vfp): Likewise.
+       (set_fpscr, get_fpscr): Likewise.
+       * arm-c.c (arm_cpu_builtins): Unconditionally define __VFP_FP__.
+
+2016-10-13  Richard Earnshaw  <rearnsha@arm.com>
+
+       * arm.h (TARGET_VFP): Unconditionally define to 1.
+       (arm_fpu_desc): Remove 'model' field.
+       (TARGET_FPU_MODEL): Delete.
+       * arm.c (all_fpus): Don't initialize the model field.
+       (arm_can_inline_p): Don't check the FPU model.
+       * arm-fpus.def: Remove redundant model field from all FPU
+       descriptions.
+
+2016-10-13  Richard Biener  <rguenther@suse.de>
+
+       PR middle-end/77826
+       * genmatch.c (struct capture): Add value_match member.
+       (commutate): Preserve value_match.
+       (lower_opt_convert): Likewise.
+       (lower_cond): Likewise.
+       (replace_id): Likewise.
+       (struct dt_operand): Add value_match member.
+       (decision_tree::cmp_node): Compare it.
+       (decision_tree::insert_operand): Honor it when finding and
+       when appending a DT_MATCH.
+       (dt_operand::gen_match_op): Generate a type check after
+       operand_equal_p if ! value_match for both GENERIC and GIMPLE.
+       (parser::get_internal_capture_id): New helper.
+       (parser::finish_match_operand): New function lowering @@<id>.
+       (parser::parse_capture): Parse @@<id> as value-match.
+       (parser::parse_expr): Use get_internal_capture_id.
+       (parser::parse_simplify): Call finish_match_operand.
+       (walk_captures): New helper.
+       * match.pd (X - (X / Y) * Y -> X % Y): Use value-matching instead
+       of operand_equal_p.
+       ((X /[ex] A) * A -> X): Likewise.
+       ((X | Y) ^ X -> Y & ~ X): Handle constants properly by using
+       convert[12] and value-matching.
+       ((A | B) & (A | C) ->  A | (B & C)): Likewise.
+       ((X | Y) | Y -> X | Y): Likewise.
+       ((X ^ Y) ^ Y -> X): Likewise.
+       (A - (A & B) -> ~B & A): Likewise.
+       ((T)(P + A) - (T)P -> (T) A): Likewise.
+       ((T)P - (T)(P + A) -> -(T) A): Likewise.
+       ((T)(P + A) - (T)(P + B) -> (T)A - (T)B): Likewise.
+       * doc/match-and-simplify.texi: Amend capture section.
+
+2016-10-13  Claudiu Zissulescu  <claziss@synopsys.com>
+
+       * config/arc/arc.md (umul_600): Remove predicated variant.
+       (umul64_600): Likewise.
+
+2016-10-13  Claudiu Zissulescu  <claziss@synopsys.com>
+
+       * config/arc/arc.h (INSN_LENGTH_ALIGNMENT): Change.
+
+2016-10-13  Bin Cheng  <bin.cheng@arm.com>
+
+       * tree-vect-loop.c (loop_niters_no_overflow): New func.
+       (vect_transform_loop): Call loop_niters_no_overflow.  Pass the
+       no-overflow information to vect_do_peeling_for_loop_bound and
+       vect_gen_vector_loop_niters.
+
+2016-10-13  Bin Cheng  <bin.cheng@arm.com>
+
+       * tree-predcom.c (tree_predictive_commoning_loop): Skip loop that only
+       iterates 1 time.
+
 2016-10-13  Bin Cheng  <bin.cheng@arm.com>
 
        * tree-vect-loop-manip.c (adjust_vec_debug_stmts): Don't release