From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2066) id 9F88A3988414; Wed, 9 Jun 2021 05:27:48 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9F88A3988414 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Jiu Fu Guo To: gcc-cvs@gcc.gnu.org Subject: [gcc(refs/users/guojiufu/heads/guojiufu-branch)] check EDGE_FALSE and update number insn checking later X-Act-Checkin: gcc X-Git-Author: Jiufu Guo X-Git-Refname: refs/users/guojiufu/heads/guojiufu-branch X-Git-Oldrev: 9d35ae2f48f2db02841b4bdee1600620282f2e10 X-Git-Newrev: dfce3dcf332789b9685888bc22bca960d3455de9 Message-Id: <20210609052748.9F88A3988414@sourceware.org> Date: Wed, 9 Jun 2021 05:27:48 +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, 09 Jun 2021 05:27:48 -0000 https://gcc.gnu.org/g:dfce3dcf332789b9685888bc22bca960d3455de9 commit dfce3dcf332789b9685888bc22bca960d3455de9 Author: Jiufu Guo Date: Wed Jun 9 11:31:48 2021 +0800 check EDGE_FALSE and update number insn checking later Diff: --- gcc/tree-ssa-loop-split.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/gcc/tree-ssa-loop-split.c b/gcc/tree-ssa-loop-split.c index 9c0de66e288..ca35eee21b7 100644 --- a/gcc/tree-ssa-loop-split.c +++ b/gcc/tree-ssa-loop-split.c @@ -1618,7 +1618,7 @@ get_ne_cond_branch (struct loop *loop) continue; gcond *cond = as_a (last); enum tree_code code = gimple_cond_code (cond); - if (!(code == NE_EXPR + if (!((code == NE_EXPR && (e->flags & EDGE_FALSE_VALUE)) || (code == EQ_EXPR && (e->flags & EDGE_TRUE_VALUE)))) continue; @@ -1810,24 +1810,29 @@ The loop with "inum_nodes; i++) + num += estimate_num_insns_seq (bb_seq (bbs[i]), &eni_size_weights); - if (!can_copy_bbs_p (bbs, loop->num_nodes)) + if (num > param_max_peeled_insns) { free (bbs); return false; } - for (unsigned i = 0; i < loop->num_nodes; i++) - num += estimate_num_insns_seq (bb_seq (bbs[i]), &eni_size_weights); + if (!can_copy_bbs_p (bbs, loop->num_nodes)) + { + free (bbs); + return false; + } free (bbs); - if (num > param_max_peeled_insns) - return false; - - edge branch_edge = get_ne_cond_branch (loop); - if (branch_edge && split_ne_loop (loop, branch_edge)) + if (split_ne_loop (loop, branch_edge)) return true; return false;