]> gcc.gnu.org Git - gcc.git/commitdiff
Remove GENERIC expr building from predicate analysis, improve dumps
authorRichard Biener <rguenther@suse.de>
Tue, 30 Aug 2022 09:41:02 +0000 (11:41 +0200)
committerRichard Biener <rguenther@suse.de>
Tue, 30 Aug 2022 10:39:28 +0000 (12:39 +0200)
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.

gcc/gimple-predicate-analysis.cc

index 3f9b80d9128a7a06e418c28fcb565c536d1568ae..2b279ccd4b6aee0fe9ec0b3313aa95bd85295260 100644 (file)
@@ -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);
 }
This page took 0.066657 seconds and 5 git commands to generate.