From: Richard Biener <rguenther@suse.de>
To: gcc-patches@gcc.gnu.org
Subject: [PATCH] Remove GENERIC expr building from predicate analysis, improve dumps
Date: Tue, 30 Aug 2022 10:38:17 +0000 (UTC) [thread overview]
Message-ID: <20220830103817.nJJXXqYsrU5IWxQ2sIkMW-dbi9ID3ERd6yRnOjH8JOo@z> (raw)
The following removes duplicate dumping and makes the predicate
dumping more readable. That makes the GENERIC predicate build
routines unused which is also nice.
Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed.
* gimple-predicate-analysis.cc (dump_pred_chain): Fix
parentizing and AND prepending.
(predicate::dump): Do not dump the GENERIC expanded
predicate, properly parentize and prepend ORs to the
piecewise predicate dump.
(build_pred_expr): Remove.
---
gcc/gimple-predicate-analysis.cc | 77 +++++---------------------------
1 file changed, 10 insertions(+), 67 deletions(-)
diff --git a/gcc/gimple-predicate-analysis.cc b/gcc/gimple-predicate-analysis.cc
index dcecbb5a581..ffdd8a15fe7 100644
--- a/gcc/gimple-predicate-analysis.cc
+++ b/gcc/gimple-predicate-analysis.cc
@@ -169,16 +169,14 @@ static void
dump_pred_chain (const pred_chain &chain)
{
unsigned np = chain.length ();
- if (np > 1)
- fprintf (dump_file, "AND (");
-
for (unsigned j = 0; j < np; j++)
{
+ if (j > 0)
+ fprintf (dump_file, " AND (");
+ else
+ fputc ('(', dump_file);
dump_pred_info (chain[j]);
- if (j < np - 1)
- fprintf (dump_file, ", ");
- else if (j > 0)
- fputc (')', dump_file);
+ fputc (')', dump_file);
}
}
@@ -579,51 +577,6 @@ uninit_analysis::collect_phi_def_edges (gphi *phi, basic_block cd_root,
}
}
-/* Return an expression corresponding to the predicate PRED. */
-
-static tree
-build_pred_expr (const pred_info &pred)
-{
- tree_code cond_code = pred.cond_code;
- tree lhs = pred.pred_lhs;
- tree rhs = pred.pred_rhs;
-
- if (pred.invert)
- cond_code = invert_tree_comparison (cond_code, false);
-
- return build2 (cond_code, TREE_TYPE (lhs), lhs, rhs);
-}
-
-/* Return an expression corresponding to PREDS. */
-
-static tree
-build_pred_expr (const pred_chain_union &preds, bool invert = false)
-{
- tree_code code = invert ? TRUTH_AND_EXPR : TRUTH_OR_EXPR;
- tree_code subcode = invert ? TRUTH_OR_EXPR : TRUTH_AND_EXPR;
-
- tree expr = NULL_TREE;
- for (unsigned i = 0; i != preds.length (); ++i)
- {
- tree subexpr = NULL_TREE;
- for (unsigned j = 0; j != preds[i].length (); ++j)
- {
- const pred_info &pi = preds[i][j];
- tree cond = build_pred_expr (pi);
- if (invert)
- cond = invert_truthvalue (cond);
- subexpr = subexpr ? build2 (subcode, boolean_type_node,
- subexpr, cond) : cond;
- }
- if (expr)
- expr = build2 (code, boolean_type_node, expr, subexpr);
- else
- expr = subexpr;
- }
-
- return expr;
-}
-
/* Return a bitset of all PHI arguments or zero if there are too many. */
unsigned
@@ -1907,24 +1860,14 @@ predicate::dump (gimple *stmt, const char *msg) const
return;
}
- {
- tree expr = build_pred_expr (m_preds);
- char *str = print_generic_expr_to_str (expr);
- fprintf (dump_file, "\t%s (expanded)\n", str);
- free (str);
- }
-
- if (np > 1)
- fprintf (dump_file, "\tOR (");
- else
- fputc ('\t', dump_file);
for (unsigned i = 0; i < np; i++)
{
+ if (i > 0)
+ fprintf (dump_file, "\tOR (");
+ else
+ fprintf (dump_file, "\t(");
dump_pred_chain (m_preds[i]);
- if (i < np - 1)
- fprintf (dump_file, ", ");
- else if (i > 0)
- fputc (')', dump_file);
+ fputc (')', dump_file);
}
fputc ('\n', dump_file);
}
--
2.35.3
next reply other threads:[~2022-08-30 10:38 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-30 10:38 Richard Biener [this message]
2022-08-30 10:38 Richard Biener
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=20220830103817.nJJXXqYsrU5IWxQ2sIkMW-dbi9ID3ERd6yRnOjH8JOo@z \
--to=rguenther@suse.de \
--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).