re PR ipa/68721 (wrong code at -Os and above on x86_64-linux-gnu)
[gcc.git] / gcc / ChangeLog
index 0ad4e901e1c427318c25dcfce44629a6c8315c2a..b5ee0be9a537db4dcd709d845c020015570a8987 100644 (file)
@@ -1,3 +1,549 @@
+2015-12-10  Richard Biener  <rguenther@suse.de>
+
+       PR ipa/68721
+       * ipa-split.c (split_function): Record return value properly
+       when the split part doesn't set it.
+
+2015-12-10  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/68806
+       * tree-vect-loop.c (vect_analyze_loop_2): Properly detect
+       reduction chains and ignore SLP reductions.
+
+2015-12-10  Richard Biener  <rguenther@suse.de>
+
+       * tree-if-conv.c (if_convertible_loop_p_1): Do not compute
+       dependences.
+       (if_convertible_loop_p): Adjust.
+
+2015-12-10  Tom de Vries  <tom@codesourcery.com>
+
+       * tree-ssa-structalias.c (find_func_aliases_for_builtin_call): Remove
+       invalid assert.
+
+2015-12-10  Martin Liska  <mliska@suse.cz>
+
+       * tree-vect-data-refs.c: Free an overwritten dataref.
+
+2015-12-09  John David Anglin  <danglin@gcc.gnu.org>
+
+       PR target/68729
+       * config/pa/pa.c (pa_emit_move_sequence): Don't check that mode is
+       consistent with modes of the input and output operands when doing
+       reloads to and from floating point registers.  Do reload for all
+       address forms.
+
+2015-12-08  Jan Hubicka  <hubicka@ucw.cz>
+
+       PR ipa/61886
+       PR middle-end/25140
+       * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use compare_base_decls
+       (nonoverlapping_component_refs_of_decl_p): Update sanity check.
+       (decl_refs_may_alias_p): Use compare_base_decls.
+       * alias.c: Include cgraph.h
+       (rtx_equal_for_memref_p): Use rtx_equal_for_memref_p.
+       (compare_base_decls): New function.
+       (base_alias_check): Likewise.
+       (memrefs_conflict_p): Likewise.
+       (nonoverlapping_memrefs_p): Likewise.
+       * alias.h (compare_base_decls): Declare.
+
+2015-12-08  Jan Hubicka  <hubicka@ucw.cz>
+
+       PR ipa/61886
+       * ipa-visibility.c (function_and_variable_visibility): Fix vtable
+       rewritting guard.
+
+2015-12-08  Jan Hubicka  <hubicka@ucw.cz>
+
+       PR ipa/61886
+       PR middle-end/25140
+       * ipa-reference.c (ipa_reference_get_not_read_global,
+       ipa_reference_get_not_read_global): Fix WRT aliases.
+       (is_improper): Break out from ...
+       (is_proper_for_analysis): ... here; fix WRT aliases.
+       (analyze_function, generate_summary,
+       ipa_reference_write_optimization_summary,
+       ipa_reference_read_optimization_summary): Use ipa_reference_var_uid.
+       * ipa-refrence.h (ipa_reference_var_uid): New inline.
+       * tree-ssa-alias.c: Revert my accidental previous commit.
+       (ref_maybe_used_by_call_p_1,
+       call_may_clobber_ref_p_1): Use ipa_reference_var_uid.
+
+2015-12-09  Andreas Tobler  <andreast@gcc.gnu.org>
+
+       * config/rs6000/freebsd64.h: Remove the redefinition of WCHAR_TYPE.
+
+2015-12-09  Aditya Kumar  <aditya.k7@samsung.com>
+           Sebastian Pop  <s.pop@samsung.com>
+
+       * graphite-optimize-isl.c: Include isl/ast_build.h
+       (optimize_isl): Set several isl_options_set_* options.
+
+2015-12-09  Aditya Kumar  <aditya.k7@samsung.com>
+           Sebastian Pop  <s.pop@samsung.com>
+
+       * graphite-sese-to-poly.c (pdr_add_memory_accesses): Iterate in
+       the same order as adding data reference access functions.
+
+2015-12-09  Aditya Kumar  <aditya.k7@samsung.com>
+           Sebastian Pop  <s.pop@samsung.com>
+
+       * graphite-optimize-isl.c (optimize_isl): Improve dump message.
+
+2015-12-09  Marek Polacek  <polacek@redhat.com>
+
+       PR tree-optimization/66949
+       * tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Don't call
+       single_non_singleton_phi_for_edges to get the PHI from
+       factor_out_conditional_conversion.  Use NULL_TREE instead of NULL.
+       (factor_out_conditional_conversion): Adjust declaration.  Make it
+       return the newly-created PHI.
+
+2015-12-09  James Greenhalgh  <james.greenhalgh@arm.com>
+
+       * config/aarch64/aarch64-protos.h
+       (aarch64_cannot_change_mode_class): Bring back.
+       * config/aarch64/aarch64.c
+       (aarch64_cannot_change_mode_class): Likewise.
+       * config/aarch64/aarch64.h (CANNOT_CHANGE_MODE_CLASS): Likewise.
+       * config/aarch64/aarch64.md (aarch64_movdi_<mode>low): Use
+       zero_extract rather than truncate.
+       (aarch64_movdi_<mode>high): Likewise.
+
+2015-12-09  Jakub Jelinek  <jakub@redhat.com>
+
+       PR tree-optimization/68786
+       * tree-if-conv.c: Include builtins.h.
+       (predicate_mem_writes): Put result of get_object_alignment (ref)
+       into second argument's value.
+       * tree-vect-stmts.c (vectorizable_mask_load_store): Put minimum
+       pointer alignment into second argument's value.
+       * tree-data-ref.c (get_references_in_stmt): Use value of second
+       argument for build_aligned_type, and only the type to build
+       a zero second argument for MEM_REF.
+       * internal-fn.c (expand_mask_load_optab_fn,
+       expand_mask_store_optab_fn): Likewise.
+
+2015-12-09  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/68583
+       * tree-if-conv.c (if_convertible_phi_p): Drop
+       flag_tree_loop_if_convert_stores check in favor of the
+       existing any_mask_load_store check.
+       (insert_gimplified_predicates): Likewise.
+       (combine_blocks): Likewise.
+       (tree_if_conversion): Likewise.
+       (ifcvt_memrefs_wont_trap): Properly check
+       flag_tree_loop_if_convert_stores in all places that can end
+       up introducing store-data-races.
+       (if_convertible_gimple_assign_stmt_p): Remove restriction
+       on flag_tree_loop_if_convert_stores for stores we can if-convert
+       without introducing store-data-races.  Force versioning for
+       all if-converted stores.
+
+2015-12-09  Tom de Vries  <tom@codesourcery.com>
+
+       PR tree-optimization/68716
+       * tree-ssa-structalias.c (find_func_clobbers): Fix handling of
+       BUILT_IN_GOMP_PARALLEL and BUILT_IN_GOACC_PARALLEL.
+
+2015-12-09  Martin Liska  <mliska@suse.cz>
+
+       * hash-traits.h (struct typed_delete_remove): New function.
+       (typed_delete_remove ::remove): Likewise.
+       * tree-ssa-loop-ivopts.c (struct iv_common_cand): Replace
+       auto_vec with vec.
+       (record_common_cand): Replace XNEW with operator new.
+
+2015-12-09  Martin Liska  <mliska@suse.cz>
+
+       * tree-if-conv.c (ifcvt_local_dce): Replace vec with auto_vec.
+
+2015-12-09  Martin Liska  <mliska@suse.cz>
+
+       PR ipa/68790
+       * ipa-icf.c (sem_function::param_used_p): Return true
+       if ipa_node_params_sum equals to NULL.
+
+2015-12-09  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/68583
+       * tree-if-conv.c (ifc_dr): Make flags bool, add w_unconditionally
+       flag and rename predicates to w_predicate, rw_predicate and
+       base_w_predicate.
+       (DR_WRITTEN_AT_LEAST_ONCE): Rename to ...
+       (DR_BASE_W_UNCONDITIONALLY): ... this.
+       (DR_W_UNCONDITIONALLY): Add.
+       (hash_memrefs_baserefs_and_store_DRs_read): Adjust.  Compute
+       unconditionally written separately from read or written.
+       (ifcvt_memrefs_wont_trap): Properly treat reads.
+       (ifcvt_could_trap_p): Inline ...
+       (if_convertible_gimple_assign_stmt_p): ... here.  Refactor
+       to avoid code duplication.
+       (if_convertible_loop_p_1): Adjust and properly initialize
+       predicates.
+
+2015-12-09  Richard Biener  <rguenther@suse.de>
+
+       * tree-vect-stmts.c (vectorizable_load): Set new vinfo only
+       if it was not yet set.
+       * tree-vectorizer.h (set_vinfo_for_stmt): Assert we don't
+       overwrite an existing entry.
+
+2015-12-09  Chung-Lin Tang  <cltang@codesourcery.com>
+
+       * c-family/c-omp.c (c_finish_oacc_wait): Remove add_stmt() call.
+       * c/c-parser.c (c_parser_oacc_wait): Add add_stmt() call.
+       * cp/parser.c (cp_parser_oacc_wait): Add finish_expr_stmt() call.
+
+2015-12-08  Jan Hubicka  <hubicka@ucw.cz>
+
+       PR ipa/61886
+       * symtab.c (symtab_node::equal_address_to): New parameter
+       MEMORY_ACCESSED.
+       * cgraph.h (symtab_node::equal_address_to): Update prototype.
+
+2015-12-08  DJ Delorie  <dj@redhat.com>
+
+       * config/rx/rx.opt (-mjsr): Add.
+       * config/rx/predicates.md (rx_call_operand): Avoid overflowing
+       calls when -mjsr.
+       * config/rx/rx.c (rx_function_ok_for_sibcall): Likewise for
+       overflowing jumps.
+       * doc/invoke.texi (-mjsr): Document it.
+
+2015-12-08  Jan Hubicka  <hubicka@ucw.cz>
+
+       PR ipa/61886
+       * lto-streamer.h (lto_symtab_merge_decls, lto_symtab_merge_symbols,
+       lto_symtab_prevailing_decl): MOve to lto-symtab.h.
+       * lto-streamer-out.c (DFS::DFS_write_tree_body): Check that
+       DECL_ABSTRACT_ORIGIN is not error_mark_node.
+
+2015-12-08  David Malcolm  <dmalcolm@redhat.com>
+
+       * tree-nested.c (convert_tramp_reference_stmt): Fix indentation.
+
+2015-12-08  David Malcolm  <dmalcolm@redhat.com>
+
+       * tree-ssa-loop-unswitch.c (tree_unswitch_outer_loop): Fix
+       indentation.
+
+2015-12-08  Jan Hubicka  <hubicka@ucw.cz>
+
+       PR ipa/61886
+       * lto-cgraph.c (compute_ltrans_boundary): Add transparent alias targets
+       into the boundary.
+
+2015-12-08  Jan Hubicka  <hubicka@ucw.cz>
+
+       PR ipa/61886
+       * varpool.c (varpool_node::get_availability): Recurse only on
+       weakrefs with definition in the target.
+       (symbol_table::remove_unreferenced_decls): Keep aliases in the boundary.
+
+2015-12-08  Jan Hubicka  <hubicka@ucw.cz>
+
+       PR ipa/61886
+       * ipa-visibility.c (can_replace_by_local_alias): Look through
+       transparent aliases; refuse weakrefs.
+       (update_visibility_by_resolution_info): Skip transparent aliases in the
+       analysis part
+
+2015-12-08  Jan Hubicka  <hubicka@ucw.cz>
+
+       PR ipa/61886
+       * symtab.c (symtab_node::verify_base): Fix thinko in a conditional.
+       (symtab_node::noninterposable_alias): Do not accept transparent
+       aliases.
+
+2015-12-08  Nathan Sidwell  <nathan@acm.org>
+
+       * config/nvptx/nvptx.c (decl_chunk_size, decl_chunk_mode,
+       decl_offset, init_part, object_size, object_finished): Replace
+       with ...
+       (struct init_frag): ... this new struct variable.
+       (begin_decl_field, output_decl_chunk): Replace with ...
+       (output_init_frag): ... this new function.
+       (nvptx_assemble_value): Reimplement.
+       (nvptx_assemble_integer, nvptx_output_skip): Adjust.
+       (nvptx_assemble_decl_begin, nvptx_assemble_decl_end): Adjust.
+       (nvptx_output_aligned_decl): Call nvptx_assemble_decl_end.
+
+2015-12-08  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR middle-end/68291
+       PR middle-end/68292
+       * cfgexpand.c (set_rtl): Always accept mode mismatch for SSA names
+       with BLKmode promoted mode based on RESULT_DECLs.
+
+2015-12-08  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/68701
+       * config/i386/i386.c (ix86_option_override_internal): Enable
+       -maccumulate-outgoing-args when %ebp is fixed due to stack
+       realignment requirements.
+
+2015-12-08  Tom de Vries  <tom@codesourcery.com>
+
+       PR tree-optimization/68640
+       * omp-low.c (install_var_field): Clear the restrict qualifier on the var
+       type.
+
+2015-12-08  Kirill Yukhin  <kirill.yukhin@intel.com>
+
+       * config/i386/sse.md (define_insn "<avx512>_vec_dup<mode>_1"): Fix
+       assembler to make source always 128bit.
+
+2015-12-08  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c/48088
+       PR c/68657
+       * common.opt (Wframe-larger-than=): Add Warning.
+       * opts.h (control_warning_option): Add ARG argument.
+       * opts-common.c (cmdline_handle_error): New function.
+       (read_cmdline_option): Use it.
+       (control_warning_option): Likewise.  Add ARG argument.
+       If non-NULL, decode it if needed and pass through
+       to handle_generated_option.  Handle CLVC_ENUM like
+       CLVC_BOOLEAN.
+       * opts.c (common_handle_option): Adjust control_warning_option
+       caller.
+       (enable_warning_as_error): Likewise.
+
+2015-12-08  Matthew Wahab  <matthew.wahab@arm.com>
+
+       * config/aarch64/aarch64-options-extensions.def: Remove
+       AARCH64_FL_RDMA from "fp" and "simd".  Remove "pan", "lor",
+       "rdma".
+       * config/aarch64/aarch64.h (AARCH64_FL_PAN): Remove.
+       (AARCH64_FL_LOR): Remove.
+       (AARCH64_FL_RDMA): Remove.
+       (AARCH64_FL_V8_1): New.
+       (AARCH64_FL_FOR_AARCH8_1): Replace AARCH64_FL_PAN, AARCH64_FL_LOR
+       and AARCH64_FL_RDMA with AARCH64_FL_V8_1.
+       (AARCH64_ISA_RDMA): Replace AARCH64_FL_RDMA with AARCH64_FL_V8_1.
+       * doc/invoke.texi (AArch64 -march): Rewrite initial paragraph and
+       section on -march=native.  Group descriptions of permitted
+       architecture names together.  Expand description of
+       -march=armv8.1-a.
+       (AArch64 -mtune): Slightly rework section on -march=native.
+       (AArch64 -mcpu): Slightly rework section on -march=native.
+       (AArch64 Feature Modifiers): Remove "pan", "lor" and "rdma".
+       State that -march=armv8.1-a enables "crc" and "lse".
+
+2015-12-08  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * doc/invoke.texi (SPARC options): Fix typo.
+
+2015-12-08  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * config/ia64/ia64.c (ia64_emit_probe_stack_range): Adjust.
+       (output_probe_stack_range): Rotate the loop and simplify.
+
+2015-12-08  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/i386.c (ix86_emit_swsqrtsf): Cleanup
+       infinity filterning code.
+
+2015-12-08  Ilya Enkovich  <enkovich.gnu@gmail.com>
+
+       PR tree-optimization/68766
+       * tree-vectorizer.c (vectorize_loops): Check for
+       if-converted loops when debug counters are used.
+
+2015-12-07  DJ Delorie  <dj@redhat.com>
+
+       * config/rl78/constraints.md (Wfr): Change to be a non-memory
+       constraint.
+       * config/rl78/rl78-protos.h (rl78_one_far_p): Declare.
+       * config/rl78/rl78.c (rl78_one_far_p): Define.
+       * config/rl78/rl78-virt (movqi_virt): Fix far memory
+       alternatives.
+       (movhi_virt): Likewise.
+       (zero_extendqihi2_virt): Likewise.
+       (extendqihi2_virt): Likewise.
+       (add<mode>3_virt): Likewise.
+       (sub<mode>3_virt): Likewise.
+       (andqi3_virt): Likewise.
+       (iorqi3_virt): Likewise.
+       (xorqi3_virt): Likewise.
+       * config/rl78/rl78-real.md (bf,br): Use long forms to avoid reloc
+       overflow in large files.
+
+2015-12-07  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR target/63668
+       * doc/invoke.texi (SPARC options): Document -mstd-struct-return.
+       * config/sparc/sparc.c (sparc_struct_value_rtx): Minor tweaks.
+       * config/sparc/sparc.h (CALL_REALLY_USED_REGISTERS): Define.
+       * config/sparc/sparc.opt (mstd-struct-return): Accept negative.
+
+2015-12-07  Steve Ellcey  <sellcey@imgtec.com>
+
+       * reorg.c (optimize_skip): Do not put frame related instructions
+       in annulled delay slots.
+       (steal_delay_list_from_target): Ditto.
+       (fill_slots_from_thread): Ditto.
+
+2015-12-07  Evandro Menezes  <e.menezes@samsung.com>
+
+       * config/aarch64/aarch64-cores.def: Use the Exynos M1 sched model.
+       * config/aarch64/aarch64.md: Include "exynos-m1.md".
+       * config/arm/arm.md: Likewise.
+       * config/arm/exynos-m1.md: New file.
+
+2015-12-07  Jan Hubicka  <hubicka@ucw.cz>
+
+       * fold-const.c (operand_equal_p): Drop flag_strict_aliasing check.
+
+2015-12-07  Nathan Sidwell  <nathan@acm.org>
+
+       * config//nvptx/nvptx.c (write_return): New.
+       (write_fn_proto, nvptx_declare_function_name): Call it.
+
+2015-12-07  Jan Hubicka  <hubicka@ucw.cz>
+
+       PR ipa/61886
+       * symtab.c (ultimate_transparent_alias_target): New inline function.
+       (symbol_table::assembler_names_equal_p): New method; break out from ...
+       (symbol_table::decl_assembler_name_equal): ... here.
+       (symbol_table::change_decl_assembler_name): Also update names and
+       translation links of transparent aliases.
+       (symtab_node::dump_base): Dump transparent_alias.
+       (symtab_node::verify_base): Implement basic transparent alias
+       verification.
+       (symtab_node::make_decl_local): Support localization of weakrefs;
+       recurse to transparent aliases; set TREE_STATIC.
+       (symtab_node::ultimate_alias_target_1): Handle visibility of
+       transparent aliases.
+       (symtab_node::resolve_alias): New parmaeter transparent; handle
+       transparent aliases; recurse to aliases of aliases to fix comdat
+       groups.
+       (symtab_node::get_partitioning_class): Handle transparent aliases.
+       * ipa-visibility.c (cgraph_externally_visible_p,
+       varpool_node::externally_visible_p): Visibility of transparent alias
+       depends on its target.
+       (function_and_variable_visibility): Do not tweak visibility of
+       transparent laiases.
+       (function_and_variable_visibility): Likewise.
+       * ipa.c (symbol_table::remove_unreachable_nodes): Clear
+       transparent_alias flag.
+       * alias.c (cgraph_node::create_alias, cgraph_node::get_availability):
+       Support transparent aliases.
+       * cgraph.h (symtab_node): Update prototype of resolve_alias;
+       add transparent_alias flag.
+       (symbol_table: Add assembler_names_equal_p.
+       (symtab_node::real_symbol_p): Skip transparent aliases.
+       * cgraphunit.c (cgraph_node::reset): Reset transparent_alias flag.
+       (handle_alias_pairs): Set transparent_alias for weakref.
+       (cgraph_node::assemble_thunks_and_aliases): Do not asemble transparent
+       aliases.
+       * lto-cgraph.c (lto_output_node): When outputting same_comdat_group
+       skip symbols not put into boundary; stream transparent_alias.
+       (lto_output_varpool_node): Likewise.
+       (input_overwrite_node, input_varpool_node): Stream transparent alias.
+       * varpool.c (ctor_for_folding, varpool_node::get_availability,
+       varpool_node::assemble_aliases,
+       symbol_table::remove_unreferenced_decls): Handle transparent aliase.
+       (varpool_node::create_alias): Set transparent_alias.
+
+2015-12-07  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR middle-end/68291
+       PR middle-end/68292
+       * cfgexpand.c (set_rtl): Always accept PARALLELs with BLKmode for
+       SSA names based on RESULT_DECLs.
+       * function.c (expand_function_start): Do not create BLKmode REGs
+       for GIMPLE registers when coalescing is enabled.
+
+2015-12-07  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+       * final.c (shorten_branches): Fix check for basic asm.
+       * ipa-icf-gimple.c (func_checker::compare_gimple_asm): Add check for
+       basic asm.
+
+2015-12-07  Nathan Sidwell  <nathan@acm.org>
+
+       * config/nvptx/nvptx.c (nvptx_output_call_insn): Emit trap after no
+       return call.
+
+2015-12-07  David Malcolm  <dmalcolm@redhat.com>
+
+       * pretty-print.c (text_info::set_range): Rename to...
+       (text_info::set_location): ...this, converting 2nd param
+       from source_range to a location_t.
+       * pretty-print.h (text_info::set_location): Convert
+       from inline function to external definition.
+       (text_info::set_range): Delete.
+
+2015-12-07  Nathan Sidwell  <nathan@acm.org>
+
+       * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Look inside
+       complex and vector types.  Cope with packed structs.
+
+2015-12-07  Kirill Yukhin  <kirill.yukhin@intel.com>
+
+       PR target/68627
+       * config/i386/sse.md: Make 'v' alternative work on 'avx512f' ISA only.
+       Force destination to 512 bits register.
+
+2015-12-07  Kirill Yukhin  <kirill.yukhin@intel.com>
+
+       PR target/68633
+       * config/i386/sse.md (define_insn "kunpckhi"): Fix operands order.
+       (define_insn "kunpcksi"): Ditto.
+       (define_insn "kunpckdi"): Ditto.
+
+2015-12-06  Kaz Kojima  <kkojima@gcc.gnu.org>
+
+       * config/sh/sh.md (rsqrtsf2): Adjust for canonical form with unspec.
+
+2015-12-06  Victoria Stepanyan  <victoria.stepanyan@amd.com>
+
+       * common/config/i386/i386-common.c
+       (OPTION_MASK_ISA_CLZERO_SET): New.
+       (ix86_handle_option): Handle clzero.
+       * config.gcc (i[34567]86-*-*): Add clzerointrin.h,
+       (x86_64-*-*): Likewise.
+       * config/i386/clzerointrin.h: New header.
+       * config/i386/cpuid.h (bit_CLZERO):  Define.
+       * config/i386/driver-i386.c (host_detect_local_cpu): Detect
+       CLZERO support.
+       * config/i386/i386.opt (clzero): New.
+       * config/i386/i386-c.c: Define __CLZERO__ if needed.
+       * config/i386/i386.c (ix86_target_string): Define -mclzero option.
+       (PTA_CLZERO): New.
+       (ix86_option_override_internal): Handle new option.
+       (processor_alias_table): Added PTA_CLZERO.
+       (ix86_valid_target_attribute_inner_p): Add OPT_mclzero.
+       (ix86_builtins): Add IX86_BUILTIN_CLZERO, IX86_BUILTIN_CLZERO.
+       (ix86_expand_builtin): Handle IX86_BUILTIN_CLZERO and
+       IX86_BUILTIN_CLZERO  built-ins.
+       * config/i386/i386.h (TARGET_CLZERO):  New.
+       * config/i386/i386.md (unspecv): Add UNSPEC_CLZERO.
+       (clzero):  New pattern.
+       (clzero_<mode>): New pattern.
+       * config/i386/x86intrin.h: Include clzerointrin.h.
+       * doc/extend.texi: Document clzero builtins.
+       * doc/invoke.texi: Document -mclzero option.
+
+2015-12-05  Jan Hubicka  <hubicka@ucw.cz>
+
+       * ipa-icf.c (sem_function::merge): Check that local_original exists.
+
+2015-12-05  David Edelsohn  <dje.gcc@gmail.com>
+
+       PR target/68609
+       * config/rs6000/rs6000-protos.h (rs6000_emit_swsqrt): Rename and add
+       bool arguement.
+       * config/rs6000/rs6000.c (rs6000_emit_swsqrt): Rename. Add
+       non-reciporcal path.
+       * config/rs6000/rs6000.md (rsqrt<mode>2): Call new function name.
+       (sqrt<mode>2): Replace define_insn with define_expand that may call
+       rs6000_emit_swsqrt.
+
 2015-12-04  Aditya Kumar  <aditya.k7@samsung.com>
            Sebastian Pop  <s.pop@samsung.com>
 
 
 2015-12-04  Nathan Sidwell  <nathan@acm.org>
 
-       * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): New,
-       replacing ...
+       * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): New, replacing ...
        (init_output_initializer): ... this.
        (nvptx_output_aligned_decl, nvptx_asm_declare_constant_name,
        nvptx_declare_object_name, nvptx_assemble_undefined_decl): Use
 
 2015-12-04  Segher Boessenkool  <segher@kernel.crashing.org>
 
