public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
From: Richard Biener <rguenth@gcc.gnu.org>
To: gcc-cvs@gcc.gnu.org
Subject: [gcc r13-2164] Speedup path discovery in predicate::use_cannot_happen
Date: Wed, 24 Aug 2022 06:47:48 +0000 (GMT)	[thread overview]
Message-ID: <20220824064748.A3D5E38582BE@sourceware.org> (raw)

https://gcc.gnu.org/g:b6864f4ee87fb56299fc82e1e0ced127b747d87a

commit r13-2164-gb6864f4ee87fb56299fc82e1e0ced127b747d87a
Author: Richard Biener <rguenther@suse.de>
Date:   Tue Aug 23 14:05:34 2022 +0200

    Speedup path discovery in predicate::use_cannot_happen
    
    The following reverts a hunk from r8-5789-g11ef0b22d68cd1 that
    made compute_control_dep_chain start from function entry rather
    than the immediate dominator of the source block of the edge with
    the undefined value on the PHI node.  Reverting at that point
    does not reveal any testsuite FAIL, in particular the added
    testcase still passes.  The following adjusts this to the other
    function that computes predicates that hold on the PHI incoming
    edges with undefined values, predicate::init_from_phi_def, which
    starts at the immediate dominator of the PHI.  That's much less
    likely to run into the CFG walking limit.
    
            * gimple-predicate-analysis.cc (predicate::use_cannot_happen):
            Start the compute_control_dep_chain walk from the immediate
            dominator of the PHI.

Diff:
---
 gcc/gimple-predicate-analysis.cc | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/gcc/gimple-predicate-analysis.cc b/gcc/gimple-predicate-analysis.cc
index a4291657d0b..ea81daacd4f 100644
--- a/gcc/gimple-predicate-analysis.cc
+++ b/gcc/gimple-predicate-analysis.cc
@@ -1293,6 +1293,12 @@ predicate::use_cannot_happen (gphi *phi, unsigned opnds)
       use_guard = &phi_use_guard_intersection;
     }
 
+  basic_block phi_bb = gimple_bb (phi);
+  /* Find the closest dominating bb to be the control dependence root.  */
+  basic_block cd_root = get_immediate_dominator (CDI_DOMINATORS, phi_bb);
+  if (!cd_root)
+    return false;
+
   /* Look for the control dependencies of all the interesting operands
      and build guard predicates describing them.  */
   unsigned n = gimple_phi_num_args (phi);
@@ -1308,7 +1314,7 @@ predicate::use_cannot_happen (gphi *phi, unsigned opnds)
       unsigned num_calls = 0;
 
       /* Build the control dependency chain for the PHI argument...  */
-      if (!compute_control_dep_chain (ENTRY_BLOCK_PTR_FOR_FN (cfun),
+      if (!compute_control_dep_chain (cd_root,
 				      e->src, dep_chains, &num_chains,
 				      cur_chain, &num_calls))
 	{

                 reply	other threads:[~2022-08-24  6:47 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220824064748.A3D5E38582BE@sourceware.org \
    --to=rguenth@gcc.gnu.org \
    --cc=gcc-cvs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).