X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=gcc%2FChangeLog;h=6002ddee5bf48d9a686d436c87331390151355dd;hb=2300c332eb046581a8135dabf66b9e85afec65b7;hp=323bf353a1cb0f666a73bde8016cca984c360fb4;hpb=20a6ece021473dc7f182b751bcbdaa6ad9762375;p=gcc.git diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 323bf353a1c..6002ddee5bf 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,1199 @@ +2016-10-18 Thomas Schwinge + + * cfg.c (clear_bb_flags): Use FOR_ALL_BB_FN. + * config/nvptx/nvptx.c (nvptx_find_sese): Likewise. + +2016-10-18 Kelvin Nilsen + + * 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__p): New expansion for implementation of + vec_all_ne and vec_any_eq built-in functions. + (vector_nez__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__p): New insn for vector test all not equal with + vector of integer modes. + (*vsx_ne__p): New insn for vector test all not equal with + vector of float or double modes. + (*vector_nez__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): 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 + + 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 + + PR target/77991 + * config/i386/i386.c (legitimize_tls_address) + : For TARGET_64BIT || TARGET_ANY_GNU_TLS + convert dest to Pmode if different than Pmode. + +2016-10-18 Bill Schmidt + + 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * tree-vrp.c (get_value_range): Check get_ptr_nonnull. + +2016-10-18 Kugan Vivekanandarajah + + * 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 + + * 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 + + * 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 + + * gimple-ssa-strength-reduction.c (record_increment): Remove + garbage comment. + +2016-10-17 Eric Botcazou + + * 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 + + 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 + + * 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 + + 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 + + * 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 + + * explow.c (validize_mem): Do not modify the argument in-place. + +2016-10-17 Thomas Schwinge + + * tree-streamer.c (record_common_node): Explicitly list expected + tree codes. + +2016-10-17 Richard Biener + + PR tree-optimization/77988 + * tree-vrp.c (remove_range_assertions): Use replace_uses_by. + +2016-10-17 Marek Polacek + + * Makefile.in (C_COMMON_OBJS): Add c-family/c-attribs.o. + +2016-10-17 Richard Biener + + * bb-reorder.c (reorder_basic_blocks_simple): Clear BB_VISITED + before using it. + +2016-10-17 Prathamesh Kulkarni + + PR tree-optimization/71636 + * match.pd (x & ((1 << b) - 1) -> x & ~(~0 << b)): New pattern. + +2016-10-17 Richard Biener + + * gimplify.c (gimplify_function_tree): Do not move the outer + binds block. + +2016-10-17 Jakub Jelinek + + * 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 + + 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) : New case. + : 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) : 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 + + * config/sparc/sparc.c (sparc_expand_vector_init): Only accept literal + constants in CONST_VECTORs. + +2016-10-15 Eric Botcazou + + * 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 + + * 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 + + * optabs.c (expand_parity): Fix mode mismatch, add final conversion + and keep looping on failure. + +2016-10-14 David Malcolm + + * 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 + + PR middle-end/77959 + * expr.c (expand_expr_real_1) : For EXPAND_WRITE + return a MEM. + +2016-10-14 Eric Botcazou + + * 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 + + * loop-unroll.c (unroll_loop_runtime_iterations): Condition initial + loop peel to loops with exit test at the beginning. + +2016-10-14 Pat Haugen + + 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 + + * coretypes.h (OVERRIDE, FINAL): Delete, moved to include/ansidecl.h. + +2016-10-14 Catherine Moore + + * gcc/config/mips/mips.c (mips_prepare_pch_save): Initialize + micromips_globals to zero. + +2016-10-14 Richard Biener + + 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 + + * 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 + + * 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 + + * gcov-io.c (gcov_open): Deconstify 'mode'. + +2016-10-14 Martin Liska + + * 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 + + * 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 + + * optabs.def: Remove optab function gen_int_libfunc for sdivmod_optab + and udivmod_optab. + +2016-10-13 Andreas Schwab + + * 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 + + * dwarf2out.c (gen_member_die): Handle inline static data member + definitions. + +2016-10-13 Nathan Sidwell + + * gcov-io.c (gcov_open): Fix documentation. Simplify setting + gcov_var.mode. Remove unnecessary fstat. + +2016-10-13 Segher Boessenkool + + 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 + + * 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 + + 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 + + * 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 + + * 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 + + * 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 + + * 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 + + 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 @@. + (parser::parse_capture): Parse @@ 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 + + * config/arc/arc.md (umul_600): Remove predicated variant. + (umul64_600): Likewise. + +2016-10-13 Claudiu Zissulescu + + * config/arc/arc.h (INSN_LENGTH_ALIGNMENT): Change. + +2016-10-13 Bin Cheng + + * 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 + + * tree-predcom.c (tree_predictive_commoning_loop): Skip loop that only + iterates 1 time. + +2016-10-13 Bin Cheng + + * 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_do_peeling_for_loop_bound): + (vect_do_peeling_for_alignment): + (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 + + * tree-vect-loop-manip.c (slpeel_tree_duplicate_loop_to_edge_cfg): Put + duplicated loop after its preheader and after the original loop. + +2016-10-13 Bin Cheng + + * tree-vect-loop.c (vect_analyze_loop_2): Check and skip loop if it + has no enough iterations for LOOP_VINFO_PEELING_FOR_GAPS. + +2016-10-13 Bin Cheng + + * tree-vect-loop.c (vectorizable_live_operation): Support handling + for live variable outside loop but not in lcssa form. + +2016-10-13 Bin Cheng + + * cfg.c (reset_original_copy_tables): New func. + * cfg.h (reset_original_copy_tables): New decl. + +2016-10-13 Jakub Jelinek + + PR c/77946 + * tree.h (FALLTHROUGH_LABEL_P): Use private_flag instead of + public_flag. + * varasm.c (default_binds_local_p_3): Formatting fix. + +2016-10-13 Bin Cheng + + * tree-vect-loop-manip.c (slpeel_can_duplicate_loop_p): Fix code + style issue. + (vect_do_peeling_for_loop_bound, vect_do_peeling_for_alignment): + Remove useless code. + +2016-10-13 Martin Liska + + PR tree-optimization/77943 + * tree-ssa-tail-merge.c (merge_stmts_p): Do not merge BBs with + a different EH landing pads. + +2016-10-13 Jakub Jelinek + + PR target/77957 + * hooks.h (hook_tree_void_null): Declare. + * hooks.c (hook_tree_void_null): New function. + * langhooks.c (lhd_return_null_tree_v): Remove. + * langhooks-def.h (lhd_return_null_tree_v): Remove. + * cfgexpand.c (stack_protect_prologue): If guard_decl is NULL, + set y to const0_rtx. + * function.c (stack_protect_epilogue): Likewise. + * config/tilepro/tilepro.c (TARGET_STACK_PROTECT_GUARD): Redefine + if TARGET_THREAD_SSP_OFFSET is defined. + * config/s390/s390.c (TARGET_STACK_PROTECT_GUARD): Likewise. + * config/sparc/sparc.c (TARGET_STACK_PROTECT_GUARD): Likewise. + * config/tilegx/tilegx.c (TARGET_STACK_PROTECT_GUARD): Likewise. + * config/rs6000/rs6000.c (TARGET_STACK_PROTECT_GUARD): Likewise. + * config/i386/i386.c (TARGET_STACK_PROTECT_GUARD): Likewise. + (ix86_stack_protect_guard): New function. + +2016-10-13 Richard Biener + + * dwarf2out.c (tree_add_const_value_attribute): Do not try + rtl_for_decl_init during early phase. + (gen_variable_die): Do not create locations during early phase. + (gen_label_die): Likewise. + (decls_for_scope): Do not waste time handling BLOCK_NONLOCALIZED_VARs + twice. + +2016-10-12 Richard Biener + + * tree-vrp.c (evrp_dom_walker::try_find_new_range): Renamed from + try_add_new_range and made to eturn new range. + (evrp_dom_walker::before_dom_children): Push op1 value range before + pushing op0 value range. + +2016-10-12 Bill Schmidt + + PR tree-optimization/77937 + * gimple-ssa-strength-reduction.c (analyze_increments): Use + POINTER_TYPE_P on the candidate type to determine whether + candidates in this chain require pointer arithmetic. + +2016-10-12 Eric Botcazou + + * config/visium/visium.c (visium_gimplify_va_arg): Emit a big-endian + correction if the type is smaller than a word. + (visium_select_cc_mode): Add ... fall through ... comment. + +2016-10-12 Segher Boessenkool + + * config/rs6000/rs6000.c (machine_function): Add new fields + gpr_is_wrapped_separately and lr_is_wrapped_separately. + (TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS, + TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB, + TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS, + TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS, + TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS, + TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS): Define. + (rs6000_get_separate_components): New function. + (rs6000_components_for_bb): New function. + (rs6000_disqualify_components): New function. + (rs6000_emit_prologue_components): New function. + (rs6000_emit_epilogue_components): New function. + (rs6000_set_handled_components): New function. + (rs6000_emit_prologue): Don't emit LR save if lr_is_wrapped_separately. + Don't emit GPR saves if gpr_is_wrapped_separately for that register. + (restore_saved_lr): Don't restore LR if lr_is_wrapped_separately. + (rs6000_emit_epilogue): Don't emit GPR restores if + gpr_is_wrapped_separately for that register. Don't make a + REG_CFA_RESTORE note for registers we did not restore, either. + +2016-10-12 Segher Boessenkool + + * function.c (thread_prologue_and_epilogue_insns): Call + try_shrink_wrapping_separate. Compute the prologue_seq afterwards, + if it has possibly changed. Compute the split_prologue_seq and + epilogue_seq later, too. + * shrink-wrap.c: #include cfgbuild.h and insn-config.h. + (dump_components): New function. + (struct sw): New struct. + (SW): New function. + (init_separate_shrink_wrap): New function. + (fini_separate_shrink_wrap): New function. + (place_prologue_for_one_component): New function. + (spread_components): New function. + (disqualify_problematic_components): New function. + (emit_common_heads_for_components): New function. + (emit_common_tails_for_components): New function. + (insert_prologue_epilogue_for_components): New function. + (try_shrink_wrapping_separate): New function. + * shrink-wrap.h: Declare try_shrink_wrapping_separate. + +2016-10-12 Segher Boessenkool + + * regrename.c (build_def_use): Invalidate chains that have a + REG_CFA_RESTORE on some instruction. + +2016-10-12 Segher Boessenkool + + * dce.c (delete_unmarked_insns): Don't delete instructions with + a REG_CFA_RESTORE note. + 2016-10-12 Segher Boessenkool * common.opt (-fshrink-wrap-separate): New flag.