https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102646

            Bug ID: 102646
           Summary: large performance changes between
                    1932e1169a236849f5e7f1cd386da100d9af470f and
                    9cfb95f9b92326e86e99b50350ebf04fa9cd2477 (probably
                    jump threading)
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hubicka at gcc dot gnu.org
  Target Milestone: ---

There are many regressions and also some improvements especialy in -O2 tsvc
(which is simple benchmark) in this range
See
https://lnt.opensuse.org/db_default/v4/CPP/latest_runs_report?younger_in_days=14&older_in_days=0&min_percentage_change=0.02&revisions=1932e1169a236849f5e7f1cd386da100d9af470f%2C9cfb95f9b92326e86e99b50350ebf04fa9cd2477

and also
https://lnt.opensuse.org/db_default/v4/SPEC/latest_runs_report?younger_in_days=14&older_in_days=0&min_percentage_change=0.02&revisions=1932e1169a236849f5e7f1cd386da100d9af470f%2C9cfb95f9b92326e86e99b50350ebf04fa9cd2477

We get:

+2021-09-27  Aldy Hernandez  <al...@redhat.com>
+
+       * gimple-range-path.cc
+       (path_range_query::precompute_ranges_in_block): Rename to...
+       (path_range_query::compute_ranges_in_block): ...this.
+       (path_range_query::precompute_ranges): Rename to...
+       (path_range_query::compute_ranges): ...this.
+       (path_range_query::precompute_relations): Rename to...
+       (path_range_query::compute_relations): ...this.
+       (path_range_query::precompute_phi_relations): Rename to...
+       (path_range_query::compute_phi_relations): ...this.
+       * gimple-range-path.h: Rename precompute* to compute*.
+       * tree-ssa-threadbackward.c
+       (back_threader::find_taken_edge_switch): Same.
+       (back_threader::find_taken_edge_cond): Same.
+       * tree-ssa-threadedge.c
+       (hybrid_jt_simplifier::compute_ranges_from_state): Same.
+       (hybrid_jt_state::register_equivs_stmt): Inline...
+       * tree-ssa-threadedge.h: ...here.
+
+2021-09-27  Aldy Hernandez  <al...@redhat.com>
+
+       * tree-vrp.c (lhs_of_dominating_assert): Remove.
+       (class vrp_jt_state): Remove.
+       (class vrp_jt_simplifier): Remove.
+       (vrp_jt_simplifier::simplify): Remove.
+       (class vrp_jump_threader): Remove.
+       (vrp_jump_threader::vrp_jump_threader): Remove.
+       (vrp_jump_threader::~vrp_jump_threader): Remove.
+       (vrp_jump_threader::before_dom_children): Remove.
+       (vrp_jump_threader::after_dom_children): Remove.
+
+2021-09-27  Aldy Hernandez  <al...@redhat.com>
+
+       * passes.def (pass_vrp_threader): New.
+       * tree-pass.h (make_pass_vrp_threader): Add make_pass_vrp_threader.
+       * tree-ssa-threadedge.c (hybrid_jt_state::register_equivs_stmt): New.
+       (hybrid_jt_simplifier::hybrid_jt_simplifier): New.
+       (hybrid_jt_simplifier::simplify): New.
+       (hybrid_jt_simplifier::compute_ranges_from_state): New.
+       * tree-ssa-threadedge.h (class hybrid_jt_state): New.
+       (class hybrid_jt_simplifier): New.
+       * tree-vrp.c (execute_vrp): Remove ASSERT_EXPR based jump
+       threader.
+       (class hybrid_threader): New.
+       (hybrid_threader::hybrid_threader): New.
+       (hybrid_threader::~hybrid_threader): New.
+       (hybrid_threader::before_dom_children): New.
+       (hybrid_threader::after_dom_children): New.
+       (execute_vrp_threader): New.
+       (class pass_vrp_threader): New.
+       (make_pass_vrp_threader): New.
+
+2021-09-27  Martin Liska  <mli...@suse.cz>
+
+       * output.h (enum section_flag): New.
+       (SECTION_FORGET): Remove.
+       (SECTION_ENTSIZE): Make it (1UL << 8) - 1.
+       (SECTION_STYLE_MASK): Define it based on other enum
+       values.
+       * varasm.c (switch_to_section): Remove unused handling of
+       SECTION_FORGET.
+
+2021-09-27  Martin Liska  <mli...@suse.cz>
+
+       * common.opt: Add new variable flag_default_complex_method.
+       * opts.c (finish_options): Handle flags related to
+         x_flag_complex_method.
+       * toplev.c (process_options): Remove option handling related
+       to flag_complex_method.
+
+2021-09-27  Richard Biener  <rguent...@suse.de>
+
+       PR middle-end/102450
+       * gimple-fold.c (gimple_fold_builtin_memory_op): Avoid using
+       type_for_size, instead use int_mode_for_size.
+
+2021-09-27  Andrew Pinski  <apin...@marvell.com>
+
+       PR c/94726
+       * gimplify.c (gimplify_save_expr): Return early
+       if the type of val is error_mark_node.
+
+2021-09-27  Aldy Hernandez  <al...@redhat.com>
+
+       * tree-ssanames.c (ssa_name_has_boolean_range): Use
+       get_range_query.
+
+2021-09-27  Aldy Hernandez  <al...@redhat.com>
+
+       * gimple-ssa-evrp-analyze.h (class evrp_range_analyzer): Remove
+       vrp_visit_cond_stmt.
+       * tree-ssa-dom.c (cprop_operand): Convert to range_query API.
+       (cprop_into_stmt): Same.
+       (dom_opt_dom_walker::optimize_stmt): Same.
+
+2021-09-27  Richard Biener  <rguent...@suse.de>
+
+       PR tree-optimization/97351
+       PR tree-optimization/97352
+       PR tree-optimization/82426
+       * tree-vectorizer.h (dr_misalignment): Add vector type
+       argument.
+       (aligned_access_p): Likewise.
+       (known_alignment_for_access_p): Likewise.
+       (vect_supportable_dr_alignment): Likewise.
+       (vect_known_alignment_in_bytes): Likewise.  Refactor.
+       (DR_MISALIGNMENT): Remove.
+       (vect_update_shared_vectype): Likewise.
+       * tree-vect-data-refs.c (dr_misalignment): Refactor, handle
+       a vector type with larger alignment requirement and apply
+       the negative step adjustment here.
+       (vect_calculate_target_alignment): Remove.
+       * tree-vect-stmts.c (vect_analyze_stmt): Push/pop the
+       vector type of an SLP node to the representative stmt-info.
+       (vect_transform_stmt): Likewise.
+
+2021-09-27  liuhongt  <hongtao....@intel.com>
+
+       Revert:
+       2021-09-09  liuhongt  <hongtao....@intel.com>
+
+       PR target/101059
+       * config/i386/sse.md (reduc_plus_scal_<mode>): Split to ..
+       (reduc_plus_scal_v4sf): .. this, New define_expand.
+       (reduc_plus_scal_v2df): .. and this, New define_expand.
+

>From which (since it reproduces at -O2 and thus is not vectorization related)
it seems that it can be attributed to the new threader.

Honza

Reply via email to