-       * (cstore<mode>4_unsigned): Use gpc_reg_operand instead of
-       register_operand.  Remove empty constraints.  Use std::swap.
+       * config/rs6000/rs6000.md (cstore<mode>4_unsigned): Use gpc_reg_operand
+       instead of register_operand.  Remove empty constraints.  Use std::swap.
        (cstore_si_as_di, cstore<mode>4_signed_imm,
        cstore<mode>4_unsigned_imm, cstore<mode>4 for GPR): Use
        gpc_reg_operand instead of register_operand.
 2015-12-04  Nick Clifton  <nickc@redhat.com>
 
        * config.gcc (extra_gcc_objs): Define for MSP430.
-        * common/config/msp430/msp430-common.c (msp430_handle_option):
-       Pass both -mmcu and -mcpu on to the back end if they are both
-       defined.
+       * common/config/msp430/msp430-common.c (msp430_handle_option):
+       Pass both -mmcu and -mcpu on to the back end if they are both defined.
        * config/msp430/msp430.c (hwmult_name): New function.
-        (msp430_option_override): If an unrecognised MCU name is
+       (msp430_option_override): If an unrecognised MCU name is
        detected only warn if the user has not provided suitable
-        -mhwmult and -mcpu options.  Use msp430_warn_mcu to control
+       -mhwmult and -mcpu options.  Use msp430_warn_mcu to control
        warning messages.  Generate warnings about conflicts between
        -mmcu and -mcpu and -mhwmult options.
        If neither -mcpu nor -mmcu have been specified but -mhwmult=
        * config/msp430/driver-msp430.c: New file.
        * config/msp430/msp430.opt (warn-mcu): New option.
        * doc/invoke.texi: Update description of -mhwmult=auto.
