re PR tree-optimization/92734 (Missing match.pd simplification done by fold_binary_lo...
[gcc.git] / gcc / ChangeLog
index d4a66fd0e58e5a1d86a6157dc9ed5c9dc4d79f5d..7b518af4612141b2185630c5cea63e40455e092e 100644 (file)
@@ -1,3 +1,517 @@
+2019-12-04  Jakub Jelinek  <jakub@redhat.com>
+
+       PR tree-optimization/92734
+       * match.pd ((A +- B) - A -> +- B, (A +- B) -+ B -> A,
+       A - (A +- B) -> -+ B, A +- (B -+ A) -> +- B): Handle nop_convert.
+
+2019-12-04  Kewen Lin  <linkw@gcc.gnu.org>
+
+       PR target/92760
+       * gcc/config/rs6000/rs6000.c (rs6000_preferred_simd_mode): Use
+       VECTOR_MEM_NONE_P instead of VECTOR_UNIT_NONE_P.
+
+2019-12-03  Jan Hubicka  <hubicka@ucw.cz>
+
+       * ipa-fnsummary.c: Include tree-into-ssa.h.
+       (compute_fn_summary): Call update_ssa.
+
+2019-12-03  Jan Hubicka  <hubicka@ucw.cz>
+
+       * cgraph.c (cgraph_node::verify_node): Check that calls_comdat_local
+       is set only for symbol in comdat group.
+       * symtab.c (symtab_node::dissolve_same_comdat_group_1): Clear it.
+
+2019-12-03  Jan Hubicka  <hubicka@ucw.cz>
+
+       * cgraph.c: Include tree-into-ssa.h
+       (cgraph_node::get_body): Call update_ssa.
+       * cgraphunit.c (cgraph_node::expand): Likewise.
+       * lto-streamer-in.c (input_function): Do not call update_ssa.
+
+2019-12-03  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * gimplify.c (gimplify_compound_lval): Don't gimplify and install
+       an array element size if array_element_size is already an invariant.
+       Similarly don't gimplify and install a field offset if
+       component_ref_field_offset is already an invariant.
+
+2019-12-03  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * cfgexpand.c (discover_nonconstant_array_refs_r): If an access
+       with POLY_INT_CST size is made to a fixed-size object, force the
+       object to live in memory.
+
+2019-12-03  Andrew Stubbs  <ams@codesourcery.com>
+
+       * config/gcn/gcn-valu.md: Change "vcondu" patterns to use VEC_1REG_MODE
+       for the data mode.
+
+2019-12-03  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/92758
+       * tree-ssa-forwprop.c (simplify_vector_constructor): Restore
+       operation on uniform vectors.
+
+2019-12-03  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/92645
+       * gimple-fold.c (gimple_fold_builtin_memory_op): Fold memcpy
+       from or to a properly aligned register variable.
+
+2019-12-03  Matthias Klose  <doko@ubuntu.com>
+
+       * Makefile.in (SOURCES): Add doc/lto-dump.1.
+       (install-man): Add $(LTO_DUMP_INSTALL_NAME)$(man1ext).
+       ($(LTO_DUMP_INSTALL_NAME)$(man1ext): New.
+
+2019-12-03  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/92751
+       * tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): Fail
+       when a clobber ends up in the partial-def vector.
+       (vn_reference_lookup_3): Let clobbers be handled by the
+       assignment from CTOR handling.
+
+2019-12-03  Jakub Jelinek  <jakub@redhat.com>
+
+       PR tree-optimization/92734
+       * match.pd ((CST1 - A) +- CST2 -> CST3 - A,
+       CST1 - (CST2 - A) -> CST3 + A): Handle nop casts around
+       inner subtraction.
+
+2019-12-03  Uroš Bizjak  <ubizjak@gmail.com>
+           Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/92744
+       * config/i386/i386.md (peephole2 for *swap<mode>): Use
+       general_reg_operand predicates instead of register_operand.
+
+2019-12-03  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/92645
+       * tree-ssa.c (execute_update_addresses_taken): Avoid representing
+       a full def of a vector via a BIT_INSERT_EXPR.
+
+2019-12-02  Bill Schmidt  <wschmidt@linux.ibm.com>
+
+       * config/rs6000/rs6000-call.c (rs6000_invalid_builtin): Make
+       static.
+       * config/rs6000/rs6000-internal.h (rs6000_invalid_builtin): Remove
+       decl.
+
+2019-12-02  Richard Sandiford  <richard.sandiford@arm.com>
+
+       PR middle-end/92741
+       * fold-const.c (fold_convertible_p): Check vector types more
+       thoroughly.
+
+2019-12-02  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * config/aarch64/aarch64.c (aarch64_report_sve_required): New function.
+       (aarch64_expand_mov_immediate): Use it when attempting to measure
+       the length of an SVE vector.
+       (aarch64_mov_operand_p): Only allow SVE CNT immediates when
+       SVE is enabled.
+
+2019-12-02  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * config/aarch64/aarch64-sve-builtins.h
+       (gimple_folder::force_vector): Declare.
+       * config/aarch64/aarch64-sve-builtins.cc
+       (gimple_folder::force_vector): New function.
+       * config/aarch64/aarch64-sve-builtins-base.cc
+       (svcmp_impl::fold): Likewise.
+       (svdup_impl::fold): Handle svdup_z too.
+
+2019-12-02  Martin Liska  <mliska@suse.cz>
+
+       * ipa-devirt.c (warn_types_mismatch): Use get_odr_name_for_type
+       function.
+       (debug_tree_odr_name): New.
+       * ipa-utils.h (get_odr_name_for_type): New.
+
+2019-12-02  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/92742
+       * tree-vect-loop.c (vect_fixup_reduc_chain): Do not
+       touch the def-type but verify it is consistent with the
+       original stmts.
+
+2019-12-02  Jakub Jelinek  <jakub@redhat.com>
+
+       PR tree-optimization/92712
+       * match.pd ((A * B) +- A -> (B +- 1) * A,
+       A +- (A * B) -> (1 +- B) * A): Allow optimizing signed integers
+       even when we don't know anything about range of A, but do know
+       something about range of B and the simplification won't introduce
+       new UB.
+
+2019-12-02  Feng Xue  <fxue@os.amperecomputing.com>
+
+       PR ipa/92133
+       * doc/invoke.texi (ipa-cp-max-recursive-depth): Document new option.
+       (ipa-cp-min-recursive-probability): Likewise.
+       * params.opt (ipa-cp-max-recursive-depth): New.
+       (ipa-cp-min-recursive-probability): Likewise.
+       * ipa-cp.c (ipcp_lattice<valtype>::add_value): Add two new parameters
+       val_p and unlimited.
+       (self_recursively_generated_p): New function.
+       (get_val_across_arith_op): Likewise.
+       (propagate_vals_across_arith_jfunc): Add constant propagation for
+       self-recursive function.
+       (incorporate_penalties): Do not penalize pure self-recursive function.
+       (good_cloning_opportunity_p): Dump node_is_self_scc flag.
+       (propagate_constants_topo): Set node_is_self_scc flag for cgraph node.
+       (get_info_about_necessary_edges): Relax hotness check for edge to
+       self-recursive function.
+       * ipa-prop.h (ipa_node_params): Add new field node_is_self_scc.
+
+2019-12-01  Sandra Loosemore  <sandra@codesourcery.com>
+
+       PR target/92499
+
+       * config/nios2/nios2.c (nios2_in_small_data_p): Do not consider
+       objects of flexible types to be small if they have internal linkage
+       or are declared extern.
+       * config/nios2/nios2.h (ASM_OUTPUT_ALIGNED_LOCAL): Replace with...
+       (ASM_OUTPUT_ALIGNED_DECL_LOCAL): ...this.  Use targetm.in_small_data_p
+       instead of the size of the object initializer.
+       * tree.c (flexible_array_type_p): Move from C front end, and
+       generalize to handle fields in non-C structures.
+       * tree.h (flexible_array_type_p): Declare.
+
+2019-11-30  Jan Hubicka  <hubicka@ucw.cz>
+
+       * profile-count.h (profile_count::operator<): Use IPA value for
+       comparsion.
+       (profile_count::operator>): Likewise.
+       (profile_count::operator<=): Likewise.
+       (profile_count::operator>=): Likewise.
+       * predict.c (maybe_hot_count_p): Do not convert to gcov_type.
+
+2019-11-30  Jan Hubicka  <hubicka@ucw.cz>
+
+       * ipa-inline.c (compute_max_insns): Return int64_t.
+       (inline_small_functions): Simplify.
+
+2019-11-30  Jan Hubicka  <hubicka@ucw.cz>
+
+       * tree-cfg.c (execute_fixup_cfg): Update also max_bb_count when
+       scaling happen.
+
+2019-11-30  Jan Hubicka  <hubicka@ucw.cz>
+
+       * cgraph.h (symtab_node): Add symver flag.
+       * cgraphunit.c (process_symver_attribute): New.
+       (process_common_attributes): Use process_symver_attribute.
+       * lto-cgraph.c (lto_output_node): Stream symver.
+       (lto_output_varpool_node): Stream symver.
+       (input_overwrite_node): Stream symver.
+       (input_varpool_node): Stream symver.
+       * output.h (do_assemble_symver): Decalre.
+       * symtab.c (symtab_node::dump_base): Dump symver.
+       (symtab_node::verify_base): Verify symver.
+       (symtab_node::resolve_alias): Handle symver.
+       * varasm.c (do_assemble_symver): New function.
+       * varpool.c (varpool_node::assemble_aliases): Use it.
+       * doc/extend.texi: (symver attribute): Document.
+       * config/elfos.h (ASM_OUTPUT_SYMVER_DIRECTIVE): New.
+
+2019-11-30  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * target.h (type_context_kind): New enum.
+       (verify_type_context): Declare.
+       * target.def (verify_type_context): New target hook.
+       * doc/tm.texi.in (TARGET_VERIFY_TYPE_CONTEXT): Likewise.
+       * doc/tm.texi: Regenerate.
+       * tree.c (verify_type_context): New function.
+       * config/aarch64/aarch64-protos.h (aarch64_sve::verify_type_context):
+       Declare.
+       * config/aarch64/aarch64-sve-builtins.cc (verify_type_context):
+       New function.
+       * config/aarch64/aarch64.c (aarch64_verify_type_context): Likewise.
+       (TARGET_VERIFY_TYPE_CONTEXT): Define.
+
+2019-11-30  Jan Hubicka  <hubicka@ucw.cz>
+
+       * cgraph.c (cgraph_node::dump): Dump unit_id and merged_extern_inline.
+       * cgraph.h (cgraph_node): Add unit_id and
+       merged_extern_inline.
+       (symbol_table): Add max_unit.
+       (symbol_table::symbol_table): Initialize it.
+       * cgraphclones.c (duplicate_thunk_for_node): Copy unit_id.
+       merged_comdat, merged_extern_inline.
+       (cgraph_node::create_clone): Likewise.
+       (cgraph_node::create_version_clone): Likewise.
+       * ipa-fnsummary.c (dump_ipa_call_summary): Dump info about cross module
+       calls.
+       * ipa-fnsummary.h (cross_module_call_p): New inline function.
+       * ipa-inline-analyssi.c (simple_edge_hints): Use it.
+       * ipa-inline.c (inline_small_functions): Likewise.
+       * lto-symtab.c (lto_cgraph_replace_node): Record merged_extern_inline;
+       copy merged_comdat and merged_extern_inline.
+       * lto-cgraph.c (lto_output_node): Stream out merged_comdat,
+       merged_extern_inline and unit_id.
+       (input_overwrite_node): Stream in these.
+       (input_cgraph_1): Set unit_base.
+       * lto-streamer.h (lto_file_decl_data): Add unit_base.
+       * symtab.c (symtab_node::make_decl_local): Record former_comdat.
+
+2019-11-30  Maciej W. Rozycki  <macro@wdc.com>
+
+       * gcc.c (process_command): Only warn about an ineffective `-x'
+       option if any input files have actually been supplied.
+
+2019-11-30  Maciej W. Rozycki  <macro@wdc.com>
+
+       * doc/install.texi (Options specification): Remove the list of
+       target library subdirectories supporting
+       `--enable-version-specific-runtime-libs'.  Document defaults for
+       the option.
+
+2019-11-29  Vladimir Makarov  <vmakarov@redhat.com>
+
+       PR rtl-optimization/92283
+       * lra.c (lra): Update reg notes after inheritance sub-pass and
+       before constraint sub-pass.
+
+2019-11-29  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/91003
+       * tree-vect-slp.c (vect_mask_constant_operand_p): Pass in the
+       operand number, avoid handling the non-condition operands of
+       COND_EXPRs as comparisons.
+       (vect_get_constant_vectors): Pass down the operand number.
+       (vect_get_slp_defs): Likewise.
+
+2019-11-29  Frederik Harwath  <frederik@codesourcery.com>
+
+       * gimple-match-head.c (maybe_resimplify_conditional_op): Use
+       generic_expr_could_trap_p to check if the condition of COND_EXPR or
+       VEC_COND_EXPR can trap.
+
+2019-11-29  Richard Sandiford  <richard.sandiford@arm.com>
+
+       PR tree-optimization/92677
+       * tree-vect-loop.c (vect_dissolve_slp_only_groups): Set the gap
+       to zero when dissolving a group of strided accesses.
+
+2019-11-29  Richard Sandiford  <richard.sandiford@arm.com>
+
+       PR tree-optimization/92596
+       * tree-vect-stmts.c (vectorizable_call): Punt on hybrid mask/nonmask
+       operations.
+       (vectorizable_operation): Likewise, instead of relying on
+       vect_get_mask_type_for_stmt to do this.
+       (vect_get_vector_types_for_stmt): Always return a vector type
+       immediately, rather than deferring the choice for boolean results.
+       Use a vector mask type instead of a normal vector if
+       vect_use_mask_type_p.
+       (vect_get_mask_type_for_stmt): Delete.
+       * tree-vect-loop.c (vect_determine_vf_for_stmt_1): Remove
+       mask_producers argument and special boolean_type_node handling.
+       (vect_determine_vf_for_stmt): Remove mask_producers argument and
+       update calls to vect_determine_vf_for_stmt_1.  Remove doubled call.
+       (vect_determine_vectorization_factor): Update call accordingly.
+       * tree-vect-slp.c (vect_build_slp_tree_1): Remove special
+       boolean_type_node handling.
+       (vect_slp_analyze_node_operations_1): Likewise.
+
+2019-11-29  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (stmt_vec_info::mask_precision): New field.
+       (vect_use_mask_type_p): New function.
+       * tree-vect-patterns.c (vect_init_pattern_stmt): Copy the
+       mask precision to the pattern statement.
+       (append_pattern_def_seq): Add a scalar_type_for_mask parameter
+       and use it to initialize the new stmt's mask precision.
+       (search_type_for_mask_1): Delete.
+       (search_type_for_mask): Replace with...
+       (integer_type_for_mask): ...this new function.  Use the information
+       cached in the stmt_vec_info.
+       (vect_recog_bool_pattern): Update accordingly.
+       (build_mask_conversion): Pass the scalar type associated with the
+       mask type to append_pattern_def_seq.
+       (vect_recog_mask_conversion_pattern): Likewise.  Call
+       integer_type_for_mask instead of search_type_for_mask.
+       (vect_convert_mask_for_vectype): Call integer_type_for_mask instead
+       of search_type_for_mask.
+       (possible_vector_mask_operation_p): New function.
+       (vect_determine_mask_precision): Likewise.
+       (vect_determine_stmt_precisions): Call it.
+
+2019-11-29  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vectorizer.h (get_mask_type_for_scalar_type): Replace
+       the slp_tree parameter with a group size parameter.
+       (vect_get_mask_type_for_stmt): Likewise.
+       * tree-vect-stmts.c (get_mask_type_for_scalar_type): Likewise.
+       (vect_get_mask_type_for_stmt): Likewise.
+       * tree-vect-slp.c (vect_slp_analyze_node_operations_1): Update
+       call accordingly.
+
+2019-11-29  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vect-stmts.c (vectorizable_operation): Punt early
+       on codes that are handled elsewhere.
+
+2019-11-29  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * doc/sourcebuild.texi (vect_bool_cmp): Document.
+       * tree-vect-patterns.c (search_type_for_mask_1): If neither
+       operand to a boolean comparison is a natural vector mask,
+       handle both operands like normal integers instead.
+
+2019-11-29  Richard Biener  <rguenther@suse.de>
+
+       * tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): Bail
+       out early for too large objects.
+
+2019-11-29  Martin Jambor  <mjambor@suse.cz>
+
+       PR ipa/92476
+       * ipa-cp.c (set_single_call_flag): Set node_calling_single_call in
+       the summary only if the summary exists.
+       (find_more_scalar_values_for_callers_subset): Check node_dead in
+       the summary only if the summary exists.
+       (ipcp_store_bits_results): Ignore nodes without lattices.
+       (ipcp_store_vr_results): Likewise.
+       * cgraphclones.c: Include ipa-fnsummary.h and ipa-prop.h and the
+       header files required by them.
+       (cgraph_node::expand_all_artificial_thunks): Analyze expanded thunks.
+
+2019-11-29  Richard Sandiford  <richard.sandiford@arm.com>
+
+       PR tree-optimization/92710
+       * tree-vect-stmts.c (vectorizable_simd_clone_call): Reject
+       vector mask arguments.
+
+2019-11-29  Jan Hubicka  <hubicka@ucw.cz>
+
+       * profile-count.c (profile_count::to_cgraph_frequency,
+       profile_count::to_sreal_scale): Check for compaibility of counts.
+       * profile-count.h (compatible_p): Make public; add checking for
+       global0 versus global types.
+       * cgraph.c (cgraph_node::verify_node): Verify count compatibility.
+
+2019-11-29  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/92715
+       * tree-ssa-forwprop.c (simplify_vector_constructor): Bail
+       out for uniform vectors and source vectors with less elements
+       than the destination.
+
+2019-11-29  Martin Liska  <mliska@suse.cz>
+
+       PR lto/91574
+       * ipa-devirt.c (types_same_for_odr): Check for existence
+       of TYPE_NAMEs first.
+
+2019-11-29  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/92704
+       * tree-if-conv.c (combine_blocks): Deal with virtual PHIs
+       in loops performing only loads.
+
+2019-11-29  Julian Brown  <julian@codesourcery.com>
+
+       * builtin-types.def (BT_DFLOAT32_PTR, BT_DFLOAT64_PTR,
+       BT_DFLOAT128_PTR) Remove.
+       * tree-core.h (TI_DFLOAT32_PTR_TYPE, TI_DFLOAT64_PTR_TYPE,
+       TI_DFLOAT128_PTR_TYPE): Remove.
+       * tree.c (build_common_type_nodes): Remove dfloat32_ptr_type_node,
+       dfloat64_ptr_type_node and dfloat128_ptr_type_node initialisation.
+       * tree.h (dfloat32_ptr_type_node, dfloat64_ptr_type_node,
+       dfloat128_ptr_type_node): Remove macros.
+
+2019-11-28  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       * config/rs6000/rs6000.md (*movsi_internal1): Fix formatting.  Improve
+       formatting.
+       (*movdi_internal64): Ditto.
+
+2019-11-28  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       PR target/92602
+       * config/rs6000/rs6000.md (bswap<mode>2_load for HSI): Change the
+       indexed_or_indirect_operand to be memory_operand.
+       (bswap<mode>2_store for HSI): Ditto.
+       (bswapdi2_load): Ditto.
+       (bswapdi2_store): Ditto.
+
+2019-11-28  Martin Liska  <mliska@suse.cz>
+
+       PR debug/46558
+       * dbgcnt.c (dbg_cnt_list_all_counters): Mark table
+       headers for translation.
+
+2019-11-28  Martin Liska  <mliska@suse.cz>
+
+       PR lto/92609
+       * ipa-devirt.c (warn_types_mismatch): Use TYPE_MAIN_VARIANT
+       consistently.
+
+2019-11-28  Jan Hubicka  <hubicka@ucw.cz>
+
+       * ipa-inline.c (want_early_inline_function_p): Remove leftover optimize
+       checks.
+
+2019-11-28  Jan Hubicka  <hubicka@ucw.cz>
+
+       * profile-count.c (profile_count::combine_with_ipa_count): Return
+       uninitialized count if called on ininitialized count.
+
+2019-11-28  Jan Hubicka  <hubicka@ucw.cz>
+
+       * ipa-inline-transform.c (inline_transform): Scale profile before
+       redirecting.
+
+2019-11-28  Jan Hubicka  <hubicka@ucw.cz>
+
+       * profile-count.h (profile_count::max): Work on profiles of different
+       type.
+       (profile_count::apply_scale): Be sure that ret is not local or global0
+       type if num is global.
+
+2019-11-28  Jan Hubicka  <hubicka@ucw.cz>
+
+       * profile-count.h (profile_count::max): Work on profiles of different
+       type.
+       (profile_count::apply_scale): Be sure that ret is not local or global0
+       type if num is global.
+
+2019-11-28  Martin Jambor  <mjambor@suse.cz>
+
+       PR ipa/92697
+       * cgraph.c (cgraph_node_cannot_be_local_p_1): Return true for
+       ifunc_resolvers.
+       * symtab.c (symtab_node::dump_base): Dump ifunc_resolver flag.
+       Removed trailig whitespace.
+
+2019-11-28  Jan Hubicka  <hubicka@ucw.cz>
+
+       * profile-count.h (profile_count::combine_with_ipa_count_within):
+       Declare.
+       * profile-count.c (profile_count::combine_with_ipa_count_within):
+       New.
+       * cgraphclones.c (cgraph_edge::clone, cgraph_node::create_clone): Use
+       it.
+
+2019-11-28  Jan Hubicka  <hubicka@ucw.cz>
+
+       * ipa-utils.c (ipa_merge_profiles): Be sure that all type transtions
+       of counters are done same way.
+
+2019-11-28  Jan Hubicka  <hubicka@ucw.cz>
+
+       * ipa-cp.c (update_profiling_info): Fix scaling.
+
+2019-11-28  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/92645
+       * tree-inline.c (remap_gimple_stmt): When the return value
+       is not wanted, elide GIMPLE_RETURN.
+
 2019-11-28  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/92645
        (lto_free_file_name_hash): New function.
        * lto-streamer.h (lto_free_file_name_hash): New.
 
-2019-11-07  Feng Xue <fxue@os.amperecomputing.com>
+2019-11-07  Feng Xue  <fxue@os.amperecomputing.com>
 
        PR tree-optimization/89134
        * doc/invoke.texi (min-loop-cond-split-prob): Document new --params.