+2016-10-20 Michael Matz <matz@suse.de>
+
+ Loop splitting.
+ * common.opt (-fsplit-loops): New flag.
+ * passes.def (pass_loop_split): Add.
+ * opts.c (default_options_table): Add OPT_fsplit_loops entry at -O3.
+ (enable_fdo_optimizations): Add loop splitting.
+ * timevar.def (TV_LOOP_SPLIT): Add.
+ * tree-pass.h (make_pass_loop_split): Declare.
+ * tree-ssa-loop-manip.h (rewrite_into_loop_closed_ssa_1): Declare.
+ * tree-ssa-loop-unswitch.c: Include tree-ssa-loop-manip.h,
+ * tree-ssa-loop-split.c: New file.
+ * Makefile.in (OBJS): Add tree-ssa-loop-split.o.
+ * doc/invoke.texi (fsplit-loops): Document.
+ * doc/passes.texi (Loop optimization): Add paragraph about loop
+ splitting.
+
+2016-10-20 Richard Biener <rguenther@suse.de>
+
+ * cgraphunit.c (analyze_functions): Set node->definition to
+ false to signal symbol removal to debug_hooks->late_global_decl.
+ * ipa.c (symbol_table::remove_unreachable_nodes): When not in
+ WPA signal symbol removal to the debuginfo machinery.
+ * dwarf2out.c (dwarf2out_late_global_decl): Instead of
+ using early_finised to guard the we're called for symbol
+ removal case look at the symtabs definition flag.
+ (gen_variable_die): Remove redundant check.
+
+2016-10-20 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
+
+ * config/s390/s390.md ("prefetch"): Add fallthrough comment.
+
+2016-10-20 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
+
+ PR tree-optimization/53979
+ * match.pd ((a ^ b) | a -> a | b): New pattern.
+
+2016-10-19 John David Anglin <danglin@gcc.gnu.org>
+
+ * config/pa/pa64-hpux.h (PA_INIT_FRAME_DUMMY_ASM_OP): Move to
+ config/pa/pa64-hpux-lib.h.
+ (PA_CRTBEGIN_HACK): Likewise.
+ (DTOR_LIST_BEGIN): Likewise.
+
+2016-10-19 Bernd Edlinger <bernd.edlinger@hotmail.de>
+
+ * config/arm/arm.c (arm_emit_coreregs_64bit_shift): Clear the result
+ register only if "in" and "out" are different registers.
+
+2016-10-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * omp-low.c (pass_oacc_device_lower::gate): New method.
+ (execute): Always call execute_oacc_device_lower.
+
+2016-10-19 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ PR tree-optimization/77916
+ PR tree-optimization/77937
+ * gimple-ssa-strength-reduction.c (analyze_increments): Remove
+ stopgap fix.
+ (insert_initializers): Requirement of initializer for -1 should be
+ based on pointer-typedness of the candidate basis.
+
+2016-10-19 Bin Cheng <bin.cheng@arm.com>
+
+ PR tree-optimization/78005
+ * tree-vect-loop-manip.c (vect_gen_prolog_loop_niters): Compute
+ upper (included) bound for niters of prolog loop.
+ (vect_gen_scalar_loop_niters): Change parameter VF to VFM1.
+ Compute niters of scalar loop above which vectorized loop is
+ preferred, as well as the upper (included) bound for the niters.
+ (vect_do_peeling): Record niter bound for loops accordingly.
+
+2016-10-19 Thomas Schwinge <thomas@codesourcery.com>
+
+ PR lto/77458
+ * tree-core.h (enum tree_index): Put the complex types after their
+ component types.
+ * tree-streamer.c (verify_common_node_recorded): New function.
+ (preload_common_nodes) <TREE_CODE (node) == COMPLEX_TYPE>: Use it.
+
+2016-10-19 Martin Liska <mliska@suse.cz>
+
+ * cgraph.h (cgraph_edge::binds_to_current_def_p):
+ Replace NULL with false as a return value.
+
+2016-10-19 Thomas Schwinge <thomas@codesourcery.com>
+
+ PR tree-optimization/78024
+ * omp-low.c (oacc_loop_discovery): Call clear_bb_flags before, and
+ don't clear BB_VISITED after processing.
+
+2016-10-19 Richard Biener <rguenther@suse.de>
+
+ * domwalk.c (dom_walker::walk): Use RPO order.
+
+2016-10-19 Richard Biener <rguenther@suse.de>
+
+ * tree-vrp.c (evrp_dom_walker::evrp_dom_walker): Initialize
+ stmts_to_remove.
+ (evrp_dom_walker::~evrp_dom_walker): Free it.
+ (evrp_dom_walker::stmts_to_remove): Add.
+ (evrp_dom_walker::before_dom_children): Mark PHIs and stmts
+ whose output we fully propagate for removal. Propagate
+ into BB destination PHI arguments.
+ (execute_early_vrp): Remove queued stmts. Dump value ranges
+ before stmt removal.
+
+2016-10-18 Aldy Hernandez <aldyh@redhat.com>
+
+ * Makefile.in (OBJS): Add gimple-ssa-warn-alloca.o.
+ * passes.def: Add two instances of pass_walloca.
+ * tree-pass.h (make_pass_walloca): New.
+ * gimple-ssa-warn-alloca.c: New file.
+ * doc/invoke.texi: Document -Walloca, -Walloca-larger-than=, and
+ -Wvla-larger-than= options.
+
+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
+ adjust_vec automatically.
+ (slpeel_add_loop_guard): Remove param cond_expr_stmt_list. Rename
+ param exit_bb to guard_to.
+ (slpeel_checking_verify_cfg_after_peeling):
+ (set_prologue_iterations):
+ (create_lcssa_for_virtual_phi): New func which is factored out from
+ slpeel_tree_peel_loop_to_edge.
+ (slpeel_tree_peel_loop_to_edge):
+ (iv_phi_p): New func.
+ (vect_can_advance_ivs_p): Call iv_phi_p.
+ (vect_update_ivs_after_vectorizer): Call iv_phi_p. Directly insert
+ new gimple stmts in basic block.
+ (vect_gen_niters_for_prolog_loop): Rename to...
+ (vect_gen_prolog_loop_niters): ...Rename from. Change parameters and
+ adjust implementation.
+ (vect_update_inits_of_drs): Fix code style issue. Convert niters to
+ sizetype if necessary.
+ (vect_build_loop_niters): Move to here from tree-vect-loop.c. Change
+ it to external function.
+ (vect_gen_scalar_loop_niters, vect_gen_vector_loop_niters): New.
+ (vect_gen_vector_loop_niters_mult_vf): New.
+ (slpeel_update_phi_nodes_for_loops): New.
+ (slpeel_update_phi_nodes_for_guard1): Reimplement.
+ (find_guard_arg, slpeel_update_phi_nodes_for_guard2): Reimplement.
+ (slpeel_update_phi_nodes_for_lcssa, vect_do_peeling): New.
+ * tree-vect-loop.c (vect_build_loop_niters): Move to file
+ tree-vect-loop-manip.c
+ (vect_generate_tmps_on_preheader): Delete.
+ (vect_transform_loop): Rename vectorization_factor to vf. Call
+ vect_do_peeling instead of vect_do_peeling-* functions.
+ * tree-vectorizer.h (vect_do_peeling): New decl.
+ (vect_build_loop_niters, vect_gen_vector_loop_niters): New decls.
+ (vect_do_peeling_for_loop_bound): Delete.
+ (vect_do_peeling_for_alignment): Delete.
+
2016-10-13 Bin Cheng <bin.cheng@arm.com>
* tree-vect-loop-manip.c (slpeel_tree_duplicate_loop_to_edge_cfg): Put