-        Document -mwarn-mcu option.
+       Document -mwarn-mcu option.
 
 2015-12-04  Segher Boessenkool  <segher&kernel.crashing.org>
 
-       * (cstore<mode>4_signed): New expander.
+       * config/rs6000/rs6000.md (cstore<mode>4_signed): New expander.
        (cstore<mode>4): Call it.
 
 2015-12-04  Jakub Jelinek  <jakub@redhat.com>
        * doc/generic.texi (Blocks): Document new handling of VLAs.
 
 2015-12-04  Eric Botcazou  <ebotcazou@adacore.com>
-            Tristan Gingold  <gingold@adacore.com>
+           Tristan Gingold  <gingold@adacore.com>
 
        PR middle-end/65958
        * config/aarch64/aarch64-protos.h (aarch64_output_probe_stack-range):
        (nvptx_addr_space_from_sym): Delete.
        (nvptx_encode_section_info): New.
        (section_for_sym, section_for_decl): New.
-       (nvptx_maybe_convert_symbolic_operand): Get data area from symbol
-       flags,
+       (nvptx_maybe_convert_symbolic_operand): Get data area from symbol flags.
        (nvptx_section_from_addr_space): Delete.
        (nvptx_section_for_decl): Delete.
        (nvptx_output_aligned, nvptx_declare_object_name,
 2015-12-02  Aditya Kumar  <aditya.k7@samsung.com>
            Sebastian Pop  <s.pop@samsung.com>
 
-       * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Handle isl_ast_op_zdiv_r.
-        (gcc_expression_from_isl_expr_op): Same.
+       * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Handle
+       isl_ast_op_zdiv_r.
+       (gcc_expression_from_isl_expr_op): Same.
 
 2015-12-02  Aditya Kumar  <aditya.k7@samsung.com>
            Sebastian Pop  <s.pop@samsung.com>
        * omp-low.c (install_var_field, scan_sharing_clauses): Add and handle
        parameter base_pointers_restrict.
        (omp_target_base_pointers_restrict_p): New function.
-       (scan_omp_target): Call scan_sharing_clauses with base_pointers_restrict
-       arg.
+       (scan_omp_target): Call scan_sharing_clauses with
+       base_pointers_restrict arg.
 
 2015-12-02  Nathan Sidwell  <nathan@acm.org>
 
        (nvptx_underlying_object_mode): Delete.
        * config/nvptx/nvptx.c (nvptx_underlying_object_mode): Delete.
        (output_reg): New.
-       (nvptx_declare_function_name): Use output_reg.  Remove punning
-       buffer.
+       (nvptx_declare_function_name): Use output_reg.  Remove punning buffer.
        (nvptx_output_mov_insn): New.
        (nvptx_print_operand): Separate SUBREG handling, remove 'f' case,
        Use output_reg. Merge 't' and 'u' handling.
        UNSPEC_CPLX_HIGHPART): Delete.
        (*mov<mode>_insn [QHSDIM): Remove unnecessary constraints, use
        nvptx_output_mov_insn.
-       (*mov<mode>_insn [SDFM): Reorder constraints to match integer
-       moc.  Use nvptx_output_mov_insn.
-       (highpartscsf2,  set_highpartscsf2, lowpartscsf2,
-       set_lowpartscsf2): Delete.
+       (*mov<mode>_insn [SDFM): Reorder constraints to match integer moc.
+       Use nvptx_output_mov_insn.
+       (highpartscsf2,  set_highpartscsf2, lowpartscsf2, set_lowpartscsf2):
+       Delete.
        (mov<mode> [SDCM]): Delete.
 
 2015-12-02  Richard Biener  <rguenther@suse.de>
 2015-12-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
 
        * config/s390/predicates.md (const_mask_operand): New predicate.
-       * config/s390/s390-builtins.def: Set a smaller bitmask for a few builtins.
+       * config/s390/s390-builtins.def: Set a smaller bitmask
+       for a few builtins.
        * config/s390/vector.md: Change predicate from immediate_operand
        to either const_int_operand or const_mask_operand.  Add special
        insn conditions on patterns which have to exclude certain values.
 2015-12-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
 
        * config/s390/vector.md ("*vec_splats<mode>"): Fix constraint
-       latter I->K.
+       letter I->K.
 
 2015-12-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
 
-       * config/s390/s390.md ("bswap<mode>2"): Add support for strv and
-       strvg.
+       * config/s390/s390.md ("bswap<mode>2"): Add support for strv and strvg.
        ("bswaphi2"): New pattern.
        New splitter for HI reg-reg bswap.
 
 2015-11-27  Jiri Engelthaler  <engycz@gmail.com>
 
        PR driver/68029
-       * opts-common.c (prune_options): Don't ignore -fdiagnostics-color 
+       * opts-common.c (prune_options): Don't ignore -fdiagnostics-color
        if it is the first parameter.
 
 2015-12-01  Richard Sandiford  <richard.sandiford@arm.com>
            Cesar Philippidis  <cesar@codesourcery.com>
            James Norris  <James_Norris@mentor.com>
 
-       * gimple-pretty-print.c (dump_gimple_omp_target): Add host_data
-       support.
+       * gimple-pretty-print.c (dump_gimple_omp_target): Add host_data support.
        * gimple.h (gf_mask): Add GF_OMP_TARGET_KIND_OACC_HOST_DATA.
        (is_gimple_omp_oacc): Add support for above.
        * gimplify.c (omp_region_type): Add ORT_ACC_HOST_DATA.
        (lower_omp_target): Skip over outer host_data regions when looking
        up decls. Support use_device.
        (make_gimple_omp_edges): Support host_data.
-       * tree-nested.c (convert_nonlocal_omp_clauses): Add use_device
-       clause.
+       * tree-nested.c (convert_nonlocal_omp_clauses): Add use_device clause.
 
 2015-12-01  Marek Polacek  <polacek@redhat.com>
 
        PR middle-end/68582
-       * cgraphunit.c (check_global_declaration): Only depend on TREE_THIS_VOLATILE
-       for VAR_DECLs.
+       * cgraphunit.c (check_global_declaration): Only depend
+       on TREE_THIS_VOLATILE for VAR_DECLs.
 
 2015-12-01  Richard Sandiford  <richard.sandiford@arm.com>
 
        PR target/68617
        * config/arm/arm.opt (unaligned_access): Save.
        * config/arm/arm-c.c (__ARM_FEATURE_UNALIGNED): Conditionally define.
-       * config/arm/arm.c (arm_option_override): Move unaligned_access setting
+       * config/arm/arm.c (arm_option_override): Move unaligned_access setting.
        (arm_option_override_internal): ... here.
        * config/arm/arm.h (TARGET_32BIT_P): New macro.
 
 2015-11-30  Richard Biener  <rguenther@suse.de>
 
        PR c/68162
-       * dwarf2out.c (gen_type_die_with_usage): Keep variant types
-       of arrays.
+       * dwarf2out.c (gen_type_die_with_usage): Keep variant types of arrays.
 
 2015-11-30  Venkataramanan Kumar  <Venkataramanan.Kumar@amd.com>
 
-       * tree-if-conv.c (struct ifc_dr): Add new tree
-       base_predicate field.
+       * tree-if-conv.c (struct ifc_dr): Add new tree base_predicate field.
        (hash_memrefs_baserefs_and_store_DRs_read_written_info): Hash
        base ref, DR pairs and store base_predicate for write type DRs.
        (ifcvt_memrefs_wont_trap): Guard checks with
 
 2015-11-29  Jan Hubicka  <hubicka@ucw.cz>
 
-       * ipa-devirt.c (add_type_duplicate): Remove redundant ODR violation
-       dump
+       * ipa-devirt.c (add_type_duplicate): Remove redundant
+       ODR violation dump.
 
 2015-11-29  David Edelsohn  <dje.gcc@gmail.com>
 
        PR tree-optimization/68559
        * tree-vect-data-refs.c (vect_analyze_group_access_1): Move
        peeling for gap checks ...
-       * tree-vect-stmts.c (vectorizable_load): ... here and relax
-       for SLP.
+       * tree-vect-stmts.c (vectorizable_load): ... here and relax for SLP.
        * tree-vect-loop.c (vect_analyze_loop_2): Re-set
        LOOP_VINFO_PEELING_FOR_GAPS before re-trying without SLP.
 
 2015-11-27  Nathan Sidwell  <nathan@acm.org>
 
-       * config/nvptx/nvptx-protos.h (nvptx_record_needed_decl): Don't
-       declare.
+       * config/nvptx/nvptx-protos.h (nvptx_record_needed_decl): Don't declare.
        * config/nvptx/nvptx.c (write_func_decl_from_insn): Move earlier.
        (nvptx_record_fndecl): Don't return value, remove force
        argument. Require fndecl.
 
        * ipa-devirt.c (ipa_devirt): Use auto_vec instead
        of a local-scope vec.
-       (struct final_warning_record): Use auto_vec instead
-       of vec.
+       (struct final_warning_record): Use auto_vec instead of vec.
 
 2015-11-27  Richard Biener  <rguenther@suse.de>
 
        broken.
 
 2015-11-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
-            Bernd Schmidt  <bschmidt@redhat.com>
+           Bernd Schmidt  <bschmidt@redhat.com>
 
        PR rtl-optimization/67226
        * calls.c (store_one_arg): Take into account
        TV_IPA_LTO_OUTPUT): New.
        * lto-compress.c: Include timevar.h
        (lto_end_compression, lto_end_uncompression): Add timers.
-       * langhooks.c: Include timevar.h
+       * langhooks.c: Include timevar.h.
        (lhd_append_data): Add timer.
 
 2015-11-25  Jan Hubicka  <hubicka@ucw.cz>
 
        * config/nvptx/nvptx.md (load_arg_reg<mode>): Arg number
        constraint is 'n'.
-       * config/nvptx/nvptx.c (write_one_arg): Use 'i' directly as arg
-       number.
+       * config/nvptx/nvptx.c (write_one_arg): Use 'i' directly as arg number.
        (nvptx_write_function_decl): Number args from 0.
        (nvptx_declare_function_name): Likewise.
        (nvptx_function_incoming_arg): Likewise.
        * tree-ssa-uncprop.c (val_ssa_equiv_hash_traits): Likewise.
 
 2015-11-24  Richard Biener  <rguenther@suse.de>
-            Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+           Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
 
        PR middle-end/68375
        * cfgloop.c (get_loop_body_in_bfs_order): Restructure loop to avoid
        are going to instrument it and it may copy pointers.
 
 2015-11-24  Bernd Schmidt <bschmidt@redhat.com>
-            Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+           Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
 
        PR rtl-optimization/68194
        PR rtl-optimization/68328
            Sebastian Pop  <s.pop@samsung.com>
 
        PR tree-optimization/68314
-       * graphite-optimize-isl.c (optimize_isl): Do not call isl_union_map_is_equal.
+       * graphite-optimize-isl.c (optimize_isl): Do not call
+       isl_union_map_is_equal.
        * graphite-poly.c (new_scop): Remove original_schedule.
        (free_scop): Same.
        * graphite-poly.h (struct scop): Same.
-       * graphite-sese-to-poly.c (build_pbb_minimal_scattering_polyhedrons): Remove.
+       * graphite-sese-to-poly.c (build_pbb_minimal_scattering_polyhedrons):
+       Remove.
        (build_pbb_scattering_polyhedrons): Add back.
        (build_scop_minimal_scattering): Remove.
        (build_scop_scattering): Add back.
 
 2015-11-23  Robin Dapp  <rdapp@linux.vnet.ibm.com>
 
-        * config/s390/s390.h: Add new symref flags, _NOTALIGN2 etc.
-        * config/s390/s390.c (s390_check_symref_alignment): Use new
-        symref flags, early abort on wrong alignment
-        (s390_secondary_reload): Use new symref flags.
-        (s390_encode_section_info): Likewise.
-        * config/s390/predicates.md: Likewise.
+       * config/s390/s390.h: Add new symref flags, _NOTALIGN2 etc.
+       * config/s390/s390.c (s390_check_symref_alignment): Use new
+       symref flags, early abort on wrong alignment
+       (s390_secondary_reload): Use new symref flags.
+       (s390_encode_section_info): Likewise.
+       * config/s390/predicates.md: Likewise.
 
 2015-11-23  Kugan Vivekanandarajah  <kuganv@linaro.org>