From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1666) id 0335F3858C27; Wed, 13 Apr 2022 07:55:41 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0335F3858C27 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Richard Biener To: gcc-cvs@gcc.gnu.org Subject: [gcc r12-8133] Revert "tree-optimization/104912 - ensure cost model is checked first" X-Act-Checkin: gcc X-Git-Author: Richard Biener X-Git-Refname: refs/heads/master X-Git-Oldrev: ac8340ee4d1e65f3fd41c547b16895875f4aefa7 X-Git-Newrev: 6e609e0010c76d708097cbcf1c67fded6010a0e0 Message-Id: <20220413075541.0335F3858C27@sourceware.org> Date: Wed, 13 Apr 2022 07:55:41 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Apr 2022 07:55:41 -0000 https://gcc.gnu.org/g:6e609e0010c76d708097cbcf1c67fded6010a0e0 commit r12-8133-g6e609e0010c76d708097cbcf1c67fded6010a0e0 Author: Richard Biener Date: Wed Apr 13 09:54:58 2022 +0200 Revert "tree-optimization/104912 - ensure cost model is checked first" This reverts commit ac8340ee4d1e65f3fd41c547b16895875f4aefa7. Diff: --- gcc/tree-vect-loop-manip.cc | 60 +++------------------------------------------ 1 file changed, 3 insertions(+), 57 deletions(-) diff --git a/gcc/tree-vect-loop-manip.cc b/gcc/tree-vect-loop-manip.cc index e4381eb7079..63fb6f669a0 100644 --- a/gcc/tree-vect-loop-manip.cc +++ b/gcc/tree-vect-loop-manip.cc @@ -3445,34 +3445,13 @@ vect_loop_versioning (loop_vec_info loop_vinfo, cond_expr = expr; } - tree cost_name = NULL_TREE; - profile_probability prob2 = profile_probability::uninitialized (); - if (cond_expr - && !integer_truep (cond_expr) - && (version_niter - || version_align - || version_alias - || version_simd_if_cond)) - { - cost_name = cond_expr = force_gimple_operand_1 (unshare_expr (cond_expr), - &cond_expr_stmt_list, - is_gimple_val, NULL_TREE); - /* Split prob () into two so that the overall probability of passing - both the cost-model and versioning checks is the orig prob. */ - prob2 = prob.split (prob); - } - if (version_niter) vect_create_cond_for_niters_checks (loop_vinfo, &cond_expr); if (cond_expr) - { - gimple_seq tem = NULL; - cond_expr = force_gimple_operand_1 (unshare_expr (cond_expr), - &tem, - is_gimple_condexpr, NULL_TREE); - gimple_seq_add_seq (&cond_expr_stmt_list, tem); - } + cond_expr = force_gimple_operand_1 (unshare_expr (cond_expr), + &cond_expr_stmt_list, + is_gimple_condexpr, NULL_TREE); if (version_align) vect_create_cond_for_align_checks (loop_vinfo, &cond_expr, @@ -3676,39 +3655,6 @@ vect_loop_versioning (loop_vec_info loop_vinfo, update_ssa (TODO_update_ssa); } - /* Split the cost model check off to a separate BB. Costing assumes - this is the only thing we perform when we enter the scalar loop - from a failed cost decision. */ - if (cost_name && TREE_CODE (cost_name) == SSA_NAME) - { - gimple *def = SSA_NAME_DEF_STMT (cost_name); - /* All uses of the cost check are 'true' after the check we - are going to insert. */ - replace_uses_by (cost_name, boolean_true_node); - /* And we're going to build the new single use of it. */ - gcond *cond = gimple_build_cond (NE_EXPR, cost_name, boolean_false_node, - NULL_TREE, NULL_TREE); - edge e = split_block (gimple_bb (def), def); - gimple_stmt_iterator gsi = gsi_for_stmt (def); - gsi_insert_after (&gsi, cond, GSI_NEW_STMT); - edge true_e, false_e; - extract_true_false_edges_from_block (e->dest, &true_e, &false_e); - e->flags &= ~EDGE_FALLTHRU; - e->flags |= EDGE_TRUE_VALUE; - edge e2 = make_edge (e->src, false_e->dest, EDGE_FALSE_VALUE); - e->probability = prob2; - e2->probability = prob2.invert (); - set_immediate_dominator (CDI_DOMINATORS, false_e->dest, e->src); - auto_vec adj; - for (basic_block son = first_dom_son (CDI_DOMINATORS, e->dest); - son; - son = next_dom_son (CDI_DOMINATORS, son)) - if (EDGE_COUNT (son->preds) > 1) - adj.safe_push (son); - for (auto son : adj) - set_immediate_dominator (CDI_DOMINATORS, son, e->src); - } - if (version_niter) { /* The versioned loop could be infinite, we need to clear existing