i386: Fix wrong-code x86 issue with avx512{f,vl} fma PR93009
[gcc.git] / gcc / ChangeLog
index 9e9f8221af4fd57cd65a6b1e8f722e7dc317292b..356bc63c6d0ace7c703099158ec045912712b89f 100644 (file)
@@ -1,3 +1,266 @@
+2020-01-15  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/93009
+       * config/i386/sse.md
+       (*<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name>_bcst_1,
+       *<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name>_bcst_1,
+       *<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name>_bcst_1,
+       *<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name>_bcst_1): Use
+       just a single alternative instead of two, make operands 1 and 2
+       commutative.
+
+2020-01-14  Jan Hubicka  <hubicka@ucw.cz>
+
+       PR lto/91576
+       * ipa-devirt.c (odr_types_equivalent_p): Compare TREE_ADDRESSABLE and
+       TYPE_MODE.
+
+2020-01-14  David Malcolm  <dmalcolm@redhat.com>
+
+       * Makefile.in (lang_opt_files): Add analyzer.opt.
+       (ANALYZER_OBJS): New.
+       (OBJS): Add digraph.o, graphviz.o, ordered-hash-map-tests.o,
+       tristate.o and ANALYZER_OBJS.
+       (TEXI_GCCINT_FILES): Add analyzer.texi.
+       * common.opt (-fanalyzer): New driver option.
+       * config.in: Regenerate.
+       * configure: Regenerate.
+       * configure.ac (--disable-analyzer, ENABLE_ANALYZER): New option.
+       (gccdepdir): Also create depdir for "analyzer" subdir.
+       * digraph.cc: New file.
+       * digraph.h: New file.
+       * doc/analyzer.texi: New file.
+       * doc/gccint.texi ("Static Analyzer") New menu item.
+       (analyzer.texi): Include it.
+       * doc/invoke.texi ("Static Analyzer Options"): New list and new section.
+       ("Warning Options"): Add static analysis warnings to the list.
+       (-Wno-analyzer-double-fclose): New option.
+       (-Wno-analyzer-double-free): New option.
+       (-Wno-analyzer-exposure-through-output-file): New option.
+       (-Wno-analyzer-file-leak): New option.
+       (-Wno-analyzer-free-of-non-heap): New option.
+       (-Wno-analyzer-malloc-leak): New option.
+       (-Wno-analyzer-possible-null-argument): New option.
+       (-Wno-analyzer-possible-null-dereference): New option.
+       (-Wno-analyzer-null-argument): New option.
+       (-Wno-analyzer-null-dereference): New option.
+       (-Wno-analyzer-stale-setjmp-buffer): New option.
+       (-Wno-analyzer-tainted-array-index): New option.
+       (-Wno-analyzer-use-after-free): New option.
+       (-Wno-analyzer-use-of-pointer-in-stale-stack-frame): New option.
+       (-Wno-analyzer-use-of-uninitialized-value): New option.
+       (-Wanalyzer-too-complex): New option.
+       (-fanalyzer-call-summaries): New warning.
+       (-fanalyzer-checker=): New warning.
+       (-fanalyzer-fine-grained): New warning.
+       (-fno-analyzer-state-merge): New warning.
+       (-fno-analyzer-state-purge): New warning.
+       (-fanalyzer-transitivity): New warning.
+       (-fanalyzer-verbose-edges): New warning.
+       (-fanalyzer-verbose-state-changes): New warning.
+       (-fanalyzer-verbosity=): New warning.
+       (-fdump-analyzer): New warning.
+       (-fdump-analyzer-callgraph): New warning.
+       (-fdump-analyzer-exploded-graph): New warning.
+       (-fdump-analyzer-exploded-nodes): New warning.
+       (-fdump-analyzer-exploded-nodes-2): New warning.
+       (-fdump-analyzer-exploded-nodes-3): New warning.
+       (-fdump-analyzer-supergraph): New warning.
+       * doc/sourcebuild.texi (dg-require-dot): New.
+       (dg-check-dot): New.
+       * gdbinit.in (break-on-saved-diagnostic): New command.
+       * graphviz.cc: New file.
+       * graphviz.h: New file.
+       * ordered-hash-map-tests.cc: New file.
+       * ordered-hash-map.h: New file.
+       * passes.def (pass_analyzer): Add before
+       pass_ipa_whole_program_visibility.
+       * selftest-run-tests.c (selftest::run_tests): Call
+       selftest::ordered_hash_map_tests_cc_tests.
+       * selftest.h (selftest::ordered_hash_map_tests_cc_tests): New
+       decl.
+       * shortest-paths.h: New file.
+       * timevar.def (TV_ANALYZER): New timevar.
+       (TV_ANALYZER_SUPERGRAPH): Likewise.
+       (TV_ANALYZER_STATE_PURGE): Likewise.
+       (TV_ANALYZER_PLAN): Likewise.
+       (TV_ANALYZER_SCC): Likewise.
+       (TV_ANALYZER_WORKLIST): Likewise.
+       (TV_ANALYZER_DUMP): Likewise.
+       (TV_ANALYZER_DIAGNOSTICS): Likewise.
+       (TV_ANALYZER_SHORTEST_PATHS): Likewise.
+       * tree-pass.h (make_pass_analyzer): New decl.
+       * tristate.cc: New file.
+       * tristate.h: New file.
+
+2020-01-14  Uroš Bizjak  <ubizjak@gmail.com>
+
+       PR target/93254
+       * config/i386/i386.md (*movsf_internal): Require SSE2 ISA for
+       alternatives 9 and 10.
+
+2020-01-14  David Malcolm  <dmalcolm@redhat.com>
+
+       * attribs.c (excl_hash_traits::empty_zero_p): New static constant.
+       * gcov.c (function_start_pair_hash::empty_zero_p): Likewise.
+       * graphite.c (struct sese_scev_hash::empty_zero_p): Likewise.
+       * hash-map-tests.c (selftest::test_nonzero_empty_key): New selftest.
+       (selftest::hash_map_tests_c_tests): Call it.
+       * hash-map-traits.h (simple_hashmap_traits::empty_zero_p):
+       New static constant, using the value of = H::empty_zero_p.
+       (unbounded_hashmap_traits::empty_zero_p): Likewise, using the value
+       from default_hash_traits <Value>.
+       * hash-map.h (hash_map::empty_zero_p): Likewise, using the value
+       from Traits.
+       * hash-set-tests.c (value_hash_traits::empty_zero_p): Likewise.
+       * hash-table.h (hash_table::alloc_entries): Guard the loop of
+       calls to mark_empty with !Descriptor::empty_zero_p.
+       (hash_table::empty_slow): Conditionalize the memset call with a
+       check that Descriptor::empty_zero_p; otherwise, loop through the
+       entries calling mark_empty on them.
+       * hash-traits.h (int_hash::empty_zero_p): New static constant.
+       (pointer_hash::empty_zero_p): Likewise.
+       (pair_hash::empty_zero_p): Likewise.
+       * ipa-devirt.c (default_hash_traits <type_pair>::empty_zero_p):
+       Likewise.
+       * ipa-prop.c (ipa_bit_ggc_hash_traits::empty_zero_p): Likewise.
+       (ipa_vr_ggc_hash_traits::empty_zero_p): Likewise.
+       * profile.c (location_triplet_hash::empty_zero_p): Likewise.
+       * sanopt.c (sanopt_tree_triplet_hash::empty_zero_p): Likewise.
+       (sanopt_tree_couple_hash::empty_zero_p): Likewise.
+       * tree-hasher.h (int_tree_hasher::empty_zero_p): Likewise.
+       * tree-ssa-sccvn.c (vn_ssa_aux_hasher::empty_zero_p): Likewise.
+       * tree-vect-slp.c (bst_traits::empty_zero_p): Likewise.
+       * tree-vectorizer.h
+       (default_hash_traits<scalar_cond_masked_key>::empty_zero_p):
+       Likewise.
+
+2020-01-14  Kewen Lin  <linkw@gcc.gnu.org>
+
+       * cfgloopanal.c (average_num_loop_insns): Free bbs when early return,
+       fix typo on return value.
+
+2020-01-14  Xiong Hu Luo  <luoxhu@linux.ibm.com>
+
+       PR ipa/69678
+       * cgraph.c (symbol_table::create_edge): Init speculative_id and
+       target_prob.
+       (cgraph_edge::make_speculative): Add param for setting speculative_id
+       and target_prob.
+       (cgraph_edge::speculative_call_info): Update comments and find reference
+       by speculative_id for multiple indirect targets.
+       (cgraph_edge::resolve_speculation): Decrease the speculations
+       for indirect edge, drop it's speculative if not direct target
+       left. Update comments.
+       (cgraph_edge::redirect_call_stmt_to_callee): Likewise.
+       (cgraph_node::dump): Print num_speculative_call_targets.
+       (cgraph_node::verify_node): Don't report error if speculative
+       edge not include statement.
+       (cgraph_edge::num_speculative_call_targets_p): New function.
+       * cgraph.h (int common_target_id): Remove.
+       (int common_target_probability): Remove.
+       (num_speculative_call_targets): New variable.
+       (make_speculative): Add param for setting speculative_id.
+       (cgraph_edge::num_speculative_call_targets_p): New declare.
+       (target_prob): New variable.
+       (speculative_id): New variable.
+       * ipa-fnsummary.c (analyze_function_body): Create and duplicate
+         call summaries for multiple speculative call targets.
+       * cgraphclones.c (cgraph_node::create_clone): Clone speculative_id.
+       * ipa-profile.c (struct speculative_call_target): New struct.
+       (class speculative_call_summary): New class.
+       (class speculative_call_summaries): New class.
+       (call_sums): New variable.
+       (ipa_profile_generate_summary): Generate indirect multiple targets summaries.
+       (ipa_profile_write_edge_summary): New function.
+       (ipa_profile_write_summary): Stream out indirect multiple targets summaries.
+       (ipa_profile_dump_all_summaries): New function.
+       (ipa_profile_read_edge_summary): New function.
+       (ipa_profile_read_summary_section): New function.
+       (ipa_profile_read_summary): Stream in indirect multiple targets summaries.
+       (ipa_profile): Generate num_speculative_call_targets from
+       profile summaries.
+       * ipa-ref.h (speculative_id): New variable.
+       * ipa-utils.c (ipa_merge_profiles): Update with target_prob.
+       * lto-cgraph.c (lto_output_edge): Remove indirect common_target_id and
+       common_target_probability.   Stream out speculative_id and
+       num_speculative_call_targets.
+       (input_edge): Likewise.
+       * predict.c (dump_prediction): Remove edges count assert to be
+       precise.
+       * symtab.c (symtab_node::create_reference): Init speculative_id.
+       (symtab_node::clone_references): Clone speculative_id.
+       (symtab_node::clone_referring): Clone speculative_id.
+       (symtab_node::clone_reference): Clone speculative_id.
+       (symtab_node::clear_stmts_in_references): Clear speculative_id.
+       * tree-inline.c (copy_bb): Duplicate all the speculative edges
+       if indirect call contains multiple speculative targets.
+       * value-prof.h  (check_ic_target): Remove.
+       * value-prof.c  (gimple_value_profile_transformations):
+       Use void function gimple_ic_transform.
+       * value-prof.c  (gimple_ic_transform): Handle topn case.
+       Fix comment typos.  Change it to a void function.
+
+2020-01-13  Andrew Pinski  <apinski@marvell.com>
+
+       * config/aarch64/aarch64-cores.def (octeontx2): New define.
+       (octeontx2t98): New define.
+       (octeontx2t96): New define.
+       (octeontx2t93): New define.
+       (octeontx2f95): New define.
+       (octeontx2f95n): New define.
+       (octeontx2f95mm): New define.
+       * config/aarch64/aarch64-tune.md: Regenerate.
+       * doc/invoke.texi (-mcpu=): Document the new cpu types.
+
+2020-01-13  Jason Merrill  <jason@redhat.com>
+
+       PR c++/33799 - destroy return value if local cleanup throws.
+       * gimplify.c (gimplify_return_expr): Handle COMPOUND_EXPR.
+
+2020-01-13  Martin Liska  <mliska@suse.cz>
+
+       * ipa-cp.c (get_max_overall_size): Use newly
+       renamed param param_ipa_cp_unit_growth.
+       * params.opt: Remove legacy param name.
+
+2020-01-13  Martin Sebor  <msebor@redhat.com>
+
+       PR tree-optimization/93213
+       * tree-ssa-strlen.c (handle_store): Only allow single-byte nul-over-nul
+       stores to be eliminated.
+
+2020-01-13  Martin Liska  <mliska@suse.cz>
+
+       * opts.c (print_help): Do not print CL_PARAM
+       and CL_WARNING for CL_OPTIMIZATION.
+
+2020-01-13  Jonathan Wakely  <jwakely@redhat.com>
+
+       PR driver/92757
+       * doc/invoke.texi (Warning Options): Add caveat about some warnings
+       depending on optimization settings.
+
+2020-01-13  Jakub Jelinek  <jakub@redhat.com>
+
+       PR tree-optimization/90838
+       * tree-ssa-forwprop.c (simplify_count_trailing_zeroes): Use
+       SCALAR_INT_TYPE_MODE directly in CTZ_DEFINED_VALUE_AT_ZERO macro
+       argument rather than to initialize temporary for targets that
+       don't use the mode argument at all.  Initialize ctzval to avoid
+       warning at -O0.
+
+2020-01-10  Thomas Schwinge  <thomas@codesourcery.com>
+
+       * tree.h (OMP_CLAUSE_USE_DEVICE_PTR_IF_PRESENT): New definition.
+       * tree-core.h: Document it.
+       * gimplify.c (gimplify_omp_workshare): Set it.
+       * omp-low.c (lower_omp_target): Use it.
+       * tree-pretty-print.c (dump_omp_clause): Print it.
+
+       * omp-low.c (lower_omp_target) <OMP_CLAUSE_USE_DEVICE_PTR etc.>:
+       Assert that for OpenACC we always have 'GOMP_MAP_USE_DEVICE_PTR'.
+
 2020-01-10  David Malcolm  <dmalcolm@redhat.com>
 
        * Makefile.in (OBJS): Add tree-diagnostic-path.o.