public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r13-2268] Remove GENERIC expr building from predicate analysis, improve dumps
@ 2022-08-30 10:40 Richard Biener
  0 siblings, 0 replies; only message in thread
From: Richard Biener @ 2022-08-30 10:40 UTC (permalink / raw)
  To: gcc-cvs

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

commit r13-2268-gbdd3547ae4279c14a9db883719c9648ed09dc18a
Author: Richard Biener <rguenther@suse.de>
Date:   Tue Aug 30 11:41:02 2022 +0200

    Remove GENERIC expr building from predicate analysis, improve dumps
    
    The following removes duplicate dumping and makes the predicate
    dumping more readable.  That makes the GENERIC predicate build
    routines unused which is also nice.
    
            * 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.

Diff:
---
 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 3f9b80d9128..2b279ccd4b6 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
@@ -1925,24 +1878,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);
 }

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-08-30 10:40 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-30 10:40 [gcc r13-2268] Remove GENERIC expr building from predicate analysis, improve dumps Richard Biener

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).