From: Aldy Hernandez <aldyh@redhat.com>
To: GCC patches <gcc-patches@gcc.gnu.org>
Subject: [COMMITTED] path solver: Only compute relations for imports.
Date: Thu, 4 Nov 2021 15:39:46 +0100 [thread overview]
Message-ID: <20211104143948.1102399-1-aldyh@redhat.com> (raw)
We are currently calculating implicit PHI relations for all PHI
arguments. This creates unecessary work, as we only care about SSA
names in the import bitmap. Similarly for inter-path relationals. We
can avoid things not in the bitmap.
Tested on x86-64 and ppc64le Linux with the usual regstrap. I also
verified that the before and after number of threads was the same
in a suite of .ii files from a bootstrap.
gcc/ChangeLog:
PR tree-optimization/102943
* gimple-range-path.cc (path_range_query::compute_phi_relations):
Only compute relations for SSA names in the import list.
(path_range_query::compute_outgoing_relations): Same.
* gimple-range-path.h (path_range_query::import_p): New.
---
gcc/gimple-range-path.cc | 7 ++++++-
gcc/gimple-range-path.h | 10 ++++++++++
2 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/gcc/gimple-range-path.cc b/gcc/gimple-range-path.cc
index d8c2a9b6a86..42309886c94 100644
--- a/gcc/gimple-range-path.cc
+++ b/gcc/gimple-range-path.cc
@@ -678,8 +678,12 @@ path_range_query::compute_phi_relations (basic_block bb, basic_block prev)
gsi_next (&iter))
{
gphi *phi = iter.phi ();
+ tree result = gimple_phi_result (phi);
unsigned nargs = gimple_phi_num_args (phi);
+ if (!import_p (result))
+ continue;
+
for (size_t i = 0; i < nargs; ++i)
if (e_in == gimple_phi_arg_edge (phi, i))
{
@@ -701,7 +705,8 @@ path_range_query::compute_outgoing_relations (basic_block bb, basic_block next)
if (stmt
&& gimple_code (stmt) == GIMPLE_COND
- && irange::supports_type_p (TREE_TYPE (gimple_cond_lhs (stmt))))
+ && (import_p (gimple_cond_lhs (stmt))
+ || import_p (gimple_cond_rhs (stmt))))
{
int_range<2> r;
gcond *cond = as_a<gcond *> (stmt);
diff --git a/gcc/gimple-range-path.h b/gcc/gimple-range-path.h
index 541613956e1..f21d07f71c4 100644
--- a/gcc/gimple-range-path.h
+++ b/gcc/gimple-range-path.h
@@ -62,6 +62,7 @@ private:
void maybe_register_phi_relation (gphi *, tree arg);
void add_copies_to_imports ();
bool add_to_imports (tree name, bitmap imports);
+ inline bool import_p (tree name);
// Path navigation.
void set_path (const vec<basic_block> &);
@@ -97,4 +98,13 @@ private:
bool m_undefined_path;
};
+// Return TRUE if NAME is in the import bitmap.
+
+bool
+path_range_query::import_p (tree name)
+{
+ return (TREE_CODE (name) == SSA_NAME
+ && bitmap_bit_p (m_imports, SSA_NAME_VERSION (name)));
+}
+
#endif // GCC_TREE_SSA_THREADSOLVER_H
--
2.31.1
next reply other threads:[~2021-11-04 14:40 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-04 14:39 Aldy Hernandez [this message]
2021-11-04 14:39 ` [COMMITTED] Avoid repeating calculations in threader Aldy Hernandez
2021-11-04 14:39 ` [COMMITTED] path solver: Prefer range_of_expr instead of range_on_edge Aldy Hernandez
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=20211104143948.1102399-1-aldyh@redhat.com \
--to=aldyh@redhat.com \
--cc=gcc-patches@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).